@semacode/cli 1.5.5 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -58,10 +58,12 @@ sema drift ./contratos-importados --json
58
58
 
59
59
  ## Persistencia vendor-first
60
60
 
61
- A CLI 1.5.4 entende blocos `database` e recursos de persistencia no IR, no formatador, no semantico, na importacao, no drift, no impact map, na renomeacao semantica assistida e no `verificar`. O objetivo nao e esconder diferencas entre bancos, e sim capturar essas diferencas no contrato.
61
+ A CLI 1.5.6 entende blocos `database` e recursos de persistencia no IR, no formatador, no semantico, na importacao, no drift, no impact map, na renomeacao semantica assistida e no `verificar`. O objetivo nao e esconder diferencas entre bancos, e sim capturar essas diferencas no contrato.
62
62
 
63
63
  Nesta linha, o `drift` tambem passa a resolver melhor metodos JS/TS browser-side definidos via `Object.assign(...prototype...)` e a entrada padrao da CLI para de tropeçar em `exemplos/` quando o projeto real ja tem `contratos/`, `sema/` ou arquivos `.sema` na raiz.
64
64
 
65
+ Nesta linha, o `drift` tambem passa a enxergar `Preferences`, `localStorage` e `sessionStorage` como persistencia local real, distinguir `ancoragemVinculo` herdada do modulo e cobrir `angular-consumer` standalone mesmo quando o app nao tem `.routes`.
66
+
65
67
  Cobertura publica:
66
68
 
67
69
  - `postgres`: tabela, relacao, query SQL, schema e capacidades relacionais
@@ -0,0 +1,6 @@
1
+ export interface SuperficieAngularStandaloneConsumer {
2
+ rota: string;
3
+ arquivo: string;
4
+ tipoArquivo: "app" | "component";
5
+ }
6
+ export declare function coletarSuperficiesAngularStandaloneConsumer(baseProjeto: string, arquivos: string[]): Promise<SuperficieAngularStandaloneConsumer[]>;
@@ -0,0 +1,264 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import ts from "typescript";
4
+ function normalizarCaminhoConsumer(caminhoArquivo) {
5
+ return caminhoArquivo.replace(/\\/g, "/");
6
+ }
7
+ function arquivoEhComponenteAngularStandalone(relacaoArquivo) {
8
+ const relacao = normalizarCaminhoConsumer(relacaoArquivo);
9
+ return /(?:^|\/)(?:src\/)?app\.component\.(?:ts|js)$/i.test(relacao)
10
+ || /(?:^|\/)(?:src\/)?app\/.+\.component\.(?:ts|js)$/i.test(relacao)
11
+ || /(?:^|\/)(?:src\/)?components\/.+\.component\.(?:ts|js)$/i.test(relacao);
12
+ }
13
+ function arquivoEhRaizAngularStandalone(relacaoArquivo) {
14
+ const relacao = normalizarCaminhoConsumer(relacaoArquivo);
15
+ return /(?:^|\/)(?:src\/)?app\.component\.(?:ts|js)$/i.test(relacao)
16
+ || /(?:^|\/)(?:src\/)?app\/app\.component\.(?:ts|js)$/i.test(relacao);
17
+ }
18
+ function resolverImportRelativoAngular(relacaoArquivoBase, especificador) {
19
+ if (!especificador.startsWith(".")) {
20
+ return undefined;
21
+ }
22
+ const baseDir = path.posix.dirname(normalizarCaminhoConsumer(relacaoArquivoBase));
23
+ for (const sufixo of ["", ".ts", ".tsx", ".js", ".jsx", "/index.ts", "/index.js"]) {
24
+ const candidato = path.posix.normalize(path.posix.join(baseDir, `${especificador}${sufixo}`));
25
+ if (/\.(?:ts|tsx|js|jsx)$/i.test(candidato)) {
26
+ return candidato;
27
+ }
28
+ }
29
+ return undefined;
30
+ }
31
+ function resolverTemplateRelativoAngular(relacaoArquivoBase, especificador) {
32
+ if (!especificador.startsWith(".")) {
33
+ return undefined;
34
+ }
35
+ const baseDir = path.posix.dirname(normalizarCaminhoConsumer(relacaoArquivoBase));
36
+ const candidato = path.posix.normalize(path.posix.join(baseDir, especificador));
37
+ return /\.(?:html)$/i.test(candidato) ? candidato : undefined;
38
+ }
39
+ function extrairImportsTypeScriptAngular(relacaoArquivo, codigo) {
40
+ const imports = new Map();
41
+ for (const match of codigo.matchAll(/import\s*\{\s*([^}]+)\s*\}\s*from\s*["']([^"']+)["']/g)) {
42
+ const arquivoImportado = resolverImportRelativoAngular(relacaoArquivo, match[2]);
43
+ if (!arquivoImportado) {
44
+ continue;
45
+ }
46
+ for (const bruto of match[1].split(",")) {
47
+ const local = bruto.trim().split(/\s+as\s+/i).at(-1)?.trim();
48
+ if (local) {
49
+ imports.set(local, arquivoImportado);
50
+ }
51
+ }
52
+ }
53
+ for (const match of codigo.matchAll(/import\s+([A-Za-z_]\w*)\s+from\s*["']([^"']+)["']/g)) {
54
+ const arquivoImportado = resolverImportRelativoAngular(relacaoArquivo, match[2]);
55
+ const local = match[1]?.trim();
56
+ if (arquivoImportado && local) {
57
+ imports.set(local, arquivoImportado);
58
+ }
59
+ }
60
+ return imports;
61
+ }
62
+ function nomePropriedadeObjeto(elemento) {
63
+ if (!ts.isPropertyAssignment(elemento) && !ts.isShorthandPropertyAssignment(elemento)) {
64
+ return undefined;
65
+ }
66
+ const nome = elemento.name;
67
+ if (ts.isIdentifier(nome) || ts.isStringLiteral(nome)) {
68
+ return nome.text;
69
+ }
70
+ return undefined;
71
+ }
72
+ function obterDecorators(node) {
73
+ return ts.canHaveDecorators(node) ? ts.getDecorators(node) ?? [] : [];
74
+ }
75
+ function obterObjetoDecoratorComponent(node) {
76
+ for (const decorator of obterDecorators(node)) {
77
+ const expr = decorator.expression;
78
+ if (!ts.isCallExpression(expr) || !ts.isIdentifier(expr.expression) || expr.expression.text !== "Component") {
79
+ continue;
80
+ }
81
+ const arg = expr.arguments[0];
82
+ if (arg && ts.isObjectLiteralExpression(arg)) {
83
+ return arg;
84
+ }
85
+ }
86
+ return undefined;
87
+ }
88
+ function obterExpressaoPropriedade(objeto, nome) {
89
+ for (const propriedade of objeto.properties) {
90
+ if (nomePropriedadeObjeto(propriedade) !== nome) {
91
+ continue;
92
+ }
93
+ if (ts.isPropertyAssignment(propriedade)) {
94
+ return propriedade.initializer;
95
+ }
96
+ if (ts.isShorthandPropertyAssignment(propriedade)) {
97
+ return propriedade.name;
98
+ }
99
+ }
100
+ return undefined;
101
+ }
102
+ function extrairTextoLiteral(expressao) {
103
+ if (!expressao) {
104
+ return undefined;
105
+ }
106
+ if (ts.isStringLiteral(expressao) || ts.isNoSubstitutionTemplateLiteral(expressao)) {
107
+ return expressao.text;
108
+ }
109
+ if (ts.isTemplateExpression(expressao)) {
110
+ return expressao.getText().slice(1, -1);
111
+ }
112
+ return undefined;
113
+ }
114
+ function extrairIdentificadorImportado(expressao) {
115
+ if (ts.isIdentifier(expressao)) {
116
+ return expressao.text;
117
+ }
118
+ if (ts.isCallExpression(expressao)
119
+ && ts.isIdentifier(expressao.expression)
120
+ && expressao.expression.text === "forwardRef") {
121
+ const callback = expressao.arguments[0];
122
+ if (callback && (ts.isArrowFunction(callback) || ts.isFunctionExpression(callback))) {
123
+ if (ts.isIdentifier(callback.body)) {
124
+ return callback.body.text;
125
+ }
126
+ if (ts.isBlock(callback.body)) {
127
+ for (const statement of callback.body.statements) {
128
+ if (ts.isReturnStatement(statement) && statement.expression && ts.isIdentifier(statement.expression)) {
129
+ return statement.expression.text;
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ return undefined;
136
+ }
137
+ async function extrairTemplateAngularStandalone(baseProjeto, relacaoArquivo, metadata) {
138
+ const templateInline = extrairTextoLiteral(obterExpressaoPropriedade(metadata, "template"));
139
+ if (templateInline) {
140
+ return templateInline;
141
+ }
142
+ const templateUrl = extrairTextoLiteral(obterExpressaoPropriedade(metadata, "templateUrl"));
143
+ if (!templateUrl) {
144
+ return "";
145
+ }
146
+ const templateRelativo = resolverTemplateRelativoAngular(relacaoArquivo, templateUrl);
147
+ if (!templateRelativo) {
148
+ return "";
149
+ }
150
+ try {
151
+ return await readFile(path.join(baseProjeto, templateRelativo), "utf8");
152
+ }
153
+ catch {
154
+ return "";
155
+ }
156
+ }
157
+ async function indexarComponenteAngularStandalone(baseProjeto, arquivo) {
158
+ const relacaoArquivo = normalizarCaminhoConsumer(path.relative(baseProjeto, arquivo));
159
+ if (!arquivoEhComponenteAngularStandalone(relacaoArquivo)) {
160
+ return undefined;
161
+ }
162
+ const codigo = await readFile(arquivo, "utf8");
163
+ const sourceFile = ts.createSourceFile(arquivo, codigo, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
164
+ const imports = extrairImportsTypeScriptAngular(relacaoArquivo, codigo);
165
+ for (const statement of sourceFile.statements) {
166
+ if (!ts.isClassDeclaration(statement)) {
167
+ continue;
168
+ }
169
+ const metadata = obterObjetoDecoratorComponent(statement);
170
+ if (!metadata) {
171
+ continue;
172
+ }
173
+ const standalone = obterExpressaoPropriedade(metadata, "standalone");
174
+ if (!standalone || standalone.kind !== ts.SyntaxKind.TrueKeyword) {
175
+ continue;
176
+ }
177
+ const importsExpr = obterExpressaoPropriedade(metadata, "imports");
178
+ const importsArquivos = new Set();
179
+ if (importsExpr && ts.isArrayLiteralExpression(importsExpr)) {
180
+ for (const elemento of importsExpr.elements) {
181
+ const nomeImportado = extrairIdentificadorImportado(elemento);
182
+ if (!nomeImportado) {
183
+ continue;
184
+ }
185
+ const arquivoImportado = imports.get(nomeImportado);
186
+ if (arquivoImportado) {
187
+ importsArquivos.add(arquivoImportado);
188
+ }
189
+ }
190
+ }
191
+ return {
192
+ arquivo: relacaoArquivo,
193
+ selector: extrairTextoLiteral(obterExpressaoPropriedade(metadata, "selector")),
194
+ imports: [...importsArquivos],
195
+ template: await extrairTemplateAngularStandalone(baseProjeto, relacaoArquivo, metadata),
196
+ raiz: arquivoEhRaizAngularStandalone(relacaoArquivo),
197
+ };
198
+ }
199
+ return undefined;
200
+ }
201
+ function templateReferenciaSelector(template, selector) {
202
+ if (!template || !selector) {
203
+ return false;
204
+ }
205
+ const escapado = selector.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
206
+ return new RegExp(`<${escapado}(?:\\s|>)`, "i").test(template);
207
+ }
208
+ export async function coletarSuperficiesAngularStandaloneConsumer(baseProjeto, arquivos) {
209
+ const componentes = new Map();
210
+ for (const arquivo of arquivos) {
211
+ const componente = await indexarComponenteAngularStandalone(baseProjeto, arquivo);
212
+ if (componente) {
213
+ componentes.set(componente.arquivo, componente);
214
+ }
215
+ }
216
+ const raizes = [...componentes.values()].filter((componente) => componente.raiz);
217
+ if (raizes.length === 0) {
218
+ return [];
219
+ }
220
+ const seletores = new Map();
221
+ for (const componente of componentes.values()) {
222
+ if (!componente.selector) {
223
+ continue;
224
+ }
225
+ const existentes = seletores.get(componente.selector) ?? [];
226
+ existentes.push(componente.arquivo);
227
+ seletores.set(componente.selector, existentes);
228
+ }
229
+ const visitados = new Set();
230
+ const fila = [...raizes];
231
+ while (fila.length > 0) {
232
+ const atual = fila.shift();
233
+ if (!atual || visitados.has(atual.arquivo)) {
234
+ continue;
235
+ }
236
+ visitados.add(atual.arquivo);
237
+ for (const arquivoImportado of atual.imports) {
238
+ const componenteImportado = componentes.get(arquivoImportado);
239
+ if (componenteImportado && !visitados.has(componenteImportado.arquivo)) {
240
+ fila.push(componenteImportado);
241
+ }
242
+ }
243
+ for (const [selector, arquivosSelector] of seletores.entries()) {
244
+ if (!templateReferenciaSelector(atual.template, selector)) {
245
+ continue;
246
+ }
247
+ for (const arquivoSelector of arquivosSelector) {
248
+ const componenteSelector = componentes.get(arquivoSelector);
249
+ if (componenteSelector && !visitados.has(componenteSelector.arquivo)) {
250
+ fila.push(componenteSelector);
251
+ }
252
+ }
253
+ }
254
+ }
255
+ return [...visitados]
256
+ .map((arquivo) => ({
257
+ rota: "/",
258
+ arquivo,
259
+ tipoArquivo: raizes.some((raiz) => raiz.arquivo === arquivo) ? "app" : "component",
260
+ }))
261
+ .sort((a, b) => a.tipoArquivo.localeCompare(b.tipoArquivo, "pt-BR")
262
+ || a.arquivo.localeCompare(b.arquivo, "pt-BR"));
263
+ }
264
+ //# sourceMappingURL=angular-consumer-standalone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-consumer-standalone.js","sourceRoot":"","sources":["../src/angular-consumer-standalone.ts"],"names":[],"mappings":"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"}
package/dist/drift.d.ts CHANGED
@@ -1,5 +1,11 @@
1
1
  import type { EngineBanco, NivelConfiancaSemantica, NivelRiscoSemantico, TipoRecursoPersistencia } from "@sema/nucleo";
2
2
  import type { ContextoProjetoCarregado } from "./projeto.js";
3
+ interface SimboloResolvido {
4
+ origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
5
+ caminho: string;
6
+ arquivo: string;
7
+ simbolo: string;
8
+ }
3
9
  type ConsumerFramework = "nextjs-consumer" | "react-vite-consumer" | "angular-consumer" | "flutter-consumer";
4
10
  interface RegistroConsumerSurfaceDrift {
5
11
  rota: string;
@@ -83,6 +89,7 @@ interface SimboloCandidatoDrift {
83
89
  confianca: "alta" | "media";
84
90
  motivo: string;
85
91
  }
92
+ type AncoragemVinculoTaskDrift = "propria" | "herdada_modulo" | "ausente";
86
93
  interface ResumoTaskDrift {
87
94
  modulo: string;
88
95
  task: string;
@@ -94,7 +101,9 @@ interface ResumoTaskDrift {
94
101
  confiancaVinculo: NivelConfiancaSemantica;
95
102
  riscoOperacional: NivelRiscoSemantico;
96
103
  lacunas: string[];
104
+ ancoragemVinculo: AncoragemVinculoTaskDrift;
97
105
  arquivosReferenciados: string[];
106
+ arquivosAncoraHerdados: string[];
98
107
  arquivosProvaveisEditar: string[];
99
108
  simbolosReferenciados: string[];
100
109
  candidatosImpl: SimboloCandidatoDrift[];
@@ -209,7 +218,7 @@ declare function indexarPersistenciaDetalhada(diretorios: string[]): Promise<{
209
218
  colunas: RegistroColunaPersistenciaDrift[];
210
219
  repositorios: RegistroRepositorioPersistenciaDrift[];
211
220
  }>;
212
- export declare function analisarPersistenciaReal(contexto: ContextoProjetoCarregado, mapaRecursos?: Map<string, RecursoResolvido[]>, detalhesPersistencia?: Awaited<ReturnType<typeof indexarPersistenciaDetalhada>>, opcoes?: OpcoesDriftLegado): Promise<RegistroPersistenciaRealDrift[]>;
221
+ export declare function analisarPersistenciaReal(contexto: ContextoProjetoCarregado, mapaRecursos?: Map<string, RecursoResolvido[]>, detalhesPersistencia?: Awaited<ReturnType<typeof indexarPersistenciaDetalhada>>, opcoes?: OpcoesDriftLegado, mapaImpl?: Map<string, SimboloResolvido>): Promise<RegistroPersistenciaRealDrift[]>;
213
222
  export declare function analisarDriftLegado(contexto: ContextoProjetoCarregado, opcoes?: OpcoesDriftLegado): Promise<ResultadoDrift>;
214
223
  export declare function gerarMapaImpactoSemantico(contexto: ContextoProjetoCarregado, alvoSemantico: string, mudancaProposta: string, opcoes?: OpcoesDriftLegado): Promise<ResultadoImpactoSemantico>;
215
224
  export declare function assistirRenomeacaoSemantica(contexto: ContextoProjetoCarregado, nomeAtual: string, nomeNovo: string, opcoes?: OpcoesDriftLegado): Promise<ResultadoRenomeacaoSemantica>;