@semacode/cli 1.3.2 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +33 -27
  3. package/package.json +21 -33
  4. package/semacode-cli-1.3.1.tgz +0 -0
  5. package/src/cpp-symbols.ts +82 -0
  6. package/src/dotnet-http.ts +355 -0
  7. package/src/drift.ts +2455 -0
  8. package/src/go-http.ts +118 -0
  9. package/src/importador.ts +3448 -0
  10. package/src/index.ts +4476 -0
  11. package/src/java-http.ts +247 -0
  12. package/src/projeto.ts +810 -0
  13. package/src/python-http.ts +258 -0
  14. package/src/rust-http.ts +125 -0
  15. package/src/tipos.ts +22 -0
  16. package/src/typescript-http.ts +1076 -0
  17. package/tsconfig.json +20 -0
  18. package/AGENTS.md +0 -272
  19. package/LICENSE +0 -22
  20. package/SEMA_BRIEF.curto.txt +0 -9
  21. package/SEMA_BRIEF.md +0 -49
  22. package/SEMA_BRIEF.micro.txt +0 -7
  23. package/SEMA_INDEX.json +0 -546
  24. package/dist/cpp-symbols.d.ts +0 -10
  25. package/dist/cpp-symbols.js.map +0 -1
  26. package/dist/dotnet-http.d.ts +0 -23
  27. package/dist/dotnet-http.js.map +0 -1
  28. package/dist/drift.d.ts +0 -118
  29. package/dist/drift.js.map +0 -1
  30. package/dist/go-http.d.ts +0 -23
  31. package/dist/go-http.js.map +0 -1
  32. package/dist/importador.d.ts +0 -29
  33. package/dist/importador.js.map +0 -1
  34. package/dist/index.d.ts +0 -2
  35. package/dist/index.js.map +0 -1
  36. package/dist/java-http.d.ts +0 -23
  37. package/dist/java-http.js.map +0 -1
  38. package/dist/lua-symbols.d.ts +0 -8
  39. package/dist/lua-symbols.js.map +0 -1
  40. package/dist/projeto.d.ts +0 -48
  41. package/dist/projeto.js.map +0 -1
  42. package/dist/python-http.d.ts +0 -23
  43. package/dist/python-http.js.map +0 -1
  44. package/dist/rust-http.d.ts +0 -23
  45. package/dist/rust-http.js.map +0 -1
  46. package/dist/tipos.d.ts +0 -3
  47. package/dist/tipos.js.map +0 -1
  48. package/dist/typescript-http.d.ts +0 -35
  49. package/dist/typescript-http.js.map +0 -1
  50. package/docs/AGENT_STARTER.md +0 -102
  51. package/docs/como-ensinar-a-sema-para-ia.md +0 -149
  52. package/docs/fluxo-pratico-ia-sema.md +0 -177
  53. package/docs/instalacao-e-primeiro-uso.md +0 -196
  54. package/docs/integracao-com-ia.md +0 -228
  55. package/docs/pagamento-ponta-a-ponta.md +0 -155
  56. package/docs/prompt-base-ia-sema.md +0 -104
  57. package/docs/sintaxe.md +0 -361
  58. package/exemplos/agendamento.sema +0 -106
  59. package/exemplos/assinatura.sema +0 -136
  60. package/exemplos/auditoria.sema +0 -88
  61. package/exemplos/autenticacao.sema +0 -125
  62. package/exemplos/automacao.sema +0 -107
  63. package/exemplos/cadastro_usuario.sema +0 -54
  64. package/exemplos/calculadora.sema +0 -78
  65. package/exemplos/crud_simples.sema +0 -89
  66. package/exemplos/estoque.sema +0 -126
  67. package/exemplos/exportacao.sema +0 -94
  68. package/exemplos/fila.sema +0 -131
  69. package/exemplos/integracao_externa.sema +0 -94
  70. package/exemplos/multi_tenant.sema +0 -140
  71. package/exemplos/notificacao.sema +0 -98
  72. package/exemplos/operacao_estrategia.sema +0 -402
  73. package/exemplos/pagamento.sema +0 -222
  74. package/exemplos/pagamento_dominio.sema +0 -35
  75. package/exemplos/pedido.sema +0 -119
  76. package/exemplos/permissao.sema +0 -121
  77. package/exemplos/relatorio.sema +0 -93
  78. package/exemplos/testes_embutidos.sema +0 -45
  79. package/exemplos/tratamento_erro.sema +0 -157
  80. package/exemplos/upload_arquivo.sema +0 -93
  81. package/exemplos/webhook.sema +0 -96
  82. package/llms-full.txt +0 -34
  83. package/llms.txt +0 -17
  84. package/node_modules/@sema/gerador-css/dist/index.d.ts +0 -3
  85. package/node_modules/@sema/gerador-css/dist/index.js +0 -592
  86. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  87. package/node_modules/@sema/gerador-css/package.json +0 -7
  88. package/node_modules/@sema/gerador-dart/dist/index.d.ts +0 -3
  89. package/node_modules/@sema/gerador-dart/dist/index.js +0 -44
  90. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  91. package/node_modules/@sema/gerador-dart/package.json +0 -7
  92. package/node_modules/@sema/gerador-html/dist/index.d.ts +0 -3
  93. package/node_modules/@sema/gerador-html/dist/index.js +0 -163
  94. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  95. package/node_modules/@sema/gerador-html/package.json +0 -7
  96. package/node_modules/@sema/gerador-javascript/dist/index.d.ts +0 -3
  97. package/node_modules/@sema/gerador-javascript/dist/index.js +0 -421
  98. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  99. package/node_modules/@sema/gerador-javascript/package.json +0 -7
  100. package/node_modules/@sema/gerador-lua/dist/index.d.ts +0 -3
  101. package/node_modules/@sema/gerador-lua/dist/index.js +0 -328
  102. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  103. package/node_modules/@sema/gerador-lua/package.json +0 -7
  104. package/node_modules/@sema/gerador-python/dist/index.d.ts +0 -6
  105. package/node_modules/@sema/gerador-python/dist/index.js +0 -628
  106. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  107. package/node_modules/@sema/gerador-python/package.json +0 -7
  108. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +0 -6
  109. package/node_modules/@sema/gerador-typescript/dist/index.js +0 -656
  110. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  111. package/node_modules/@sema/gerador-typescript/package.json +0 -7
  112. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +0 -122
  113. package/node_modules/@sema/nucleo/dist/ast/tipos.js +0 -2
  114. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  115. package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +0 -21
  116. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +0 -12
  117. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  118. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +0 -9
  119. package/node_modules/@sema/nucleo/dist/formatador/index.js +0 -445
  120. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  121. package/node_modules/@sema/nucleo/dist/index.d.ts +0 -34
  122. package/node_modules/@sema/nucleo/dist/index.js +0 -95
  123. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  124. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +0 -5
  125. package/node_modules/@sema/nucleo/dist/ir/conversor.js +0 -781
  126. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  127. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +0 -285
  128. package/node_modules/@sema/nucleo/dist/ir/modelos.js +0 -2
  129. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  130. package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +0 -7
  131. package/node_modules/@sema/nucleo/dist/lexer/lexer.js +0 -122
  132. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  133. package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +0 -8
  134. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -46
  135. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  136. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +0 -9
  137. package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -656
  138. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  139. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +0 -57
  140. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +0 -1497
  141. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  142. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +0 -104
  143. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +0 -445
  144. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  145. package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +0 -91
  146. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +0 -258
  147. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  148. package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +0 -2
  149. package/node_modules/@sema/nucleo/dist/util/arquivos.js +0 -25
  150. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  151. package/node_modules/@sema/nucleo/package.json +0 -7
  152. package/node_modules/@sema/padroes/dist/index.d.ts +0 -23
  153. package/node_modules/@sema/padroes/dist/index.js +0 -210
  154. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
  155. package/node_modules/@sema/padroes/package.json +0 -7
@@ -1,445 +0,0 @@
1
- import { parsear } from "../parser/parser.js";
2
- import { tokenizar } from "../lexer/lexer.js";
3
- const ORDEM_BLOCOS_MODULO = new Map([
4
- ["docs", 0],
5
- ["comments", 1],
6
- ["use", 2],
7
- ["vinculos", 3],
8
- ["type", 4],
9
- ["entity", 5],
10
- ["enum", 6],
11
- ["state", 7],
12
- ["task", 8],
13
- ["flow", 9],
14
- ["route", 10],
15
- ["worker", 11],
16
- ["evento", 12],
17
- ["fila", 13],
18
- ["cron", 14],
19
- ["webhook", 15],
20
- ["cache", 16],
21
- ["storage", 17],
22
- ["policy", 18],
23
- ["tests", 19],
24
- ["desconhecido", 20],
25
- ]);
26
- const ORDEM_SUBBLOCOS_TASK = new Map([
27
- ["docs", 0],
28
- ["comments", 1],
29
- ["input", 2],
30
- ["output", 3],
31
- ["rules", 4],
32
- ["effects", 5],
33
- ["auth", 6],
34
- ["authz", 7],
35
- ["dados", 8],
36
- ["audit", 9],
37
- ["segredos", 10],
38
- ["forbidden", 11],
39
- ["impl", 12],
40
- ["vinculos", 13],
41
- ["execucao", 14],
42
- ["state", 15],
43
- ["guarantees", 16],
44
- ["error", 17],
45
- ["tests", 18],
46
- ["desconhecido", 19],
47
- ]);
48
- const ORDEM_SUBBLOCOS_ROUTE = new Map([
49
- ["input", 0],
50
- ["output", 1],
51
- ["effects", 2],
52
- ["auth", 3],
53
- ["authz", 4],
54
- ["dados", 5],
55
- ["audit", 6],
56
- ["segredos", 7],
57
- ["forbidden", 8],
58
- ["vinculos", 9],
59
- ["error", 10],
60
- ["docs", 11],
61
- ["comments", 12],
62
- ["desconhecido", 13],
63
- ]);
64
- const ORDEM_SUBBLOCOS_FLOW = new Map([
65
- ["effects", 0],
66
- ["vinculos", 1],
67
- ["docs", 2],
68
- ["comments", 3],
69
- ["desconhecido", 4],
70
- ]);
71
- const ORDEM_SUBBLOCOS_SUPERFICIE = new Map([
72
- ["input", 0],
73
- ["output", 1],
74
- ["effects", 2],
75
- ["auth", 3],
76
- ["authz", 4],
77
- ["dados", 5],
78
- ["audit", 6],
79
- ["segredos", 7],
80
- ["forbidden", 8],
81
- ["impl", 9],
82
- ["vinculos", 10],
83
- ["execucao", 11],
84
- ["error", 12],
85
- ["docs", 13],
86
- ["comments", 14],
87
- ["desconhecido", 15],
88
- ]);
89
- const ORDEM_SUBBLOCOS_STATE = new Map([
90
- ["fields", 0],
91
- ["invariants", 1],
92
- ["transitions", 2],
93
- ["docs", 3],
94
- ["comments", 4],
95
- ["desconhecido", 5],
96
- ]);
97
- const ORDEM_SUBBLOCOS_TESTE = new Map([
98
- ["given", 0],
99
- ["when", 1],
100
- ["expect", 2],
101
- ["error", 3],
102
- ["docs", 4],
103
- ["comments", 5],
104
- ["desconhecido", 6],
105
- ]);
106
- const ORDEM_CAMPOS_POR_BLOCO = new Map([
107
- ["vinculos", new Map([
108
- ["arquivo", 0],
109
- ["simbolo", 1],
110
- ["rota", 2],
111
- ["superficie", 3],
112
- ["recurso", 4],
113
- ["tabela", 5],
114
- ["fila", 6],
115
- ["worker", 7],
116
- ["evento", 8],
117
- ["cron", 9],
118
- ["webhook", 10],
119
- ["cache", 11],
120
- ["storage", 12],
121
- ["policy", 13],
122
- ["teste", 14],
123
- ])],
124
- ["execucao", new Map([
125
- ["idempotencia", 0],
126
- ["timeout", 1],
127
- ["retry", 2],
128
- ["compensacao", 3],
129
- ["criticidade_operacional", 4],
130
- ])],
131
- ["auth", new Map([
132
- ["modo", 0],
133
- ["estrategia", 1],
134
- ["principal", 2],
135
- ["origem", 3],
136
- ])],
137
- ["authz", new Map([
138
- ["papeis", 0],
139
- ["papel", 1],
140
- ["escopos", 2],
141
- ["escopo", 3],
142
- ["politica", 4],
143
- ["tenant", 5],
144
- ])],
145
- ["dados", new Map([
146
- ["classificacao_padrao", 0],
147
- ["redacao_log", 1],
148
- ["retencao", 2],
149
- ])],
150
- ["audit", new Map([
151
- ["evento", 0],
152
- ["ator", 1],
153
- ["correlacao", 2],
154
- ["retencao", 3],
155
- ["motivo", 4],
156
- ])],
157
- ]);
158
- function indentacao(nivel) {
159
- return " ".repeat(nivel);
160
- }
161
- function ordenarPorMapa(itens, extrairChave, ordem) {
162
- return [...itens].sort((a, b) => {
163
- const ordemA = ordem.get(extrairChave(a)) ?? Number.MAX_SAFE_INTEGER;
164
- const ordemB = ordem.get(extrairChave(b)) ?? Number.MAX_SAFE_INTEGER;
165
- if (ordemA !== ordemB) {
166
- return ordemA - ordemB;
167
- }
168
- return extrairChave(a).localeCompare(extrairChave(b), "pt-BR");
169
- });
170
- }
171
- function normalizarEspacos(texto) {
172
- const marcadorSeta = "__SEMA_SETA__";
173
- return texto
174
- .trim()
175
- .replace(/\s*->\s*/g, ` ${marcadorSeta} `)
176
- .replace(/\s*-\s*>\s*/g, ` ${marcadorSeta} `)
177
- .replace(/\s+/g, " ")
178
- .replace(/\s*,\s*/g, ", ")
179
- .replace(/\(\s+/g, "(")
180
- .replace(/\s+\)/g, ")")
181
- .replace(/\[\s+/g, "[")
182
- .replace(/\s+\]/g, "]")
183
- .replace(/\s*>=\s*/g, " >= ")
184
- .replace(/\s*<=\s*/g, " <= ")
185
- .replace(/\s*==\s*/g, " == ")
186
- .replace(/\s*!=\s*/g, " != ")
187
- .replace(/\s*>\s*/g, " > ")
188
- .replace(/\s*<\s*/g, " < ")
189
- .replace(new RegExp(`\\s*${marcadorSeta}\\s*`, "g"), " -> ");
190
- }
191
- function normalizarCaminho(texto) {
192
- return texto
193
- .trim()
194
- .replace(/\s*\/\s*/g, "/")
195
- .replace(/\s+/g, "");
196
- }
197
- function eLiteralEscalar(texto) {
198
- const normalizado = texto.trim();
199
- return /^-?\d+(?:\.\d+)?$/.test(normalizado) || ["verdadeiro", "falso", "nulo"].includes(normalizado);
200
- }
201
- function deveColocarAspas(contexto, campo, combinado) {
202
- if (campo.nome === "metodo") {
203
- return false;
204
- }
205
- if (campo.nome === "caminho") {
206
- return /[{}]/.test(combinado);
207
- }
208
- if (contexto === "vinculos" && ["arquivo", "webhook"].includes(campo.nome)) {
209
- return true;
210
- }
211
- if (["timeout", "retry", "compensacao", "retencao", "rotacao"].includes(campo.nome)) {
212
- return true;
213
- }
214
- if (contexto === "docs" || contexto === "comments") {
215
- return true;
216
- }
217
- if (contexto === "error") {
218
- return !eLiteralEscalar(combinado);
219
- }
220
- if (contexto === "given" || contexto === "when" || contexto === "expect") {
221
- return !eLiteralEscalar(combinado);
222
- }
223
- return false;
224
- }
225
- function normalizarValorCampo(campo) {
226
- return [campo.valor, ...campo.modificadores]
227
- .filter(Boolean)
228
- .join(" ")
229
- .replace(/\s+/g, " ")
230
- .trim();
231
- }
232
- function ordenarCampos(bloco) {
233
- const ordem = ORDEM_CAMPOS_POR_BLOCO.get(bloco.palavraChave);
234
- if (!ordem) {
235
- return bloco.campos;
236
- }
237
- return ordenarPorMapa(bloco.campos, (campo) => campo.nome, ordem);
238
- }
239
- function renderizarCampo(campo, nivel, contexto) {
240
- let combinado = normalizarValorCampo(campo);
241
- if (campo.nome === "caminho") {
242
- combinado = normalizarCaminho(combinado);
243
- }
244
- if (deveColocarAspas(contexto, campo, combinado)) {
245
- combinado = JSON.stringify(combinado);
246
- }
247
- return `${indentacao(nivel)}${campo.nome}: ${combinado}`;
248
- }
249
- function renderizarLinha(linha, nivel) {
250
- return `${indentacao(nivel)}${normalizarEspacos(linha)}`;
251
- }
252
- function renderizarCasoTeste(caso, nivel) {
253
- const partes = [];
254
- if (caso.given) {
255
- partes.push(renderizarBlocoGenerico(caso.given, nivel + 1));
256
- }
257
- if (caso.when) {
258
- partes.push(renderizarBlocoGenerico(caso.when, nivel + 1));
259
- }
260
- if (caso.expect) {
261
- partes.push(renderizarBlocoGenerico(caso.expect, nivel + 1));
262
- }
263
- if (caso.error) {
264
- partes.push(renderizarBlocoGenerico(caso.error, nivel + 1));
265
- }
266
- if (caso.docs) {
267
- partes.push(renderizarBlocoGenerico(caso.docs, nivel + 1));
268
- }
269
- if (caso.comments) {
270
- partes.push(renderizarBlocoGenerico(caso.comments, nivel + 1));
271
- }
272
- return `${indentacao(nivel)}caso ${JSON.stringify(caso.nome)} {\n${partes.join("\n\n")}\n${indentacao(nivel)}}`;
273
- }
274
- function renderizarBlocoAst(bloco, nivel) {
275
- switch (bloco.tipo) {
276
- case "caso_teste":
277
- return renderizarCasoTeste(bloco, nivel);
278
- case "bloco_generico":
279
- return renderizarBlocoGenerico(bloco, nivel);
280
- case "use":
281
- return `${indentacao(nivel)}use ${bloco.origem === "sema" ? "" : `${bloco.origem} `}${bloco.caminho}`.trimEnd();
282
- case "enum":
283
- return renderizarEnum(bloco, nivel);
284
- case "type":
285
- return renderizarTipo(bloco, nivel);
286
- case "entity":
287
- return renderizarEntity(bloco, nivel);
288
- case "task":
289
- return renderizarTask(bloco, nivel);
290
- case "flow":
291
- return renderizarFlow(bloco, nivel);
292
- case "route":
293
- return renderizarRoute(bloco, nivel);
294
- case "state":
295
- return renderizarState(bloco, nivel);
296
- }
297
- }
298
- function ordenarSubblocos(bloco) {
299
- if (bloco.palavraChave === "task") {
300
- return ordenarPorMapa(bloco.blocos, (item) => item.tipo === "bloco_generico" ? item.palavraChave : item.tipo, ORDEM_SUBBLOCOS_TASK);
301
- }
302
- if (bloco.palavraChave === "route") {
303
- return ordenarPorMapa(bloco.blocos, (item) => item.tipo === "bloco_generico" ? item.palavraChave : item.tipo, ORDEM_SUBBLOCOS_ROUTE);
304
- }
305
- if (bloco.palavraChave === "flow") {
306
- return ordenarPorMapa(bloco.blocos, (item) => item.tipo === "bloco_generico" ? item.palavraChave : item.tipo, ORDEM_SUBBLOCOS_FLOW);
307
- }
308
- if (["worker", "evento", "fila", "cron", "webhook", "cache", "storage", "policy"].includes(bloco.palavraChave)) {
309
- return ordenarPorMapa(bloco.blocos, (item) => item.tipo === "bloco_generico" ? item.palavraChave : item.tipo, ORDEM_SUBBLOCOS_SUPERFICIE);
310
- }
311
- if (bloco.palavraChave === "state") {
312
- return ordenarPorMapa(bloco.blocos, (item) => item.tipo === "bloco_generico" ? item.palavraChave : item.tipo, ORDEM_SUBBLOCOS_STATE);
313
- }
314
- if (bloco.palavraChave === "tests") {
315
- return ordenarPorMapa(bloco.blocos, (item) => item.tipo === "caso_teste" ? "case" : item.tipo === "bloco_generico" ? item.palavraChave : item.tipo, ORDEM_SUBBLOCOS_TESTE);
316
- }
317
- return bloco.blocos;
318
- }
319
- function renderizarBlocoGenerico(bloco, nivel) {
320
- const identificadorBloco = bloco.palavraChave === "desconhecido" && bloco.nome
321
- ? bloco.nome
322
- : `${bloco.palavraChave}${bloco.nome ? ` ${bloco.nome}` : ""}`;
323
- const cabecalho = `${indentacao(nivel)}${identificadorBloco} {`;
324
- const linhasCampos = ordenarCampos(bloco).map((campo) => renderizarCampo(campo, nivel + 1, bloco.palavraChave));
325
- const linhasDeclarativas = bloco.linhas.map((linha) => renderizarLinha(linha.conteudo, nivel + 1));
326
- const blocosInternos = ordenarSubblocos(bloco).map((subbloco) => renderizarBlocoAst(subbloco, nivel + 1));
327
- const corpo = [...linhasCampos, ...linhasDeclarativas, ...blocosInternos];
328
- if (corpo.length === 0) {
329
- return `${cabecalho}\n${indentacao(nivel)}}`;
330
- }
331
- return `${cabecalho}\n${corpo.join("\n")}\n${indentacao(nivel)}}`;
332
- }
333
- function renderizarEnum(enumeracao, nivel) {
334
- const corpo = enumeracao.valores.map((valor, indice) => `${indentacao(nivel + 1)}${valor}${indice < enumeracao.valores.length - 1 ? "," : ""}`);
335
- return `${indentacao(nivel)}enum ${enumeracao.nome} {\n${corpo.join("\n")}\n${indentacao(nivel)}}`;
336
- }
337
- function renderizarTipo(type, nivel) {
338
- return `${indentacao(nivel)}type ${type.nome} {\n${renderizarCorpoSimples(type.corpo, nivel + 1)}\n${indentacao(nivel)}}`;
339
- }
340
- function renderizarEntity(entity, nivel) {
341
- return `${indentacao(nivel)}entity ${entity.nome} {\n${renderizarCorpoSimples(entity.corpo, nivel + 1)}\n${indentacao(nivel)}}`;
342
- }
343
- function renderizarTask(task, nivel) {
344
- return `${indentacao(nivel)}task ${task.nome} {\n${renderizarCorpoSimples(task.corpo, nivel + 1)}\n${indentacao(nivel)}}`;
345
- }
346
- function renderizarFlow(flow, nivel) {
347
- return `${indentacao(nivel)}flow ${flow.nome} {\n${renderizarCorpoSimples(flow.corpo, nivel + 1)}\n${indentacao(nivel)}}`;
348
- }
349
- function renderizarRoute(route, nivel) {
350
- return `${indentacao(nivel)}route ${route.nome} {\n${renderizarCorpoSimples(route.corpo, nivel + 1)}\n${indentacao(nivel)}}`;
351
- }
352
- function renderizarState(state, nivel) {
353
- return `${indentacao(nivel)}state${state.nome ? ` ${state.nome}` : ""} {\n${renderizarCorpoSimples(state.corpo, nivel + 1)}\n${indentacao(nivel)}}`;
354
- }
355
- function renderizarCorpoSimples(bloco, nivel) {
356
- const conteudo = ordenarSubblocos(bloco).map((subbloco) => renderizarBlocoAst(subbloco, nivel));
357
- const campos = ordenarCampos(bloco).map((campo) => renderizarCampo(campo, nivel, bloco.palavraChave));
358
- const linhas = bloco.linhas.map((linha) => renderizarLinha(linha.conteudo, nivel));
359
- const corpo = [...campos, ...linhas, ...conteudo];
360
- return corpo.join("\n");
361
- }
362
- function renderizarModulo(modulo) {
363
- const blocos = [];
364
- if (modulo.docs) {
365
- blocos.push({ chave: "docs", conteudo: renderizarBlocoGenerico(modulo.docs, 1) });
366
- }
367
- if (modulo.comments) {
368
- blocos.push({ chave: "comments", conteudo: renderizarBlocoGenerico(modulo.comments, 1) });
369
- }
370
- for (const use of modulo.uses) {
371
- blocos.push({ chave: "use", conteudo: renderizarBlocoAst(use, 1) });
372
- }
373
- if (modulo.vinculos) {
374
- blocos.push({ chave: "vinculos", conteudo: renderizarBlocoGenerico(modulo.vinculos, 1) });
375
- }
376
- for (const type of modulo.types) {
377
- blocos.push({ chave: "type", conteudo: renderizarBlocoAst(type, 1) });
378
- }
379
- for (const entity of modulo.entities) {
380
- blocos.push({ chave: "entity", conteudo: renderizarBlocoAst(entity, 1) });
381
- }
382
- for (const enumeracao of modulo.enums) {
383
- blocos.push({ chave: "enum", conteudo: renderizarBlocoAst(enumeracao, 1) });
384
- }
385
- for (const state of modulo.states) {
386
- blocos.push({ chave: "state", conteudo: renderizarBlocoAst(state, 1) });
387
- }
388
- for (const task of modulo.tasks) {
389
- blocos.push({ chave: "task", conteudo: renderizarBlocoAst(task, 1) });
390
- }
391
- for (const flow of modulo.flows) {
392
- blocos.push({ chave: "flow", conteudo: renderizarBlocoAst(flow, 1) });
393
- }
394
- for (const route of modulo.routes) {
395
- blocos.push({ chave: "route", conteudo: renderizarBlocoAst(route, 1) });
396
- }
397
- for (const worker of modulo.workers) {
398
- blocos.push({ chave: "worker", conteudo: renderizarBlocoGenerico(worker, 1) });
399
- }
400
- for (const evento of modulo.eventos) {
401
- blocos.push({ chave: "evento", conteudo: renderizarBlocoGenerico(evento, 1) });
402
- }
403
- for (const fila of modulo.filas) {
404
- blocos.push({ chave: "fila", conteudo: renderizarBlocoGenerico(fila, 1) });
405
- }
406
- for (const cron of modulo.crons) {
407
- blocos.push({ chave: "cron", conteudo: renderizarBlocoGenerico(cron, 1) });
408
- }
409
- for (const webhook of modulo.webhooks) {
410
- blocos.push({ chave: "webhook", conteudo: renderizarBlocoGenerico(webhook, 1) });
411
- }
412
- for (const cache of modulo.caches) {
413
- blocos.push({ chave: "cache", conteudo: renderizarBlocoGenerico(cache, 1) });
414
- }
415
- for (const storage of modulo.storages) {
416
- blocos.push({ chave: "storage", conteudo: renderizarBlocoGenerico(storage, 1) });
417
- }
418
- for (const policy of modulo.policies) {
419
- blocos.push({ chave: "policy", conteudo: renderizarBlocoGenerico(policy, 1) });
420
- }
421
- if (modulo.tests) {
422
- blocos.push({ chave: "tests", conteudo: renderizarBlocoGenerico(modulo.tests, 1) });
423
- }
424
- for (const extra of modulo.extras) {
425
- blocos.push({ chave: "desconhecido", conteudo: renderizarBlocoGenerico(extra, 1) });
426
- }
427
- const ordenados = ordenarPorMapa(blocos, (item) => item.chave, ORDEM_BLOCOS_MODULO);
428
- return `module ${modulo.nome} {\n${ordenados.map((item) => item.conteudo).join("\n\n")}\n}\n`;
429
- }
430
- export function formatarCodigo(codigo, arquivo) {
431
- const resultadoLexer = tokenizar(codigo, arquivo);
432
- const resultadoParser = parsear(resultadoLexer.tokens);
433
- const diagnosticos = [...resultadoLexer.diagnosticos, ...resultadoParser.diagnosticos];
434
- if (!resultadoParser.modulo) {
435
- return { diagnosticos, alterado: false };
436
- }
437
- const codigoFormatado = renderizarModulo(resultadoParser.modulo);
438
- return {
439
- modulo: resultadoParser.modulo,
440
- codigoFormatado,
441
- diagnosticos,
442
- alterado: codigoFormatado !== codigo,
443
- };
444
- }
445
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatador/index.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { type Diagnostico } from "./diagnosticos/index.js";
2
- import type { ModuloAst } from "./ast/tipos.js";
3
- import type { IrModulo } from "./ir/modelos.js";
4
- export * from "./diagnosticos/index.js";
5
- export * from "./ast/tipos.js";
6
- export * from "./lexer/tokens.js";
7
- export * from "./lexer/lexer.js";
8
- export * from "./parser/parser.js";
9
- export * from "./semantico/analisador.js";
10
- export * from "./semantico/estruturas.js";
11
- export * from "./ir/modelos.js";
12
- export * from "./ir/conversor.js";
13
- export * from "./formatador/index.js";
14
- export * from "./util/arquivos.js";
15
- export interface ResultadoCompilacao {
16
- modulo?: ModuloAst;
17
- ir?: IrModulo;
18
- diagnosticos: Diagnostico[];
19
- }
20
- export interface FonteProjeto {
21
- caminho: string;
22
- codigo: string;
23
- }
24
- export interface ResultadoCompilacaoProjetoModulo extends ResultadoCompilacao {
25
- caminho: string;
26
- }
27
- export interface ResultadoCompilacaoProjeto {
28
- modulos: ResultadoCompilacaoProjetoModulo[];
29
- diagnosticos: Diagnostico[];
30
- }
31
- export declare function compilarCodigo(codigo: string, arquivo?: string): ResultadoCompilacao;
32
- export declare function compilarProjeto(fontes: FonteProjeto[]): ResultadoCompilacaoProjeto;
33
- export declare function temErros(diagnosticos: Diagnostico[]): boolean;
34
- export declare function formatarDiagnosticos(diagnosticos: Diagnostico[]): string;
@@ -1,95 +0,0 @@
1
- import { parsear } from "./parser/parser.js";
2
- import { analisarSemantica, criarContextoLocal } from "./semantico/analisador.js";
3
- import { tokenizar } from "./lexer/lexer.js";
4
- import { converterParaIr } from "./ir/conversor.js";
5
- import { formatarDiagnostico } from "./diagnosticos/index.js";
6
- export * from "./diagnosticos/index.js";
7
- export * from "./ast/tipos.js";
8
- export * from "./lexer/tokens.js";
9
- export * from "./lexer/lexer.js";
10
- export * from "./parser/parser.js";
11
- export * from "./semantico/analisador.js";
12
- export * from "./semantico/estruturas.js";
13
- export * from "./ir/modelos.js";
14
- export * from "./ir/conversor.js";
15
- export * from "./formatador/index.js";
16
- export * from "./util/arquivos.js";
17
- export function compilarCodigo(codigo, arquivo) {
18
- const resultadoLexer = tokenizar(codigo, arquivo);
19
- const resultadoParser = parsear(resultadoLexer.tokens);
20
- const diagnosticos = [...resultadoLexer.diagnosticos, ...resultadoParser.diagnosticos];
21
- if (!resultadoParser.modulo) {
22
- return { diagnosticos };
23
- }
24
- const resultadoSemantico = analisarSemantica(resultadoParser.modulo);
25
- diagnosticos.push(...resultadoSemantico.diagnosticos);
26
- const ir = converterParaIr(resultadoParser.modulo, diagnosticos, resultadoSemantico.contexto);
27
- return {
28
- modulo: resultadoParser.modulo,
29
- ir,
30
- diagnosticos,
31
- };
32
- }
33
- export function compilarProjeto(fontes) {
34
- const resultadosBase = fontes.map((fonte) => {
35
- const resultadoLexer = tokenizar(fonte.codigo, fonte.caminho);
36
- const resultadoParser = parsear(resultadoLexer.tokens);
37
- return {
38
- caminho: fonte.caminho,
39
- modulo: resultadoParser.modulo,
40
- diagnosticos: [...resultadoLexer.diagnosticos, ...resultadoParser.diagnosticos],
41
- };
42
- });
43
- const contextosLocais = new Map();
44
- const nomesModulos = new Map();
45
- for (const resultado of resultadosBase) {
46
- if (!resultado.modulo) {
47
- continue;
48
- }
49
- const caminhoAnterior = nomesModulos.get(resultado.modulo.nome);
50
- if (caminhoAnterior) {
51
- resultado.diagnosticos.push({
52
- codigo: "SEM020",
53
- mensagem: `Modulo "${resultado.modulo.nome}" foi declarado mais de uma vez no mesmo projeto.`,
54
- severidade: "erro",
55
- intervalo: resultado.modulo.intervalo,
56
- dica: "Use nomes de modulo unicos para evitar ambiguidade de importacao.",
57
- contexto: `Primeira ocorrencia encontrada em ${caminhoAnterior}.`,
58
- });
59
- continue;
60
- }
61
- nomesModulos.set(resultado.modulo.nome, resultado.caminho);
62
- contextosLocais.set(resultado.modulo.nome, criarContextoLocal(resultado.modulo));
63
- }
64
- const modulos = resultadosBase.map((resultado) => {
65
- if (!resultado.modulo) {
66
- return {
67
- caminho: resultado.caminho,
68
- diagnosticos: resultado.diagnosticos,
69
- };
70
- }
71
- const resultadoSemantico = analisarSemantica(resultado.modulo, { contextosModulos: contextosLocais });
72
- const diagnosticos = [...resultado.diagnosticos, ...resultadoSemantico.diagnosticos];
73
- const ir = converterParaIr(resultado.modulo, diagnosticos, resultadoSemantico.contexto);
74
- return {
75
- caminho: resultado.caminho,
76
- modulo: resultado.modulo,
77
- ir,
78
- diagnosticos,
79
- };
80
- });
81
- return {
82
- modulos,
83
- diagnosticos: modulos.flatMap((modulo) => modulo.diagnosticos),
84
- };
85
- }
86
- export function temErros(diagnosticos) {
87
- return diagnosticos.some((diagnostico) => diagnostico.severidade === "erro");
88
- }
89
- export function formatarDiagnosticos(diagnosticos) {
90
- if (diagnosticos.length === 0) {
91
- return "Nenhum diagnostico encontrado.";
92
- }
93
- return diagnosticos.map(formatarDiagnostico).join("\n");
94
- }
95
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { ModuloAst } from "../ast/tipos.js";
2
- import type { Diagnostico } from "../diagnosticos/index.js";
3
- import type { ContextoSemantico } from "../semantico/analisador.js";
4
- import type { IrModulo } from "./modelos.js";
5
- export declare function converterParaIr(modulo: ModuloAst, diagnosticos: Diagnostico[], contexto?: ContextoSemantico): IrModulo;