@semacode/cli 0.8.2
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/LICENSE +22 -0
- package/README.md +52 -0
- package/dist/cpp-symbols.d.ts +10 -0
- package/dist/cpp-symbols.js +71 -0
- package/dist/cpp-symbols.js.map +1 -0
- package/dist/dotnet-http.d.ts +23 -0
- package/dist/dotnet-http.js +301 -0
- package/dist/dotnet-http.js.map +1 -0
- package/dist/drift.d.ts +74 -0
- package/dist/drift.js +878 -0
- package/dist/drift.js.map +1 -0
- package/dist/go-http.d.ts +23 -0
- package/dist/go-http.js +90 -0
- package/dist/go-http.js.map +1 -0
- package/dist/importador.d.ts +29 -0
- package/dist/importador.js +2094 -0
- package/dist/importador.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2150 -0
- package/dist/index.js.map +1 -0
- package/dist/java-http.d.ts +23 -0
- package/dist/java-http.js +204 -0
- package/dist/java-http.js.map +1 -0
- package/dist/projeto.d.ts +48 -0
- package/dist/projeto.js +560 -0
- package/dist/projeto.js.map +1 -0
- package/dist/python-http.d.ts +23 -0
- package/dist/python-http.js +200 -0
- package/dist/python-http.js.map +1 -0
- package/dist/rust-http.d.ts +23 -0
- package/dist/rust-http.js +95 -0
- package/dist/rust-http.js.map +1 -0
- package/dist/tipos.d.ts +3 -0
- package/dist/tipos.js +2 -0
- package/dist/tipos.js.map +1 -0
- package/dist/typescript-http.d.ts +35 -0
- package/dist/typescript-http.js +854 -0
- package/dist/typescript-http.js.map +1 -0
- package/logo.png +0 -0
- package/node_modules/@sema/gerador-dart/dist/index.d.ts +3 -0
- package/node_modules/@sema/gerador-dart/dist/index.js +44 -0
- package/node_modules/@sema/gerador-dart/dist/index.js.map +1 -0
- package/node_modules/@sema/gerador-dart/package.json +7 -0
- package/node_modules/@sema/gerador-python/dist/index.d.ts +6 -0
- package/node_modules/@sema/gerador-python/dist/index.js +510 -0
- package/node_modules/@sema/gerador-python/dist/index.js.map +1 -0
- package/node_modules/@sema/gerador-python/package.json +7 -0
- package/node_modules/@sema/gerador-typescript/dist/index.d.ts +6 -0
- package/node_modules/@sema/gerador-typescript/dist/index.js +646 -0
- package/node_modules/@sema/gerador-typescript/dist/index.js.map +1 -0
- package/node_modules/@sema/gerador-typescript/package.json +7 -0
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +103 -0
- package/node_modules/@sema/nucleo/dist/ast/tipos.js +2 -0
- package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +21 -0
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +12 -0
- package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +9 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.js +289 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/index.d.ts +34 -0
- package/node_modules/@sema/nucleo/dist/index.js +95 -0
- package/node_modules/@sema/nucleo/dist/index.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +5 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +241 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +131 -0
- package/node_modules/@sema/nucleo/dist/ir/modelos.js +2 -0
- package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +7 -0
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js +122 -0
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +8 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +30 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +9 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.js +423 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +52 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +837 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +99 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +395 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +2 -0
- package/node_modules/@sema/nucleo/dist/util/arquivos.js +25 -0
- package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +1 -0
- package/node_modules/@sema/nucleo/package.json +7 -0
- package/node_modules/@sema/padroes/dist/index.d.ts +20 -0
- package/node_modules/@sema/padroes/dist/index.js +79 -0
- package/node_modules/@sema/padroes/dist/index.js.map +1 -0
- package/node_modules/@sema/padroes/package.json +7 -0
- package/package.json +57 -0
package/dist/projeto.js
ADDED
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
import { stat, readFile, readdir } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { compilarProjeto, lerArquivoTexto, listarArquivosSema, } from "@sema/nucleo";
|
|
4
|
+
async function caminhoExiste(caminhoAlvo) {
|
|
5
|
+
try {
|
|
6
|
+
await stat(caminhoAlvo);
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export async function localizarConfiguracaoProjeto(entradaInicial) {
|
|
14
|
+
let atual = path.resolve(entradaInicial);
|
|
15
|
+
try {
|
|
16
|
+
const info = await stat(atual);
|
|
17
|
+
if (info.isFile()) {
|
|
18
|
+
atual = path.dirname(atual);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
atual = path.dirname(atual);
|
|
23
|
+
}
|
|
24
|
+
for (;;) {
|
|
25
|
+
const candidato = path.join(atual, "sema.config.json");
|
|
26
|
+
if (await caminhoExiste(candidato)) {
|
|
27
|
+
return candidato;
|
|
28
|
+
}
|
|
29
|
+
const pai = path.dirname(atual);
|
|
30
|
+
if (pai === atual) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
atual = pai;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export async function carregarConfiguracaoProjeto(entradaInicial) {
|
|
37
|
+
const caminhoConfig = await localizarConfiguracaoProjeto(entradaInicial);
|
|
38
|
+
if (!caminhoConfig) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
const conteudo = await readFile(caminhoConfig, "utf8");
|
|
42
|
+
const config = JSON.parse(conteudo);
|
|
43
|
+
return {
|
|
44
|
+
caminho: caminhoConfig,
|
|
45
|
+
baseDiretorio: path.dirname(caminhoConfig),
|
|
46
|
+
config,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export function normalizarEstruturaSaida(valor) {
|
|
50
|
+
if (valor === "modulos" || valor === "backend") {
|
|
51
|
+
return valor;
|
|
52
|
+
}
|
|
53
|
+
return "flat";
|
|
54
|
+
}
|
|
55
|
+
export function normalizarFrameworkGeracao(valor) {
|
|
56
|
+
if (valor === "nestjs" || valor === "fastapi") {
|
|
57
|
+
return valor;
|
|
58
|
+
}
|
|
59
|
+
return "base";
|
|
60
|
+
}
|
|
61
|
+
function normalizarAlvo(valor) {
|
|
62
|
+
if (valor === "typescript" || valor === "python" || valor === "dart") {
|
|
63
|
+
return valor;
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
function resolverEntradaPadrao(cwd, configCarregada) {
|
|
68
|
+
if (configCarregada) {
|
|
69
|
+
return configCarregada.baseDiretorio;
|
|
70
|
+
}
|
|
71
|
+
return path.resolve(cwd, "exemplos");
|
|
72
|
+
}
|
|
73
|
+
async function listarArquivosDeOrigens(origens) {
|
|
74
|
+
const encontrados = new Set();
|
|
75
|
+
for (const origem of origens) {
|
|
76
|
+
if (!(await caminhoExiste(origem))) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const arquivos = await listarArquivosSema(origem);
|
|
80
|
+
for (const arquivo of arquivos) {
|
|
81
|
+
encontrados.add(path.resolve(arquivo));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return [...encontrados].sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
85
|
+
}
|
|
86
|
+
function normalizarFonteLegado(valor) {
|
|
87
|
+
if (valor === "nestjs"
|
|
88
|
+
|| valor === "fastapi"
|
|
89
|
+
|| valor === "flask"
|
|
90
|
+
|| valor === "nextjs"
|
|
91
|
+
|| valor === "firebase"
|
|
92
|
+
|| valor === "typescript"
|
|
93
|
+
|| valor === "python"
|
|
94
|
+
|| valor === "dart"
|
|
95
|
+
|| valor === "dotnet"
|
|
96
|
+
|| valor === "java"
|
|
97
|
+
|| valor === "go"
|
|
98
|
+
|| valor === "rust"
|
|
99
|
+
|| valor === "cpp") {
|
|
100
|
+
return valor;
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
function normalizarModoAdocao(valor) {
|
|
105
|
+
return valor === "incremental" ? valor : "incremental";
|
|
106
|
+
}
|
|
107
|
+
async function lerConteudoSeExistir(caminhoAlvo) {
|
|
108
|
+
try {
|
|
109
|
+
return await readFile(caminhoAlvo, "utf8");
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async function listarDiretoriosFilhos(diretorioBase) {
|
|
116
|
+
try {
|
|
117
|
+
const entradas = await readdir(diretorioBase, { withFileTypes: true });
|
|
118
|
+
return entradas
|
|
119
|
+
.filter((entrada) => entrada.isDirectory())
|
|
120
|
+
.map((entrada) => path.join(diretorioBase, entrada.name));
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function listarArquivosRecursivosLimitado(diretorioBase, extensoes, profundidadeMaxima = 4, limite = 40) {
|
|
127
|
+
const encontrados = [];
|
|
128
|
+
const visitar = async (diretorioAtual, profundidadeAtual) => {
|
|
129
|
+
if (encontrados.length >= limite) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
let entradas;
|
|
133
|
+
try {
|
|
134
|
+
entradas = await readdir(diretorioAtual, { withFileTypes: true });
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
for (const entrada of entradas) {
|
|
140
|
+
if (encontrados.length >= limite) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const caminhoAtual = path.join(diretorioAtual, entrada.name);
|
|
144
|
+
if (entrada.isDirectory()) {
|
|
145
|
+
if (profundidadeAtual <= 0 || DIRETORIOS_CODIGO_IGNORADOS.has(entrada.name.toLowerCase())) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
await visitar(caminhoAtual, profundidadeAtual - 1);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (extensoes.some((extensao) => entrada.name.toLowerCase().endsWith(extensao))) {
|
|
152
|
+
encontrados.push(caminhoAtual);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
await visitar(diretorioBase, profundidadeMaxima);
|
|
157
|
+
return encontrados;
|
|
158
|
+
}
|
|
159
|
+
async function procurarArquivosPorNome(diretorioBase, nomes, profundidadeMaxima = 4) {
|
|
160
|
+
const nomesNormalizados = new Set(nomes.map((nome) => nome.toLowerCase()));
|
|
161
|
+
const encontrados = [];
|
|
162
|
+
const visitar = async (diretorioAtual, profundidadeAtual) => {
|
|
163
|
+
let entradas;
|
|
164
|
+
try {
|
|
165
|
+
entradas = await readdir(diretorioAtual, { withFileTypes: true });
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
for (const entrada of entradas) {
|
|
171
|
+
const caminhoAtual = path.join(diretorioAtual, entrada.name);
|
|
172
|
+
if (entrada.isDirectory()) {
|
|
173
|
+
if (profundidadeAtual <= 0 || DIRETORIOS_CODIGO_IGNORADOS.has(entrada.name.toLowerCase())) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
await visitar(caminhoAtual, profundidadeAtual - 1);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (nomesNormalizados.has(entrada.name.toLowerCase())) {
|
|
180
|
+
encontrados.push(caminhoAtual);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
await visitar(diretorioBase, profundidadeMaxima);
|
|
185
|
+
return encontrados;
|
|
186
|
+
}
|
|
187
|
+
const DIRETORIOS_CODIGO_FIXOS = [
|
|
188
|
+
"src",
|
|
189
|
+
"app",
|
|
190
|
+
"apps",
|
|
191
|
+
"backend",
|
|
192
|
+
"lib",
|
|
193
|
+
"api",
|
|
194
|
+
"server",
|
|
195
|
+
"services",
|
|
196
|
+
"models",
|
|
197
|
+
"data",
|
|
198
|
+
"pipeline",
|
|
199
|
+
"workers",
|
|
200
|
+
"functions",
|
|
201
|
+
"scripts",
|
|
202
|
+
];
|
|
203
|
+
const DIRETORIOS_CODIGO_IGNORADOS = new Set([
|
|
204
|
+
".git",
|
|
205
|
+
".github",
|
|
206
|
+
".pytest_cache",
|
|
207
|
+
".tmp",
|
|
208
|
+
".turbo",
|
|
209
|
+
".venv",
|
|
210
|
+
".next",
|
|
211
|
+
".nuxt",
|
|
212
|
+
".dart_tool",
|
|
213
|
+
"__pycache__",
|
|
214
|
+
"build",
|
|
215
|
+
"coverage",
|
|
216
|
+
"deploy",
|
|
217
|
+
"dist",
|
|
218
|
+
"doc",
|
|
219
|
+
"docs",
|
|
220
|
+
"generated",
|
|
221
|
+
"node_modules",
|
|
222
|
+
"ephemeral",
|
|
223
|
+
"sema",
|
|
224
|
+
"test",
|
|
225
|
+
"tests",
|
|
226
|
+
"vendor",
|
|
227
|
+
"venv",
|
|
228
|
+
]);
|
|
229
|
+
const EXTENSOES_CODIGO = [
|
|
230
|
+
".ts",
|
|
231
|
+
".tsx",
|
|
232
|
+
".js",
|
|
233
|
+
".jsx",
|
|
234
|
+
".mjs",
|
|
235
|
+
".cjs",
|
|
236
|
+
".py",
|
|
237
|
+
".dart",
|
|
238
|
+
".cs",
|
|
239
|
+
".java",
|
|
240
|
+
".go",
|
|
241
|
+
".rs",
|
|
242
|
+
".cpp",
|
|
243
|
+
".cc",
|
|
244
|
+
".cxx",
|
|
245
|
+
".hpp",
|
|
246
|
+
".h",
|
|
247
|
+
];
|
|
248
|
+
const NOMES_ORIGEM_CONTRATO = new Set(["sema", "contratos", "contracts"]);
|
|
249
|
+
async function resolverBaseProjeto(entradaResolvida, configCarregada) {
|
|
250
|
+
if (configCarregada) {
|
|
251
|
+
return configCarregada.baseDiretorio;
|
|
252
|
+
}
|
|
253
|
+
const infoEntrada = await stat(entradaResolvida);
|
|
254
|
+
const pontoPartida = path.resolve(infoEntrada.isDirectory() ? entradaResolvida : path.dirname(entradaResolvida));
|
|
255
|
+
let atual = pontoPartida;
|
|
256
|
+
for (;;) {
|
|
257
|
+
if (NOMES_ORIGEM_CONTRATO.has(path.basename(atual).toLowerCase())) {
|
|
258
|
+
const contemMarcadorRaiz = await caminhoExiste(path.join(atual, "package.json"))
|
|
259
|
+
|| await caminhoExiste(path.join(atual, "sema.config.json"));
|
|
260
|
+
if (!contemMarcadorRaiz) {
|
|
261
|
+
const pai = path.dirname(atual);
|
|
262
|
+
if (pai !== atual) {
|
|
263
|
+
return pai;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const pai = path.dirname(atual);
|
|
268
|
+
if (pai === atual) {
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
atual = pai;
|
|
272
|
+
}
|
|
273
|
+
return pontoPartida;
|
|
274
|
+
}
|
|
275
|
+
async function descobrirOrigemPadrao(baseProjeto, entradaResolvida) {
|
|
276
|
+
for (const nomeOrigem of NOMES_ORIGEM_CONTRATO) {
|
|
277
|
+
const origemContratos = path.join(baseProjeto, nomeOrigem);
|
|
278
|
+
if (await caminhoExiste(origemContratos)) {
|
|
279
|
+
return path.resolve(origemContratos);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
const infoEntrada = await stat(entradaResolvida);
|
|
283
|
+
if (infoEntrada.isFile()) {
|
|
284
|
+
return path.resolve(path.dirname(entradaResolvida));
|
|
285
|
+
}
|
|
286
|
+
return path.resolve(baseProjeto);
|
|
287
|
+
}
|
|
288
|
+
async function resolverOrigensProjeto(baseProjeto, entradaResolvida, configCarregada) {
|
|
289
|
+
if (configCarregada) {
|
|
290
|
+
const declaradas = configCarregada.config.origens ?? (configCarregada.config.origem ? [configCarregada.config.origem] : []);
|
|
291
|
+
if (declaradas.length > 0) {
|
|
292
|
+
return declaradas.map((origem) => path.resolve(configCarregada.baseDiretorio, origem));
|
|
293
|
+
}
|
|
294
|
+
return [configCarregada.baseDiretorio];
|
|
295
|
+
}
|
|
296
|
+
return [await descobrirOrigemPadrao(baseProjeto, entradaResolvida)];
|
|
297
|
+
}
|
|
298
|
+
async function diretorioTemArquivosCodigo(diretorioBase, profundidadeMaxima = 4) {
|
|
299
|
+
let entradas;
|
|
300
|
+
try {
|
|
301
|
+
entradas = await readdir(diretorioBase, { withFileTypes: true });
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
for (const entrada of entradas) {
|
|
307
|
+
const caminhoEntrada = path.join(diretorioBase, entrada.name);
|
|
308
|
+
if (entrada.isDirectory()) {
|
|
309
|
+
if (profundidadeMaxima <= 0 || DIRETORIOS_CODIGO_IGNORADOS.has(entrada.name.toLowerCase())) {
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
if (await diretorioTemArquivosCodigo(caminhoEntrada, profundidadeMaxima - 1)) {
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
if (EXTENSOES_CODIGO.some((extensao) => entrada.name.toLowerCase().endsWith(extensao))) {
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
async function inferirDiretoriosCodigo(baseProjeto, configCarregada) {
|
|
324
|
+
if (configCarregada?.config.diretoriosCodigo?.length) {
|
|
325
|
+
return [...new Set(configCarregada.config.diretoriosCodigo
|
|
326
|
+
.map((diretorio) => path.resolve(configCarregada.baseDiretorio, diretorio))
|
|
327
|
+
.filter(Boolean))]
|
|
328
|
+
.sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
329
|
+
}
|
|
330
|
+
const candidatosFixos = DIRETORIOS_CODIGO_FIXOS
|
|
331
|
+
.map((segmento) => path.join(baseProjeto, segmento));
|
|
332
|
+
const existentes = [];
|
|
333
|
+
for (const candidato of candidatosFixos) {
|
|
334
|
+
if (await caminhoExiste(candidato) && await diretorioTemArquivosCodigo(candidato)) {
|
|
335
|
+
existentes.push(path.resolve(candidato));
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
const filhos = await listarDiretoriosFilhos(baseProjeto);
|
|
339
|
+
const uteis = [];
|
|
340
|
+
for (const diretorio of filhos) {
|
|
341
|
+
const nome = path.basename(diretorio).toLowerCase();
|
|
342
|
+
if (DIRETORIOS_CODIGO_IGNORADOS.has(nome)) {
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
if (await diretorioTemArquivosCodigo(diretorio)) {
|
|
346
|
+
uteis.push(path.resolve(diretorio));
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
const combinados = [...new Set([...existentes, ...uteis])].sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
350
|
+
if (combinados.length > 0) {
|
|
351
|
+
return combinados;
|
|
352
|
+
}
|
|
353
|
+
if (await diretorioTemArquivosCodigo(baseProjeto, 0)) {
|
|
354
|
+
return [path.resolve(baseProjeto)];
|
|
355
|
+
}
|
|
356
|
+
return [];
|
|
357
|
+
}
|
|
358
|
+
async function inferirFontesLegado(diretoriosCodigo, baseProjeto, configCarregada) {
|
|
359
|
+
if (configCarregada?.config.fontesLegado?.length) {
|
|
360
|
+
return [...new Set(configCarregada.config.fontesLegado
|
|
361
|
+
.map((fonte) => normalizarFonteLegado(fonte))
|
|
362
|
+
.filter((fonte) => Boolean(fonte)))]
|
|
363
|
+
.sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
364
|
+
}
|
|
365
|
+
const encontrados = new Set();
|
|
366
|
+
const packageJsonRaiz = await lerConteudoSeExistir(path.join(baseProjeto, "package.json"));
|
|
367
|
+
const marcadoresFirebaseProjeto = await procurarArquivosPorNome(baseProjeto, ["firebase.json", "firestore.rules"], 3);
|
|
368
|
+
if (packageJsonRaiz) {
|
|
369
|
+
if (/@nestjs\/common|@nestjs\/core/.test(packageJsonRaiz)) {
|
|
370
|
+
encontrados.add("nestjs");
|
|
371
|
+
}
|
|
372
|
+
if (/typescript/.test(packageJsonRaiz)) {
|
|
373
|
+
encontrados.add("typescript");
|
|
374
|
+
}
|
|
375
|
+
if (/"next"\s*:/.test(packageJsonRaiz)) {
|
|
376
|
+
encontrados.add("nextjs");
|
|
377
|
+
encontrados.add("typescript");
|
|
378
|
+
}
|
|
379
|
+
if (/firebase-admin|firebase-functions|firebase\b/.test(packageJsonRaiz)) {
|
|
380
|
+
encontrados.add("firebase");
|
|
381
|
+
encontrados.add("typescript");
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
if (marcadoresFirebaseProjeto.length > 0) {
|
|
385
|
+
encontrados.add("firebase");
|
|
386
|
+
}
|
|
387
|
+
for (const diretorio of diretoriosCodigo) {
|
|
388
|
+
const arquivosTs = await listarArquivosRecursivosLimitado(diretorio, [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"], 5, 40);
|
|
389
|
+
const arquivosPy = await listarArquivosRecursivosLimitado(diretorio, [".py"], 5, 20);
|
|
390
|
+
const arquivosDart = await listarArquivosRecursivosLimitado(diretorio, [".dart"], 5, 20);
|
|
391
|
+
const arquivosCs = await listarArquivosRecursivosLimitado(diretorio, [".cs"], 5, 20);
|
|
392
|
+
const arquivosJava = await listarArquivosRecursivosLimitado(diretorio, [".java"], 5, 20);
|
|
393
|
+
const arquivosGo = await listarArquivosRecursivosLimitado(diretorio, [".go"], 5, 20);
|
|
394
|
+
const arquivosRust = await listarArquivosRecursivosLimitado(diretorio, [".rs"], 5, 20);
|
|
395
|
+
const arquivosCppBrutos = await listarArquivosRecursivosLimitado(diretorio, [".cpp", ".cc", ".cxx", ".hpp", ".h"], 5, 30);
|
|
396
|
+
const arquivosCpp = arquivosCppBrutos.filter((arquivo) => !/(^|[\\/])(windows|linux|macos|runner|flutter|ephemeral|build|vendor)([\\/]|$)/i.test(arquivo));
|
|
397
|
+
if (arquivosTs.length > 0) {
|
|
398
|
+
encontrados.add("typescript");
|
|
399
|
+
const packageJsons = await procurarArquivosPorNome(diretorio, ["package.json"], 3);
|
|
400
|
+
const nextConfigs = await procurarArquivosPorNome(diretorio, ["next.config.js", "next.config.ts", "next.config.mjs"], 3);
|
|
401
|
+
const firebaseLocais = await procurarArquivosPorNome(diretorio, ["firebase.json", "firestore.rules"], 3);
|
|
402
|
+
const textosPackage = await Promise.all(packageJsons.slice(0, 8).map((arquivo) => lerConteudoSeExistir(arquivo)));
|
|
403
|
+
const amostrasTs = await Promise.all(arquivosTs.slice(0, 10).map((arquivo) => lerConteudoSeExistir(arquivo)));
|
|
404
|
+
const relacoesTs = arquivosTs.map((arquivo) => path.relative(diretorio, arquivo).replace(/\\/g, "/"));
|
|
405
|
+
const temNest = textosPackage.some((texto) => /@nestjs\/common|@nestjs\/core/.test(texto ?? ""))
|
|
406
|
+
|| amostrasTs.some((texto) => /@nestjs\/common|@nestjs\/core|@Controller\(|@Get\(|@Post\(|@Put\(|@Patch\(|@Delete\(/.test(texto ?? ""));
|
|
407
|
+
const temNext = textosPackage.some((texto) => /"next"\s*:/.test(texto ?? ""))
|
|
408
|
+
|| nextConfigs.length > 0
|
|
409
|
+
|| relacoesTs.some((relacao) => /(?:^|\/)(?:src\/)?app\/api\/.+\/route\.(?:ts|tsx|js|jsx)$/.test(relacao));
|
|
410
|
+
const temFirebase = marcadoresFirebaseProjeto.length > 0
|
|
411
|
+
|| firebaseLocais.length > 0
|
|
412
|
+
|| textosPackage.some((texto) => /firebase-admin|firebase-functions/.test(texto ?? ""))
|
|
413
|
+
|| amostrasTs.some((texto) => /firebase-admin|getFirestore|initializeApp|from\s+["']firebase-admin["']/.test(texto ?? ""));
|
|
414
|
+
if (temNest) {
|
|
415
|
+
encontrados.add("nestjs");
|
|
416
|
+
}
|
|
417
|
+
if (temNext) {
|
|
418
|
+
encontrados.add("nextjs");
|
|
419
|
+
}
|
|
420
|
+
if (temFirebase) {
|
|
421
|
+
encontrados.add("firebase");
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
if (arquivosPy.length > 0) {
|
|
425
|
+
encontrados.add("python");
|
|
426
|
+
const amostrasPython = await Promise.all(arquivosPy
|
|
427
|
+
.slice(0, 8)
|
|
428
|
+
.map((arquivo) => lerConteudoSeExistir(arquivo)));
|
|
429
|
+
const temFastapi = amostrasPython.some((texto) => /from\s+fastapi\s+import|APIRouter|FastAPI/.test(texto ?? ""));
|
|
430
|
+
const temFlask = amostrasPython.some((texto) => /from\s+flask\s+import|import\s+flask\b|Blueprint\s*\(|Flask\s*\(|@\w+\.route\s*\(/.test(texto ?? ""));
|
|
431
|
+
if (temFastapi) {
|
|
432
|
+
encontrados.add("fastapi");
|
|
433
|
+
}
|
|
434
|
+
if (temFlask) {
|
|
435
|
+
encontrados.add("flask");
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
if (arquivosDart.length > 0) {
|
|
439
|
+
encontrados.add("dart");
|
|
440
|
+
}
|
|
441
|
+
if (arquivosCs.length > 0) {
|
|
442
|
+
encontrados.add("dotnet");
|
|
443
|
+
const marcadores = await procurarArquivosPorNome(diretorio, ["appsettings.json", "Program.cs"], 4);
|
|
444
|
+
const amostrasCs = await Promise.all(arquivosCs.slice(0, 8).map((arquivo) => lerConteudoSeExistir(arquivo)));
|
|
445
|
+
if (marcadores.length > 0
|
|
446
|
+
|| amostrasCs.some((texto) => /\bWebApplication\.CreateBuilder\b|\[ApiController\]|\[Http(Get|Post|Put|Patch|Delete)\]|\bMap(Get|Post|Put|Patch|Delete)\(/.test(texto ?? ""))) {
|
|
447
|
+
encontrados.add("dotnet");
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
if (arquivosJava.length > 0) {
|
|
451
|
+
encontrados.add("java");
|
|
452
|
+
const marcadoresJava = await procurarArquivosPorNome(diretorio, ["pom.xml", "build.gradle", "build.gradle.kts"], 4);
|
|
453
|
+
const amostrasJava = await Promise.all(arquivosJava.slice(0, 8).map((arquivo) => lerConteudoSeExistir(arquivo)));
|
|
454
|
+
if (marcadoresJava.length > 0
|
|
455
|
+
|| amostrasJava.some((texto) => /@RestController|@GetMapping|@PostMapping|@RequestMapping/.test(texto ?? ""))) {
|
|
456
|
+
encontrados.add("java");
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
if (arquivosGo.length > 0) {
|
|
460
|
+
encontrados.add("go");
|
|
461
|
+
const goMod = await procurarArquivosPorNome(diretorio, ["go.mod"], 3);
|
|
462
|
+
const amostrasGo = await Promise.all(arquivosGo.slice(0, 8).map((arquivo) => lerConteudoSeExistir(arquivo)));
|
|
463
|
+
if (goMod.length > 0
|
|
464
|
+
|| amostrasGo.some((texto) => /\bhttp\.HandleFunc\b|\bNewServeMux\b|\.GET\(|\.POST\(|gin\.Default\(/.test(texto ?? ""))) {
|
|
465
|
+
encontrados.add("go");
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
if (arquivosRust.length > 0) {
|
|
469
|
+
encontrados.add("rust");
|
|
470
|
+
const cargo = await procurarArquivosPorNome(diretorio, ["Cargo.toml"], 3);
|
|
471
|
+
const amostrasRust = await Promise.all(arquivosRust.slice(0, 8).map((arquivo) => lerConteudoSeExistir(arquivo)));
|
|
472
|
+
if (cargo.length > 0
|
|
473
|
+
|| amostrasRust.some((texto) => /\bRouter::new\b|\.route\(|\bnest\(/.test(texto ?? ""))) {
|
|
474
|
+
encontrados.add("rust");
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
if (arquivosCpp.length > 0) {
|
|
478
|
+
encontrados.add("cpp");
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
return [...encontrados].sort((a, b) => a.localeCompare(b, "pt-BR"));
|
|
482
|
+
}
|
|
483
|
+
export async function carregarProjeto(entrada, cwd) {
|
|
484
|
+
const entradaBase = entrada ? path.resolve(cwd, entrada) : cwd;
|
|
485
|
+
const configCarregada = await carregarConfiguracaoProjeto(entradaBase);
|
|
486
|
+
const entradaResolvida = entrada ? path.resolve(cwd, entrada) : resolverEntradaPadrao(cwd, configCarregada);
|
|
487
|
+
const baseProjeto = await resolverBaseProjeto(entradaResolvida, configCarregada);
|
|
488
|
+
const infoEntrada = await stat(entradaResolvida);
|
|
489
|
+
const origensProjeto = await resolverOrigensProjeto(baseProjeto, entradaResolvida, configCarregada);
|
|
490
|
+
const arquivosProjeto = await listarArquivosDeOrigens(origensProjeto);
|
|
491
|
+
const diretoriosCodigo = await inferirDiretoriosCodigo(baseProjeto, configCarregada);
|
|
492
|
+
const fontesLegado = await inferirFontesLegado(diretoriosCodigo, baseProjeto, configCarregada);
|
|
493
|
+
const modoAdocao = normalizarModoAdocao(configCarregada?.config.modoAdocao);
|
|
494
|
+
const arquivosSelecionados = infoEntrada.isFile()
|
|
495
|
+
? new Set([path.resolve(entradaResolvida)])
|
|
496
|
+
: new Set((await listarArquivosSema(entradaResolvida)).map((arquivo) => path.resolve(arquivo)));
|
|
497
|
+
const fontes = [];
|
|
498
|
+
for (const arquivo of arquivosProjeto) {
|
|
499
|
+
const codigo = await lerArquivoTexto(arquivo);
|
|
500
|
+
fontes.push({ caminho: arquivo, codigo });
|
|
501
|
+
}
|
|
502
|
+
const resultadoProjeto = compilarProjeto(fontes);
|
|
503
|
+
const resultados = new Map(resultadoProjeto.modulos.map((modulo) => [path.resolve(modulo.caminho), modulo]));
|
|
504
|
+
return {
|
|
505
|
+
entradaResolvida,
|
|
506
|
+
baseProjeto,
|
|
507
|
+
configCarregada,
|
|
508
|
+
arquivosProjeto,
|
|
509
|
+
origensProjeto,
|
|
510
|
+
diretoriosCodigo,
|
|
511
|
+
fontesLegado,
|
|
512
|
+
modoAdocao,
|
|
513
|
+
modulosSelecionados: fontes
|
|
514
|
+
.filter((fonte) => arquivosSelecionados.has(path.resolve(fonte.caminho)))
|
|
515
|
+
.map((fonte) => ({
|
|
516
|
+
caminho: fonte.caminho,
|
|
517
|
+
codigo: fonte.codigo,
|
|
518
|
+
resultado: resultados.get(path.resolve(fonte.caminho)),
|
|
519
|
+
})),
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
export function resolverAlvoPadrao(alvoExplicito, configCarregada) {
|
|
523
|
+
return normalizarAlvo(alvoExplicito)
|
|
524
|
+
?? configCarregada?.config.alvoPadrao
|
|
525
|
+
?? configCarregada?.config.alvos?.[0]
|
|
526
|
+
?? "typescript";
|
|
527
|
+
}
|
|
528
|
+
export function resolverFrameworkPadrao(frameworkExplicito, configCarregada) {
|
|
529
|
+
return normalizarFrameworkGeracao(frameworkExplicito ?? configCarregada?.config.framework);
|
|
530
|
+
}
|
|
531
|
+
export function resolverEstruturaSaidaPadrao(estruturaExplicita, framework, configCarregada) {
|
|
532
|
+
const estrutura = normalizarEstruturaSaida(estruturaExplicita ?? configCarregada?.config.estruturaSaida);
|
|
533
|
+
if (!estruturaExplicita && !configCarregada?.config.estruturaSaida && framework !== "base") {
|
|
534
|
+
return "backend";
|
|
535
|
+
}
|
|
536
|
+
if (estrutura === "backend" && framework === "base") {
|
|
537
|
+
return "modulos";
|
|
538
|
+
}
|
|
539
|
+
return estrutura;
|
|
540
|
+
}
|
|
541
|
+
export function resolverSaidaPadrao(saidaExplicita, alvo, configCarregada) {
|
|
542
|
+
if (saidaExplicita) {
|
|
543
|
+
return path.resolve(saidaExplicita);
|
|
544
|
+
}
|
|
545
|
+
const diretorioPorAlvo = configCarregada?.config.diretoriosSaidaPorAlvo?.[alvo];
|
|
546
|
+
if (diretorioPorAlvo && configCarregada) {
|
|
547
|
+
return path.resolve(configCarregada.baseDiretorio, diretorioPorAlvo);
|
|
548
|
+
}
|
|
549
|
+
if (configCarregada?.config.saida) {
|
|
550
|
+
return path.resolve(configCarregada.baseDiretorio, configCarregada.config.saida);
|
|
551
|
+
}
|
|
552
|
+
return path.resolve("./saida");
|
|
553
|
+
}
|
|
554
|
+
export function resolverAlvosVerificacao(configCarregada) {
|
|
555
|
+
const alvos = configCarregada?.config.alvos?.length
|
|
556
|
+
? configCarregada.config.alvos
|
|
557
|
+
: ["typescript", "python"];
|
|
558
|
+
return [...new Set(alvos)];
|
|
559
|
+
}
|
|
560
|
+
//# sourceMappingURL=projeto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projeto.js","sourceRoot":"","sources":["../src/projeto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface FuncaoPythonDecorada {
|
|
2
|
+
nome: string;
|
|
3
|
+
parametros: string;
|
|
4
|
+
retorno?: string;
|
|
5
|
+
indentacao: number;
|
|
6
|
+
decorators: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface ParametroRotaFlask {
|
|
9
|
+
nome: string;
|
|
10
|
+
conversor?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface RotaFlaskDecorada {
|
|
13
|
+
nomeFuncao: string;
|
|
14
|
+
parametros: string;
|
|
15
|
+
retorno?: string;
|
|
16
|
+
metodo: string;
|
|
17
|
+
caminho: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function contarIndentacaoPython(linha: string): number;
|
|
20
|
+
export declare function extrairFuncoesPythonDecoradas(texto: string): FuncaoPythonDecorada[];
|
|
21
|
+
export declare function normalizarCaminhoFlask(caminho: string): string;
|
|
22
|
+
export declare function extrairParametrosCaminhoFlask(caminho: string): ParametroRotaFlask[];
|
|
23
|
+
export declare function extrairRotasFlaskDecoradas(texto: string): RotaFlaskDecorada[];
|