@semacode/cli 1.5.16 → 1.5.18

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 (181) hide show
  1. package/AGENTS.md +272 -0
  2. package/LICENSE +22 -0
  3. package/README.md +104 -112
  4. package/SEMA_BRIEF.curto.txt +9 -0
  5. package/SEMA_BRIEF.md +63 -0
  6. package/SEMA_BRIEF.micro.txt +7 -0
  7. package/SEMA_INDEX.json +783 -0
  8. package/dist/angular-consumer-standalone.d.ts +6 -0
  9. package/dist/angular-consumer-standalone.js.map +1 -0
  10. package/dist/cpp-symbols.d.ts +10 -0
  11. package/dist/cpp-symbols.js.map +1 -0
  12. package/dist/docs.d.ts +56 -0
  13. package/dist/docs.js.map +1 -0
  14. package/dist/dotnet-http.d.ts +23 -0
  15. package/dist/dotnet-http.js.map +1 -0
  16. package/dist/drift.d.ts +225 -0
  17. package/dist/drift.js +5 -111
  18. package/dist/drift.js.map +1 -0
  19. package/dist/go-http.d.ts +23 -0
  20. package/dist/go-http.js.map +1 -0
  21. package/dist/importador.d.ts +31 -0
  22. package/dist/importador.js +1 -200
  23. package/dist/importador.js.map +1 -0
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.js +59 -479
  26. package/dist/index.js.map +1 -0
  27. package/dist/java-http.d.ts +23 -0
  28. package/dist/java-http.js.map +1 -0
  29. package/dist/lua-symbols.d.ts +10 -0
  30. package/dist/lua-symbols.js.map +1 -0
  31. package/dist/php-symbols.d.ts +24 -0
  32. package/dist/php-symbols.js.map +1 -0
  33. package/dist/projeto.d.ts +53 -0
  34. package/dist/projeto.js +0 -20
  35. package/dist/projeto.js.map +1 -0
  36. package/dist/python-http.d.ts +23 -0
  37. package/dist/python-http.js.map +1 -0
  38. package/dist/rust-http.d.ts +23 -0
  39. package/dist/rust-http.js.map +1 -0
  40. package/dist/tipos.d.ts +3 -0
  41. package/dist/tipos.js.map +1 -0
  42. package/dist/typescript-http.d.ts +35 -0
  43. package/dist/typescript-http.js.map +1 -0
  44. package/docs/AGENT_STARTER.md +103 -0
  45. package/docs/cli.md +106 -0
  46. package/docs/como-ensinar-a-sema-para-ia.md +149 -0
  47. package/docs/deploy.md +70 -0
  48. package/docs/documentacao.md +63 -0
  49. package/docs/env.md +56 -0
  50. package/docs/extensao-vscode.md +45 -0
  51. package/docs/fluxo-pratico-ia-sema.md +181 -0
  52. package/docs/instalacao-e-primeiro-uso.md +112 -0
  53. package/docs/integracao-com-ia.md +103 -0
  54. package/docs/mcp.md +51 -0
  55. package/docs/pagamento-ponta-a-ponta.md +165 -0
  56. package/docs/persistencia-vendor-first.md +145 -0
  57. package/docs/prompt-base-ia-sema.md +105 -0
  58. package/docs/rollback.md +47 -0
  59. package/docs/sintaxe.md +212 -0
  60. package/exemplos/agendamento.sema +105 -0
  61. package/exemplos/assinatura.sema +133 -0
  62. package/exemplos/auditoria.sema +89 -0
  63. package/exemplos/autenticacao.sema +125 -0
  64. package/exemplos/automacao.sema +107 -0
  65. package/exemplos/cadastro_usuario.sema +54 -0
  66. package/exemplos/calculadora.sema +78 -0
  67. package/exemplos/crud_simples.sema +89 -0
  68. package/exemplos/estoque.sema +127 -0
  69. package/exemplos/exportacao.sema +94 -0
  70. package/exemplos/fila.sema +130 -0
  71. package/exemplos/integracao_externa.sema +94 -0
  72. package/exemplos/multi_tenant.sema +140 -0
  73. package/exemplos/notificacao.sema +149 -0
  74. package/exemplos/operacao_estrategia.sema +633 -0
  75. package/exemplos/pagamento.sema +434 -0
  76. package/exemplos/pagamento_dominio.sema +35 -0
  77. package/exemplos/pedido.sema +255 -0
  78. package/exemplos/permissao.sema +121 -0
  79. package/exemplos/persistencia_vendor_first.sema +86 -0
  80. package/exemplos/relatorio.sema +93 -0
  81. package/exemplos/replica_analitica_erp.sema +160 -0
  82. package/exemplos/testes_embutidos.sema +45 -0
  83. package/exemplos/tratamento_erro.sema +157 -0
  84. package/exemplos/upload_arquivo.sema +93 -0
  85. package/exemplos/webhook.sema +94 -0
  86. package/llms-full.txt +34 -0
  87. package/llms.txt +17 -0
  88. package/node_modules/@sema/gerador-css/dist/index.d.ts +3 -0
  89. package/node_modules/@sema/gerador-css/dist/index.js +592 -0
  90. package/node_modules/@sema/gerador-css/dist/index.js.map +1 -0
  91. package/node_modules/@sema/gerador-css/package.json +7 -0
  92. package/node_modules/@sema/gerador-dart/dist/index.d.ts +3 -0
  93. package/node_modules/@sema/gerador-dart/dist/index.js +44 -0
  94. package/node_modules/@sema/gerador-dart/dist/index.js.map +1 -0
  95. package/node_modules/@sema/gerador-dart/package.json +7 -0
  96. package/node_modules/@sema/gerador-html/dist/index.d.ts +3 -0
  97. package/node_modules/@sema/gerador-html/dist/index.js +163 -0
  98. package/node_modules/@sema/gerador-html/dist/index.js.map +1 -0
  99. package/node_modules/@sema/gerador-html/package.json +7 -0
  100. package/node_modules/@sema/gerador-javascript/dist/index.d.ts +3 -0
  101. package/node_modules/@sema/gerador-javascript/dist/index.js +421 -0
  102. package/node_modules/@sema/gerador-javascript/dist/index.js.map +1 -0
  103. package/node_modules/@sema/gerador-javascript/package.json +7 -0
  104. package/node_modules/@sema/gerador-lua/dist/index.d.ts +3 -0
  105. package/node_modules/@sema/gerador-lua/dist/index.js +328 -0
  106. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -0
  107. package/node_modules/@sema/gerador-lua/package.json +7 -0
  108. package/node_modules/@sema/gerador-python/dist/index.d.ts +6 -0
  109. package/node_modules/@sema/gerador-python/dist/index.js +729 -0
  110. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -0
  111. package/node_modules/@sema/gerador-python/package.json +7 -0
  112. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +6 -0
  113. package/node_modules/@sema/gerador-typescript/dist/index.js +793 -0
  114. package/node_modules/@sema/gerador-typescript/dist/index.js.map +1 -0
  115. package/node_modules/@sema/gerador-typescript/package.json +7 -0
  116. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +123 -0
  117. package/node_modules/@sema/nucleo/dist/ast/tipos.js +2 -0
  118. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +1 -0
  119. package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +21 -0
  120. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +12 -0
  121. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +1 -0
  122. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +9 -0
  123. package/node_modules/@sema/nucleo/dist/formatador/index.js +460 -0
  124. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -0
  125. package/node_modules/@sema/nucleo/dist/index.d.ts +35 -0
  126. package/node_modules/@sema/nucleo/dist/index.js +96 -0
  127. package/node_modules/@sema/nucleo/dist/index.js.map +1 -0
  128. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +5 -0
  129. package/node_modules/@sema/nucleo/dist/ir/conversor.js +877 -0
  130. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -0
  131. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +345 -0
  132. package/node_modules/@sema/nucleo/dist/ir/modelos.js +2 -0
  133. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +1 -0
  134. package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +7 -0
  135. package/node_modules/@sema/nucleo/dist/lexer/lexer.js +122 -0
  136. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +1 -0
  137. package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +8 -0
  138. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +61 -0
  139. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -0
  140. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +9 -0
  141. package/node_modules/@sema/nucleo/dist/parser/parser.js +767 -0
  142. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -0
  143. package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +39 -0
  144. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +294 -0
  145. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -0
  146. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +59 -0
  147. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1681 -0
  148. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -0
  149. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +106 -0
  150. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +475 -0
  151. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -0
  152. package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +91 -0
  153. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +258 -0
  154. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +1 -0
  155. package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +2 -0
  156. package/node_modules/@sema/nucleo/dist/util/arquivos.js +25 -0
  157. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +1 -0
  158. package/node_modules/@sema/nucleo/package.json +7 -0
  159. package/node_modules/@sema/padroes/dist/index.d.ts +25 -0
  160. package/node_modules/@sema/padroes/dist/index.js +316 -0
  161. package/node_modules/@sema/padroes/dist/index.js.map +1 -0
  162. package/node_modules/@sema/padroes/package.json +7 -0
  163. package/package.json +32 -23
  164. package/semacode-cli-1.3.1.tgz +0 -0
  165. package/src/angular-consumer-standalone.ts +0 -312
  166. package/src/cpp-symbols.ts +0 -82
  167. package/src/docs.ts +0 -535
  168. package/src/dotnet-http.ts +0 -355
  169. package/src/drift.ts +0 -4933
  170. package/src/go-http.ts +0 -118
  171. package/src/importador.ts +0 -3891
  172. package/src/index.ts +0 -5641
  173. package/src/java-http.ts +0 -247
  174. package/src/lua-symbols.ts +0 -114
  175. package/src/php-symbols.ts +0 -462
  176. package/src/projeto.ts +0 -862
  177. package/src/python-http.ts +0 -258
  178. package/src/rust-http.ts +0 -125
  179. package/src/tipos.ts +0 -24
  180. package/src/typescript-http.ts +0 -1076
  181. package/tsconfig.json +0 -20
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "@sema/padroes",
3
+ "version": "1.5.18",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts"
7
+ }
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@semacode/cli",
3
- "version": "1.5.16",
4
- "type": "module",
3
+ "version": "1.5.18",
5
4
  "description": "CLI da Sema para validar contratos, medir drift e governar a navegacao operacional de agentes sobre software vivo, incluindo persistencia vendor-first para bancos reais.",
5
+ "type": "module",
6
+ "icon": "logo.png",
6
7
  "license": "MIT",
7
8
  "repository": {
8
9
  "type": "git",
@@ -27,39 +28,47 @@
27
28
  "publishConfig": {
28
29
  "access": "public"
29
30
  },
30
- "icon": "logo.png",
31
31
  "bin": {
32
32
  "sema": "dist/index.js"
33
33
  },
34
34
  "main": "dist/index.js",
35
35
  "types": "dist/index.d.ts",
36
- "scripts": {
37
- "build": "tsc -p tsconfig.json"
38
- },
36
+ "files": [
37
+ "dist",
38
+ "docs",
39
+ "exemplos",
40
+ "AGENTS.md",
41
+ "llms.txt",
42
+ "llms-full.txt",
43
+ "SEMA_BRIEF.md",
44
+ "SEMA_BRIEF.micro.txt",
45
+ "SEMA_BRIEF.curto.txt",
46
+ "SEMA_INDEX.json",
47
+ "logo.png",
48
+ "README.md",
49
+ "LICENSE"
50
+ ],
39
51
  "dependencies": {
40
- "@sema/gerador-css": "file:../gerador-css",
41
- "@sema/gerador-dart": "file:../gerador-dart",
42
- "@sema/gerador-html": "file:../gerador-html",
43
- "@sema/gerador-javascript": "file:../gerador-javascript",
44
- "@sema/gerador-lua": "file:../gerador-lua",
45
- "@sema/gerador-python": "file:../gerador-python",
46
- "@sema/gerador-typescript": "file:../gerador-typescript",
47
- "@sema/nucleo": "file:../nucleo",
48
- "@sema/padroes": "file:../padroes",
52
+ "@sema/nucleo": "1.5.18",
53
+ "@sema/gerador-dart": "1.5.18",
54
+ "@sema/gerador-lua": "1.5.18",
55
+ "@sema/gerador-python": "1.5.18",
56
+ "@sema/gerador-typescript": "1.5.18",
57
+ "@sema/gerador-javascript": "1.5.18",
58
+ "@sema/gerador-html": "1.5.18",
59
+ "@sema/gerador-css": "1.5.18",
60
+ "@sema/padroes": "1.5.18",
49
61
  "typescript": "^5.8.3"
50
62
  },
51
- "devDependencies": {
52
- "tsx": "^4.19.3"
53
- },
54
- "bundleDependencies": [
63
+ "bundledDependencies": [
55
64
  "@sema/nucleo",
56
- "@sema/padroes",
57
- "@sema/gerador-typescript",
58
- "@sema/gerador-python",
59
65
  "@sema/gerador-dart",
60
66
  "@sema/gerador-lua",
67
+ "@sema/gerador-python",
68
+ "@sema/gerador-typescript",
61
69
  "@sema/gerador-javascript",
62
70
  "@sema/gerador-html",
63
- "@sema/gerador-css"
71
+ "@sema/gerador-css",
72
+ "@sema/padroes"
64
73
  ]
65
74
  }
Binary file
@@ -1,312 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import path from "node:path";
3
- import ts from "typescript";
4
-
5
- export interface SuperficieAngularStandaloneConsumer {
6
- rota: string;
7
- arquivo: string;
8
- tipoArquivo: "app" | "component";
9
- }
10
-
11
- interface ComponenteAngularStandaloneIndexado {
12
- arquivo: string;
13
- selector?: string;
14
- imports: string[];
15
- template: string;
16
- raiz: boolean;
17
- }
18
-
19
- function normalizarCaminhoConsumer(caminhoArquivo: string): string {
20
- return caminhoArquivo.replace(/\\/g, "/");
21
- }
22
-
23
- function arquivoEhComponenteAngularStandalone(relacaoArquivo: string): boolean {
24
- const relacao = normalizarCaminhoConsumer(relacaoArquivo);
25
- return /(?:^|\/)(?:src\/)?app\.component\.(?:ts|js)$/i.test(relacao)
26
- || /(?:^|\/)(?:src\/)?app\/.+\.component\.(?:ts|js)$/i.test(relacao)
27
- || /(?:^|\/)(?:src\/)?components\/.+\.component\.(?:ts|js)$/i.test(relacao);
28
- }
29
-
30
- function arquivoEhRaizAngularStandalone(relacaoArquivo: string): boolean {
31
- const relacao = normalizarCaminhoConsumer(relacaoArquivo);
32
- return /(?:^|\/)(?:src\/)?app\.component\.(?:ts|js)$/i.test(relacao)
33
- || /(?:^|\/)(?:src\/)?app\/app\.component\.(?:ts|js)$/i.test(relacao);
34
- }
35
-
36
- function resolverImportRelativoAngular(relacaoArquivoBase: string, especificador: string): string | undefined {
37
- if (!especificador.startsWith(".")) {
38
- return undefined;
39
- }
40
- const baseDir = path.posix.dirname(normalizarCaminhoConsumer(relacaoArquivoBase));
41
- for (const sufixo of ["", ".ts", ".tsx", ".js", ".jsx", "/index.ts", "/index.js"]) {
42
- const candidato = path.posix.normalize(path.posix.join(baseDir, `${especificador}${sufixo}`));
43
- if (/\.(?:ts|tsx|js|jsx)$/i.test(candidato)) {
44
- return candidato;
45
- }
46
- }
47
- return undefined;
48
- }
49
-
50
- function resolverTemplateRelativoAngular(relacaoArquivoBase: string, especificador: string): string | undefined {
51
- if (!especificador.startsWith(".")) {
52
- return undefined;
53
- }
54
- const baseDir = path.posix.dirname(normalizarCaminhoConsumer(relacaoArquivoBase));
55
- const candidato = path.posix.normalize(path.posix.join(baseDir, especificador));
56
- return /\.(?:html)$/i.test(candidato) ? candidato : undefined;
57
- }
58
-
59
- function extrairImportsTypeScriptAngular(relacaoArquivo: string, codigo: string): Map<string, string> {
60
- const imports = new Map<string, string>();
61
- for (const match of codigo.matchAll(/import\s*\{\s*([^}]+)\s*\}\s*from\s*["']([^"']+)["']/g)) {
62
- const arquivoImportado = resolverImportRelativoAngular(relacaoArquivo, match[2]);
63
- if (!arquivoImportado) {
64
- continue;
65
- }
66
- for (const bruto of match[1].split(",")) {
67
- const local = bruto.trim().split(/\s+as\s+/i).at(-1)?.trim();
68
- if (local) {
69
- imports.set(local, arquivoImportado);
70
- }
71
- }
72
- }
73
- for (const match of codigo.matchAll(/import\s+([A-Za-z_]\w*)\s+from\s*["']([^"']+)["']/g)) {
74
- const arquivoImportado = resolverImportRelativoAngular(relacaoArquivo, match[2]);
75
- const local = match[1]?.trim();
76
- if (arquivoImportado && local) {
77
- imports.set(local, arquivoImportado);
78
- }
79
- }
80
- return imports;
81
- }
82
-
83
- function nomePropriedadeObjeto(elemento: ts.ObjectLiteralElementLike): string | undefined {
84
- if (!ts.isPropertyAssignment(elemento) && !ts.isShorthandPropertyAssignment(elemento)) {
85
- return undefined;
86
- }
87
- const nome = elemento.name;
88
- if (ts.isIdentifier(nome) || ts.isStringLiteral(nome)) {
89
- return nome.text;
90
- }
91
- return undefined;
92
- }
93
-
94
- function obterDecorators(node: ts.Node): readonly ts.Decorator[] {
95
- return ts.canHaveDecorators(node) ? ts.getDecorators(node) ?? [] : [];
96
- }
97
-
98
- function obterObjetoDecoratorComponent(node: ts.ClassDeclaration): ts.ObjectLiteralExpression | undefined {
99
- for (const decorator of obterDecorators(node)) {
100
- const expr = decorator.expression;
101
- if (!ts.isCallExpression(expr) || !ts.isIdentifier(expr.expression) || expr.expression.text !== "Component") {
102
- continue;
103
- }
104
- const arg = expr.arguments[0];
105
- if (arg && ts.isObjectLiteralExpression(arg)) {
106
- return arg;
107
- }
108
- }
109
- return undefined;
110
- }
111
-
112
- function obterExpressaoPropriedade(objeto: ts.ObjectLiteralExpression, nome: string): ts.Expression | undefined {
113
- for (const propriedade of objeto.properties) {
114
- if (nomePropriedadeObjeto(propriedade) !== nome) {
115
- continue;
116
- }
117
- if (ts.isPropertyAssignment(propriedade)) {
118
- return propriedade.initializer;
119
- }
120
- if (ts.isShorthandPropertyAssignment(propriedade)) {
121
- return propriedade.name;
122
- }
123
- }
124
- return undefined;
125
- }
126
-
127
- function extrairTextoLiteral(expressao?: ts.Expression): string | undefined {
128
- if (!expressao) {
129
- return undefined;
130
- }
131
- if (ts.isStringLiteral(expressao) || ts.isNoSubstitutionTemplateLiteral(expressao)) {
132
- return expressao.text;
133
- }
134
- if (ts.isTemplateExpression(expressao)) {
135
- return expressao.getText().slice(1, -1);
136
- }
137
- return undefined;
138
- }
139
-
140
- function extrairIdentificadorImportado(expressao: ts.Expression): string | undefined {
141
- if (ts.isIdentifier(expressao)) {
142
- return expressao.text;
143
- }
144
- if (ts.isCallExpression(expressao)
145
- && ts.isIdentifier(expressao.expression)
146
- && expressao.expression.text === "forwardRef") {
147
- const callback = expressao.arguments[0];
148
- if (callback && (ts.isArrowFunction(callback) || ts.isFunctionExpression(callback))) {
149
- if (ts.isIdentifier(callback.body)) {
150
- return callback.body.text;
151
- }
152
- if (ts.isBlock(callback.body)) {
153
- for (const statement of callback.body.statements) {
154
- if (ts.isReturnStatement(statement) && statement.expression && ts.isIdentifier(statement.expression)) {
155
- return statement.expression.text;
156
- }
157
- }
158
- }
159
- }
160
- }
161
- return undefined;
162
- }
163
-
164
- async function extrairTemplateAngularStandalone(
165
- baseProjeto: string,
166
- relacaoArquivo: string,
167
- metadata: ts.ObjectLiteralExpression,
168
- ): Promise<string> {
169
- const templateInline = extrairTextoLiteral(obterExpressaoPropriedade(metadata, "template"));
170
- if (templateInline) {
171
- return templateInline;
172
- }
173
- const templateUrl = extrairTextoLiteral(obterExpressaoPropriedade(metadata, "templateUrl"));
174
- if (!templateUrl) {
175
- return "";
176
- }
177
- const templateRelativo = resolverTemplateRelativoAngular(relacaoArquivo, templateUrl);
178
- if (!templateRelativo) {
179
- return "";
180
- }
181
- try {
182
- return await readFile(path.join(baseProjeto, templateRelativo), "utf8");
183
- } catch {
184
- return "";
185
- }
186
- }
187
-
188
- async function indexarComponenteAngularStandalone(
189
- baseProjeto: string,
190
- arquivo: string,
191
- ): Promise<ComponenteAngularStandaloneIndexado | undefined> {
192
- const relacaoArquivo = normalizarCaminhoConsumer(path.relative(baseProjeto, arquivo));
193
- if (!arquivoEhComponenteAngularStandalone(relacaoArquivo)) {
194
- return undefined;
195
- }
196
- const codigo = await readFile(arquivo, "utf8");
197
- const sourceFile = ts.createSourceFile(arquivo, codigo, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
198
- const imports = extrairImportsTypeScriptAngular(relacaoArquivo, codigo);
199
-
200
- for (const statement of sourceFile.statements) {
201
- if (!ts.isClassDeclaration(statement)) {
202
- continue;
203
- }
204
- const metadata = obterObjetoDecoratorComponent(statement);
205
- if (!metadata) {
206
- continue;
207
- }
208
- const standalone = obterExpressaoPropriedade(metadata, "standalone");
209
- if (!standalone || standalone.kind !== ts.SyntaxKind.TrueKeyword) {
210
- continue;
211
- }
212
- const importsExpr = obterExpressaoPropriedade(metadata, "imports");
213
- const importsArquivos = new Set<string>();
214
- if (importsExpr && ts.isArrayLiteralExpression(importsExpr)) {
215
- for (const elemento of importsExpr.elements) {
216
- const nomeImportado = extrairIdentificadorImportado(elemento);
217
- if (!nomeImportado) {
218
- continue;
219
- }
220
- const arquivoImportado = imports.get(nomeImportado);
221
- if (arquivoImportado) {
222
- importsArquivos.add(arquivoImportado);
223
- }
224
- }
225
- }
226
-
227
- return {
228
- arquivo: relacaoArquivo,
229
- selector: extrairTextoLiteral(obterExpressaoPropriedade(metadata, "selector")),
230
- imports: [...importsArquivos],
231
- template: await extrairTemplateAngularStandalone(baseProjeto, relacaoArquivo, metadata),
232
- raiz: arquivoEhRaizAngularStandalone(relacaoArquivo),
233
- };
234
- }
235
-
236
- return undefined;
237
- }
238
-
239
- function templateReferenciaSelector(template: string, selector: string): boolean {
240
- if (!template || !selector) {
241
- return false;
242
- }
243
- const escapado = selector.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
244
- return new RegExp(`<${escapado}(?:\\s|>)`, "i").test(template);
245
- }
246
-
247
- export async function coletarSuperficiesAngularStandaloneConsumer(
248
- baseProjeto: string,
249
- arquivos: string[],
250
- ): Promise<SuperficieAngularStandaloneConsumer[]> {
251
- const componentes = new Map<string, ComponenteAngularStandaloneIndexado>();
252
- for (const arquivo of arquivos) {
253
- const componente = await indexarComponenteAngularStandalone(baseProjeto, arquivo);
254
- if (componente) {
255
- componentes.set(componente.arquivo, componente);
256
- }
257
- }
258
-
259
- const raizes = [...componentes.values()].filter((componente) => componente.raiz);
260
- if (raizes.length === 0) {
261
- return [];
262
- }
263
-
264
- const seletores = new Map<string, string[]>();
265
- for (const componente of componentes.values()) {
266
- if (!componente.selector) {
267
- continue;
268
- }
269
- const existentes = seletores.get(componente.selector) ?? [];
270
- existentes.push(componente.arquivo);
271
- seletores.set(componente.selector, existentes);
272
- }
273
-
274
- const visitados = new Set<string>();
275
- const fila = [...raizes];
276
- while (fila.length > 0) {
277
- const atual = fila.shift();
278
- if (!atual || visitados.has(atual.arquivo)) {
279
- continue;
280
- }
281
- visitados.add(atual.arquivo);
282
-
283
- for (const arquivoImportado of atual.imports) {
284
- const componenteImportado = componentes.get(arquivoImportado);
285
- if (componenteImportado && !visitados.has(componenteImportado.arquivo)) {
286
- fila.push(componenteImportado);
287
- }
288
- }
289
-
290
- for (const [selector, arquivosSelector] of seletores.entries()) {
291
- if (!templateReferenciaSelector(atual.template, selector)) {
292
- continue;
293
- }
294
- for (const arquivoSelector of arquivosSelector) {
295
- const componenteSelector = componentes.get(arquivoSelector);
296
- if (componenteSelector && !visitados.has(componenteSelector.arquivo)) {
297
- fila.push(componenteSelector);
298
- }
299
- }
300
- }
301
- }
302
-
303
- return [...visitados]
304
- .map<SuperficieAngularStandaloneConsumer>((arquivo) => ({
305
- rota: "/",
306
- arquivo,
307
- tipoArquivo: raizes.some((raiz) => raiz.arquivo === arquivo) ? "app" : "component",
308
- }))
309
- .sort((a, b) =>
310
- a.tipoArquivo.localeCompare(b.tipoArquivo, "pt-BR")
311
- || a.arquivo.localeCompare(b.arquivo, "pt-BR"));
312
- }
@@ -1,82 +0,0 @@
1
- export interface SimboloCppExtraido {
2
- simbolo: string;
3
- retorno?: string;
4
- parametros: Array<{ nome: string; tipoTexto?: string; obrigatorio: boolean }>;
5
- }
6
-
7
- function extrairParametrosCpp(assinatura: string): Array<{ nome: string; tipoTexto?: string; obrigatorio: boolean }> {
8
- return assinatura.split(",").map((parametroBruto) => {
9
- const parametro = parametroBruto.trim();
10
- if (!parametro || parametro === "void") {
11
- return undefined;
12
- }
13
- const semPadrao = parametro.split("=")[0]?.trim() ?? parametro;
14
- const partes = semPadrao.split(/\s+/).filter(Boolean);
15
- if (partes.length < 2) {
16
- return undefined;
17
- }
18
- const nome = partes.at(-1)!.replace(/[&*]+$/, "");
19
- const tipoTexto = partes.slice(0, -1).join(" ");
20
- return {
21
- nome,
22
- tipoTexto,
23
- obrigatorio: !parametro.includes("="),
24
- };
25
- }).filter((item): item is NonNullable<typeof item> => Boolean(item));
26
- }
27
-
28
- export function extrairSimbolosCpp(codigo: string): SimboloCppExtraido[] {
29
- const simbolos = new Map<string, SimboloCppExtraido>();
30
-
31
- for (const match of codigo.matchAll(/(?:^|\n)\s*(?:inline\s+|static\s+|virtual\s+|constexpr\s+|friend\s+|extern\s+|template\s*<[^>]+>\s*)*(?:[\w:<>~*&]+\s+)+([A-Za-z_]\w*)::([A-Za-z_]\w*)\s*\(([^)]*)\)\s*(?:const)?\s*(?:\{|;)/g)) {
32
- const simbolo = `${match[1]!}.${match[2]!}`;
33
- simbolos.set(simbolo, {
34
- simbolo,
35
- parametros: extrairParametrosCpp(match[3] ?? ""),
36
- });
37
- }
38
-
39
- for (const match of codigo.matchAll(/(?:^|\n)\s*(?:inline\s+|static\s+|virtual\s+|constexpr\s+|friend\s+|extern\s+)*(?:[\w:<>~*&]+\s+)+([A-Za-z_]\w*)\s*\(([^)]*)\)\s*(?:const)?\s*(?:\{|;)/g)) {
40
- const nome = match[1]!;
41
- if (["if", "for", "while", "switch", "return"].includes(nome)) {
42
- continue;
43
- }
44
- if (!simbolos.has(nome)) {
45
- simbolos.set(nome, {
46
- simbolo: nome,
47
- parametros: extrairParametrosCpp(match[2] ?? ""),
48
- });
49
- }
50
- }
51
-
52
- const pilhaClasses: string[] = [];
53
- for (const linha of codigo.split(/\r?\n/)) {
54
- const trim = linha.trim();
55
- const classe = trim.match(/^(?:class|struct)\s+([A-Za-z_]\w*)/);
56
- if (classe) {
57
- pilhaClasses.push(classe[1]!);
58
- continue;
59
- }
60
- if (trim.startsWith("};") || trim === "}" || trim === "};") {
61
- pilhaClasses.pop();
62
- continue;
63
- }
64
-
65
- const metodoClasse = trim.match(/^(?:inline\s+|static\s+|virtual\s+|constexpr\s+)*(?:[\w:<>~*&]+\s+)+([A-Za-z_]\w*)\s*\(([^)]*)\)\s*(?:const)?\s*\{/);
66
- if (metodoClasse && pilhaClasses.length > 0) {
67
- const nomeClasse = pilhaClasses[pilhaClasses.length - 1]!;
68
- const nomeMetodo = metodoClasse[1]!;
69
- if (!["if", "for", "while", "switch"].includes(nomeMetodo)) {
70
- const simbolo = `${nomeClasse}.${nomeMetodo}`;
71
- if (!simbolos.has(simbolo)) {
72
- simbolos.set(simbolo, {
73
- simbolo,
74
- parametros: extrairParametrosCpp(metodoClasse[2] ?? ""),
75
- });
76
- }
77
- }
78
- }
79
- }
80
-
81
- return [...simbolos.values()];
82
- }