@semacode/cli 2.3.0 → 3.0.0

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 (267) hide show
  1. package/LICENSE +39 -39
  2. package/README.md +112 -41
  3. package/dist/agentContextPack.js +14 -10
  4. package/dist/agentEntryPoints.d.ts +5 -0
  5. package/dist/agentEntryPoints.js +102 -91
  6. package/dist/angular-consumer-standalone.d.ts +3 -1
  7. package/dist/angular-consumer-standalone.js +12 -8
  8. package/dist/bin.d.ts +6 -0
  9. package/dist/bin.js +130 -0
  10. package/dist/cliArgs.js +4 -4
  11. package/dist/cliControlError.d.ts +12 -0
  12. package/dist/cliControlError.js +47 -0
  13. package/dist/cliGrammar.d.ts +11 -0
  14. package/dist/cliGrammar.js +551 -0
  15. package/dist/cliHelp.d.ts +13 -0
  16. package/dist/cliHelp.js +19 -0
  17. package/dist/cliHelpTexto.d.ts +3 -0
  18. package/dist/cliHelpTexto.js +168 -0
  19. package/dist/cliRuntime.d.ts +2 -0
  20. package/dist/cliRuntime.js +31 -0
  21. package/dist/comandos.js +9 -22
  22. package/dist/contexto.js +5 -5
  23. package/dist/dev/index.d.ts +1 -0
  24. package/dist/dev/index.js +51 -9
  25. package/dist/discovery/catalog.js +3 -3
  26. package/dist/distribuicao/filesystemGlobal.d.ts +63 -0
  27. package/dist/distribuicao/filesystemGlobal.js +701 -0
  28. package/dist/distribuicao/index.d.ts +7 -0
  29. package/dist/distribuicao/index.js +227 -0
  30. package/dist/distribuicao/launcherGlobal.d.ts +53 -0
  31. package/dist/distribuicao/launcherGlobal.js +643 -0
  32. package/dist/distribuicao/launcherWindows.d.ts +28 -0
  33. package/dist/distribuicao/launcherWindows.js +326 -0
  34. package/dist/distribuicao/lockContextGlobal.d.ts +10 -0
  35. package/dist/distribuicao/lockContextGlobal.js +17 -0
  36. package/dist/distribuicao/lockGlobal.d.ts +6 -0
  37. package/dist/distribuicao/lockGlobal.js +520 -0
  38. package/dist/distribuicao/skillGlobal.d.ts +48 -0
  39. package/dist/distribuicao/skillGlobal.js +652 -0
  40. package/dist/distribuicao/skillIntentPolicy.d.ts +21 -0
  41. package/dist/distribuicao/skillIntentPolicy.js +115 -0
  42. package/dist/distribuicao/tipos.d.ts +50 -0
  43. package/dist/distribuicao/tipos.js +10 -0
  44. package/dist/distribuicao/versaoSemantica.d.ts +3 -0
  45. package/dist/distribuicao/versaoSemantica.js +62 -0
  46. package/dist/drift.part01.d.ts +34 -2
  47. package/dist/drift.part01.js +3 -0
  48. package/dist/drift.part04.d.ts +12 -2
  49. package/dist/drift.part04.js +89 -15
  50. package/dist/drift.part05.d.ts +2 -1
  51. package/dist/drift.part05.js +9 -6
  52. package/dist/drift.part06.d.ts +2 -1
  53. package/dist/drift.part06.js +115 -24
  54. package/dist/drift.part07.d.ts +11 -10
  55. package/dist/drift.part07.js +261 -255
  56. package/dist/drift.part08.d.ts +2 -1
  57. package/dist/drift.part08.js +35 -25
  58. package/dist/drift.part11.js +279 -32
  59. package/dist/drift.part12.d.ts +1 -1
  60. package/dist/drift.part12.js +196 -11
  61. package/dist/drift.part13.d.ts +18 -2
  62. package/dist/drift.part13.js +654 -76
  63. package/dist/drift.part14.js +21 -7
  64. package/dist/driftCacheCas.d.ts +43 -0
  65. package/dist/driftCacheCas.js +351 -0
  66. package/dist/driftCacheFilesystem.d.ts +64 -0
  67. package/dist/driftCacheFilesystem.js +313 -0
  68. package/dist/driftCacheModes.d.ts +38 -0
  69. package/dist/driftCacheModes.js +147 -0
  70. package/dist/driftCacheStore.d.ts +80 -0
  71. package/dist/driftCacheStore.js +603 -0
  72. package/dist/driftCatalogo.d.ts +65 -0
  73. package/dist/driftCatalogo.js +516 -0
  74. package/dist/driftEscopo.d.ts +21 -0
  75. package/dist/driftEscopo.js +647 -0
  76. package/dist/driftEscopoReferencias.d.ts +8 -0
  77. package/dist/driftEscopoReferencias.js +612 -0
  78. package/dist/driftOrcamento.d.ts +6 -0
  79. package/dist/driftOrcamento.js +20 -3
  80. package/dist/geracaoCore.js +4 -6
  81. package/dist/iaPrompts.d.ts +3 -3
  82. package/dist/iaPrompts.js +13 -14
  83. package/dist/index.d.ts +4 -1
  84. package/dist/index.js +6 -25
  85. package/dist/index.part01.d.ts +21 -14
  86. package/dist/index.part01.js +20 -165
  87. package/dist/index.part02.js +57 -43
  88. package/dist/index.part03.d.ts +23 -1
  89. package/dist/index.part03.js +83 -8
  90. package/dist/index.part04.d.ts +10 -2
  91. package/dist/index.part04.js +48 -14
  92. package/dist/index.part05.d.ts +1 -1
  93. package/dist/index.part05.js +109 -30
  94. package/dist/index.part06.js +34 -16
  95. package/dist/index.part07.js +31 -27
  96. package/dist/index.part08.d.ts +1 -1
  97. package/dist/index.part08.js +23 -28
  98. package/dist/init/templates.part01.js +393 -393
  99. package/dist/init/templates.part02.js +189 -189
  100. package/dist/initCommand.js +5 -1
  101. package/dist/initTemplatesBackend.js +73 -73
  102. package/dist/initTemplatesBase.js +7 -5
  103. package/dist/initTemplatesFlutter.js +137 -137
  104. package/dist/initTemplatesRuntime.js +350 -350
  105. package/dist/initTemplatesWeb.js +309 -309
  106. package/dist/pipelineConteudo/command.d.ts +1 -0
  107. package/dist/pipelineConteudo/command.js +4 -32
  108. package/dist/pipelineConteudo/help.d.ts +2 -0
  109. package/dist/pipelineConteudo/help.js +33 -0
  110. package/dist/profileAuthorCommand.js +3 -7
  111. package/dist/profileCommand.js +3 -7
  112. package/dist/projeto.d.ts +1 -1
  113. package/dist/projetoCarregar.d.ts +2 -2
  114. package/dist/projetoCarregar.js +69 -28
  115. package/dist/projetoCatalogo.d.ts +8 -0
  116. package/dist/projetoCatalogo.js +164 -0
  117. package/dist/projetoOrigens.d.ts +2 -0
  118. package/dist/projetoOrigens.js +65 -9
  119. package/dist/projetoTipos.d.ts +15 -5
  120. package/dist/resultadoCli.d.ts +20 -0
  121. package/dist/resultadoCli.js +57 -0
  122. package/dist/saidaCli.d.ts +35 -0
  123. package/dist/saidaCli.js +118 -0
  124. package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
  125. package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
  126. package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
  127. package/dist/sistemasInterativos/engineObservation.js +438 -0
  128. package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
  129. package/dist/sistemasInterativos/jobOrchestration.js +204 -0
  130. package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
  131. package/dist/sistemasInterativos/operationPrimitives.js +194 -0
  132. package/dist/sistemasInterativos/operations.d.ts +4 -39
  133. package/dist/sistemasInterativos/operations.js +5 -1164
  134. package/dist/skillCommand.d.ts +5 -0
  135. package/dist/skillCommand.js +88 -0
  136. package/dist/sync/index.js +35 -35
  137. package/docs/README.md +11 -7
  138. package/docs/ai-integration.md +18 -11
  139. package/docs/ai-onboarding.md +81 -62
  140. package/docs/ai-workflow.md +10 -4
  141. package/docs/auth.md +26 -26
  142. package/docs/cli.md +197 -79
  143. package/docs/commands.md +30 -6
  144. package/docs/database.md +15 -15
  145. package/docs/deploy.md +54 -41
  146. package/docs/documentation.md +11 -10
  147. package/docs/drift-cache.md +108 -0
  148. package/docs/env.md +16 -16
  149. package/docs/frontend.md +41 -41
  150. package/docs/getting-started.md +82 -57
  151. package/docs/i18n.md +15 -15
  152. package/docs/repositories.md +60 -43
  153. package/docs/rollback.md +38 -31
  154. package/docs/security.md +54 -32
  155. package/docs/sistemas-interativos.md +27 -27
  156. package/docs/support.md +8 -8
  157. package/docs/testing.md +123 -17
  158. package/docs/vocabulary.md +29 -29
  159. package/exemplos/agendamento.sema +1 -1
  160. package/exemplos/assinatura.sema +1 -1
  161. package/exemplos/auditoria.sema +1 -1
  162. package/exemplos/autenticacao.sema +1 -1
  163. package/exemplos/author_obra_comum.sema +1 -1
  164. package/exemplos/author_tema_sensivel.sema +1 -1
  165. package/exemplos/automacao.sema +1 -1
  166. package/exemplos/cadastro_usuario.sema +1 -1
  167. package/exemplos/calculadora.sema +1 -1
  168. package/exemplos/crud_simples.sema +1 -1
  169. package/exemplos/estoque.sema +1 -1
  170. package/exemplos/exportacao.sema +1 -1
  171. package/exemplos/fila.sema +1 -1
  172. package/exemplos/integracao_externa.sema +1 -1
  173. package/exemplos/multi_tenant.sema +1 -1
  174. package/exemplos/notificacao.sema +1 -1
  175. package/exemplos/operacao_estrategia.sema +132 -132
  176. package/exemplos/operacao_estrategia_discovery.sema +220 -220
  177. package/exemplos/operacao_estrategia_fluxo.sema +114 -114
  178. package/exemplos/operacao_estrategia_gates.sema +106 -106
  179. package/exemplos/operacao_estrategia_quarentena.sema +133 -133
  180. package/exemplos/operacao_estrategia_rollout.sema +124 -124
  181. package/exemplos/pagamento.sema +1 -1
  182. package/exemplos/pagamento_dominio.sema +1 -1
  183. package/exemplos/pedido.sema +1 -1
  184. package/exemplos/permissao.sema +1 -1
  185. package/exemplos/persistencia_vendor_first.sema +1 -1
  186. package/exemplos/profile_conversas.sema +165 -165
  187. package/exemplos/profile_game.sema +1 -1
  188. package/exemplos/profile_legal.sema +1 -1
  189. package/exemplos/profile_ops.sema +1 -1
  190. package/exemplos/profile_research.sema +1 -1
  191. package/exemplos/profile_software.sema +1 -1
  192. package/exemplos/profile_workflow_n8n.sema +1 -1
  193. package/exemplos/relatorio.sema +1 -1
  194. package/exemplos/replica_analitica_erp.sema +1 -1
  195. package/exemplos/testes_embutidos.sema +1 -1
  196. package/exemplos/tratamento_erro.sema +1 -1
  197. package/exemplos/upload_arquivo.sema +1 -1
  198. package/exemplos/webhook.sema +1 -1
  199. package/node_modules/@sema/gerador-cpp/dist/index.js +176 -176
  200. package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
  201. package/node_modules/@sema/gerador-css/dist/index.part02.js +460 -460
  202. package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
  203. package/node_modules/@sema/gerador-html/dist/index.js +17 -17
  204. package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
  205. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
  206. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
  207. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
  208. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
  209. package/package.json +7 -2
  210. package/scripts/postinstall.mjs +148 -0
  211. package/skills/sema/SKILL.md +199 -0
  212. package/skills/sema/agents/openai.yaml +4 -0
  213. package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
  214. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  215. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
  216. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
  217. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  218. package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
  219. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  220. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  221. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  222. package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
  223. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  224. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
  225. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
  226. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  227. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
  228. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
  229. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
  230. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  231. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  232. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
  233. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
  234. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  235. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
  236. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
  237. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  238. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  239. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
  240. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
  241. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
  242. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  243. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  244. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  245. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
  246. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  247. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
  248. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
  249. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
  250. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
  251. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
  252. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  253. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
  254. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
  255. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
  256. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
  257. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
  258. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
  259. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
  260. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
  261. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  262. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
  263. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
  264. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
  265. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  266. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  267. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
@@ -1,12 +1,12 @@
1
- // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
1
+ // SEMA-GOVERNED: sema.produto.governanca_ia.drift
2
+ // Descricao: indexa TypeScript com catalogo e AST compartilhados pelo drift.
3
3
  import { readFile } from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import ts from "typescript";
6
6
  import { coletarSuperficiesAngularStandaloneConsumer } from "./angular-consumer-standalone.js";
7
7
  import { extrairRotasTypeScriptHttp } from "./typescript-http.js";
8
8
  import { arquivoEhRotasAngularConsumer, arquivoEhRotasAngularConsumerRaiz, arquivoEhRotasReactViteConsumer, arquivoEhSuperficieNextJsConsumer, arquivoEhSuperficieReactViteConsumer, extrairRotasAngularConsumer, extrairRotasReactViteConsumer, inferirRotaNextJsConsumer, inferirRotaReactViteConsumer, normalizarRelacaoConsumer, registrarAtribuicaoPrototypeTypeScript, registrarMetodosObjectAssignTypeScript } from "./drift.part05.js";
9
- import { caminhosSimbolicos, desembrulharExpressaoTypeScript, extrairNomeClassePrototypeTypeScript, extrairTextoLiteral, juntarCaminhoHttp, lerDecorator, listarArquivosRecursivos, registrarSimboloTypeScript } from "./drift.part04.js";
9
+ import { caminhosSimbolicos, chaveCaminhoCanonicoDrift, deduplicarRaizesSobrepostasDrift, desembrulharExpressaoTypeScript, extrairNomeClassePrototypeTypeScript, extrairTextoLiteral, juntarCaminhoHttp, lerDecorator, listarArquivosRecursivos, registrarSimboloTypeScript, } from "./drift.part04.js";
10
10
  import { extrairRecursosPersistenciaCodigoVivo, registrarRecursoDrift } from "./drift.part03.js";
11
11
  export function inferirConsumerFrameworkPrincipal(fontesLegado, consumerSurfaces, consumerBridges) {
12
12
  const arquivos = [
@@ -38,6 +38,75 @@ export function inferirConsumerFrameworkPrincipal(fontesLegado, consumerSurfaces
38
38
  }
39
39
  return null;
40
40
  }
41
+ function fonteDeclaraRotasReactVite(relacaoArquivo, sourceFile) {
42
+ if (arquivoEhRotasReactViteConsumer(relacaoArquivo)) {
43
+ return true;
44
+ }
45
+ let encontrouDeclaracao = false;
46
+ const nomeExpressao = (expressao) => {
47
+ if (ts.isIdentifier(expressao))
48
+ return expressao.text;
49
+ if (ts.isPropertyAccessExpression(expressao))
50
+ return expressao.name.text;
51
+ return undefined;
52
+ };
53
+ const nomePropriedade = (elemento) => {
54
+ if (!("name" in elemento) || !elemento.name)
55
+ return undefined;
56
+ if (ts.isIdentifier(elemento.name) || ts.isStringLiteralLike(elemento.name)) {
57
+ return elemento.name.text;
58
+ }
59
+ return undefined;
60
+ };
61
+ const visitar = (node) => {
62
+ if (encontrouDeclaracao)
63
+ return;
64
+ if (ts.isCallExpression(node)
65
+ && ["createBrowserRouter", "createRoutesFromElements", "useRoutes"]
66
+ .includes(nomeExpressao(node.expression) ?? "")) {
67
+ encontrouDeclaracao = true;
68
+ return;
69
+ }
70
+ if ((ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node))
71
+ && ["Route", "Routes", "RouterProvider"].includes(nomeExpressao(node.tagName) ?? "")) {
72
+ encontrouDeclaracao = true;
73
+ return;
74
+ }
75
+ if (ts.isObjectLiteralExpression(node)) {
76
+ const propriedades = new Set(node.properties.map(nomePropriedade).filter(Boolean));
77
+ if ((propriedades.has("path") || propriedades.has("index"))
78
+ && (propriedades.has("element") || propriedades.has("Component"))) {
79
+ encontrouDeclaracao = true;
80
+ return;
81
+ }
82
+ }
83
+ ts.forEachChild(node, visitar);
84
+ };
85
+ visitar(sourceFile);
86
+ return encontrouDeclaracao;
87
+ }
88
+ function resolverArquivoConsumerCatalogado(diretorio, caminhoRelativo, arquivosCatalogados) {
89
+ const normalizado = caminhoRelativo.replace(/\\/g, "/");
90
+ const semExtensao = normalizado.replace(/\.(?:ts|tsx|js|jsx)$/i, "");
91
+ const candidatos = [
92
+ normalizado,
93
+ `${semExtensao}.ts`,
94
+ `${semExtensao}.tsx`,
95
+ `${semExtensao}.js`,
96
+ `${semExtensao}.jsx`,
97
+ `${semExtensao}/index.ts`,
98
+ `${semExtensao}/index.tsx`,
99
+ `${semExtensao}/index.js`,
100
+ `${semExtensao}/index.jsx`,
101
+ ];
102
+ for (const candidato of candidatos) {
103
+ const absoluto = path.resolve(diretorio, ...candidato.split("/"));
104
+ const catalogado = arquivosCatalogados.get(chaveCaminhoCanonicoDrift(absoluto));
105
+ if (catalogado)
106
+ return catalogado;
107
+ }
108
+ return undefined;
109
+ }
41
110
  export function extrairColecoesFirebase(arquivo, codigo) {
42
111
  const recursos = new Map();
43
112
  const registrar = (nome) => {
@@ -126,25 +195,39 @@ function aplicarReexportacoesTypeScript(simbolos, reexportacoes) {
126
195
  }
127
196
  }
128
197
  }
129
- export async function indexarTypeScript(diretorios) {
198
+ export async function indexarTypeScript(diretorios, adaptadorLeitura) {
199
+ adaptadorLeitura?.emitir?.("extractor.run");
130
200
  const simbolos = new Map();
131
201
  const rotas = [];
132
202
  const recursos = new Map();
133
203
  const consumerSurfaces = new Map();
134
- for (const diretorio of diretorios) {
135
- const arquivos = (await listarArquivosRecursivos(diretorio, [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"]))
204
+ const sourceFiles = new Map();
205
+ const arquivosProcessados = new Set();
206
+ for (const diretorio of deduplicarRaizesSobrepostasDrift(diretorios)) {
207
+ const arquivos = (await listarArquivosRecursivos(diretorio, [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"], adaptadorLeitura))
136
208
  .filter((arquivo) => !arquivo.endsWith(".d.ts")
137
209
  && !arquivo.endsWith(".spec.ts")
138
- && !arquivo.endsWith(".test.ts"));
210
+ && !arquivo.endsWith(".test.ts"))
211
+ .filter((arquivo) => {
212
+ const chave = chaveCaminhoCanonicoDrift(arquivo);
213
+ if (arquivosProcessados.has(chave)) {
214
+ return false;
215
+ }
216
+ arquivosProcessados.add(chave);
217
+ return true;
218
+ });
139
219
  const arquivosRotasAngular = arquivos.filter((arquivo) => arquivoEhRotasAngularConsumer(path.relative(diretorio, arquivo)));
140
220
  const arquivosRotasAngularRaiz = new Set(arquivosRotasAngular
141
221
  .filter((arquivo) => arquivoEhRotasAngularConsumerRaiz(path.relative(diretorio, arquivo)))
142
222
  .map((arquivo) => path.resolve(arquivo)));
223
+ const arquivosCatalogadosRaiz = new Map(arquivos.map((arquivo) => [chaveCaminhoCanonicoDrift(arquivo), arquivo]));
143
224
  const usarApenasRotasAngularRaiz = arquivosRotasAngularRaiz.size > 0;
144
225
  let encontrouSuperficieAngularPorRotas = false;
145
226
  const reexportacoes = [];
146
227
  for (const arquivo of arquivos) {
147
- const codigo = await readFile(arquivo, "utf8");
228
+ const codigo = adaptadorLeitura
229
+ ? await adaptadorLeitura.lerTexto(arquivo)
230
+ : await readFile(arquivo, "utf8");
148
231
  const origemArquivo = /\.(?:js|jsx|mjs|cjs)$/i.test(arquivo) ? "js" : "ts";
149
232
  const scriptKind = arquivo.endsWith(".tsx")
150
233
  ? ts.ScriptKind.TSX
@@ -153,7 +236,9 @@ export async function indexarTypeScript(diretorios) {
153
236
  : origemArquivo === "js"
154
237
  ? ts.ScriptKind.JS
155
238
  : ts.ScriptKind.TS;
239
+ adaptadorLeitura?.emitir?.("ast.create", arquivo);
156
240
  const sourceFile = ts.createSourceFile(arquivo, codigo, ts.ScriptTarget.Latest, true, scriptKind);
241
+ sourceFiles.set(path.resolve(arquivo), sourceFile);
157
242
  const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
158
243
  const relacao = path.relative(diretorio, arquivo);
159
244
  for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
@@ -202,7 +287,7 @@ export async function indexarTypeScript(diretorios) {
202
287
  simbolo: superficieReact.tipoArquivo,
203
288
  });
204
289
  }
205
- if (arquivoEhRotasReactViteConsumer(relacao, codigo)) {
290
+ if (fonteDeclaraRotasReactVite(relacao, sourceFile)) {
206
291
  for (const rotaReact of extrairRotasReactViteConsumer(relacao, codigo)) {
207
292
  consumerSurfaces.set(`${rotaReact.rota}:${arquivo}:router`, {
208
293
  rota: rotaReact.rota,
@@ -217,19 +302,23 @@ export async function indexarTypeScript(diretorios) {
217
302
  simbolo: "router",
218
303
  });
219
304
  if (rotaReact.arquivoComponente) {
220
- const arquivoComponente = path.join(diretorio, rotaReact.arquivoComponente);
221
- consumerSurfaces.set(`${rotaReact.rota}:${arquivoComponente}:page`, {
222
- rota: rotaReact.rota,
223
- arquivo: arquivoComponente,
224
- tipoArquivo: "page",
225
- });
305
+ const arquivoComponente = resolverArquivoConsumerCatalogado(diretorio, rotaReact.arquivoComponente, arquivosCatalogadosRaiz);
306
+ if (arquivoComponente) {
307
+ consumerSurfaces.set(`${rotaReact.rota}:${arquivoComponente}:page`, {
308
+ rota: rotaReact.rota,
309
+ arquivo: arquivoComponente,
310
+ tipoArquivo: "page",
311
+ });
312
+ }
226
313
  }
227
314
  }
228
315
  }
229
316
  if (arquivoEhRotasAngularConsumer(relacao) && (!usarApenasRotasAngularRaiz || arquivosRotasAngularRaiz.has(path.resolve(arquivo)))) {
230
317
  encontrouSuperficieAngularPorRotas = true;
231
- for (const rotaAngular of await extrairRotasAngularConsumer(diretorio, relacao)) {
232
- const arquivoRotasAngular = path.join(diretorio, rotaAngular.arquivoRotas);
318
+ for (const rotaAngular of await extrairRotasAngularConsumer(diretorio, relacao, "/", new Set(), adaptadorLeitura)) {
319
+ const arquivoRotasAngular = resolverArquivoConsumerCatalogado(diretorio, rotaAngular.arquivoRotas, arquivosCatalogadosRaiz);
320
+ if (!arquivoRotasAngular)
321
+ continue;
233
322
  consumerSurfaces.set(`${rotaAngular.rota}:${arquivoRotasAngular}:routes`, {
234
323
  rota: rotaAngular.rota,
235
324
  arquivo: arquivoRotasAngular,
@@ -243,12 +332,14 @@ export async function indexarTypeScript(diretorios) {
243
332
  simbolo: rotaAngular.componente ?? "routes",
244
333
  });
245
334
  if (rotaAngular.arquivoComponente) {
246
- const arquivoComponente = path.join(diretorio, rotaAngular.arquivoComponente);
247
- consumerSurfaces.set(`${rotaAngular.rota}:${arquivoComponente}:component`, {
248
- rota: rotaAngular.rota,
249
- arquivo: arquivoComponente,
250
- tipoArquivo: "component",
251
- });
335
+ const arquivoComponente = resolverArquivoConsumerCatalogado(diretorio, rotaAngular.arquivoComponente, arquivosCatalogadosRaiz);
336
+ if (arquivoComponente) {
337
+ consumerSurfaces.set(`${rotaAngular.rota}:${arquivoComponente}:component`, {
338
+ rota: rotaAngular.rota,
339
+ arquivo: arquivoComponente,
340
+ tipoArquivo: "component",
341
+ });
342
+ }
252
343
  }
253
344
  }
254
345
  }
@@ -328,7 +419,7 @@ export async function indexarTypeScript(diretorios) {
328
419
  }
329
420
  }
330
421
  if (!encontrouSuperficieAngularPorRotas) {
331
- for (const superficie of await coletarSuperficiesAngularStandaloneConsumer(diretorio, arquivos)) {
422
+ for (const superficie of await coletarSuperficiesAngularStandaloneConsumer(diretorio, arquivos, adaptadorLeitura ? (arquivo) => adaptadorLeitura.lerTexto(arquivo) : undefined, sourceFiles)) {
332
423
  const arquivoSuperficie = path.join(diretorio, superficie.arquivo);
333
424
  consumerSurfaces.set(`${superficie.rota}:${arquivoSuperficie}:${superficie.tipoArquivo}`, {
334
425
  rota: superficie.rota,
@@ -1,51 +1,52 @@
1
1
  import type { EngineBanco } from "@sema/nucleo";
2
2
  import { OrigemRecursoDrift, RecursoResolvido, RegistroColunaPersistenciaDrift, RegistroConsumerSurfaceDrift, RotaResolvida, SimboloResolvido } from "./drift.part01.js";
3
- export declare function indexarPython(diretorios: string[]): Promise<{
3
+ import { type AdaptadorLeituraCompartilhadaDrift } from "./drift.part04.js";
4
+ export declare function indexarPython(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
4
5
  simbolos: SimboloResolvido[];
5
6
  rotas: RotaResolvida[];
6
7
  recursos: RecursoResolvido[];
7
8
  }>;
8
- export declare function indexarDart(diretorios: string[]): Promise<{
9
+ export declare function indexarDart(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
9
10
  simbolos: SimboloResolvido[];
10
11
  rotas: RotaResolvida[];
11
12
  recursos: RecursoResolvido[];
12
13
  consumerSurfaces: RegistroConsumerSurfaceDrift[];
13
14
  }>;
14
15
  export declare function registrarSimboloGenerico(simbolos: Map<string, SimboloResolvido>, origem: SimboloResolvido["origem"], basesSimbolicas: string[], arquivo: string, simbolo: string): void;
15
- export declare function indexarDotnet(diretorios: string[]): Promise<{
16
+ export declare function indexarDotnet(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
16
17
  simbolos: SimboloResolvido[];
17
18
  rotas: RotaResolvida[];
18
19
  recursos: RecursoResolvido[];
19
20
  }>;
20
- export declare function indexarJava(diretorios: string[]): Promise<{
21
+ export declare function indexarJava(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
21
22
  simbolos: SimboloResolvido[];
22
23
  rotas: RotaResolvida[];
23
24
  recursos: RecursoResolvido[];
24
25
  }>;
25
- export declare function indexarGo(diretorios: string[]): Promise<{
26
+ export declare function indexarGo(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
26
27
  simbolos: SimboloResolvido[];
27
28
  rotas: RotaResolvida[];
28
29
  recursos: RecursoResolvido[];
29
30
  }>;
30
- export declare function indexarRust(diretorios: string[]): Promise<{
31
+ export declare function indexarRust(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
31
32
  simbolos: SimboloResolvido[];
32
33
  rotas: RotaResolvida[];
33
34
  recursos: RecursoResolvido[];
34
35
  }>;
35
- export declare function indexarCpp(diretorios: string[]): Promise<{
36
+ export declare function indexarCpp(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
36
37
  simbolos: SimboloResolvido[];
37
38
  recursos: RecursoResolvido[];
38
39
  }>;
39
- export declare function indexarPhp(diretorios: string[]): Promise<{
40
+ export declare function indexarPhp(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
40
41
  simbolos: SimboloResolvido[];
41
42
  rotas: RotaResolvida[];
42
43
  recursos: RecursoResolvido[];
43
44
  }>;
44
- export declare function indexarLua(diretorios: string[]): Promise<{
45
+ export declare function indexarLua(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
45
46
  simbolos: SimboloResolvido[];
46
47
  recursos: RecursoResolvido[];
47
48
  }>;
48
- export declare function indexarPersistenciaDeclarativa(diretorios: string[]): Promise<{
49
+ export declare function indexarPersistenciaDeclarativa(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
49
50
  recursos: RecursoResolvido[];
50
51
  simbolos: SimboloResolvido[];
51
52
  }>;