@patto/cli 0.1.0 → 0.1.1

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.
@@ -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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"}
@@ -1,34 +1,34 @@
1
- import { createRequire } from 'node:module';
2
- import path from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- import { existsSync } from 'node:fs';
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 = 'patto_cli_core_unavailable';
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
- 'Plataformas soportadas: linux-x64, linux-arm64 y win32-x64.');
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, '..', '..', '..', platformPackage.workspaceDir, 'bin', platformPackage.binaryName);
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
- 'Ejecuta el build del core o reinstala @patto/cli para descargar la optionalDependency correcta.');
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), 'bin', platformPackage.binaryName);
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 === 'linux' && process.arch === 'x64') {
39
+ if (process.platform === "linux" && process.arch === "x64") {
40
40
  return {
41
- name: '@patto/cli-core-linux-x64',
42
- workspaceDir: 'cli-core-linux-x64',
43
- binaryName: 'patto-core',
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 === 'linux' && process.arch === 'arm64') {
46
+ if (process.platform === "linux" && process.arch === "arm64") {
47
47
  return {
48
- name: '@patto/cli-core-linux-arm64',
49
- workspaceDir: 'cli-core-linux-arm64',
50
- binaryName: 'patto-core',
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 === 'win32' && process.arch === 'x64') {
53
+ if (process.platform === "win32" && process.arch === "x64") {
54
54
  return {
55
- name: '@patto/cli-core-win32-x64',
56
- workspaceDir: 'cli-core-win32-x64',
57
- binaryName: 'patto-core.exe',
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;
@@ -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,CAAC,eAAgC;IAC1D,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,IAAI,eAAe,CAAC,CAAC;QAChF,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"}
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"}
@@ -1,2 +1,2 @@
1
- import type { CoreRunOptions, CoreRunResult } from './types.js';
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 'node:child_process';
2
- import { resolveCoreBinary } from './resolve.js';
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, '--json'];
5
+ const args = [options.command, "--json"];
6
6
  if (options.root !== undefined) {
7
- args.push('--root', options.root);
7
+ args.push("--root", options.root);
8
8
  }
9
9
  if (options.lang !== undefined) {
10
- args.push('--lang', options.lang);
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: ['ignore', 'pipe', 'pipe'],
24
+ stdio: ["ignore", "pipe", "pipe"],
25
25
  windowsHide: true,
26
26
  });
27
27
  const stdout = [];
28
28
  const stderr = [];
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) => {
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('utf8'),
36
- stderr: Buffer.concat(stderr).toString('utf8'),
35
+ stdout: Buffer.concat(stdout).toString("utf8"),
36
+ stderr: Buffer.concat(stderr).toString("utf8"),
37
37
  });
38
38
  });
39
39
  });
@@ -1,2 +1,2 @@
1
- import type { CoreCommand, CoreRequest } from './types.js';
1
+ import type { CoreCommand, CoreRequest } from "./types.js";
2
2
  export declare function readCoreRequest(defaultCommand?: CoreCommand): Promise<Required<CoreRequest>>;
@@ -1,4 +1,4 @@
1
- import { stdin } from 'node:process';
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('El comando debe ser scan, lint, doctor o check.');
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 ?? 'auto',
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('data', (chunk) => chunks.push(chunk));
22
- stdin.on('error', reject);
23
- stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
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 === 'scan' || value === 'lint' || value === 'doctor' || value === 'check';
28
+ return (value === "scan" ||
29
+ value === "lint" ||
30
+ value === "doctor" ||
31
+ value === "check");
29
32
  }
30
33
  //# sourceMappingURL=stdin.js.map
@@ -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,CAAC,cAA4B;IAC9D,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IAC/E,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,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,CAAC;AAC3F,CAAC"}
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"}
@@ -1,5 +1,5 @@
1
- export type CoreCommand = 'scan' | 'lint' | 'doctor' | 'check';
2
- export type DiagnosticLevel = 'error' | 'warning' | 'info';
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,11 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { cac } from 'cac';
3
- import chalk from 'chalk';
4
- import { registerCoreCommands, writeStructuredError } from './commands/core.js';
5
- import { registerGenerateCommand } from './commands/generate.js';
6
- const cli = cac('patto');
7
- cli.version('0.1.0');
2
+ import { cac } from "cac";
3
+ import chalk from "chalk";
4
+ import { registerCoreCommands, writeStructuredError } from "./commands/core.js";
5
+ import { registerGenerateCommand } from "./commands/generate.js";
6
+ import { registerInitCommand } from "./commands/init.js";
7
+ const cli = cac("patto");
8
+ cli.version("0.1.0");
8
9
  cli.help();
10
+ registerInitCommand(cli);
9
11
  registerGenerateCommand(cli);
10
12
  registerCoreCommands(cli);
11
13
  try {
@@ -18,7 +20,7 @@ try {
18
20
  }
19
21
  }
20
22
  catch (error) {
21
- if (process.argv.includes('--stdin')) {
23
+ if (process.argv.includes("--stdin")) {
22
24
  writeStructuredError(error);
23
25
  }
24
26
  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;AAEjE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAEzB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrB,GAAG,CAAC,IAAI,EAAE,CAAC;AAEX,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAC7B,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAE1B,IAAI,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAExC,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACnC,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
+ {"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;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAEzB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrB,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,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAExC,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACnC,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,CACT,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACpE,CAAC;IACN,CAAC;IAED,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CoreDiagnostic, CoreOutput } from '../core/types.js';
1
+ import type { CoreDiagnostic, CoreOutput } from "../core/types.js";
2
2
  interface RenderOptions {
3
3
  readonly root: string;
4
4
  readonly command: string;
@@ -1,6 +1,6 @@
1
- import chalk from 'chalk';
2
- import { existsSync, readFileSync } from 'node:fs';
3
- import path from 'node:path';
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, 'utf8').split(/\r?\n/);
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 = `${' '.repeat(underlineStart)}${'^'.repeat(underlineWidth)}`;
48
+ const underline = `${" ".repeat(underlineStart)}${"^".repeat(underlineWidth)}`;
49
49
  console.log(chalk.dim(`${gutter} | `) + sourceLine);
50
- console.log(chalk.dim(' | ') + colorForLevel(diagnostic.level)(underline));
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('<proyecto>');
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 === 'error') {
77
+ if (level === "error") {
78
78
  return chalk.red;
79
79
  }
80
- if (level === 'warning') {
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":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/output/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -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('/') || raw.includes('\\')) {
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('/').filter(Boolean);
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 === '.' || 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, 'comando');
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, 'comando');
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('NFD')
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":"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"}
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,CACX,gBAAgB,KAAK,sDAAsD,CAC9E,CAAC;IACN,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,wBAAwB,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAE5D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEjC,OAAO;QACH,KAAK;QACL,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,KAAK;KACR,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAa;IACzD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAa;IAC1D,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,KAAK;SACP,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnD,OAAO,GAAG,MAAM,CAAC,SAAS,SAAS,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnD,OAAO,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACnC,OAAO,KAAK;SACP,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACpD,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACX,gBAAgB,KAAK,uDAAuD,CAC/E,CAAC;IACN,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACX,gBAAgB,KAAK,qBAAqB,uBAAuB,cAAc,CAClF,CAAC;IACN,CAAC;AACL,CAAC"}