@semacode/cli 1.5.14 → 1.5.16

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