@semacode/cli 1.3.5 → 1.3.6

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 (157) hide show
  1. package/dist/cpp-symbols.d.ts +10 -0
  2. package/dist/cpp-symbols.js.map +1 -0
  3. package/dist/dotnet-http.d.ts +23 -0
  4. package/dist/dotnet-http.js.map +1 -0
  5. package/dist/drift.d.ts +118 -0
  6. package/dist/drift.js.map +1 -0
  7. package/dist/go-http.d.ts +23 -0
  8. package/dist/go-http.js.map +1 -0
  9. package/dist/importador.d.ts +29 -0
  10. package/dist/importador.js.map +1 -0
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/java-http.d.ts +23 -0
  14. package/dist/java-http.js.map +1 -0
  15. package/dist/lua-symbols.d.ts +8 -0
  16. package/dist/lua-symbols.js.map +1 -0
  17. package/dist/projeto.d.ts +48 -0
  18. package/dist/projeto.js.map +1 -0
  19. package/dist/python-http.d.ts +23 -0
  20. package/dist/python-http.js.map +1 -0
  21. package/dist/rust-http.d.ts +23 -0
  22. package/dist/rust-http.js.map +1 -0
  23. package/dist/tipos.d.ts +3 -0
  24. package/dist/tipos.js.map +1 -0
  25. package/dist/typescript-http.d.ts +35 -0
  26. package/dist/typescript-http.js.map +1 -0
  27. package/node_modules/@sema/gerador-css/dist/index.d.ts +3 -0
  28. package/node_modules/@sema/gerador-css/dist/index.js +592 -0
  29. package/node_modules/@sema/gerador-css/dist/index.js.map +1 -0
  30. package/node_modules/@sema/gerador-css/package.json +14 -0
  31. package/node_modules/@sema/gerador-css/src/index.ts +605 -0
  32. package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
  33. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
  34. package/node_modules/@sema/gerador-dart/dist/index.d.ts +3 -0
  35. package/node_modules/@sema/gerador-dart/dist/index.js +44 -0
  36. package/node_modules/@sema/gerador-dart/dist/index.js.map +1 -0
  37. package/node_modules/@sema/gerador-dart/package.json +14 -0
  38. package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
  39. package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
  40. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
  41. package/node_modules/@sema/gerador-html/dist/index.d.ts +3 -0
  42. package/node_modules/@sema/gerador-html/dist/index.js +163 -0
  43. package/node_modules/@sema/gerador-html/dist/index.js.map +1 -0
  44. package/node_modules/@sema/gerador-html/package.json +14 -0
  45. package/node_modules/@sema/gerador-html/src/index.ts +185 -0
  46. package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
  47. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
  48. package/node_modules/@sema/gerador-javascript/dist/index.d.ts +3 -0
  49. package/node_modules/@sema/gerador-javascript/dist/index.js +421 -0
  50. package/node_modules/@sema/gerador-javascript/dist/index.js.map +1 -0
  51. package/node_modules/@sema/gerador-javascript/package.json +14 -0
  52. package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
  53. package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
  54. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
  55. package/node_modules/@sema/gerador-lua/dist/index.d.ts +3 -0
  56. package/node_modules/@sema/gerador-lua/dist/index.js +328 -0
  57. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -0
  58. package/node_modules/@sema/gerador-lua/package.json +14 -0
  59. package/node_modules/@sema/gerador-lua/src/index.d.ts +3 -0
  60. package/node_modules/@sema/gerador-lua/src/index.js.map +1 -0
  61. package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
  62. package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
  63. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
  64. package/node_modules/@sema/gerador-python/dist/index.d.ts +6 -0
  65. package/node_modules/@sema/gerador-python/dist/index.js +628 -0
  66. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -0
  67. package/node_modules/@sema/gerador-python/package.json +14 -0
  68. package/node_modules/@sema/gerador-python/src/index.ts +706 -0
  69. package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
  70. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
  71. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +6 -0
  72. package/node_modules/@sema/gerador-typescript/dist/index.js +656 -0
  73. package/node_modules/@sema/gerador-typescript/dist/index.js.map +1 -0
  74. package/node_modules/@sema/gerador-typescript/package.json +14 -0
  75. package/node_modules/@sema/gerador-typescript/src/index.ts +728 -0
  76. package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
  77. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
  78. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +122 -0
  79. package/node_modules/@sema/nucleo/dist/ast/tipos.js +2 -0
  80. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +1 -0
  81. package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +21 -0
  82. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +12 -0
  83. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +1 -0
  84. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +9 -0
  85. package/node_modules/@sema/nucleo/dist/formatador/index.js +445 -0
  86. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -0
  87. package/node_modules/@sema/nucleo/dist/index.d.ts +34 -0
  88. package/node_modules/@sema/nucleo/dist/index.js +95 -0
  89. package/node_modules/@sema/nucleo/dist/index.js.map +1 -0
  90. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +5 -0
  91. package/node_modules/@sema/nucleo/dist/ir/conversor.js +781 -0
  92. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -0
  93. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +285 -0
  94. package/node_modules/@sema/nucleo/dist/ir/modelos.js +2 -0
  95. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +1 -0
  96. package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +7 -0
  97. package/node_modules/@sema/nucleo/dist/lexer/lexer.js +122 -0
  98. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +1 -0
  99. package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +8 -0
  100. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +46 -0
  101. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -0
  102. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +9 -0
  103. package/node_modules/@sema/nucleo/dist/parser/parser.js +656 -0
  104. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -0
  105. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +57 -0
  106. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1497 -0
  107. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -0
  108. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +104 -0
  109. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +445 -0
  110. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -0
  111. package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +91 -0
  112. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +258 -0
  113. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +1 -0
  114. package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +2 -0
  115. package/node_modules/@sema/nucleo/dist/util/arquivos.js +25 -0
  116. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +1 -0
  117. package/node_modules/@sema/nucleo/package.json +10 -0
  118. package/node_modules/@sema/nucleo/src/ast/tipos.ts +191 -0
  119. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
  120. package/node_modules/@sema/nucleo/src/formatador/index.ts +507 -0
  121. package/node_modules/@sema/nucleo/src/index.ts +133 -0
  122. package/node_modules/@sema/nucleo/src/ir/conversor.ts +912 -0
  123. package/node_modules/@sema/nucleo/src/ir/modelos.ts +331 -0
  124. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
  125. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +64 -0
  126. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +39 -0
  127. package/node_modules/@sema/nucleo/src/parser/parser.ts +790 -0
  128. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +2692 -0
  129. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +632 -0
  130. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
  131. package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
  132. package/node_modules/@sema/nucleo/tsconfig.json +9 -0
  133. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
  134. package/node_modules/@sema/padroes/dist/index.d.ts +23 -0
  135. package/node_modules/@sema/padroes/dist/index.js +210 -0
  136. package/node_modules/@sema/padroes/dist/index.js.map +1 -0
  137. package/node_modules/@sema/padroes/package.json +10 -0
  138. package/node_modules/@sema/padroes/src/index.ts +251 -0
  139. package/node_modules/@sema/padroes/tsconfig.json +9 -0
  140. package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
  141. package/package.json +1 -1
  142. package/README.md +0 -73
  143. package/logo.png +0 -0
  144. package/semacode-cli-1.3.1.tgz +0 -0
  145. package/src/cpp-symbols.ts +0 -82
  146. package/src/dotnet-http.ts +0 -355
  147. package/src/drift.ts +0 -2455
  148. package/src/go-http.ts +0 -118
  149. package/src/importador.ts +0 -3448
  150. package/src/index.ts +0 -4476
  151. package/src/java-http.ts +0 -247
  152. package/src/projeto.ts +0 -810
  153. package/src/python-http.ts +0 -258
  154. package/src/rust-http.ts +0 -125
  155. package/src/tipos.ts +0 -22
  156. package/src/typescript-http.ts +0 -1076
  157. package/tsconfig.json +0 -20
@@ -0,0 +1,445 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatador/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
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;
@@ -0,0 +1,95 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
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;