@semacode/cli 2.3.1 → 3.5.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.
- package/README.md +265 -217
- package/dist/agentContextPack.js +14 -10
- package/dist/agentEntryPoints.d.ts +5 -0
- package/dist/agentEntryPoints.js +592 -568
- package/dist/angular-consumer-standalone.js +1 -1
- package/dist/bin.d.ts +6 -0
- package/dist/bin.js +130 -0
- package/dist/cliArgs.js +4 -4
- package/dist/cliControlError.d.ts +12 -0
- package/dist/cliControlError.js +47 -0
- package/dist/cliGrammar.d.ts +11 -0
- package/dist/cliGrammar.js +551 -0
- package/dist/cliHelp.d.ts +13 -0
- package/dist/cliHelp.js +19 -0
- package/dist/cliHelpTexto.d.ts +3 -0
- package/dist/cliHelpTexto.js +168 -0
- package/dist/cliRuntime.d.ts +2 -0
- package/dist/cliRuntime.js +31 -0
- package/dist/comandos.js +9 -22
- package/dist/contexto.js +5 -5
- package/dist/dev/index.d.ts +1 -0
- package/dist/dev/index.js +51 -9
- package/dist/discovery/catalog.js +3 -3
- package/dist/distribuicao/filesystemGlobal.d.ts +63 -0
- package/dist/distribuicao/filesystemGlobal.js +701 -0
- package/dist/distribuicao/index.d.ts +7 -0
- package/dist/distribuicao/index.js +227 -0
- package/dist/distribuicao/launcherGlobal.d.ts +53 -0
- package/dist/distribuicao/launcherGlobal.js +643 -0
- package/dist/distribuicao/launcherWindows.d.ts +28 -0
- package/dist/distribuicao/launcherWindows.js +326 -0
- package/dist/distribuicao/lockContextGlobal.d.ts +10 -0
- package/dist/distribuicao/lockContextGlobal.js +17 -0
- package/dist/distribuicao/lockGlobal.d.ts +6 -0
- package/dist/distribuicao/lockGlobal.js +520 -0
- package/dist/distribuicao/skillGlobal.d.ts +48 -0
- package/dist/distribuicao/skillGlobal.js +652 -0
- package/dist/distribuicao/skillIntentPolicy.d.ts +21 -0
- package/dist/distribuicao/skillIntentPolicy.js +115 -0
- package/dist/distribuicao/tipos.d.ts +50 -0
- package/dist/distribuicao/tipos.js +10 -0
- package/dist/distribuicao/versaoSemantica.d.ts +3 -0
- package/dist/distribuicao/versaoSemantica.js +62 -0
- package/dist/docs.part01.d.ts +4 -1
- package/dist/docs.part01.js +8 -0
- package/dist/docs.part02.js +9 -1
- package/dist/drift.part01.d.ts +33 -25
- package/dist/drift.part01.js +2 -1
- package/dist/drift.part04.d.ts +26 -5
- package/dist/drift.part04.js +123 -19
- package/dist/drift.part05.d.ts +2 -2
- package/dist/drift.part05.js +8 -6
- package/dist/drift.part06.d.ts +2 -2
- package/dist/drift.part06.js +113 -26
- package/dist/drift.part07.d.ts +11 -11
- package/dist/drift.part07.js +261 -265
- package/dist/drift.part08.d.ts +2 -2
- package/dist/drift.part08.js +35 -26
- package/dist/drift.part09.d.ts +2 -2
- package/dist/drift.part09.js +10 -3
- package/dist/drift.part11.js +261 -58
- package/dist/drift.part12.d.ts +1 -1
- package/dist/drift.part12.js +193 -21
- package/dist/drift.part13.d.ts +20 -39
- package/dist/drift.part13.js +601 -647
- package/dist/drift.part14.js +23 -7
- package/dist/driftCacheCas.d.ts +43 -0
- package/dist/driftCacheCas.js +351 -0
- package/dist/driftCacheFilesystem.d.ts +64 -0
- package/dist/driftCacheFilesystem.js +313 -0
- package/dist/driftCacheModes.d.ts +38 -0
- package/dist/driftCacheModes.js +147 -0
- package/dist/driftCacheStore.d.ts +80 -0
- package/dist/driftCacheStore.js +603 -0
- package/dist/driftCatalogo.d.ts +2 -28
- package/dist/driftCatalogo.js +143 -284
- package/dist/driftEscopo.d.ts +1 -3
- package/dist/driftEscopo.js +235 -151
- package/dist/driftEscopoReferencias.d.ts +5 -1
- package/dist/driftEscopoReferencias.js +375 -28
- package/dist/driftOrcamento.d.ts +0 -6
- package/dist/driftOrcamento.js +2 -1
- package/dist/execucoesExternas.js +19 -5
- package/dist/exemplosOficiais.d.ts +2 -1
- package/dist/exemplosOficiais.js +9 -3
- package/dist/geracaoCore.d.ts +1 -0
- package/dist/geracaoCore.js +6 -6
- package/dist/iaPrompts.d.ts +3 -3
- package/dist/iaPrompts.js +312 -313
- package/dist/importador.part01.d.ts +1 -1
- package/dist/importador.part06.d.ts +2 -0
- package/dist/importador.part06.js +87 -1
- package/dist/importador.part09.js +7 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +6 -25
- package/dist/index.part01.d.ts +20 -28
- package/dist/index.part01.js +16 -237
- package/dist/index.part02.js +36 -22
- package/dist/index.part03.d.ts +24 -2
- package/dist/index.part03.js +83 -19
- package/dist/index.part04.d.ts +10 -2
- package/dist/index.part04.js +152 -123
- package/dist/index.part05.js +80 -78
- package/dist/index.part06.js +34 -17
- package/dist/index.part07.d.ts +8 -2
- package/dist/index.part07.js +153 -7
- package/dist/index.part08.d.ts +1 -1
- package/dist/index.part08.js +25 -30
- package/dist/initCommand.d.ts +1 -0
- package/dist/initCommand.js +20 -4
- package/dist/initTemplatesBase.js +6 -4
- package/dist/pipelineConteudo/command.d.ts +1 -0
- package/dist/pipelineConteudo/command.js +9 -2
- package/dist/pipelineConteudo/help.d.ts +2 -0
- package/dist/pipelineConteudo/help.js +33 -0
- package/dist/profileAuthorCommand.js +3 -7
- package/dist/profileCommand.js +3 -7
- package/dist/projetoCarregar.js +35 -17
- package/dist/projetoCatalogo.d.ts +1 -0
- package/dist/projetoCatalogo.js +64 -25
- package/dist/projetoConfig.js +2 -0
- package/dist/projetoLegado.js +18 -0
- package/dist/projetoOrigens.d.ts +2 -0
- package/dist/projetoOrigens.js +65 -9
- package/dist/projetoTipos.d.ts +1 -0
- package/dist/resultadoCli.d.ts +20 -0
- package/dist/resultadoCli.js +57 -0
- package/dist/saidaCli.d.ts +35 -0
- package/dist/saidaCli.js +118 -0
- package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
- package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
- package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
- package/dist/sistemasInterativos/engineObservation.js +438 -0
- package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
- package/dist/sistemasInterativos/jobOrchestration.js +204 -0
- package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
- package/dist/sistemasInterativos/operationPrimitives.js +194 -0
- package/dist/sistemasInterativos/operations.d.ts +4 -39
- package/dist/sistemasInterativos/operations.js +5 -1164
- package/dist/skillCommand.d.ts +5 -0
- package/dist/skillCommand.js +88 -0
- package/dist/tipos.d.ts +1 -1
- package/dist/typescript-http-modelos.d.ts +1 -1
- package/dist/typescript-http-rotas.d.ts +1 -0
- package/dist/typescript-http-rotas.js +93 -0
- package/dist/typescript-http.d.ts +1 -1
- package/dist/typescript-http.js +1 -1
- package/dist/verificacaoCache.d.ts +25 -0
- package/dist/verificacaoCache.js +80 -0
- package/docs/README.md +34 -30
- package/docs/ai-integration.md +25 -12
- package/docs/ai-onboarding.md +37 -18
- package/docs/ai-workflow.md +9 -7
- package/docs/cli.md +125 -7
- package/docs/commands.md +41 -20
- package/docs/deploy.md +21 -8
- package/docs/descoberta-capacidades.md +106 -106
- package/docs/documentation.md +49 -39
- package/docs/drift-cache.md +108 -0
- package/docs/getting-started.md +43 -18
- package/docs/pipeline-conteudo.md +246 -246
- package/docs/profiles.md +54 -54
- package/docs/repositories.md +19 -2
- package/docs/rollback.md +15 -8
- package/docs/security.md +25 -3
- package/docs/sistemas-interativos.md +379 -374
- package/docs/syntax.md +14 -0
- package/docs/testing.md +139 -40
- package/exemplos/express_crud.sema +139 -0
- package/exemplos/fastify_crud.sema +146 -0
- package/exemplos/pipeline-conteudo/README.md +44 -44
- package/exemplos/pipeline-conteudo/alvos.json +23 -23
- package/exemplos/pipeline-conteudo/definicao.json +136 -136
- package/exemplos/profile_simulation.sema +211 -211
- package/exemplos/sistemas-interativos/README.md +100 -100
- package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -5
- package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -16
- package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -32
- package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -93
- package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -78
- package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -27
- package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -79
- package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -42
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -32
- package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -23
- package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -39
- package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -46
- package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -39
- package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -37
- package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -104
- package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -27
- package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -118
- package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -459
- package/exemplos/sistemas-interativos/game-2d.json +83 -83
- package/exemplos/sistemas-interativos/game-3d-human.json +81 -81
- package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -97
- package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -94
- package/exemplos/sistemas-interativos/game-xr-human.json +80 -80
- package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -108
- package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -75
- package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -58
- package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -97
- package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -141
- package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -112
- package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -103
- package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -95
- package/node_modules/@sema/gerador-cpp/package.json +1 -1
- package/node_modules/@sema/gerador-dotnet/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +51 -51
- package/node_modules/@sema/gerador-php/dist/index.js +113 -113
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js +37 -38
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +7 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +33 -10
- package/package.json +9 -4
- package/scripts/postinstall.mjs +148 -0
- package/skills/sema/SKILL.md +199 -0
- package/skills/sema/agents/openai.yaml +4 -0
- package/dist/driftCache.d.ts +0 -49
- package/dist/driftCache.js +0 -311
- package/dist/driftCacheIncremental.d.ts +0 -98
- package/dist/driftCacheIncremental.js +0 -596
- package/dist/driftCatalogoPersistente.d.ts +0 -8
- package/dist/driftCatalogoPersistente.js +0 -77
- package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
- package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
- package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
- package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
- package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
- package/node_modules/@sema/padroes/dist/index.js.map +0 -1
package/dist/drift.part07.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.
|
|
2
|
-
// Descricao:
|
|
1
|
+
// SEMA-GOVERNED: sema.produto.governanca_ia.drift
|
|
2
|
+
// Descricao: indexa linguagens legadas sem reabrir fontes fora do catalogo do drift.
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { extrairSimbolosCpp } from "./cpp-symbols.js";
|
|
@@ -11,136 +11,149 @@ import { extrairRotasPhp, extrairSimbolosPhp } from "./php-http.js";
|
|
|
11
11
|
import { contarIndentacaoPython, extrairRotasFlaskDecoradas } from "./python-http.js";
|
|
12
12
|
import { extrairRotasRust, extrairSimbolosRust } from "./rust-http.js";
|
|
13
13
|
import { categorizarPersistenciaPorOrigem } from "./drift.part01.js";
|
|
14
|
-
import { caminhosSimbolicos, listarArquivosRecursivos } from "./drift.part04.js";
|
|
14
|
+
import { caminhosSimbolicos, chaveCaminhoCanonicoDrift, deduplicarRaizesSobrepostasDrift, listarArquivosRecursivos, } from "./drift.part04.js";
|
|
15
15
|
import { extrairRecursosPersistenciaCodigoVivo, extrairRecursosPrisma, extrairSimbolosSqlDeclarativos, recursoEhIgnorado, registrarRecursoDrift } from "./drift.part03.js";
|
|
16
16
|
import { registrarRotasPython, registrarSimboloPython } from "./drift.part06.js";
|
|
17
17
|
import { arquivoEhRotasFlutterConsumer, extrairRotasFlutterConsumer, inferirRotaFlutterConsumer } from "./drift.part05.js";
|
|
18
18
|
import { fecharPrefixoRecurso, limparLiteralRecurso, normalizarNomeRecursoDrift } from "./drift.part02.js";
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
async function listarArquivosIndexacaoCompartilhada(diretorios, extensoes, adaptadorLeitura) {
|
|
20
|
+
const arquivos = new Map();
|
|
21
|
+
for (const diretorio of deduplicarRaizesSobrepostasDrift(diretorios)) {
|
|
22
|
+
for (const arquivo of await listarArquivosRecursivos(diretorio, extensoes, adaptadorLeitura)) {
|
|
23
|
+
const chave = chaveCaminhoCanonicoDrift(arquivo);
|
|
24
|
+
if (!arquivos.has(chave)) {
|
|
25
|
+
arquivos.set(chave, { diretorio, arquivo });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return [...arquivos.values()];
|
|
30
|
+
}
|
|
31
|
+
async function lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura) {
|
|
32
|
+
return adaptadorLeitura
|
|
33
|
+
? adaptadorLeitura.lerTexto(arquivo)
|
|
34
|
+
: readFile(arquivo, "utf8");
|
|
35
|
+
}
|
|
36
|
+
export async function indexarPython(diretorios, adaptadorLeitura) {
|
|
37
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
21
38
|
const simbolos = new Map();
|
|
22
39
|
const rotas = [];
|
|
23
40
|
const recursos = new Map();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
const arquivos = (await listarArquivosIndexacaoCompartilhada(diretorios, [".py"], adaptadorLeitura))
|
|
42
|
+
.filter(({ arquivo }) => !arquivo.endsWith("__init__.py") && !/tests?[\\/]/i.test(arquivo));
|
|
43
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
44
|
+
const texto = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
45
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
46
|
+
const prefixo = texto.match(/APIRouter\s*\(\s*prefix\s*=\s*["']([^"']+)["']/)?.[1];
|
|
47
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, texto)) {
|
|
48
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
49
|
+
}
|
|
50
|
+
for (const rota of extrairRotasFlaskDecoradas(texto)) {
|
|
51
|
+
rotas.push({
|
|
52
|
+
origem: "flask",
|
|
53
|
+
metodo: rota.metodo,
|
|
54
|
+
caminho: rota.caminho,
|
|
55
|
+
arquivo,
|
|
56
|
+
simbolo: rota.nomeFuncao,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const blocos = [];
|
|
60
|
+
let decoratorsPendentes = [];
|
|
61
|
+
for (const linha of texto.split(/\r?\n/)) {
|
|
62
|
+
const trim = linha.trim();
|
|
63
|
+
if (trim === "" || trim.startsWith("#")) {
|
|
64
|
+
decoratorsPendentes = [];
|
|
65
|
+
continue;
|
|
33
66
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
metodo: rota.metodo,
|
|
38
|
-
caminho: rota.caminho,
|
|
39
|
-
arquivo,
|
|
40
|
-
simbolo: rota.nomeFuncao,
|
|
41
|
-
});
|
|
67
|
+
const indentacao = contarIndentacaoPython(linha);
|
|
68
|
+
while (blocos.length > 0 && indentacao <= blocos[blocos.length - 1].indentacao) {
|
|
69
|
+
blocos.pop();
|
|
42
70
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (classe) {
|
|
61
|
-
blocos.push({ tipo: "class", nome: classe[1], indentacao });
|
|
62
|
-
decoratorsPendentes = [];
|
|
63
|
-
continue;
|
|
71
|
+
if (trim.startsWith("@")) {
|
|
72
|
+
decoratorsPendentes.push(trim);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const classe = trim.match(/^class\s+([A-Za-z_]\w*)(?:\([^)]*\))?:\s*(?:#.*)?$/);
|
|
76
|
+
if (classe) {
|
|
77
|
+
blocos.push({ tipo: "class", nome: classe[1], indentacao });
|
|
78
|
+
decoratorsPendentes = [];
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const definicao = trim.match(/^(?:async\s+def|def)\s+([A-Za-z_]\w*)\s*\(/);
|
|
82
|
+
if (definicao) {
|
|
83
|
+
const nomeFuncao = definicao[1];
|
|
84
|
+
const existeDefPai = blocos.some((bloco) => bloco.tipo === "def");
|
|
85
|
+
const classeAtual = [...blocos].reverse().find((bloco) => bloco.tipo === "class");
|
|
86
|
+
if (!existeDefPai && classeAtual) {
|
|
87
|
+
registrarSimboloPython(simbolos, basesSimbolicas, arquivo, nomeFuncao, classeAtual.nome);
|
|
64
88
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const existeDefPai = blocos.some((bloco) => bloco.tipo === "def");
|
|
69
|
-
const classeAtual = [...blocos].reverse().find((bloco) => bloco.tipo === "class");
|
|
70
|
-
if (!existeDefPai && classeAtual) {
|
|
71
|
-
registrarSimboloPython(simbolos, basesSimbolicas, arquivo, nomeFuncao, classeAtual.nome);
|
|
72
|
-
}
|
|
73
|
-
else if (!existeDefPai) {
|
|
74
|
-
registrarSimboloPython(simbolos, basesSimbolicas, arquivo, nomeFuncao);
|
|
75
|
-
registrarRotasPython(rotas, decoratorsPendentes, prefixo, arquivo, nomeFuncao);
|
|
76
|
-
}
|
|
77
|
-
blocos.push({ tipo: "def", nome: nomeFuncao, indentacao });
|
|
78
|
-
decoratorsPendentes = [];
|
|
79
|
-
continue;
|
|
89
|
+
else if (!existeDefPai) {
|
|
90
|
+
registrarSimboloPython(simbolos, basesSimbolicas, arquivo, nomeFuncao);
|
|
91
|
+
registrarRotasPython(rotas, decoratorsPendentes, prefixo, arquivo, nomeFuncao);
|
|
80
92
|
}
|
|
93
|
+
blocos.push({ tipo: "def", nome: nomeFuncao, indentacao });
|
|
81
94
|
decoratorsPendentes = [];
|
|
95
|
+
continue;
|
|
82
96
|
}
|
|
97
|
+
decoratorsPendentes = [];
|
|
83
98
|
}
|
|
84
99
|
}
|
|
85
100
|
return { simbolos: [...simbolos.values()], rotas, recursos: [...recursos.values()] };
|
|
86
101
|
}
|
|
87
|
-
export async function indexarDart(diretorios,
|
|
88
|
-
|
|
102
|
+
export async function indexarDart(diretorios, adaptadorLeitura) {
|
|
103
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
89
104
|
const simbolos = new Map();
|
|
90
105
|
const rotas = [];
|
|
91
106
|
const recursos = new Map();
|
|
92
107
|
const consumerSurfaces = new Map();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
108
|
+
const arquivos = (await listarArquivosIndexacaoCompartilhada(diretorios, [".dart"], adaptadorLeitura))
|
|
109
|
+
.filter(({ arquivo }) => !arquivo.endsWith(".g.dart") && !arquivo.endsWith(".freezed.dart"));
|
|
110
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
111
|
+
const texto = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
112
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
113
|
+
const relacao = path.relative(diretorio, arquivo);
|
|
114
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, texto)) {
|
|
115
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
116
|
+
}
|
|
117
|
+
for (const match of texto.matchAll(/(?:Future<[^\n]+>|[\w?<>.,\s]+)\s+(\w+)\(([^)]*)\)\s*(?:async\s*)?\{/g)) {
|
|
118
|
+
const nome = match[1];
|
|
119
|
+
if (["build", "toString"].includes(nome)) {
|
|
120
|
+
continue;
|
|
102
121
|
}
|
|
103
|
-
for (const
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
for (const baseSimbolica of basesSimbolicas) {
|
|
109
|
-
const caminho = `${baseSimbolica}.${nome}`;
|
|
110
|
-
simbolos.set(caminho, { origem: "dart", caminho, arquivo, simbolo: nome });
|
|
111
|
-
}
|
|
122
|
+
for (const baseSimbolica of basesSimbolicas) {
|
|
123
|
+
const caminho = `${baseSimbolica}.${nome}`;
|
|
124
|
+
simbolos.set(caminho, { origem: "dart", caminho, arquivo, simbolo: nome });
|
|
112
125
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
126
|
+
}
|
|
127
|
+
const superficieFlutter = inferirRotaFlutterConsumer(relacao);
|
|
128
|
+
if (superficieFlutter) {
|
|
129
|
+
consumerSurfaces.set(`${superficieFlutter.rota}:${arquivo}:${superficieFlutter.tipoArquivo}`, {
|
|
130
|
+
rota: superficieFlutter.rota,
|
|
131
|
+
arquivo,
|
|
132
|
+
tipoArquivo: superficieFlutter.tipoArquivo,
|
|
133
|
+
});
|
|
134
|
+
rotas.push({
|
|
135
|
+
origem: "flutter-consumer",
|
|
136
|
+
metodo: "VIEW",
|
|
137
|
+
caminho: superficieFlutter.rota,
|
|
138
|
+
arquivo,
|
|
139
|
+
simbolo: superficieFlutter.tipoArquivo,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (arquivoEhRotasFlutterConsumer(relacao, texto)) {
|
|
143
|
+
for (const rotaFlutter of extrairRotasFlutterConsumer(relacao, texto)) {
|
|
144
|
+
consumerSurfaces.set(`${rotaFlutter.rota}:${arquivo}:router`, {
|
|
145
|
+
rota: rotaFlutter.rota,
|
|
117
146
|
arquivo,
|
|
118
|
-
tipoArquivo:
|
|
147
|
+
tipoArquivo: "router",
|
|
119
148
|
});
|
|
120
149
|
rotas.push({
|
|
121
150
|
origem: "flutter-consumer",
|
|
122
151
|
metodo: "VIEW",
|
|
123
|
-
caminho:
|
|
152
|
+
caminho: rotaFlutter.rota,
|
|
124
153
|
arquivo,
|
|
125
|
-
simbolo:
|
|
154
|
+
simbolo: "router",
|
|
126
155
|
});
|
|
127
156
|
}
|
|
128
|
-
if (arquivoEhRotasFlutterConsumer(relacao, texto)) {
|
|
129
|
-
for (const rotaFlutter of extrairRotasFlutterConsumer(relacao, texto)) {
|
|
130
|
-
consumerSurfaces.set(`${rotaFlutter.rota}:${arquivo}:router`, {
|
|
131
|
-
rota: rotaFlutter.rota,
|
|
132
|
-
arquivo,
|
|
133
|
-
tipoArquivo: "router",
|
|
134
|
-
});
|
|
135
|
-
rotas.push({
|
|
136
|
-
origem: "flutter-consumer",
|
|
137
|
-
metodo: "VIEW",
|
|
138
|
-
caminho: rotaFlutter.rota,
|
|
139
|
-
arquivo,
|
|
140
|
-
simbolo: "router",
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
157
|
}
|
|
145
158
|
}
|
|
146
159
|
return {
|
|
@@ -175,140 +188,129 @@ export function registrarSimboloGenerico(simbolos, origem, basesSimbolicas, arqu
|
|
|
175
188
|
}
|
|
176
189
|
}
|
|
177
190
|
}
|
|
178
|
-
export async function indexarDotnet(diretorios,
|
|
179
|
-
|
|
191
|
+
export async function indexarDotnet(diretorios, adaptadorLeitura) {
|
|
192
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
180
193
|
const simbolos = new Map();
|
|
181
194
|
const rotas = [];
|
|
182
195
|
const recursos = new Map();
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
});
|
|
203
|
-
}
|
|
196
|
+
const arquivos = (await listarArquivosIndexacaoCompartilhada(diretorios, [".cs"], adaptadorLeitura))
|
|
197
|
+
.filter(({ arquivo }) => !/(^|[\\/])(bin|obj|Test[s]?)([\\/]|$)/i.test(arquivo));
|
|
198
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
199
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
200
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
201
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
202
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
203
|
+
}
|
|
204
|
+
for (const simbolo of extrairSimbolosDotnet(codigo)) {
|
|
205
|
+
registrarSimboloGenerico(simbolos, "cs", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
206
|
+
}
|
|
207
|
+
for (const rota of extrairRotasDotnet(codigo)) {
|
|
208
|
+
rotas.push({
|
|
209
|
+
origem: "dotnet",
|
|
210
|
+
metodo: rota.metodo,
|
|
211
|
+
caminho: rota.caminho,
|
|
212
|
+
arquivo,
|
|
213
|
+
simbolo: rota.simbolo,
|
|
214
|
+
});
|
|
204
215
|
}
|
|
205
216
|
}
|
|
206
217
|
return { simbolos: [...simbolos.values()], rotas, recursos: [...recursos.values()] };
|
|
207
218
|
}
|
|
208
|
-
export async function indexarJava(diretorios,
|
|
209
|
-
|
|
219
|
+
export async function indexarJava(diretorios, adaptadorLeitura) {
|
|
220
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
210
221
|
const simbolos = new Map();
|
|
211
222
|
const rotas = [];
|
|
212
223
|
const recursos = new Map();
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
});
|
|
233
|
-
}
|
|
224
|
+
const arquivos = (await listarArquivosIndexacaoCompartilhada(diretorios, [".java"], adaptadorLeitura))
|
|
225
|
+
.filter(({ arquivo }) => !/(^|[\\/])(target|build|out|Test[s]?)([\\/]|$)/i.test(arquivo));
|
|
226
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
227
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
228
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
229
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
230
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
231
|
+
}
|
|
232
|
+
for (const simbolo of extrairSimbolosJava(codigo)) {
|
|
233
|
+
registrarSimboloGenerico(simbolos, "java", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
234
|
+
}
|
|
235
|
+
for (const rota of extrairRotasJava(codigo)) {
|
|
236
|
+
rotas.push({
|
|
237
|
+
origem: "java",
|
|
238
|
+
metodo: rota.metodo,
|
|
239
|
+
caminho: rota.caminho,
|
|
240
|
+
arquivo,
|
|
241
|
+
simbolo: rota.simbolo,
|
|
242
|
+
});
|
|
234
243
|
}
|
|
235
244
|
}
|
|
236
245
|
return { simbolos: [...simbolos.values()], rotas, recursos: [...recursos.values()] };
|
|
237
246
|
}
|
|
238
|
-
export async function indexarGo(diretorios,
|
|
239
|
-
|
|
247
|
+
export async function indexarGo(diretorios, adaptadorLeitura) {
|
|
248
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
240
249
|
const simbolos = new Map();
|
|
241
250
|
const rotas = [];
|
|
242
251
|
const recursos = new Map();
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
});
|
|
262
|
-
}
|
|
252
|
+
const arquivos = await listarArquivosIndexacaoCompartilhada(diretorios, [".go"], adaptadorLeitura);
|
|
253
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
254
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
255
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
256
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
257
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
258
|
+
}
|
|
259
|
+
for (const simbolo of extrairSimbolosGo(codigo)) {
|
|
260
|
+
registrarSimboloGenerico(simbolos, "go", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
261
|
+
}
|
|
262
|
+
for (const rota of extrairRotasGo(codigo)) {
|
|
263
|
+
rotas.push({
|
|
264
|
+
origem: "go",
|
|
265
|
+
metodo: rota.metodo,
|
|
266
|
+
caminho: rota.caminho,
|
|
267
|
+
arquivo,
|
|
268
|
+
simbolo: rota.simbolo,
|
|
269
|
+
});
|
|
263
270
|
}
|
|
264
271
|
}
|
|
265
272
|
return { simbolos: [...simbolos.values()], rotas, recursos: [...recursos.values()] };
|
|
266
273
|
}
|
|
267
|
-
export async function indexarRust(diretorios,
|
|
268
|
-
|
|
274
|
+
export async function indexarRust(diretorios, adaptadorLeitura) {
|
|
275
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
269
276
|
const simbolos = new Map();
|
|
270
277
|
const rotas = [];
|
|
271
278
|
const recursos = new Map();
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
});
|
|
291
|
-
}
|
|
279
|
+
const arquivos = await listarArquivosIndexacaoCompartilhada(diretorios, [".rs"], adaptadorLeitura);
|
|
280
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
281
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
282
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
283
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
284
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
285
|
+
}
|
|
286
|
+
for (const simbolo of extrairSimbolosRust(codigo)) {
|
|
287
|
+
registrarSimboloGenerico(simbolos, "rust", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
288
|
+
}
|
|
289
|
+
for (const rota of extrairRotasRust(codigo)) {
|
|
290
|
+
rotas.push({
|
|
291
|
+
origem: "rust",
|
|
292
|
+
metodo: rota.metodo,
|
|
293
|
+
caminho: rota.caminho,
|
|
294
|
+
arquivo,
|
|
295
|
+
simbolo: rota.simbolo,
|
|
296
|
+
});
|
|
292
297
|
}
|
|
293
298
|
}
|
|
294
299
|
return { simbolos: [...simbolos.values()], rotas, recursos: [...recursos.values()] };
|
|
295
300
|
}
|
|
296
|
-
export async function indexarCpp(diretorios,
|
|
297
|
-
|
|
301
|
+
export async function indexarCpp(diretorios, adaptadorLeitura) {
|
|
302
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
298
303
|
const simbolos = new Map();
|
|
299
304
|
const recursos = new Map();
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
for (const simbolo of extrairSimbolosCpp(codigo)) {
|
|
310
|
-
registrarSimboloGenerico(simbolos, "cpp", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
311
|
-
}
|
|
305
|
+
const arquivos = (await listarArquivosIndexacaoCompartilhada(diretorios, [".cpp", ".cc", ".cxx", ".hpp", ".h"], adaptadorLeitura)).filter(({ arquivo }) => !/(^|[\\/])(windows|linux|macos|runner|flutter|ephemeral|build|vendor)([\\/]|$)/i.test(arquivo));
|
|
306
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
307
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
308
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
309
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
310
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
311
|
+
}
|
|
312
|
+
for (const simbolo of extrairSimbolosCpp(codigo)) {
|
|
313
|
+
registrarSimboloGenerico(simbolos, "cpp", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
312
314
|
}
|
|
313
315
|
}
|
|
314
316
|
return {
|
|
@@ -316,41 +318,39 @@ export async function indexarCpp(diretorios, catalogo) {
|
|
|
316
318
|
recursos: [...recursos.values()],
|
|
317
319
|
};
|
|
318
320
|
}
|
|
319
|
-
export async function indexarPhp(diretorios,
|
|
320
|
-
|
|
321
|
+
export async function indexarPhp(diretorios, adaptadorLeitura) {
|
|
322
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
321
323
|
const simbolos = new Map();
|
|
322
324
|
const rotas = [];
|
|
323
325
|
const recursos = new Map();
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
simbolos.set(alias, {
|
|
337
|
-
origem: "php",
|
|
338
|
-
caminho: alias,
|
|
339
|
-
arquivo,
|
|
340
|
-
simbolo: simbolo.simbolo,
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
for (const rota of extrairRotasPhp(codigo)) {
|
|
345
|
-
rotas.push({
|
|
326
|
+
const arquivos = (await listarArquivosIndexacaoCompartilhada(diretorios, [".php"], adaptadorLeitura))
|
|
327
|
+
.filter(({ arquivo }) => !/(^|[\\/])(vendor|storage|bootstrap[\\/]cache|cache|tests?)([\\/]|$)/i.test(arquivo));
|
|
328
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
329
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
330
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
331
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
332
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
333
|
+
}
|
|
334
|
+
for (const simbolo of extrairSimbolosPhp(codigo)) {
|
|
335
|
+
registrarSimboloGenerico(simbolos, "php", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
336
|
+
for (const alias of simbolo.aliases ?? []) {
|
|
337
|
+
simbolos.set(alias, {
|
|
346
338
|
origem: "php",
|
|
347
|
-
|
|
348
|
-
caminho: rota.caminho,
|
|
339
|
+
caminho: alias,
|
|
349
340
|
arquivo,
|
|
350
|
-
simbolo:
|
|
341
|
+
simbolo: simbolo.simbolo,
|
|
351
342
|
});
|
|
352
343
|
}
|
|
353
344
|
}
|
|
345
|
+
for (const rota of extrairRotasPhp(codigo)) {
|
|
346
|
+
rotas.push({
|
|
347
|
+
origem: "php",
|
|
348
|
+
metodo: rota.metodo,
|
|
349
|
+
caminho: rota.caminho,
|
|
350
|
+
arquivo,
|
|
351
|
+
simbolo: rota.simbolo,
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
354
|
}
|
|
355
355
|
return {
|
|
356
356
|
simbolos: [...simbolos.values()],
|
|
@@ -358,22 +358,20 @@ export async function indexarPhp(diretorios, catalogo) {
|
|
|
358
358
|
recursos: [...recursos.values()],
|
|
359
359
|
};
|
|
360
360
|
}
|
|
361
|
-
export async function indexarLua(diretorios,
|
|
362
|
-
|
|
361
|
+
export async function indexarLua(diretorios, adaptadorLeitura) {
|
|
362
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
363
363
|
const simbolos = new Map();
|
|
364
364
|
const recursos = new Map();
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
registrarSimboloGenerico(simbolos, "lua", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
376
|
-
}
|
|
365
|
+
const arquivos = (await listarArquivosIndexacaoCompartilhada(diretorios, [".lua"], adaptadorLeitura))
|
|
366
|
+
.filter(({ arquivo }) => !/(^|[\\/])(vendor|build|dist|generated|tests?)([\\/]|$)/i.test(arquivo));
|
|
367
|
+
for (const { diretorio, arquivo } of arquivos) {
|
|
368
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
369
|
+
const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
|
|
370
|
+
for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
|
|
371
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
372
|
+
}
|
|
373
|
+
for (const simbolo of extrairSimbolosLua(codigo)) {
|
|
374
|
+
registrarSimboloGenerico(simbolos, "lua", basesSimbolicas, arquivo, simbolo.simbolo);
|
|
377
375
|
}
|
|
378
376
|
}
|
|
379
377
|
return {
|
|
@@ -381,27 +379,25 @@ export async function indexarLua(diretorios, catalogo) {
|
|
|
381
379
|
recursos: [...recursos.values()],
|
|
382
380
|
};
|
|
383
381
|
}
|
|
384
|
-
export async function indexarPersistenciaDeclarativa(diretorios,
|
|
385
|
-
|
|
382
|
+
export async function indexarPersistenciaDeclarativa(diretorios, adaptadorLeitura) {
|
|
383
|
+
adaptadorLeitura?.emitir?.("extractor.run");
|
|
386
384
|
const recursos = new Map();
|
|
387
385
|
const simbolos = new Map();
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
simbolos.set(`${simbolo.caminho}:${simbolo.arquivo}`, simbolo);
|
|
404
|
-
}
|
|
386
|
+
const arquivos = await listarArquivosIndexacaoCompartilhada(diretorios, [
|
|
387
|
+
".sql", ".psql", ".ddl", ".prisma",
|
|
388
|
+
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
389
|
+
".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h", ".php",
|
|
390
|
+
], adaptadorLeitura);
|
|
391
|
+
for (const { arquivo } of arquivos) {
|
|
392
|
+
const codigo = await lerTextoIndexacaoCompartilhada(arquivo, adaptadorLeitura);
|
|
393
|
+
const extracoes = arquivo.endsWith(".prisma")
|
|
394
|
+
? extrairRecursosPrisma(arquivo, codigo)
|
|
395
|
+
: extrairRecursosPersistenciaCodigoVivo(arquivo, codigo);
|
|
396
|
+
for (const recurso of extracoes) {
|
|
397
|
+
registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
|
|
398
|
+
}
|
|
399
|
+
for (const simbolo of extrairSimbolosSqlDeclarativos(arquivo, codigo)) {
|
|
400
|
+
simbolos.set(`${simbolo.caminho}:${simbolo.arquivo}`, simbolo);
|
|
405
401
|
}
|
|
406
402
|
}
|
|
407
403
|
return { recursos: [...recursos.values()], simbolos: [...simbolos.values()] };
|