@patto/cli 0.1.0 → 0.1.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/README.md +119 -89
- package/dist/commands/core.d.ts +1 -1
- package/dist/commands/core.js +21 -19
- package/dist/commands/core.js.map +1 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +178 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/core/resolve.js +21 -21
- package/dist/core/resolve.js.map +1 -1
- package/dist/core/run.d.ts +1 -1
- package/dist/core/run.js +12 -12
- package/dist/core/stdin.d.ts +1 -1
- package/dist/core/stdin.js +10 -7
- package/dist/core/stdin.js.map +1 -1
- package/dist/core/types.d.ts +2 -2
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/output/diagnostics.d.ts +1 -1
- package/dist/output/diagnostics.js +12 -12
- package/dist/output/diagnostics.js.map +1 -1
- package/dist/scaffold/names.js +13 -13
- package/dist/scaffold/names.js.map +1 -1
- package/dist/scaffold/project.js +8 -8
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/templates.d.ts +4 -4
- package/dist/scaffold/templates.js +46 -40
- package/dist/scaffold/templates.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { execSync } from "node:child_process";
|
|
3
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { mkdir, readdir, rename, rm, writeFile } from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import ora from "ora";
|
|
7
|
+
import prompts from "prompts";
|
|
8
|
+
import AdmZip from "adm-zip";
|
|
9
|
+
function removeDiacritics(str) {
|
|
10
|
+
return str.normalize("NFD").replace(/[̀-ͯ]/g, "");
|
|
11
|
+
}
|
|
12
|
+
function toKebabCase(str) {
|
|
13
|
+
const clean = removeDiacritics(str);
|
|
14
|
+
return clean
|
|
15
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2")
|
|
16
|
+
.replace(/([a-z\d])([A-Z])/g, "$1-$2")
|
|
17
|
+
.toLowerCase()
|
|
18
|
+
.replace(/[\s_]+/g, "-")
|
|
19
|
+
.replace(/[^a-z0-9-]/g, "")
|
|
20
|
+
.replace(/-+/g, "-")
|
|
21
|
+
.replace(/^-|-$/g, "");
|
|
22
|
+
}
|
|
23
|
+
function isGitInstalled() {
|
|
24
|
+
try {
|
|
25
|
+
execSync("git --version", { stdio: "ignore" });
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function fetchLatestTag() {
|
|
33
|
+
const response = await fetch("https://api.github.com/repos/HormigaDev/patto-bot-template/releases/latest", {
|
|
34
|
+
headers: {
|
|
35
|
+
Accept: "application/vnd.github+json",
|
|
36
|
+
"User-Agent": "@patto/cli",
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
throw new Error(`No se pudo obtener la ultima release: ${response.statusText}`);
|
|
41
|
+
}
|
|
42
|
+
const data = (await response.json());
|
|
43
|
+
return data.tag_name;
|
|
44
|
+
}
|
|
45
|
+
async function downloadAndExtractZip(projectDir, tag) {
|
|
46
|
+
const version = tag.replace(/^v/, "");
|
|
47
|
+
const zipUrl = `https://github.com/HormigaDev/patto-bot-template/archive/refs/tags/${tag}.zip`;
|
|
48
|
+
const zipPath = path.join(path.dirname(projectDir), `temp-patto-${Date.now()}.zip`);
|
|
49
|
+
const response = await fetch(zipUrl);
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
throw new Error(`No se pudo descargar el release ${tag}: ${response.statusText}`);
|
|
52
|
+
}
|
|
53
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
54
|
+
await writeFile(zipPath, buffer);
|
|
55
|
+
try {
|
|
56
|
+
const zip = new AdmZip(zipPath);
|
|
57
|
+
zip.extractAllTo(projectDir, true);
|
|
58
|
+
const extractedDir = path.join(projectDir, `patto-bot-template-${version}`);
|
|
59
|
+
if (existsSync(extractedDir)) {
|
|
60
|
+
const files = await readdir(extractedDir);
|
|
61
|
+
for (const file of files) {
|
|
62
|
+
await rename(path.join(extractedDir, file), path.join(projectDir, file));
|
|
63
|
+
}
|
|
64
|
+
await rm(extractedDir, { recursive: true, force: true });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
await rm(zipPath, { force: true });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function registerInitCommand(cli) {
|
|
72
|
+
cli.command("init [name]", "Inicializa un nuevo proyecto Patto Bot Template")
|
|
73
|
+
.option("--name <name>", "Nombre del proyecto (alternativa al argumento posicional)")
|
|
74
|
+
.option("--description <desc>", "Descripcion del proyecto")
|
|
75
|
+
.action(async (nameArg, options) => {
|
|
76
|
+
let projectName = nameArg ?? options.name;
|
|
77
|
+
if (!projectName) {
|
|
78
|
+
const response = await prompts({
|
|
79
|
+
type: "text",
|
|
80
|
+
name: "projectName",
|
|
81
|
+
message: chalk.cyan("Nombre del proyecto (ej. MiBot):"),
|
|
82
|
+
validate: (v) => v.trim().length > 0
|
|
83
|
+
? true
|
|
84
|
+
: "El nombre no puede estar vacio",
|
|
85
|
+
});
|
|
86
|
+
if (!response.projectName) {
|
|
87
|
+
console.log(chalk.red("Operacion cancelada."));
|
|
88
|
+
process.exitCode = 1;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
projectName = response.projectName;
|
|
92
|
+
}
|
|
93
|
+
let description = options.description;
|
|
94
|
+
if (!description) {
|
|
95
|
+
const response = await prompts({
|
|
96
|
+
type: "text",
|
|
97
|
+
name: "description",
|
|
98
|
+
message: chalk.cyan("Descripcion del proyecto:"),
|
|
99
|
+
initial: "Un bot creado con Patto Bot Template",
|
|
100
|
+
});
|
|
101
|
+
if (response.description === undefined) {
|
|
102
|
+
console.log(chalk.red("Operacion cancelada."));
|
|
103
|
+
process.exitCode = 1;
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
description =
|
|
107
|
+
response.description ||
|
|
108
|
+
"Un bot creado con Patto Bot Template";
|
|
109
|
+
}
|
|
110
|
+
const folderName = removeDiacritics(projectName).replace(/\s+/g, "");
|
|
111
|
+
const packageName = toKebabCase(projectName);
|
|
112
|
+
const projectDir = path.join(process.cwd(), folderName);
|
|
113
|
+
if (existsSync(projectDir)) {
|
|
114
|
+
console.error(chalk.red(`El directorio "${folderName}" ya existe en ${process.cwd()}.`));
|
|
115
|
+
process.exitCode = 1;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
await mkdir(projectDir, { recursive: true });
|
|
119
|
+
const spinner = ora();
|
|
120
|
+
const hasGit = isGitInstalled();
|
|
121
|
+
try {
|
|
122
|
+
if (hasGit) {
|
|
123
|
+
spinner.start(`Clonando repositorio en ${chalk.bold(folderName)}...`);
|
|
124
|
+
execSync(`git clone --quiet https://github.com/HormigaDev/patto-bot-template.git "${folderName}"`, { stdio: "ignore" });
|
|
125
|
+
spinner.succeed("Repositorio clonado.");
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
spinner.start("Obteniendo ultima release...");
|
|
129
|
+
const tag = await fetchLatestTag();
|
|
130
|
+
spinner.text = `Descargando ${chalk.bold(tag)} como ZIP...`;
|
|
131
|
+
await downloadAndExtractZip(projectDir, tag);
|
|
132
|
+
spinner.succeed(`Release ${chalk.bold(tag)} descargada y extraida.`);
|
|
133
|
+
}
|
|
134
|
+
const gitDir = path.join(projectDir, ".git");
|
|
135
|
+
if (existsSync(gitDir)) {
|
|
136
|
+
await rm(gitDir, { recursive: true, force: true });
|
|
137
|
+
}
|
|
138
|
+
const packageJsonPath = path.join(projectDir, "package.json");
|
|
139
|
+
if (existsSync(packageJsonPath)) {
|
|
140
|
+
const pkg = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
141
|
+
pkg["name"] = packageName;
|
|
142
|
+
pkg["description"] = description;
|
|
143
|
+
pkg["version"] = "0.0.0";
|
|
144
|
+
pkg["author"] = "";
|
|
145
|
+
writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2), "utf8");
|
|
146
|
+
}
|
|
147
|
+
if (hasGit) {
|
|
148
|
+
spinner.start("Inicializando repositorio Git...");
|
|
149
|
+
execSync("git init", { cwd: projectDir, stdio: "ignore" });
|
|
150
|
+
execSync("git add .", { cwd: projectDir, stdio: "ignore" });
|
|
151
|
+
execSync('git commit -m "Initial Commit: Project Created" --no-verify', {
|
|
152
|
+
cwd: projectDir,
|
|
153
|
+
stdio: "ignore",
|
|
154
|
+
});
|
|
155
|
+
spinner.succeed("Repositorio Git inicializado.");
|
|
156
|
+
}
|
|
157
|
+
console.log(chalk.green(`\n¡Proyecto ${chalk.bold(folderName)} creado exitosamente!`));
|
|
158
|
+
console.log(chalk.gray("\nPrimeros pasos:"));
|
|
159
|
+
console.log(chalk.gray(` cd ${folderName}`));
|
|
160
|
+
console.log(chalk.gray(" cp .env.template .env"));
|
|
161
|
+
console.log(chalk.gray(" pnpm install"));
|
|
162
|
+
console.log(chalk.gray(" pnpm dev"));
|
|
163
|
+
if (!hasGit) {
|
|
164
|
+
console.log(chalk.yellow("\nGit no esta instalado. Inicializa el repo manualmente:"));
|
|
165
|
+
console.log(chalk.gray(' git init && git add . && git commit -m "Initial Commit: Project Created"'));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
spinner.fail("Error al crear el proyecto.");
|
|
170
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
171
|
+
if (existsSync(projectDir)) {
|
|
172
|
+
await rm(projectDir, { recursive: true, force: true });
|
|
173
|
+
}
|
|
174
|
+
process.exitCode = 1;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/core/resolve.js
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { createRequire } from
|
|
2
|
-
import path from
|
|
3
|
-
import { fileURLToPath } from
|
|
4
|
-
import { existsSync } from
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { existsSync } from "node:fs";
|
|
5
5
|
const require = createRequire(import.meta.url);
|
|
6
6
|
const currentFile = fileURLToPath(import.meta.url);
|
|
7
7
|
const currentDir = path.dirname(currentFile);
|
|
8
8
|
export class CoreBinaryError extends Error {
|
|
9
|
-
code =
|
|
9
|
+
code = "patto_cli_core_unavailable";
|
|
10
10
|
}
|
|
11
11
|
export function resolveCoreBinary() {
|
|
12
12
|
const platformPackage = getPlatformPackage();
|
|
13
13
|
if (platformPackage === undefined) {
|
|
14
14
|
throw new CoreBinaryError(`Patto CLI aun no tiene binario compatible para ${process.platform}-${process.arch}. ` +
|
|
15
|
-
|
|
15
|
+
"Plataformas soportadas: linux-x64, linux-arm64 y win32-x64.");
|
|
16
16
|
}
|
|
17
17
|
const packageBinary = resolvePackageBinary(platformPackage);
|
|
18
18
|
if (packageBinary !== undefined) {
|
|
19
19
|
return packageBinary;
|
|
20
20
|
}
|
|
21
|
-
const workspaceBinary = path.resolve(currentDir,
|
|
21
|
+
const workspaceBinary = path.resolve(currentDir, "..", "..", "..", platformPackage.workspaceDir, "bin", platformPackage.binaryName);
|
|
22
22
|
if (existsSync(workspaceBinary)) {
|
|
23
23
|
return workspaceBinary;
|
|
24
24
|
}
|
|
25
25
|
throw new CoreBinaryError(`No encontre el binario nativo ${platformPackage.name}. ` +
|
|
26
|
-
|
|
26
|
+
"Ejecuta el build del core o reinstala @patto/cli para descargar la optionalDependency correcta.");
|
|
27
27
|
}
|
|
28
28
|
function resolvePackageBinary(platformPackage) {
|
|
29
29
|
try {
|
|
30
30
|
const packageJsonPath = require.resolve(`${platformPackage.name}/package.json`);
|
|
31
|
-
const binaryPath = path.join(path.dirname(packageJsonPath),
|
|
31
|
+
const binaryPath = path.join(path.dirname(packageJsonPath), "bin", platformPackage.binaryName);
|
|
32
32
|
return existsSync(binaryPath) ? binaryPath : undefined;
|
|
33
33
|
}
|
|
34
34
|
catch {
|
|
@@ -36,25 +36,25 @@ function resolvePackageBinary(platformPackage) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
function getPlatformPackage() {
|
|
39
|
-
if (process.platform ===
|
|
39
|
+
if (process.platform === "linux" && process.arch === "x64") {
|
|
40
40
|
return {
|
|
41
|
-
name:
|
|
42
|
-
workspaceDir:
|
|
43
|
-
binaryName:
|
|
41
|
+
name: "@patto/cli-core-linux-x64",
|
|
42
|
+
workspaceDir: "cli-core-linux-x64",
|
|
43
|
+
binaryName: "patto-core",
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
-
if (process.platform ===
|
|
46
|
+
if (process.platform === "linux" && process.arch === "arm64") {
|
|
47
47
|
return {
|
|
48
|
-
name:
|
|
49
|
-
workspaceDir:
|
|
50
|
-
binaryName:
|
|
48
|
+
name: "@patto/cli-core-linux-arm64",
|
|
49
|
+
workspaceDir: "cli-core-linux-arm64",
|
|
50
|
+
binaryName: "patto-core",
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
if (process.platform ===
|
|
53
|
+
if (process.platform === "win32" && process.arch === "x64") {
|
|
54
54
|
return {
|
|
55
|
-
name:
|
|
56
|
-
workspaceDir:
|
|
57
|
-
binaryName:
|
|
55
|
+
name: "@patto/cli-core-win32-x64",
|
|
56
|
+
workspaceDir: "cli-core-win32-x64",
|
|
57
|
+
binaryName: "patto-core.exe",
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
return undefined;
|
package/dist/core/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/core/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAQ7C,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC7B,IAAI,GAAG,4BAA4B,CAAC;CAChD;AAED,MAAM,UAAU,iBAAiB;IAC7B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CACrB,kDAAkD,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI;YAClF,6DAA6D,CACpE,CAAC;IACN,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAE5D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAChC,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,eAAe,CAAC,YAAY,EAC5B,KAAK,EACL,eAAe,CAAC,UAAU,CAC7B,CAAC;IAEF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9B,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,MAAM,IAAI,eAAe,CACrB,iCAAiC,eAAe,CAAC,IAAI,IAAI;QACrD,iGAAiG,CACxG,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/core/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAQ7C,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC7B,IAAI,GAAG,4BAA4B,CAAC;CAChD;AAED,MAAM,UAAU,iBAAiB;IAC7B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CACrB,kDAAkD,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI;YAClF,6DAA6D,CACpE,CAAC;IACN,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAE5D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAChC,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,eAAe,CAAC,YAAY,EAC5B,KAAK,EACL,eAAe,CAAC,UAAU,CAC7B,CAAC;IAEF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9B,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,MAAM,IAAI,eAAe,CACrB,iCAAiC,eAAe,CAAC,IAAI,IAAI;QACrD,iGAAiG,CACxG,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,eAAgC;IAEhC,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CACnC,GAAG,eAAe,CAAC,IAAI,eAAe,CACzC,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CACxB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAC7B,KAAK,EACL,eAAe,CAAC,UAAU,CAC7B,CAAC;QAEF,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzD,OAAO;YACH,IAAI,EAAE,2BAA2B;YACjC,YAAY,EAAE,oBAAoB;YAClC,UAAU,EAAE,YAAY;SAC3B,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3D,OAAO;YACH,IAAI,EAAE,6BAA6B;YACnC,YAAY,EAAE,sBAAsB;YACpC,UAAU,EAAE,YAAY;SAC3B,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzD,OAAO;YACH,IAAI,EAAE,2BAA2B;YACjC,YAAY,EAAE,oBAAoB;YAClC,UAAU,EAAE,gBAAgB;SAC/B,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
package/dist/core/run.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { CoreRunOptions, CoreRunResult } from
|
|
1
|
+
import type { CoreRunOptions, CoreRunResult } from "./types.js";
|
|
2
2
|
export declare function runCore(options: CoreRunOptions): Promise<CoreRunResult>;
|
package/dist/core/run.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { spawn } from
|
|
2
|
-
import { resolveCoreBinary } from
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { resolveCoreBinary } from "./resolve.js";
|
|
3
3
|
export async function runCore(options) {
|
|
4
4
|
const binary = resolveCoreBinary();
|
|
5
|
-
const args = [options.command,
|
|
5
|
+
const args = [options.command, "--json"];
|
|
6
6
|
if (options.root !== undefined) {
|
|
7
|
-
args.push(
|
|
7
|
+
args.push("--root", options.root);
|
|
8
8
|
}
|
|
9
9
|
if (options.lang !== undefined) {
|
|
10
|
-
args.push(
|
|
10
|
+
args.push("--lang", options.lang);
|
|
11
11
|
}
|
|
12
12
|
const { exitCode, stdout, stderr } = await runProcess(binary, args);
|
|
13
13
|
return {
|
|
@@ -21,19 +21,19 @@ export async function runCore(options) {
|
|
|
21
21
|
function runProcess(binary, args) {
|
|
22
22
|
return new Promise((resolve, reject) => {
|
|
23
23
|
const child = spawn(binary, args, {
|
|
24
|
-
stdio: [
|
|
24
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
25
25
|
windowsHide: true,
|
|
26
26
|
});
|
|
27
27
|
const stdout = [];
|
|
28
28
|
const stderr = [];
|
|
29
|
-
child.stdout.on(
|
|
30
|
-
child.stderr.on(
|
|
31
|
-
child.on(
|
|
32
|
-
child.on(
|
|
29
|
+
child.stdout.on("data", (chunk) => stdout.push(chunk));
|
|
30
|
+
child.stderr.on("data", (chunk) => stderr.push(chunk));
|
|
31
|
+
child.on("error", reject);
|
|
32
|
+
child.on("close", (code) => {
|
|
33
33
|
resolve({
|
|
34
34
|
exitCode: code ?? 1,
|
|
35
|
-
stdout: Buffer.concat(stdout).toString(
|
|
36
|
-
stderr: Buffer.concat(stderr).toString(
|
|
35
|
+
stdout: Buffer.concat(stdout).toString("utf8"),
|
|
36
|
+
stderr: Buffer.concat(stderr).toString("utf8"),
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
});
|
package/dist/core/stdin.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { CoreCommand, CoreRequest } from
|
|
1
|
+
import type { CoreCommand, CoreRequest } from "./types.js";
|
|
2
2
|
export declare function readCoreRequest(defaultCommand?: CoreCommand): Promise<Required<CoreRequest>>;
|
package/dist/core/stdin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { stdin } from
|
|
1
|
+
import { stdin } from "node:process";
|
|
2
2
|
export async function readCoreRequest(defaultCommand) {
|
|
3
3
|
const raw = await readStdin();
|
|
4
4
|
const parsed = raw.trim().length === 0 ? {} : JSON.parse(raw);
|
|
@@ -7,24 +7,27 @@ export async function readCoreRequest(defaultCommand) {
|
|
|
7
7
|
throw new Error('El JSON de stdin debe incluir "command".');
|
|
8
8
|
}
|
|
9
9
|
if (!isCoreCommand(command)) {
|
|
10
|
-
throw new Error(
|
|
10
|
+
throw new Error("El comando debe ser scan, lint, doctor o check.");
|
|
11
11
|
}
|
|
12
12
|
return {
|
|
13
13
|
command,
|
|
14
14
|
root: parsed.root ?? process.cwd(),
|
|
15
|
-
lang: parsed.lang ??
|
|
15
|
+
lang: parsed.lang ?? "auto",
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
function readStdin() {
|
|
19
19
|
return new Promise((resolve, reject) => {
|
|
20
20
|
const chunks = [];
|
|
21
|
-
stdin.on(
|
|
22
|
-
stdin.on(
|
|
23
|
-
stdin.on(
|
|
21
|
+
stdin.on("data", (chunk) => chunks.push(chunk));
|
|
22
|
+
stdin.on("error", reject);
|
|
23
|
+
stdin.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
|
|
24
24
|
stdin.resume();
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
function isCoreCommand(value) {
|
|
28
|
-
return value ===
|
|
28
|
+
return (value === "scan" ||
|
|
29
|
+
value === "lint" ||
|
|
30
|
+
value === "doctor" ||
|
|
31
|
+
value === "check");
|
|
29
32
|
}
|
|
30
33
|
//# sourceMappingURL=stdin.js.map
|
package/dist/core/stdin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/core/stdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/core/stdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,cAA4B;IAE5B,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,MAAM,MAAM,GACR,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC;IAEjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO;QACH,OAAO;QACP,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;KAC9B,CAAC;AACN,CAAC;AAED,SAAS,SAAS;IACd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,CACH,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,OAAO,CACpB,CAAC;AACN,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type CoreCommand =
|
|
2
|
-
export type DiagnosticLevel =
|
|
1
|
+
export type CoreCommand = "scan" | "lint" | "doctor" | "check";
|
|
2
|
+
export type DiagnosticLevel = "error" | "warning" | "info";
|
|
3
3
|
export interface CoreDiagnostic {
|
|
4
4
|
readonly level: DiagnosticLevel;
|
|
5
5
|
readonly code: string;
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { cac } from 'cac';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import path from 'node:path';
|
|
4
7
|
import { registerCoreCommands, writeStructuredError } from './commands/core.js';
|
|
5
8
|
import { registerGenerateCommand } from './commands/generate.js';
|
|
9
|
+
import { registerInitCommand } from './commands/init.js';
|
|
10
|
+
const pkgJson = JSON.parse(readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '..', 'package.json'), 'utf8'));
|
|
6
11
|
const cli = cac('patto');
|
|
7
|
-
cli.version(
|
|
12
|
+
cli.version(pkgJson.version);
|
|
8
13
|
cli.help();
|
|
14
|
+
registerInitCommand(cli);
|
|
9
15
|
registerGenerateCommand(cli);
|
|
10
16
|
registerCoreCommands(cli);
|
|
11
17
|
try {
|
|
18
|
+
// cac con `run: false` llama outputHelp()/outputVersion() cuando detecta los flags
|
|
19
|
+
// y luego borra matchedCommand via unsetMatchedCommand(). Capturamos los flags ANTES
|
|
20
|
+
// del parse para no volver a imprimir en nuestra logica de despacho.
|
|
21
|
+
const handledByCac = process.argv.includes('--help') ||
|
|
22
|
+
process.argv.includes('-h') ||
|
|
23
|
+
process.argv.includes('--version') ||
|
|
24
|
+
process.argv.includes('-v');
|
|
12
25
|
cli.parse(process.argv, { run: false });
|
|
13
|
-
if (
|
|
26
|
+
if (handledByCac) {
|
|
27
|
+
// cac ya imprimio la salida correcta durante parse(); no hacer nada mas.
|
|
28
|
+
}
|
|
29
|
+
else if (cli.matchedCommand === undefined) {
|
|
14
30
|
cli.outputHelp();
|
|
15
31
|
}
|
|
16
32
|
else {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACtB,YAAY,CACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAC7E,MAAM,CACT,CACmB,CAAC;AAEzB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAEzB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7B,GAAG,CAAC,IAAI,EAAE,CAAC;AAEX,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACzB,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAC7B,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAE1B,IAAI,CAAC;IACD,mFAAmF;IACnF,qFAAqF;IACrF,qEAAqE;IACrE,MAAM,YAAY,GACd,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEhC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAExC,IAAI,YAAY,EAAE,CAAC;QACf,yEAAyE;IAC7E,CAAC;SAAM,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC1C,GAAG,CAAC,UAAU,EAAE,CAAC;IACrB,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;AACL,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACb,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import { existsSync, readFileSync } from
|
|
3
|
-
import path from
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
4
|
export function printHumanOutput(output, options) {
|
|
5
5
|
const diagnostics = output?.diagnostics ?? [];
|
|
6
6
|
if (diagnostics.length === 0) {
|
|
@@ -28,26 +28,26 @@ function printDiagnostic(diagnostic, root) {
|
|
|
28
28
|
if (diagnostic.hint) {
|
|
29
29
|
console.log(chalk.dim(` hint: ${diagnostic.hint}`));
|
|
30
30
|
}
|
|
31
|
-
console.log(
|
|
31
|
+
console.log("");
|
|
32
32
|
}
|
|
33
33
|
function printSourceFrame(root, diagnostic) {
|
|
34
|
-
const filePath = path.resolve(root, diagnostic.file ??
|
|
34
|
+
const filePath = path.resolve(root, diagnostic.file ?? "");
|
|
35
35
|
if (!existsSync(filePath)) {
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
|
-
const lines = readFileSync(filePath,
|
|
38
|
+
const lines = readFileSync(filePath, "utf8").split(/\r?\n/);
|
|
39
39
|
const lineNumber = diagnostic.line ?? 1;
|
|
40
40
|
const sourceLine = lines[lineNumber - 1];
|
|
41
41
|
if (sourceLine === undefined) {
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
|
-
const gutter = String(lineNumber).padStart(4,
|
|
44
|
+
const gutter = String(lineNumber).padStart(4, " ");
|
|
45
45
|
const column = Math.max(1, diagnostic.column ?? 1);
|
|
46
46
|
const underlineStart = Math.max(0, column - 1);
|
|
47
47
|
const underlineWidth = inferUnderlineWidth(sourceLine, underlineStart);
|
|
48
|
-
const underline = `${
|
|
48
|
+
const underline = `${" ".repeat(underlineStart)}${"^".repeat(underlineWidth)}`;
|
|
49
49
|
console.log(chalk.dim(`${gutter} | `) + sourceLine);
|
|
50
|
-
console.log(chalk.dim(
|
|
50
|
+
console.log(chalk.dim(" | ") + colorForLevel(diagnostic.level)(underline));
|
|
51
51
|
}
|
|
52
52
|
function inferUnderlineWidth(sourceLine, start) {
|
|
53
53
|
const rest = sourceLine.slice(start);
|
|
@@ -60,7 +60,7 @@ function inferUnderlineWidth(sourceLine, start) {
|
|
|
60
60
|
}
|
|
61
61
|
function formatLocation(diagnostic, root) {
|
|
62
62
|
if (!diagnostic.file) {
|
|
63
|
-
return chalk.bold(
|
|
63
|
+
return chalk.bold("<proyecto>");
|
|
64
64
|
}
|
|
65
65
|
const file = path.relative(process.cwd(), path.resolve(root, diagnostic.file));
|
|
66
66
|
const line = diagnostic.line ?? 1;
|
|
@@ -74,10 +74,10 @@ function printSummary(output) {
|
|
|
74
74
|
console.log(chalk.dim(`summary: ${JSON.stringify(output.summary)}`));
|
|
75
75
|
}
|
|
76
76
|
function colorForLevel(level) {
|
|
77
|
-
if (level ===
|
|
77
|
+
if (level === "error") {
|
|
78
78
|
return chalk.red;
|
|
79
79
|
}
|
|
80
|
-
if (level ===
|
|
80
|
+
if (level === "warning") {
|
|
81
81
|
return chalk.yellow;
|
|
82
82
|
}
|
|
83
83
|
return chalk.blue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/output/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,MAAM,UAAU,gBAAgB,
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/output/diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/scaffold/names.js
CHANGED
|
@@ -4,14 +4,14 @@ export function parseScaffoldName(input, label) {
|
|
|
4
4
|
if (raw.length === 0) {
|
|
5
5
|
throw new Error(`El nombre de ${label} no puede estar vacío.`);
|
|
6
6
|
}
|
|
7
|
-
if (raw.startsWith(
|
|
7
|
+
if (raw.startsWith("/") || raw.includes("\\")) {
|
|
8
8
|
throw new Error(`El nombre de ${label} debe ser una ruta relativa con "/" si usa carpetas.`);
|
|
9
9
|
}
|
|
10
|
-
const rawParts = raw.split(
|
|
10
|
+
const rawParts = raw.split("/").filter(Boolean);
|
|
11
11
|
if (rawParts.length === 0) {
|
|
12
12
|
throw new Error(`El nombre de ${label} no puede estar vacío.`);
|
|
13
13
|
}
|
|
14
|
-
if (rawParts.some((part) => part ===
|
|
14
|
+
if (rawParts.some((part) => part === "." || part === "..")) {
|
|
15
15
|
throw new Error(`El nombre de ${label} no puede contener "." ni "..".`);
|
|
16
16
|
}
|
|
17
17
|
const parts = rawParts.map((part) => normalizeSegment(part));
|
|
@@ -44,25 +44,25 @@ export function toPascalCase(value) {
|
|
|
44
44
|
.split(/[-_]/g)
|
|
45
45
|
.filter(Boolean)
|
|
46
46
|
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
47
|
-
.join(
|
|
47
|
+
.join("");
|
|
48
48
|
}
|
|
49
49
|
export function commandClassNameFromPath(input) {
|
|
50
|
-
const parsed = parseScaffoldName(input,
|
|
50
|
+
const parsed = parseScaffoldName(input, "comando");
|
|
51
51
|
return `${parsed.classBase}Command`;
|
|
52
52
|
}
|
|
53
53
|
export function commandImportPath(input) {
|
|
54
|
-
const parsed = parseScaffoldName(input,
|
|
55
|
-
return `@/commands/${[...parsed.dirs, `${parsed.fileBase}.command`].join(
|
|
54
|
+
const parsed = parseScaffoldName(input, "comando");
|
|
55
|
+
return `@/commands/${[...parsed.dirs, `${parsed.fileBase}.command`].join("/")}`;
|
|
56
56
|
}
|
|
57
57
|
function normalizeSegment(value) {
|
|
58
58
|
return value
|
|
59
|
-
.normalize(
|
|
60
|
-
.replace(/[\u0300-\u036f]/g,
|
|
59
|
+
.normalize("NFD")
|
|
60
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
61
61
|
.toLowerCase()
|
|
62
|
-
.replace(/[_\s]+/g,
|
|
63
|
-
.replace(/[^a-z0-9-]/g,
|
|
64
|
-
.replace(/-+/g,
|
|
65
|
-
.replace(/^-|-$/g,
|
|
62
|
+
.replace(/[_\s]+/g, "-")
|
|
63
|
+
.replace(/[^a-z0-9-]/g, "")
|
|
64
|
+
.replace(/-+/g, "-")
|
|
65
|
+
.replace(/^-|-$/g, "");
|
|
66
66
|
}
|
|
67
67
|
function validateDiscordName(name, label) {
|
|
68
68
|
if (!/^[a-z0-9]+(?:[-_][a-z0-9]+)*$/.test(name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/scaffold/names.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAWnC,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAa;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAEzB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,wBAAwB,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/scaffold/names.ts"],"names":[],"mappings":"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"}
|