{"id":28471955,"url":"https://github.com/designliquido/delegua-node","last_synced_at":"2026-05-31T05:03:12.593Z","repository":{"id":65798887,"uuid":"597931146","full_name":"DesignLiquido/delegua-node","owner":"DesignLiquido","description":"Versão de Delégua e dialetos com suporte a funcionalidades do ecossistema do Node.js.","archived":false,"fork":false,"pushed_at":"2026-05-29T16:12:49.000Z","size":2444,"stargazers_count":13,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"principal","last_synced_at":"2026-05-29T18:06:48.562Z","etag":null,"topics":["hacktoberfest","nodejs","portugues","portuguese","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DesignLiquido.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-06T02:39:49.000Z","updated_at":"2026-05-29T16:13:10.000Z","dependencies_parsed_at":"2024-03-03T13:30:54.915Z","dependency_job_id":"b41c8de4-c1b1-4576-b05a-785698d9e9b3","html_url":"https://github.com/DesignLiquido/delegua-node","commit_stats":null,"previous_names":[],"tags_count":270,"template":false,"template_full_name":null,"purl":"pkg:github/DesignLiquido/delegua-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DesignLiquido%2Fdelegua-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DesignLiquido%2Fdelegua-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DesignLiquido%2Fdelegua-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DesignLiquido%2Fdelegua-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DesignLiquido","download_url":"https://codeload.github.com/DesignLiquido/delegua-node/tar.gz/refs/heads/principal","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DesignLiquido%2Fdelegua-node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33719601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","nodejs","portugues","portuguese","typescript"],"created_at":"2025-06-07T11:09:30.545Z","updated_at":"2026-05-31T05:03:12.578Z","avatar_url":"https://github.com/DesignLiquido.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# delegua-node\n\nVersão de Delégua com suporte a funcionalidades do ecossistema do Node.js. Também funciona com o [Bun](https://bun.sh/).\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/DesignLiquido/delegua-node/issues\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/issues/Designliquido/delegua-node\" /\u003e\n    \u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/Designliquido/delegua-node\" /\u003e\n    \u003cimg src=\"https://img.shields.io/github/forks/Designliquido/delegua-node\" /\u003e\n    \u003ca href=\"https://www.npmjs.com/package/@designliquido/delegua-node\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/npm/v/@designliquido/delegua-node\" /\u003e\n    \u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/npm/dw/@designliquido/delegua-node\" /\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/Designliquido/delegua-node\" /\u003e\n\u003c/p\u003e\n\n## Motivação\n\nEm 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](https://webpack.js.org/). \n\nComo 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.\n\nMais 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.\n\n### Implicações\n\nSe sua aplicação:\n\n- Precisa suportar importações, seja de outros fontes, seja de bibliotecas NPM\n- Executa código Delégua, ou outros dialetos, remotamente\n- Deve executar no ambiente Node.js ou Bun, ou qualquer outro motor de JavaScript fora do navegador de internet\n\nEla deve, então, usar este pacote. Caso contrário, o uso apenas do [núcleo de Delégua](https://github.com/DesignLiquido/delegua), ou pacote de dialeto, é uma escolha melhor.\n\n## Instalação\n\nSe quiser instalar no seu computador,\n[você deve ter antes o Node.js instalado em seu ambiente](https://dicasdejavascript.com.br/instalacao-do-nodejs-e-npm-no-windows-passo-a-passo).\n\nCom 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):\n\n```\nnpm install -g delegua\n```\n\nIsso instala [a solução completa, com todas essas bibliotecas](https://github.com/DesignLiquido/delegua-completo), que utiliza este pacote como base. Se quiser instalar apenas este pacote, utilize o comando:\n\n```\nnpm install -g @designliquido/delegua-node\n```\n\nNo 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)](https://github.com/DesignLiquido/delegua-completo/blob/principal/README.md#usando-como-lair-leia-avalie-imprima-repita-em-console). Por isso, a instalação da solução completa é recomendada para a maioria dos casos.\n\n\n## Depuração\n\n`delegua-node` oferece dois modos de depuração independentes.\n\n### Adaptador DAP (recomendado)\n\nImplementa o [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) da Microsoft. Qualquer editor ou IDE que suporte DAP pode depurar programas Delégua sem cliente customizado.\n\n```sh\ndelegua --dap\n```\n\nO 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.\n\nComandos suportados: `initialize`, `launch`, `setBreakpoints`, `configurationDone`, `threads`, `stackTrace`, `scopes`, `variables`, `continue`, `next`, `stepIn`, `stepOut`, `disconnect`.\n\nO argumento `launch` aceita:\n\n| Argumento | Tipo     | Obrigatório | Descrição                                     |\n|-----------|----------|-------------|-----------------------------------------------|\n| `program` | `string` | Sim         | Caminho do arquivo fonte a depurar            |\n| `dialeto` | `string` | Não         | Dialeto a usar. Padrão: `delegua`             |\n\n### Depurador padrão (socket TCP)\n\nAbre um servidor TCP na porta 7777. O cliente envia comandos em texto simples (`continuar`, `proximo`, `variaveis`, etc.) e recebe respostas delimitadas por marcadores.\n\n```sh\ndelegua --depurador-padrao arquivo.delegua\n```\n\nConecte com qualquer cliente TCP, por exemplo o Netcat:\n\n```sh\nnc localhost 7777\n```\n\nConsulte [`fontes/depuracao/README.md`](fontes/depuracao/README.md) para a lista completa de comandos e formato das respostas.\n\n## Programas com interface gráfica (`interfaceGrafica`)\n\nA biblioteca `interfaceGrafica` cria janelas, botões, rótulos e caixas de texto. O ambiente onde o programa é executado determina qual infraestrutura visual é usada:\n\n| Ambiente | Infraestrutura selecionada | Resultado |\n|----------|---------------------------|-----------|\n| Linha de comando + Electron instalado | `InfraestruturaInvocacaoElectron` | Janela nativa exibida em um processo Electron filho. |\n| Linha de comando (sem Electron) | `InfraestruturaVazia` | Programa executa sem erros, mas **nenhuma janela é exibida**. O aviso abaixo é emitido no console. |\n| Extensão Delégua no VS Code | `InfraestruturaWebView` | Janela exibida como painel nativo dentro do VS Code. |\n| Processo renderer do Electron | `InfraestruturaElectron` | Janela exibida como overlay DOM na janela Electron. |\n\n### Usando pela linha de comando com Electron\n\nSe o pacote `electron` estiver instalado (local ou globalmente), `delegua-node` o detecta automaticamente e spawna um processo Electron filho para exibir a janela:\n\n```bash\nnpm install -g electron   # instalar uma vez\ndelegua meu-programa.delegua\n```\n\nA janela abre, os eventos funcionam normalmente e o processo Node.js aguarda até ela ser fechada.\n\n### Aviso ao rodar pela linha de comando sem Electron\n\n```\n[InterfaceGrafica] Electron não encontrado. Usando infraestrutura vazia.\nInstale o Electron (npm install -g electron) para exibir janelas pela linha de comando.\n```\n\nEste aviso aparece quando o Electron não está instalado. O programa executa sem erros, mas nenhuma janela é exibida.\n\n### Integrando a interface gráfica em uma extensão VS Code\n\nAntes de executar qualquer programa Delégua que use `interfaceGrafica`, chame `definirFabricaPainelWebView()` no método `activate()` da extensão:\n\n```typescript\nimport { definirFabricaPainelWebView } from '@designliquido/delegua-node';\n\nexport function activate(context: vscode.ExtensionContext) {\n    definirFabricaPainelWebView(() =\u003e\n        vscode.window.createWebviewPanel(\n            'delegua-interface-grafica',\n            'Interface Gráfica – Delégua',\n            vscode.ViewColumn.One,\n            { enableScripts: true }\n        )\n    );\n\n    // ... restante da ativação\n}\n```\n\nA partir daí, toda chamada a `ig.iniciar()` em código Delégua abrirá automaticamente um painel WebView dentro do VS Code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesignliquido%2Fdelegua-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdesignliquido%2Fdelegua-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesignliquido%2Fdelegua-node/lists"}