Versão de Delégua com suporte a funcionalidades do ecossistema do Node.js. Também funciona com o Bun.
Em versões anteriores, o suporte ao ecossistema Node vinha embutido no pacote do núcleo da linguagem. Isso virou um problema quando tentamos importar o pacote numa aplicação com Webpack.
Como o Webpack tenta ler todas as referências de todos os módulos recursivamente, independente se estamos importando um módulo ou vários, há problemas quando tentamos importar child_process ou net na parte de navegador de internet e as aplicações falham.
Mais adiante, este pacote ganhou a função de concentrar todos os dialetos em um único lugar, já que implementa a funcionalidade de execução de código por linha de comando.
Se sua aplicação:
- Precisa suportar importações, seja de outros fontes, seja de bibliotecas NPM
- Executa código Delégua, ou outros dialetos, remotamente
- Deve executar no ambiente Node.js ou Bun, ou qualquer outro motor de JavaScript fora do navegador de internet
Ela deve, então, usar este pacote. Caso contrário, o uso apenas do núcleo de Delégua, ou pacote de dialeto, é uma escolha melhor.
Se quiser instalar no seu computador, você deve ter antes o Node.js instalado em seu ambiente.
Com o Node.js instalado, execute o seguinte comando em um prompt de comando (Terminal, PowerShell ou cmd no Windows, Terminal ou sh em Mac e Linux):
npm install -g delegua
Isso instala a solução completa, com todas essas bibliotecas, que utiliza este pacote como base. Se quiser instalar apenas este pacote, utilize o comando:
npm install -g @designliquido/delegua-node
No entanto, este pacote por si só não contém as bibliotecas que fazem parte do ecossistema de Delégua, como delegua-matematica, delegua-http e outras, bem como comandos executáveis por prompt de comando, como uso de arquivos ou código como argumento, ou o Modo LAIR (Leia-Avalie-Imprima-Repita). Por isso, a instalação da solução completa é recomendada para a maioria dos casos.
delegua-node traduz código Delégua para outras linguagens via a opção -t, --traduzir (veja delegua --ajuda). Valores suportados: delegua-para-assemblyscript/delegua-para-as, delegua-para-elixir, delegua-para-js/delegua-para-javascript, delegua-para-py/delegua-para-python, delegua-para-ruby, js-para-delegua/javascript-para-delegua, alg-para-delegua/visualg-para-delegua.
Os comandos delegua-para-arm e delegua-para-x64não são mais suportados aqui. Essa funcionalidade foi movida para compiladores autocontidos, com toolchain próprio (montador/linker), em delegua-llvm-completo:
delegua-x64— substituidelegua-para-x64;delegua-arm— substituidelegua-para-arm;delegua-risc-v;delegua-wasm.
Cada um desses pacotes é instalável e executável isoladamente (npx delegua-x64 arquivo.delegua, por exemplo) e cuida de todo o pipeline: tradução, montagem e linkagem do binário final.
delegua-node oferece dois modos de depuração independentes.
Implementa o Debug Adapter Protocol da Microsoft. Qualquer editor ou IDE que suporte DAP pode depurar programas Delégua sem cliente customizado.
delegua --dapO processo lê requisições de stdin e escreve respostas em stdout no formato JSON-RPC com cabeçalho Content-Length. Clientes compatíveis: VS Code, Code::Blocks (via plugin LinguagensDL) e qualquer outro cliente DAP.
Comandos suportados: initialize, launch, setBreakpoints, configurationDone, threads, stackTrace, scopes, variables, continue, next, stepIn, stepOut, disconnect.
O argumento launch aceita:
| Argumento | Tipo | Obrigatório | Descrição |
|---|---|---|---|
program | string | Sim | Caminho do arquivo fonte a depurar |
dialeto | string | Não | Dialeto a usar. Padrão: delegua |
Abre um servidor TCP na porta 7777. O cliente envia comandos em texto simples (continuar, proximo, variaveis, etc.) e recebe respostas delimitadas por marcadores.
delegua --depurador-padrao arquivo.deleguaConecte com qualquer cliente TCP, por exemplo o Netcat:
nc localhost 7777Consulte fontes/depuracao/README.md para a lista completa de comandos e formato das respostas.
A biblioteca interfaceGrafica cria janelas, botões, rótulos e caixas de texto. O ambiente onde o programa é executado determina qual infraestrutura visual é usada:
| Ambiente | Infraestrutura selecionada | Resultado |
|---|---|---|
| Linha de comando + Electron instalado | InfraestruturaInvocacaoElectron | Janela nativa exibida em um processo Electron filho. |
| Linha de comando (sem Electron) | InfraestruturaVazia | Programa executa sem erros, mas nenhuma janela é exibida. O aviso abaixo é emitido no console. |
| Extensão Delégua no VS Code | InfraestruturaWebView | Janela exibida como painel nativo dentro do VS Code. |
| Processo renderer do Electron | InfraestruturaElectron | Janela exibida como overlay DOM na janela Electron. |
Se o pacote electron estiver instalado (local ou globalmente), delegua-node o detecta automaticamente e spawna um processo Electron filho para exibir a janela:
npm install -g electron # instalar uma vez
delegua meu-programa.deleguaA janela abre, os eventos funcionam normalmente e o processo Node.js aguarda até ela ser fechada.
[InterfaceGrafica] Electron não encontrado. Usando infraestrutura vazia.
Instale o Electron (npm install -g electron) para exibir janelas pela linha de comando.
Este aviso aparece quando o Electron não está instalado. O programa executa sem erros, mas nenhuma janela é exibida.
Antes de executar qualquer programa Delégua que use interfaceGrafica, chame definirFabricaPainelWebView() no método activate() da extensão:
import{definirFabricaPainelWebView}from'@designliquido/delegua-node';exportfunctionactivate(context: vscode.ExtensionContext){definirFabricaPainelWebView(()=>vscode.window.createWebviewPanel('delegua-interface-grafica','Interface Gráfica – Delégua',vscode.ViewColumn.One,{enableScripts: true}));// ... restante da ativação}A partir daí, toda chamada a ig.iniciar() em código Delégua abrirá automaticamente um painel WebView dentro do VS Code.