@axeth/create-cli 2.1.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,95 +1,102 @@
1
- import path from "path";
2
- import fs from 'fs-extra';
3
- import { exec } from "child_process";
4
- class TemplateGenerators {
5
- fileList = new Map();
6
- dependencies = [
7
- "@axeth/api",
8
- "@axeth/core",
9
- "@minecraft/server",
10
- "@minecraft/server-ui"
11
- ];
12
- constructor() {
13
- }
14
- registerFile(path, content) {
15
- this.fileList.set(path, content);
16
- }
17
- getFiles() {
18
- return this.fileList;
19
- }
20
- async generate(config, spinner) {
21
- spinner.start("Preparing template pack files...");
22
- const templateData = await fs.readJson(path.join(__dirname, '../data/templates.json'));
23
- for (const [filePath, fileContent] of Object.entries(templateData)) {
24
- let populatedContent = fileContent;
25
- for (const [key, value] of Object.entries(config)) {
26
- const placeholder = `{{${key}}}`;
27
- let replacementValue;
28
- let isNonStringValue = false;
29
- // Determine the proper string representation based on type
30
- if (Array.isArray(value)) {
31
- replacementValue = JSON.stringify(value);
32
- isNonStringValue = true;
33
- }
34
- else if (typeof value === "object" && value !== null) {
35
- replacementValue = JSON.stringify(value);
36
- isNonStringValue = true;
37
- }
38
- else if (typeof value === "number") {
39
- replacementValue = value.toString();
40
- isNonStringValue = true;
41
- }
42
- else {
43
- replacementValue = String(value);
44
- }
45
- // Remove quotes around non-string values: "{{key}}" -> {{key}}
46
- if (isNonStringValue) {
47
- populatedContent = populatedContent.split(`"${placeholder}"`).join(replacementValue);
48
- }
49
- else {
50
- populatedContent = populatedContent.split(placeholder).join(replacementValue);
51
- }
52
- await new Promise((resolve) => setTimeout(resolve, 10)); // Slight delay to ensure responsiveness
53
- }
54
- this.registerFile(filePath, populatedContent);
55
- }
56
- spinner.stop("Prepared template pack files.");
57
- spinner.start("Creating template pack files...");
58
- for (const filePath of this.fileList.keys()) {
59
- const fullPath = path.join(process.cwd(), config['project_name'], filePath);
60
- const shortPath = filePath
61
- .split('/')
62
- .slice(-5)
63
- .join('/');
64
- spinner.message(`Creating file: ${shortPath}`);
65
- await Bun.file(fullPath).write(this.fileList.get(filePath) || '');
66
- await new Promise((resolve) => setTimeout(resolve, 50)); // Slight delay to ensure file system stability
67
- }
68
- spinner.stop("Template pack files generated.");
69
- spinner.start("Installing dependencies...");
70
- await this.installDependencies(config['project_name'], this.dependencies);
71
- spinner.stop("Dependencies installed.");
72
- }
73
- async runCommand(command, cwd) {
74
- return new Promise((resolve, reject) => {
75
- const options = {};
76
- if (cwd) {
77
- options.cwd = cwd;
78
- }
79
- exec(command, options, (error, stdout, stderr) => {
80
- if (error) {
81
- reject(error);
82
- return;
83
- }
84
- resolve();
85
- });
86
- });
87
- }
88
- async installDependencies(projectName, dependencies) {
89
- const projectPath = path.join(process.cwd(), projectName || '');
90
- const installCommand = `bun add ${dependencies ? dependencies.join(' ') : this.dependencies.join(' ')}`;
91
- return await this.runCommand(installCommand, projectPath);
92
- }
93
- }
94
- export { TemplateGenerators };
95
- //# sourceMappingURL=TemplateGenerators.js.map
1
+ import path from "path"
2
+ import fs from 'fs-extra';
3
+ import { exec } from "child_process";
4
+
5
+ class TemplateGenerators {
6
+ private fileList = new Map<string, string>();
7
+ private dependencies: string[] = [
8
+ "@axeth/api",
9
+ "@axeth/core",
10
+ "@minecraft/server",
11
+ "@minecraft/server-ui"
12
+ ];
13
+
14
+ constructor() {
15
+ }
16
+
17
+ public registerFile(path: string, content: string) {
18
+ this.fileList.set(path, content);
19
+ }
20
+
21
+ public getFiles() {
22
+ return this.fileList;
23
+ }
24
+
25
+ public async generate(config: { [key: string]: any }, spinner: any): Promise<void> {
26
+ spinner.start("Preparing template pack files...");
27
+ const templateData: { [key: string]: string } = await fs.readJson(path.join(__dirname, '../data/templates.json'));
28
+ for (const [filePath, fileContent] of Object.entries(templateData)) {
29
+ let populatedContent = fileContent;
30
+ for (const [key, value] of Object.entries(config)) {
31
+ const placeholder = `{{${key}}}`;
32
+ let replacementValue: string;
33
+ let isNonStringValue = false;
34
+
35
+ // Determine the proper string representation based on type
36
+ if (Array.isArray(value)) {
37
+ replacementValue = JSON.stringify(value);
38
+ isNonStringValue = true;
39
+ } else if (typeof value === "object" && value !== null) {
40
+ replacementValue = JSON.stringify(value);
41
+ isNonStringValue = true;
42
+ } else if (typeof value === "number") {
43
+ replacementValue = value.toString();
44
+ isNonStringValue = true;
45
+ } else {
46
+ replacementValue = String(value);
47
+ }
48
+
49
+ // Remove quotes around non-string values: "{{key}}" -> {{key}}
50
+ if (isNonStringValue) {
51
+ populatedContent = populatedContent.split(`"${placeholder}"`).join(replacementValue);
52
+ } else {
53
+ populatedContent = populatedContent.split(placeholder).join(replacementValue);
54
+ }
55
+
56
+ await new Promise((resolve) => setTimeout(resolve, 10)); // Slight delay to ensure responsiveness
57
+ }
58
+ this.registerFile(filePath, populatedContent);
59
+ }
60
+ spinner.stop("Prepared template pack files.");
61
+ spinner.start("Creating template pack files...");
62
+
63
+ for (const filePath of this.fileList.keys()) {
64
+ const fullPath = path.join(process.cwd(), config['project_name'], filePath);
65
+ const shortPath = filePath
66
+ .split('/')
67
+ .slice(-5)
68
+ .join('/');
69
+ spinner.message(`Creating file: ${shortPath}`);
70
+ await Bun.file(fullPath).write(this.fileList.get(filePath) || '');
71
+ await new Promise((resolve) => setTimeout(resolve, 50)); // Slight delay to ensure file system stability
72
+ }
73
+ spinner.stop("Template pack files generated.");
74
+ spinner.start("Installing dependencies...");
75
+ await this.installDependencies(config['project_name'], this.dependencies);
76
+ spinner.stop("Dependencies installed.");
77
+ }
78
+
79
+ private async runCommand(command: string, cwd?: string): Promise<void> {
80
+ return new Promise((resolve, reject) => {
81
+ const options: any = {};
82
+ if (cwd) {
83
+ options.cwd = cwd;
84
+ }
85
+ exec(command, options, (error, stdout, stderr) => {
86
+ if (error) {
87
+ reject(error);
88
+ return;
89
+ }
90
+ resolve();
91
+ });
92
+ });
93
+ }
94
+
95
+ private async installDependencies(projectName: string, dependencies?: string[]): Promise<void> {
96
+ const projectPath = path.join(process.cwd(), projectName || '');
97
+ const installCommand = `bun add ${dependencies ? dependencies.join(' ') : this.dependencies.join(' ')}`;
98
+ return await this.runCommand(installCommand, projectPath);
99
+ }
100
+ }
101
+
102
+ export { TemplateGenerators };
@@ -0,0 +1,21 @@
1
+ {
2
+ "/.gitignore": "# dependencies (bun install)\nnode_modules\n\n# output\nout\ndist\n*.tgz\n\n# code coverage\ncoverage\n*.lcov\n\n# logs\nlogs\n_.log\nreport.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json\n\n# dotenv environment variable files\n.env\n.env.development.local\n.env.test.local\n.env.production.local\n.env.local\n\n# caches\n.eslintcache\n.cache\n*.tsbuildinfo\n\n# IntelliJ based IDEs\n.idea\n\n# Finder (MacOS) folder config\n.DS_Store\n",
3
+ "/.turbo/turbo-build.log": "\u001b[?9001h\u001b[?1004h\u001b[?25l\u001b[2J\u001b[m\u001b[35m\u001b[2m\u001b[H$\u001b[m\u001b[1m\u001b[2m\u001b[1Cbun run ./index.ts --build\r\n\u001b]0;C:\\WINDOWS\\system32\\cmd.exe\u0007\u001b[?25h\u001b[22m\u001b[2J\u001b[3J\u001b[?25l\u001b[H\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[H\u001b[?25h\u001b[44m INFO \u001b[m: \u001b[90mLoaded config pack: test@1.0.0\u001b[39m\u001b[44m\r\n INFO \u001b[m: \u001b[90mBuilding packs...\r\n\u001b[m\u001b[44m INFO \u001b[m: \u001b[90mApplying filters...\r\n\u001b[m • \u001b[34mTSBuilds\u001b[m\r\n\u001b[11X\u001b[30m\u001b[11C1\u001b[m. \u001b[90mRunning linter: \u001b[33mbunx eslint ./packs\u001b[m,\r\n\u001b[11X\u001b[30m\u001b[11C2\u001b[m. \u001b[32m✓ \u001b[90mLinting passed\u001b[m,\r\n\u001b[11X\u001b[30m\u001b[11C3\u001b[m. \u001b[90mBuilding library: \u001b[34mAxethLib.js\u001b[m,\r\n\u001b[11X\u001b[30m\u001b[11C4\u001b[m. \u001b[90mSuccessfully built library: \u001b[32mBP/scripts/AxethLib.js\u001b[m,\r\n\u001b[11X\u001b[30m\u001b[11C5\u001b[m. \u001b[90mBuilding script: \u001b[32m./packs/scripts/index.ts\u001b[m,\r\n\u001b[11X\u001b[30m\u001b[11C6\u001b[m. \u001b[90mSuccessfully built script: \u001b[32mBP/scripts/index.js\r\n\u001b[m • \u001b[34mManifestBuilds\u001b[m\r\n\u001b[11X\u001b[30m\u001b[11C1\u001b[m. \u001b[90mLooking for manifests...\u001b[m,\r\n\u001b[30m\u001b[11C2\u001b[m. \u001b[90mUpdated manifest \u001b[32msuccessfully\u001b[90m.\u001b[K\u001b[m\r\n\u001b[42m SUCCESS \u001b[m: \u001b[90mSuccessfully processed files\u001b[K\u001b[m\r\n\u001b[?9001l\u001b[?1004l\n",
4
+ "/.vscode/launch.json": "{\r\n \"version\": \"0.3.0\",\r\n \"configurations\": [\r\n {\r\n \"type\": \"minecraft-js\",\r\n \"request\": \"attach\",\r\n \"name\": \"Debug with Minecraft\",\r\n \"mode\": \"listen\",\r\n \"localRoot\": \"${workspaceFolder}/packs/scripts\",\r\n \"sourceMapRoot\": \"${workspaceFolder}/data/dist/BP/scripts\",\r\n \"port\": 19144\r\n }\r\n ]\r\n}",
5
+ "/bun.lock": "{\n \"lockfileVersion\": 1,\n \"configVersion\": 1,\n \"workspaces\": {\n \"\": {\n \"name\": \"pack-name\",\n \"dependencies\": {\n \"@axeth/api\": \"^1.0.1\",\n \"@axeth/core\": \"^1.0.2\",\n \"chalk\": \"^5.6.2\",\n \"esbuild\": \"^0.27.2\",\n \"eslint\": \"^9.39.2\",\n \"jszip\": \"^3.10.1\",\n \"typescript-eslint\": \"^8.50.1\",\n },\n \"devDependencies\": {\n \"@types/bun\": \"latest\",\n \"chokidar-cli\": \"^3.0.0\",\n \"jiti\": \"^2.6.1\",\n },\n \"peerDependencies\": {\n \"typescript\": \"^5\",\n },\n },\n },\n \"packages\": {\n \"@axeth/api\": [\"@axeth/api@1.0.1\", \"\", { \"peerDependencies\": { \"@minecraft/server\": \"*\", \"@minecraft/server-ui\": \"*\" } }, \"sha512-peAM8SqsIE9Junp+xa219YU46cECHlGJJFv5r600u+VOIHpQheTbXz5DWVBfuFZVT2+5ZMWFaPx4VDfki4iz/A==\"],\n\n \"@axeth/core\": [\"@axeth/core@1.0.2\", \"\", { \"dependencies\": { \"chalk\": \"^5.6.2\", \"jszip\": \"^3.10.1\" }, \"peerDependencies\": { \"typescript\": \"^5\" } }, \"sha512-iUNXNNX6Vj5YnpgUQXjVBmHGwdWr48j+aV3l7Ldrpwf+Nh9Jhb4lYa1PCTKKyocZRyAIWOSd0BALhqC/mGhOiA==\"],\n\n \"@esbuild/aix-ppc64\": [\"@esbuild/aix-ppc64@0.27.2\", \"\", { \"os\": \"aix\", \"cpu\": \"ppc64\" }, \"sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==\"],\n\n \"@esbuild/android-arm\": [\"@esbuild/android-arm@0.27.2\", \"\", { \"os\": \"android\", \"cpu\": \"arm\" }, \"sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==\"],\n\n \"@esbuild/android-arm64\": [\"@esbuild/android-arm64@0.27.2\", \"\", { \"os\": \"android\", \"cpu\": \"arm64\" }, \"sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==\"],\n\n \"@esbuild/android-x64\": [\"@esbuild/android-x64@0.27.2\", \"\", { \"os\": \"android\", \"cpu\": \"x64\" }, \"sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==\"],\n\n \"@esbuild/darwin-arm64\": [\"@esbuild/darwin-arm64@0.27.2\", \"\", { \"os\": \"darwin\", \"cpu\": \"arm64\" }, \"sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==\"],\n\n \"@esbuild/darwin-x64\": [\"@esbuild/darwin-x64@0.27.2\", \"\", { \"os\": \"darwin\", \"cpu\": \"x64\" }, \"sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==\"],\n\n \"@esbuild/freebsd-arm64\": [\"@esbuild/freebsd-arm64@0.27.2\", \"\", { \"os\": \"freebsd\", \"cpu\": \"arm64\" }, \"sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==\"],\n\n \"@esbuild/freebsd-x64\": [\"@esbuild/freebsd-x64@0.27.2\", \"\", { \"os\": \"freebsd\", \"cpu\": \"x64\" }, \"sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==\"],\n\n \"@esbuild/linux-arm\": [\"@esbuild/linux-arm@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"arm\" }, \"sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==\"],\n\n \"@esbuild/linux-arm64\": [\"@esbuild/linux-arm64@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"arm64\" }, \"sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==\"],\n\n \"@esbuild/linux-ia32\": [\"@esbuild/linux-ia32@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"ia32\" }, \"sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==\"],\n\n \"@esbuild/linux-loong64\": [\"@esbuild/linux-loong64@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"none\" }, \"sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==\"],\n\n \"@esbuild/linux-mips64el\": [\"@esbuild/linux-mips64el@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"none\" }, \"sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==\"],\n\n \"@esbuild/linux-ppc64\": [\"@esbuild/linux-ppc64@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"ppc64\" }, \"sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==\"],\n\n \"@esbuild/linux-riscv64\": [\"@esbuild/linux-riscv64@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"none\" }, \"sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==\"],\n\n \"@esbuild/linux-s390x\": [\"@esbuild/linux-s390x@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"s390x\" }, \"sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==\"],\n\n \"@esbuild/linux-x64\": [\"@esbuild/linux-x64@0.27.2\", \"\", { \"os\": \"linux\", \"cpu\": \"x64\" }, \"sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==\"],\n\n \"@esbuild/netbsd-arm64\": [\"@esbuild/netbsd-arm64@0.27.2\", \"\", { \"os\": \"none\", \"cpu\": \"arm64\" }, \"sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==\"],\n\n \"@esbuild/netbsd-x64\": [\"@esbuild/netbsd-x64@0.27.2\", \"\", { \"os\": \"none\", \"cpu\": \"x64\" }, \"sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==\"],\n\n \"@esbuild/openbsd-arm64\": [\"@esbuild/openbsd-arm64@0.27.2\", \"\", { \"os\": \"openbsd\", \"cpu\": \"arm64\" }, \"sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==\"],\n\n \"@esbuild/openbsd-x64\": [\"@esbuild/openbsd-x64@0.27.2\", \"\", { \"os\": \"openbsd\", \"cpu\": \"x64\" }, \"sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==\"],\n\n \"@esbuild/openharmony-arm64\": [\"@esbuild/openharmony-arm64@0.27.2\", \"\", { \"os\": \"none\", \"cpu\": \"arm64\" }, \"sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==\"],\n\n \"@esbuild/sunos-x64\": [\"@esbuild/sunos-x64@0.27.2\", \"\", { \"os\": \"sunos\", \"cpu\": \"x64\" }, \"sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==\"],\n\n \"@esbuild/win32-arm64\": [\"@esbuild/win32-arm64@0.27.2\", \"\", { \"os\": \"win32\", \"cpu\": \"arm64\" }, \"sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==\"],\n\n \"@esbuild/win32-ia32\": [\"@esbuild/win32-ia32@0.27.2\", \"\", { \"os\": \"win32\", \"cpu\": \"ia32\" }, \"sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==\"],\n\n \"@esbuild/win32-x64\": [\"@esbuild/win32-x64@0.27.2\", \"\", { \"os\": \"win32\", \"cpu\": \"x64\" }, \"sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==\"],\n\n \"@eslint-community/eslint-utils\": [\"@eslint-community/eslint-utils@4.9.0\", \"\", { \"dependencies\": { \"eslint-visitor-keys\": \"^3.4.3\" }, \"peerDependencies\": { \"eslint\": \"^6.0.0 || ^7.0.0 || >=8.0.0\" } }, \"sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==\"],\n\n \"@eslint-community/regexpp\": [\"@eslint-community/regexpp@4.12.2\", \"\", {}, \"sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==\"],\n\n \"@eslint/config-array\": [\"@eslint/config-array@0.21.1\", \"\", { \"dependencies\": { \"@eslint/object-schema\": \"^2.1.7\", \"debug\": \"^4.3.1\", \"minimatch\": \"^3.1.2\" } }, \"sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==\"],\n\n \"@eslint/config-helpers\": [\"@eslint/config-helpers@0.4.2\", \"\", { \"dependencies\": { \"@eslint/core\": \"^0.17.0\" } }, \"sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==\"],\n\n \"@eslint/core\": [\"@eslint/core@0.17.0\", \"\", { \"dependencies\": { \"@types/json-schema\": \"^7.0.15\" } }, \"sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==\"],\n\n \"@eslint/eslintrc\": [\"@eslint/eslintrc@3.3.3\", \"\", { \"dependencies\": { \"ajv\": \"^6.12.4\", \"debug\": \"^4.3.2\", \"espree\": \"^10.0.1\", \"globals\": \"^14.0.0\", \"ignore\": \"^5.2.0\", \"import-fresh\": \"^3.2.1\", \"js-yaml\": \"^4.1.1\", \"minimatch\": \"^3.1.2\", \"strip-json-comments\": \"^3.1.1\" } }, \"sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==\"],\n\n \"@eslint/js\": [\"@eslint/js@9.39.2\", \"\", {}, \"sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==\"],\n\n \"@eslint/object-schema\": [\"@eslint/object-schema@2.1.7\", \"\", {}, \"sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==\"],\n\n \"@eslint/plugin-kit\": [\"@eslint/plugin-kit@0.4.1\", \"\", { \"dependencies\": { \"@eslint/core\": \"^0.17.0\", \"levn\": \"^0.4.1\" } }, \"sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==\"],\n\n \"@humanfs/core\": [\"@humanfs/core@0.19.1\", \"\", {}, \"sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==\"],\n\n \"@humanfs/node\": [\"@humanfs/node@0.16.7\", \"\", { \"dependencies\": { \"@humanfs/core\": \"^0.19.1\", \"@humanwhocodes/retry\": \"^0.4.0\" } }, \"sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==\"],\n\n \"@humanwhocodes/module-importer\": [\"@humanwhocodes/module-importer@1.0.1\", \"\", {}, \"sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==\"],\n\n \"@humanwhocodes/retry\": [\"@humanwhocodes/retry@0.4.3\", \"\", {}, \"sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==\"],\n\n \"@minecraft/common\": [\"@minecraft/common@1.2.0\", \"\", {}, \"sha512-JdmEq4P3Z/FtoBzhLijFgMSVFnFRrUoLwY8DHHrgtFo0mfLTOLTB1RErYjLMsA6b7BGVNxkX/pfFRiH7QZ0XwQ==\"],\n\n \"@minecraft/server\": [\"@minecraft/server@2.4.0\", \"\", { \"peerDependencies\": { \"@minecraft/common\": \"^1.2.0\", \"@minecraft/vanilla-data\": \">=1.20.70\" } }, \"sha512-xd9dOWQ4RhPQBCt2aui9tp/GCnjvXpi6ZHVxaUr0SPDHfh/GkMRWnyf2Ud6D3pEThp/0giOEtHY1sx2HN9Qd+A==\"],\n\n \"@minecraft/server-ui\": [\"@minecraft/server-ui@2.0.0\", \"\", { \"dependencies\": { \"@minecraft/common\": \"^1.0.0\", \"@minecraft/server\": \"^2.0.0\" } }, \"sha512-K1xFK1OEJSNfIgyRElaoxDTW/nbEqjBp1YnUdyPCs4kGDglwoXNyFz3wzMOkvT04CJXSifZGcTJeWda4C6OkXw==\"],\n\n \"@minecraft/vanilla-data\": [\"@minecraft/vanilla-data@1.21.131\", \"\", {}, \"sha512-Ptw6t5mgyOODFmZxpZRRawjfhgcniGNf7kZqxV98RTAJi61tZ6wEMcI9muiWXw5yrNstYcTxJmqVjx1RaZKkxg==\"],\n\n \"@types/bun\": [\"@types/bun@1.3.5\", \"\", { \"dependencies\": { \"bun-types\": \"1.3.5\" } }, \"sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==\"],\n\n \"@types/estree\": [\"@types/estree@1.0.8\", \"\", {}, \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\"],\n\n \"@types/json-schema\": [\"@types/json-schema@7.0.15\", \"\", {}, \"sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==\"],\n\n \"@types/node\": [\"@types/node@25.0.3\", \"\", { \"dependencies\": { \"undici-types\": \"~7.16.0\" } }, \"sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==\"],\n\n \"@typescript-eslint/eslint-plugin\": [\"@typescript-eslint/eslint-plugin@8.50.1\", \"\", { \"dependencies\": { \"@eslint-community/regexpp\": \"^4.10.0\", \"@typescript-eslint/scope-manager\": \"8.50.1\", \"@typescript-eslint/type-utils\": \"8.50.1\", \"@typescript-eslint/utils\": \"8.50.1\", \"@typescript-eslint/visitor-keys\": \"8.50.1\", \"ignore\": \"^7.0.0\", \"natural-compare\": \"^1.4.0\", \"ts-api-utils\": \"^2.1.0\" }, \"peerDependencies\": { \"@typescript-eslint/parser\": \"^8.50.1\", \"eslint\": \"^8.57.0 || ^9.0.0\", \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==\"],\n\n \"@typescript-eslint/parser\": [\"@typescript-eslint/parser@8.50.1\", \"\", { \"dependencies\": { \"@typescript-eslint/scope-manager\": \"8.50.1\", \"@typescript-eslint/types\": \"8.50.1\", \"@typescript-eslint/typescript-estree\": \"8.50.1\", \"@typescript-eslint/visitor-keys\": \"8.50.1\", \"debug\": \"^4.3.4\" }, \"peerDependencies\": { \"eslint\": \"^8.57.0 || ^9.0.0\", \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==\"],\n\n \"@typescript-eslint/project-service\": [\"@typescript-eslint/project-service@8.50.1\", \"\", { \"dependencies\": { \"@typescript-eslint/tsconfig-utils\": \"^8.50.1\", \"@typescript-eslint/types\": \"^8.50.1\", \"debug\": \"^4.3.4\" }, \"peerDependencies\": { \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==\"],\n\n \"@typescript-eslint/scope-manager\": [\"@typescript-eslint/scope-manager@8.50.1\", \"\", { \"dependencies\": { \"@typescript-eslint/types\": \"8.50.1\", \"@typescript-eslint/visitor-keys\": \"8.50.1\" } }, \"sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==\"],\n\n \"@typescript-eslint/tsconfig-utils\": [\"@typescript-eslint/tsconfig-utils@8.50.1\", \"\", { \"peerDependencies\": { \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==\"],\n\n \"@typescript-eslint/type-utils\": [\"@typescript-eslint/type-utils@8.50.1\", \"\", { \"dependencies\": { \"@typescript-eslint/types\": \"8.50.1\", \"@typescript-eslint/typescript-estree\": \"8.50.1\", \"@typescript-eslint/utils\": \"8.50.1\", \"debug\": \"^4.3.4\", \"ts-api-utils\": \"^2.1.0\" }, \"peerDependencies\": { \"eslint\": \"^8.57.0 || ^9.0.0\", \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==\"],\n\n \"@typescript-eslint/types\": [\"@typescript-eslint/types@8.50.1\", \"\", {}, \"sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==\"],\n\n \"@typescript-eslint/typescript-estree\": [\"@typescript-eslint/typescript-estree@8.50.1\", \"\", { \"dependencies\": { \"@typescript-eslint/project-service\": \"8.50.1\", \"@typescript-eslint/tsconfig-utils\": \"8.50.1\", \"@typescript-eslint/types\": \"8.50.1\", \"@typescript-eslint/visitor-keys\": \"8.50.1\", \"debug\": \"^4.3.4\", \"minimatch\": \"^9.0.4\", \"semver\": \"^7.6.0\", \"tinyglobby\": \"^0.2.15\", \"ts-api-utils\": \"^2.1.0\" }, \"peerDependencies\": { \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==\"],\n\n \"@typescript-eslint/utils\": [\"@typescript-eslint/utils@8.50.1\", \"\", { \"dependencies\": { \"@eslint-community/eslint-utils\": \"^4.7.0\", \"@typescript-eslint/scope-manager\": \"8.50.1\", \"@typescript-eslint/types\": \"8.50.1\", \"@typescript-eslint/typescript-estree\": \"8.50.1\" }, \"peerDependencies\": { \"eslint\": \"^8.57.0 || ^9.0.0\", \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==\"],\n\n \"@typescript-eslint/visitor-keys\": [\"@typescript-eslint/visitor-keys@8.50.1\", \"\", { \"dependencies\": { \"@typescript-eslint/types\": \"8.50.1\", \"eslint-visitor-keys\": \"^4.2.1\" } }, \"sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==\"],\n\n \"acorn\": [\"acorn@8.15.0\", \"\", { \"bin\": { \"acorn\": \"bin/acorn\" } }, \"sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==\"],\n\n \"acorn-jsx\": [\"acorn-jsx@5.3.2\", \"\", { \"peerDependencies\": { \"acorn\": \"^6.0.0 || ^7.0.0 || ^8.0.0\" } }, \"sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==\"],\n\n \"ajv\": [\"ajv@6.12.6\", \"\", { \"dependencies\": { \"fast-deep-equal\": \"^3.1.1\", \"fast-json-stable-stringify\": \"^2.0.0\", \"json-schema-traverse\": \"^0.4.1\", \"uri-js\": \"^4.2.2\" } }, \"sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==\"],\n\n \"ansi-regex\": [\"ansi-regex@4.1.1\", \"\", {}, \"sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==\"],\n\n \"ansi-styles\": [\"ansi-styles@4.3.0\", \"\", { \"dependencies\": { \"color-convert\": \"^2.0.1\" } }, \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\"],\n\n \"anymatch\": [\"anymatch@3.1.3\", \"\", { \"dependencies\": { \"normalize-path\": \"^3.0.0\", \"picomatch\": \"^2.0.4\" } }, \"sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==\"],\n\n \"argparse\": [\"argparse@2.0.1\", \"\", {}, \"sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==\"],\n\n \"balanced-match\": [\"balanced-match@1.0.2\", \"\", {}, \"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==\"],\n\n \"binary-extensions\": [\"binary-extensions@2.3.0\", \"\", {}, \"sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==\"],\n\n \"brace-expansion\": [\"brace-expansion@1.1.12\", \"\", { \"dependencies\": { \"balanced-match\": \"^1.0.0\", \"concat-map\": \"0.0.1\" } }, \"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==\"],\n\n \"braces\": [\"braces@3.0.3\", \"\", { \"dependencies\": { \"fill-range\": \"^7.1.1\" } }, \"sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==\"],\n\n \"bun-types\": [\"bun-types@1.3.5\", \"\", { \"dependencies\": { \"@types/node\": \"*\" } }, \"sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==\"],\n\n \"callsites\": [\"callsites@3.1.0\", \"\", {}, \"sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==\"],\n\n \"camelcase\": [\"camelcase@5.3.1\", \"\", {}, \"sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==\"],\n\n \"chalk\": [\"chalk@5.6.2\", \"\", {}, \"sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==\"],\n\n \"chokidar\": [\"chokidar@3.6.0\", \"\", { \"dependencies\": { \"anymatch\": \"~3.1.2\", \"braces\": \"~3.0.2\", \"glob-parent\": \"~5.1.2\", \"is-binary-path\": \"~2.1.0\", \"is-glob\": \"~4.0.1\", \"normalize-path\": \"~3.0.0\", \"readdirp\": \"~3.6.0\" }, \"optionalDependencies\": { \"fsevents\": \"~2.3.2\" } }, \"sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==\"],\n\n \"chokidar-cli\": [\"chokidar-cli@3.0.0\", \"\", { \"dependencies\": { \"chokidar\": \"^3.5.2\", \"lodash.debounce\": \"^4.0.8\", \"lodash.throttle\": \"^4.1.1\", \"yargs\": \"^13.3.0\" }, \"bin\": { \"chokidar\": \"index.js\" } }, \"sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ==\"],\n\n \"cliui\": [\"cliui@5.0.0\", \"\", { \"dependencies\": { \"string-width\": \"^3.1.0\", \"strip-ansi\": \"^5.2.0\", \"wrap-ansi\": \"^5.1.0\" } }, \"sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==\"],\n\n \"color-convert\": [\"color-convert@2.0.1\", \"\", { \"dependencies\": { \"color-name\": \"~1.1.4\" } }, \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\"],\n\n \"color-name\": [\"color-name@1.1.4\", \"\", {}, \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\"],\n\n \"concat-map\": [\"concat-map@0.0.1\", \"\", {}, \"sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==\"],\n\n \"core-util-is\": [\"core-util-is@1.0.3\", \"\", {}, \"sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==\"],\n\n \"cross-spawn\": [\"cross-spawn@7.0.6\", \"\", { \"dependencies\": { \"path-key\": \"^3.1.0\", \"shebang-command\": \"^2.0.0\", \"which\": \"^2.0.1\" } }, \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\"],\n\n \"debug\": [\"debug@4.4.3\", \"\", { \"dependencies\": { \"ms\": \"^2.1.3\" } }, \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\"],\n\n \"decamelize\": [\"decamelize@1.2.0\", \"\", {}, \"sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==\"],\n\n \"deep-is\": [\"deep-is@0.1.4\", \"\", {}, \"sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==\"],\n\n \"emoji-regex\": [\"emoji-regex@7.0.3\", \"\", {}, \"sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==\"],\n\n \"esbuild\": [\"esbuild@0.27.2\", \"\", { \"optionalDependencies\": { \"@esbuild/aix-ppc64\": \"0.27.2\", \"@esbuild/android-arm\": \"0.27.2\", \"@esbuild/android-arm64\": \"0.27.2\", \"@esbuild/android-x64\": \"0.27.2\", \"@esbuild/darwin-arm64\": \"0.27.2\", \"@esbuild/darwin-x64\": \"0.27.2\", \"@esbuild/freebsd-arm64\": \"0.27.2\", \"@esbuild/freebsd-x64\": \"0.27.2\", \"@esbuild/linux-arm\": \"0.27.2\", \"@esbuild/linux-arm64\": \"0.27.2\", \"@esbuild/linux-ia32\": \"0.27.2\", \"@esbuild/linux-loong64\": \"0.27.2\", \"@esbuild/linux-mips64el\": \"0.27.2\", \"@esbuild/linux-ppc64\": \"0.27.2\", \"@esbuild/linux-riscv64\": \"0.27.2\", \"@esbuild/linux-s390x\": \"0.27.2\", \"@esbuild/linux-x64\": \"0.27.2\", \"@esbuild/netbsd-arm64\": \"0.27.2\", \"@esbuild/netbsd-x64\": \"0.27.2\", \"@esbuild/openbsd-arm64\": \"0.27.2\", \"@esbuild/openbsd-x64\": \"0.27.2\", \"@esbuild/openharmony-arm64\": \"0.27.2\", \"@esbuild/sunos-x64\": \"0.27.2\", \"@esbuild/win32-arm64\": \"0.27.2\", \"@esbuild/win32-ia32\": \"0.27.2\", \"@esbuild/win32-x64\": \"0.27.2\" }, \"bin\": { \"esbuild\": \"bin/esbuild\" } }, \"sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==\"],\n\n \"escape-string-regexp\": [\"escape-string-regexp@4.0.0\", \"\", {}, \"sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==\"],\n\n \"eslint\": [\"eslint@9.39.2\", \"\", { \"dependencies\": { \"@eslint-community/eslint-utils\": \"^4.8.0\", \"@eslint-community/regexpp\": \"^4.12.1\", \"@eslint/config-array\": \"^0.21.1\", \"@eslint/config-helpers\": \"^0.4.2\", \"@eslint/core\": \"^0.17.0\", \"@eslint/eslintrc\": \"^3.3.1\", \"@eslint/js\": \"9.39.2\", \"@eslint/plugin-kit\": \"^0.4.1\", \"@humanfs/node\": \"^0.16.6\", \"@humanwhocodes/module-importer\": \"^1.0.1\", \"@humanwhocodes/retry\": \"^0.4.2\", \"@types/estree\": \"^1.0.6\", \"ajv\": \"^6.12.4\", \"chalk\": \"^4.0.0\", \"cross-spawn\": \"^7.0.6\", \"debug\": \"^4.3.2\", \"escape-string-regexp\": \"^4.0.0\", \"eslint-scope\": \"^8.4.0\", \"eslint-visitor-keys\": \"^4.2.1\", \"espree\": \"^10.4.0\", \"esquery\": \"^1.5.0\", \"esutils\": \"^2.0.2\", \"fast-deep-equal\": \"^3.1.3\", \"file-entry-cache\": \"^8.0.0\", \"find-up\": \"^5.0.0\", \"glob-parent\": \"^6.0.2\", \"ignore\": \"^5.2.0\", \"imurmurhash\": \"^0.1.4\", \"is-glob\": \"^4.0.0\", \"json-stable-stringify-without-jsonify\": \"^1.0.1\", \"lodash.merge\": \"^4.6.2\", \"minimatch\": \"^3.1.2\", \"natural-compare\": \"^1.4.0\", \"optionator\": \"^0.9.3\" }, \"peerDependencies\": { \"jiti\": \"*\" }, \"optionalPeers\": [\"jiti\"], \"bin\": { \"eslint\": \"bin/eslint.js\" } }, \"sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==\"],\n\n \"eslint-scope\": [\"eslint-scope@8.4.0\", \"\", { \"dependencies\": { \"esrecurse\": \"^4.3.0\", \"estraverse\": \"^5.2.0\" } }, \"sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==\"],\n\n \"eslint-visitor-keys\": [\"eslint-visitor-keys@4.2.1\", \"\", {}, \"sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==\"],\n\n \"espree\": [\"espree@10.4.0\", \"\", { \"dependencies\": { \"acorn\": \"^8.15.0\", \"acorn-jsx\": \"^5.3.2\", \"eslint-visitor-keys\": \"^4.2.1\" } }, \"sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==\"],\n\n \"esquery\": [\"esquery@1.6.0\", \"\", { \"dependencies\": { \"estraverse\": \"^5.1.0\" } }, \"sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==\"],\n\n \"esrecurse\": [\"esrecurse@4.3.0\", \"\", { \"dependencies\": { \"estraverse\": \"^5.2.0\" } }, \"sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==\"],\n\n \"estraverse\": [\"estraverse@5.3.0\", \"\", {}, \"sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==\"],\n\n \"esutils\": [\"esutils@2.0.3\", \"\", {}, \"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==\"],\n\n \"fast-deep-equal\": [\"fast-deep-equal@3.1.3\", \"\", {}, \"sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==\"],\n\n \"fast-json-stable-stringify\": [\"fast-json-stable-stringify@2.1.0\", \"\", {}, \"sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==\"],\n\n \"fast-levenshtein\": [\"fast-levenshtein@2.0.6\", \"\", {}, \"sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==\"],\n\n \"fdir\": [\"fdir@6.5.0\", \"\", { \"peerDependencies\": { \"picomatch\": \"^3 || ^4\" }, \"optionalPeers\": [\"picomatch\"] }, \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\"],\n\n \"file-entry-cache\": [\"file-entry-cache@8.0.0\", \"\", { \"dependencies\": { \"flat-cache\": \"^4.0.0\" } }, \"sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==\"],\n\n \"fill-range\": [\"fill-range@7.1.1\", \"\", { \"dependencies\": { \"to-regex-range\": \"^5.0.1\" } }, \"sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==\"],\n\n \"find-up\": [\"find-up@5.0.0\", \"\", { \"dependencies\": { \"locate-path\": \"^6.0.0\", \"path-exists\": \"^4.0.0\" } }, \"sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==\"],\n\n \"flat-cache\": [\"flat-cache@4.0.1\", \"\", { \"dependencies\": { \"flatted\": \"^3.2.9\", \"keyv\": \"^4.5.4\" } }, \"sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==\"],\n\n \"flatted\": [\"flatted@3.3.3\", \"\", {}, \"sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==\"],\n\n \"fsevents\": [\"fsevents@2.3.3\", \"\", { \"os\": \"darwin\" }, \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\"],\n\n \"get-caller-file\": [\"get-caller-file@2.0.5\", \"\", {}, \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\"],\n\n \"glob-parent\": [\"glob-parent@6.0.2\", \"\", { \"dependencies\": { \"is-glob\": \"^4.0.3\" } }, \"sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==\"],\n\n \"globals\": [\"globals@14.0.0\", \"\", {}, \"sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==\"],\n\n \"has-flag\": [\"has-flag@4.0.0\", \"\", {}, \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\"],\n\n \"ignore\": [\"ignore@5.3.2\", \"\", {}, \"sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==\"],\n\n \"immediate\": [\"immediate@3.0.6\", \"\", {}, \"sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==\"],\n\n \"import-fresh\": [\"import-fresh@3.3.1\", \"\", { \"dependencies\": { \"parent-module\": \"^1.0.0\", \"resolve-from\": \"^4.0.0\" } }, \"sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==\"],\n\n \"imurmurhash\": [\"imurmurhash@0.1.4\", \"\", {}, \"sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==\"],\n\n \"inherits\": [\"inherits@2.0.4\", \"\", {}, \"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==\"],\n\n \"is-binary-path\": [\"is-binary-path@2.1.0\", \"\", { \"dependencies\": { \"binary-extensions\": \"^2.0.0\" } }, \"sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==\"],\n\n \"is-extglob\": [\"is-extglob@2.1.1\", \"\", {}, \"sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==\"],\n\n \"is-fullwidth-code-point\": [\"is-fullwidth-code-point@2.0.0\", \"\", {}, \"sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==\"],\n\n \"is-glob\": [\"is-glob@4.0.3\", \"\", { \"dependencies\": { \"is-extglob\": \"^2.1.1\" } }, \"sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==\"],\n\n \"is-number\": [\"is-number@7.0.0\", \"\", {}, \"sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==\"],\n\n \"isarray\": [\"isarray@1.0.0\", \"\", {}, \"sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==\"],\n\n \"isexe\": [\"isexe@2.0.0\", \"\", {}, \"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\"],\n\n \"jiti\": [\"jiti@2.6.1\", \"\", { \"bin\": { \"jiti\": \"lib/jiti-cli.mjs\" } }, \"sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==\"],\n\n \"js-yaml\": [\"js-yaml@4.1.1\", \"\", { \"dependencies\": { \"argparse\": \"^2.0.1\" }, \"bin\": { \"js-yaml\": \"bin/js-yaml.js\" } }, \"sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==\"],\n\n \"json-buffer\": [\"json-buffer@3.0.1\", \"\", {}, \"sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==\"],\n\n \"json-schema-traverse\": [\"json-schema-traverse@0.4.1\", \"\", {}, \"sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==\"],\n\n \"json-stable-stringify-without-jsonify\": [\"json-stable-stringify-without-jsonify@1.0.1\", \"\", {}, \"sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==\"],\n\n \"jszip\": [\"jszip@3.10.1\", \"\", { \"dependencies\": { \"lie\": \"~3.3.0\", \"pako\": \"~1.0.2\", \"readable-stream\": \"~2.3.6\", \"setimmediate\": \"^1.0.5\" } }, \"sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==\"],\n\n \"keyv\": [\"keyv@4.5.4\", \"\", { \"dependencies\": { \"json-buffer\": \"3.0.1\" } }, \"sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==\"],\n\n \"levn\": [\"levn@0.4.1\", \"\", { \"dependencies\": { \"prelude-ls\": \"^1.2.1\", \"type-check\": \"~0.4.0\" } }, \"sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==\"],\n\n \"lie\": [\"lie@3.3.0\", \"\", { \"dependencies\": { \"immediate\": \"~3.0.5\" } }, \"sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==\"],\n\n \"locate-path\": [\"locate-path@6.0.0\", \"\", { \"dependencies\": { \"p-locate\": \"^5.0.0\" } }, \"sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==\"],\n\n \"lodash.debounce\": [\"lodash.debounce@4.0.8\", \"\", {}, \"sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==\"],\n\n \"lodash.merge\": [\"lodash.merge@4.6.2\", \"\", {}, \"sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==\"],\n\n \"lodash.throttle\": [\"lodash.throttle@4.1.1\", \"\", {}, \"sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==\"],\n\n \"minimatch\": [\"minimatch@3.1.2\", \"\", { \"dependencies\": { \"brace-expansion\": \"^1.1.7\" } }, \"sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==\"],\n\n \"ms\": [\"ms@2.1.3\", \"\", {}, \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\"],\n\n \"natural-compare\": [\"natural-compare@1.4.0\", \"\", {}, \"sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==\"],\n\n \"normalize-path\": [\"normalize-path@3.0.0\", \"\", {}, \"sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==\"],\n\n \"optionator\": [\"optionator@0.9.4\", \"\", { \"dependencies\": { \"deep-is\": \"^0.1.3\", \"fast-levenshtein\": \"^2.0.6\", \"levn\": \"^0.4.1\", \"prelude-ls\": \"^1.2.1\", \"type-check\": \"^0.4.0\", \"word-wrap\": \"^1.2.5\" } }, \"sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==\"],\n\n \"p-limit\": [\"p-limit@3.1.0\", \"\", { \"dependencies\": { \"yocto-queue\": \"^0.1.0\" } }, \"sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==\"],\n\n \"p-locate\": [\"p-locate@5.0.0\", \"\", { \"dependencies\": { \"p-limit\": \"^3.0.2\" } }, \"sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==\"],\n\n \"p-try\": [\"p-try@2.2.0\", \"\", {}, \"sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==\"],\n\n \"pako\": [\"pako@1.0.11\", \"\", {}, \"sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==\"],\n\n \"parent-module\": [\"parent-module@1.0.1\", \"\", { \"dependencies\": { \"callsites\": \"^3.0.0\" } }, \"sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==\"],\n\n \"path-exists\": [\"path-exists@4.0.0\", \"\", {}, \"sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==\"],\n\n \"path-key\": [\"path-key@3.1.1\", \"\", {}, \"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\"],\n\n \"picomatch\": [\"picomatch@2.3.1\", \"\", {}, \"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==\"],\n\n \"prelude-ls\": [\"prelude-ls@1.2.1\", \"\", {}, \"sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==\"],\n\n \"process-nextick-args\": [\"process-nextick-args@2.0.1\", \"\", {}, \"sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==\"],\n\n \"punycode\": [\"punycode@2.3.1\", \"\", {}, \"sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==\"],\n\n \"readable-stream\": [\"readable-stream@2.3.8\", \"\", { \"dependencies\": { \"core-util-is\": \"~1.0.0\", \"inherits\": \"~2.0.3\", \"isarray\": \"~1.0.0\", \"process-nextick-args\": \"~2.0.0\", \"safe-buffer\": \"~5.1.1\", \"string_decoder\": \"~1.1.1\", \"util-deprecate\": \"~1.0.1\" } }, \"sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==\"],\n\n \"readdirp\": [\"readdirp@3.6.0\", \"\", { \"dependencies\": { \"picomatch\": \"^2.2.1\" } }, \"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==\"],\n\n \"require-directory\": [\"require-directory@2.1.1\", \"\", {}, \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\"],\n\n \"require-main-filename\": [\"require-main-filename@2.0.0\", \"\", {}, \"sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==\"],\n\n \"resolve-from\": [\"resolve-from@4.0.0\", \"\", {}, \"sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==\"],\n\n \"safe-buffer\": [\"safe-buffer@5.1.2\", \"\", {}, \"sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==\"],\n\n \"semver\": [\"semver@7.7.3\", \"\", { \"bin\": { \"semver\": \"bin/semver.js\" } }, \"sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==\"],\n\n \"set-blocking\": [\"set-blocking@2.0.0\", \"\", {}, \"sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==\"],\n\n \"setimmediate\": [\"setimmediate@1.0.5\", \"\", {}, \"sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==\"],\n\n \"shebang-command\": [\"shebang-command@2.0.0\", \"\", { \"dependencies\": { \"shebang-regex\": \"^3.0.0\" } }, \"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\"],\n\n \"shebang-regex\": [\"shebang-regex@3.0.0\", \"\", {}, \"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\"],\n\n \"string-width\": [\"string-width@3.1.0\", \"\", { \"dependencies\": { \"emoji-regex\": \"^7.0.1\", \"is-fullwidth-code-point\": \"^2.0.0\", \"strip-ansi\": \"^5.1.0\" } }, \"sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==\"],\n\n \"string_decoder\": [\"string_decoder@1.1.1\", \"\", { \"dependencies\": { \"safe-buffer\": \"~5.1.0\" } }, \"sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==\"],\n\n \"strip-ansi\": [\"strip-ansi@5.2.0\", \"\", { \"dependencies\": { \"ansi-regex\": \"^4.1.0\" } }, \"sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==\"],\n\n \"strip-json-comments\": [\"strip-json-comments@3.1.1\", \"\", {}, \"sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==\"],\n\n \"supports-color\": [\"supports-color@7.2.0\", \"\", { \"dependencies\": { \"has-flag\": \"^4.0.0\" } }, \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\"],\n\n \"tinyglobby\": [\"tinyglobby@0.2.15\", \"\", { \"dependencies\": { \"fdir\": \"^6.5.0\", \"picomatch\": \"^4.0.3\" } }, \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\"],\n\n \"to-regex-range\": [\"to-regex-range@5.0.1\", \"\", { \"dependencies\": { \"is-number\": \"^7.0.0\" } }, \"sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==\"],\n\n \"ts-api-utils\": [\"ts-api-utils@2.3.0\", \"\", { \"peerDependencies\": { \"typescript\": \">=4.8.4\" } }, \"sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==\"],\n\n \"type-check\": [\"type-check@0.4.0\", \"\", { \"dependencies\": { \"prelude-ls\": \"^1.2.1\" } }, \"sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==\"],\n\n \"typescript\": [\"typescript@5.9.3\", \"\", { \"bin\": { \"tsc\": \"bin/tsc\", \"tsserver\": \"bin/tsserver\" } }, \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\"],\n\n \"typescript-eslint\": [\"typescript-eslint@8.50.1\", \"\", { \"dependencies\": { \"@typescript-eslint/eslint-plugin\": \"8.50.1\", \"@typescript-eslint/parser\": \"8.50.1\", \"@typescript-eslint/typescript-estree\": \"8.50.1\", \"@typescript-eslint/utils\": \"8.50.1\" }, \"peerDependencies\": { \"eslint\": \"^8.57.0 || ^9.0.0\", \"typescript\": \">=4.8.4 <6.0.0\" } }, \"sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==\"],\n\n \"undici-types\": [\"undici-types@7.16.0\", \"\", {}, \"sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==\"],\n\n \"uri-js\": [\"uri-js@4.4.1\", \"\", { \"dependencies\": { \"punycode\": \"^2.1.0\" } }, \"sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==\"],\n\n \"util-deprecate\": [\"util-deprecate@1.0.2\", \"\", {}, \"sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==\"],\n\n \"which\": [\"which@2.0.2\", \"\", { \"dependencies\": { \"isexe\": \"^2.0.0\" }, \"bin\": { \"node-which\": \"./bin/node-which\" } }, \"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\"],\n\n \"which-module\": [\"which-module@2.0.1\", \"\", {}, \"sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==\"],\n\n \"word-wrap\": [\"word-wrap@1.2.5\", \"\", {}, \"sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==\"],\n\n \"wrap-ansi\": [\"wrap-ansi@5.1.0\", \"\", { \"dependencies\": { \"ansi-styles\": \"^3.2.0\", \"string-width\": \"^3.0.0\", \"strip-ansi\": \"^5.0.0\" } }, \"sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==\"],\n\n \"y18n\": [\"y18n@4.0.3\", \"\", {}, \"sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==\"],\n\n \"yargs\": [\"yargs@13.3.2\", \"\", { \"dependencies\": { \"cliui\": \"^5.0.0\", \"find-up\": \"^3.0.0\", \"get-caller-file\": \"^2.0.1\", \"require-directory\": \"^2.1.1\", \"require-main-filename\": \"^2.0.0\", \"set-blocking\": \"^2.0.0\", \"string-width\": \"^3.0.0\", \"which-module\": \"^2.0.0\", \"y18n\": \"^4.0.0\", \"yargs-parser\": \"^13.1.2\" } }, \"sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==\"],\n\n \"yargs-parser\": [\"yargs-parser@13.1.2\", \"\", { \"dependencies\": { \"camelcase\": \"^5.0.0\", \"decamelize\": \"^1.2.0\" } }, \"sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==\"],\n\n \"yocto-queue\": [\"yocto-queue@0.1.0\", \"\", {}, \"sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==\"],\n\n \"@eslint-community/eslint-utils/eslint-visitor-keys\": [\"eslint-visitor-keys@3.4.3\", \"\", {}, \"sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==\"],\n\n \"@typescript-eslint/eslint-plugin/ignore\": [\"ignore@7.0.5\", \"\", {}, \"sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==\"],\n\n \"@typescript-eslint/typescript-estree/minimatch\": [\"minimatch@9.0.5\", \"\", { \"dependencies\": { \"brace-expansion\": \"^2.0.1\" } }, \"sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==\"],\n\n \"chokidar/glob-parent\": [\"glob-parent@5.1.2\", \"\", { \"dependencies\": { \"is-glob\": \"^4.0.1\" } }, \"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==\"],\n\n \"eslint/chalk\": [\"chalk@4.1.2\", \"\", { \"dependencies\": { \"ansi-styles\": \"^4.1.0\", \"supports-color\": \"^7.1.0\" } }, \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\"],\n\n \"tinyglobby/picomatch\": [\"picomatch@4.0.3\", \"\", {}, \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\"],\n\n \"wrap-ansi/ansi-styles\": [\"ansi-styles@3.2.1\", \"\", { \"dependencies\": { \"color-convert\": \"^1.9.0\" } }, \"sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==\"],\n\n \"yargs/find-up\": [\"find-up@3.0.0\", \"\", { \"dependencies\": { \"locate-path\": \"^3.0.0\" } }, \"sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==\"],\n\n \"@typescript-eslint/typescript-estree/minimatch/brace-expansion\": [\"brace-expansion@2.0.2\", \"\", { \"dependencies\": { \"balanced-match\": \"^1.0.0\" } }, \"sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==\"],\n\n \"wrap-ansi/ansi-styles/color-convert\": [\"color-convert@1.9.3\", \"\", { \"dependencies\": { \"color-name\": \"1.1.3\" } }, \"sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==\"],\n\n \"yargs/find-up/locate-path\": [\"locate-path@3.0.0\", \"\", { \"dependencies\": { \"p-locate\": \"^3.0.0\", \"path-exists\": \"^3.0.0\" } }, \"sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==\"],\n\n \"wrap-ansi/ansi-styles/color-convert/color-name\": [\"color-name@1.1.3\", \"\", {}, \"sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==\"],\n\n \"yargs/find-up/locate-path/p-locate\": [\"p-locate@3.0.0\", \"\", { \"dependencies\": { \"p-limit\": \"^2.0.0\" } }, \"sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==\"],\n\n \"yargs/find-up/locate-path/path-exists\": [\"path-exists@3.0.0\", \"\", {}, \"sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==\"],\n\n \"yargs/find-up/locate-path/p-locate/p-limit\": [\"p-limit@2.3.0\", \"\", { \"dependencies\": { \"p-try\": \"^2.0.0\" } }, \"sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==\"],\n }\n}\n",
6
+ "/data/filters/ManifestBuilds/index.ts": "import { ConfigManagers, Filters } from \"@axeth/core\";\r\nimport type { Manifest } from \"./types/Manifest.ts\";\r\nimport chalk from \"chalk\";\r\nimport * as fs from \"fs\";\r\n\r\nclass ManifestBuilds extends Filters {\r\n private bpManifest = `${this.basePath}/BP/manifest.json`;\r\n private rpManifest = `${this.basePath}/RP/manifest.json`;\r\n private bpDirectory = `${this.basePath}/BP`;\r\n private rpDirectory = `${this.basePath}/RP`;\r\n private config = new ConfigManagers().getConfig();\r\n\r\n override async apply(): Promise<void> {\r\n await null;\r\n this.msg(`Looking for manifests...`);\r\n const BPManifest = this.readManifest(this.bpManifest);\r\n const RPManifest = this.readManifest(this.rpManifest);\r\n\r\n if (!BPManifest || !RPManifest) {\r\n this.msg(chalk.red(`No manifest.json found in BP or RP directories.`));\r\n return;\r\n } else {\r\n const config = await this.config;\r\n const BPUUIDs = this.uuidGen(config.meta.seed, 2);\r\n const RPUUIDs = this.uuidGen(config.meta.seed + 1000, 2);\r\n\r\n BPManifest.header.name = config.meta.name + `@${config.meta.version.join(\".\")} BP`;\r\n RPManifest.header.name = config.meta.name + `@${config.meta.version.join(\".\")} RP`;\r\n BPManifest.header.description = config.meta.description || BPManifest.header.description;\r\n RPManifest.header.description = config.meta.description || RPManifest.header.description;\r\n BPManifest.format_version = config.format_version;\r\n RPManifest.format_version = config.format_version;\r\n //UUID\r\n BPManifest.header.uuid = BPUUIDs[0] || \"\";\r\n //Script Module\r\n BPManifest.modules.find((x) => x.language === \"javascript\")!.uuid = BPUUIDs[1] || \"\";\r\n //UUID\r\n RPManifest.header.uuid = RPUUIDs[0] || \"\";\r\n //Resource Module\r\n RPManifest.modules.find((x) => x.type === \"resources\")!.uuid = RPUUIDs[1] || \"\";\r\n\r\n //Dependencies\r\n const bpDep = BPManifest.dependencies?.find((dep) => dep.uuid);\r\n if (bpDep) {\r\n bpDep.uuid = RPManifest.header.uuid;\r\n }\r\n const rpDep = RPManifest.dependencies?.find((dep) => dep.uuid);\r\n if (rpDep) {\r\n rpDep.uuid = BPManifest.header.uuid;\r\n }\r\n\r\n\r\n this.fileManagers.writeFile(\r\n this.bpManifest,\r\n JSON.stringify(BPManifest, null, 2),\r\n );\r\n this.fileManagers.writeFile(\r\n this.rpManifest,\r\n JSON.stringify(RPManifest, null, 2),\r\n );\r\n\r\n this.msg(`Updated manifest ${chalk.green(\"successfully\")}.`);\r\n\r\n //Copy pack icons if exist\r\n this.fileManagers.removeFile(this.bpDirectory + \"/pack_icon.png\");\r\n this.fileManagers.removeFile(this.rpDirectory + \"/pack_icon.png\");\r\n\r\n this.fileManagers.copyFile(\r\n config.meta.icon,\r\n this.bpDirectory + \"/pack_icon.png\",\r\n );\r\n this.fileManagers.copyFile(\r\n config.meta.icon,\r\n this.rpDirectory + \"/pack_icon.png\",\r\n )\r\n }\r\n }\r\n\r\n private uuidGen(seed: number, count: number): string[] {\r\n const uuids: string[] = [];\r\n\r\n // simple deterministic seeded PRNG (mulberry32-like)\r\n const rnd = (function (a: number) {\r\n return function () {\r\n a |= 0;\r\n a = (a + 0x6D2B79F5) | 0;\r\n let t = Math.imul(a ^ (a >>> 15), 1 | a);\r\n t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;\r\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\r\n };\r\n })(seed);\r\n\r\n for (let i = 0; i < count; i++) {\r\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = Math.floor(rnd() * 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n uuids.push(uuid);\r\n }\r\n return uuids;\r\n }\r\n\r\n public readManifest(path: string): Manifest | null {\r\n try {\r\n return JSON.parse(\r\n fs.readFileSync(path, \"utf-8\"),\r\n ) as Manifest;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport { ManifestBuilds };\r\n",
7
+ "/data/filters/ManifestBuilds/types/Manifest.ts": "export interface Manifest {\r\n format_version: number;\r\n header: ManifestHeader;\r\n modules: ManifestModule[];\r\n dependencies?: ManifestDependency[];\r\n subpacks?: Subpack[];\r\n capabilities?: string[];\r\n}\r\n\r\nexport type Version = [number, number, number];\r\nexport type UUID = string;\r\n\r\nexport interface ManifestHeader {\r\n name: string;\r\n description: string;\r\n uuid: UUID;\r\n version: Version;\r\n min_engine_version: Version;\r\n lock_template?: boolean;\r\n}\r\n\r\nexport interface ManifestModule {\r\n uuid: UUID;\r\n version: Version;\r\n type: ModuleType;\r\n description?: string;\r\n language?: string;\r\n}\r\n\r\nexport type ModuleType =\r\n | 'resources' // Resource Pack content\r\n | 'data' // Behavior Pack content (Scripts, Loot Tables, etc.)\r\n | 'skin_pack' // Skin Pack content\r\n | 'interface' // UI content\r\n | 'world_template'\r\n | 'script' // Client-side scripting\r\n | 'resource' // Legacy name for 'resources'\r\n | 'client_data' // Client-side behavior (e.g., animations, render controllers)\r\n | 'world_dependencies';\r\n\r\nexport interface ManifestDependency {\r\n uuid: UUID;\r\n version: Version;\r\n}\r\n\r\nexport interface Subpack {\r\n folder_name: string;\r\n name: string;\r\n}",
8
+ "/data/filters/TSBuilds/index.ts": "import { Filters } from \"@axeth/core\";\r\nimport type { Manifest } from \"./types/Manifest.ts\";\r\nimport * as esbuild from \"esbuild\";\r\nimport { parseArgs } from \"./utils/parseArgs.ts\";\r\nimport chalk from \"chalk\";\r\nimport { spawn } from \"bun\";\r\nimport * as fs from \"fs\";\r\n\r\nconst [settings] = parseArgs(Bun.argv.slice(2));\r\n\r\n\r\nclass TSBuilds extends Filters {\r\n private typescript = \"ts\";\r\n private bpPath = `${this.basePath}/BP`;\r\n\r\n override async apply(): Promise<void> {\r\n const manifest = this.readManifest(this.bpPath);\r\n if (!manifest) return;\r\n const entryPath = manifest.modules.find((x) => x.entry)?.entry;\r\n if (!entryPath) return;\r\n\r\n const scriptPath = \"./packs\" + \"/\" + entryPath.replace(\".js\", `.${this.typescript}`);\r\n\r\n // Run linter before building (surface output to console)\r\n this.msg(`Running linter: ${chalk.yellow(\"bunx eslint ./packs\")}`);\r\n const lintProcess = spawn([\"bunx\", \"eslint\", \"./packs\"], {\r\n stdout: \"inherit\",\r\n stderr: \"inherit\",\r\n });\r\n\r\n const exitCode = await lintProcess.exited;\r\n\r\n if (exitCode !== 0) {\r\n this.msg(`${chalk.red(\"✗\")} Linting failed. Fix errors before building.`);\r\n return;\r\n }\r\n\r\n this.msg(`${chalk.green(\"✓\")} Linting passed`);\r\n\r\n // Build AxethLib.js first (contains @axeth/api)\r\n this.msg(`Building library: ${chalk.blue(\"AxethLib.js\")}`);\r\n await esbuild.build({\r\n bundle: true,\r\n entryPoints: [\"@axeth/api/runtimes\"],\r\n external: [\r\n \"@minecraft/server\",\r\n \"@minecraft/server-ui\",\r\n ],\r\n format: \"esm\",\r\n outfile: this.bpPath + \"/scripts/AxethLib.js\",\r\n minify: true,\r\n keepNames: false,\r\n sourcemap: true,\r\n ...settings,\r\n }).then(() => {\r\n this.msg(`Successfully built library: ${chalk.green(\"BP/scripts/AxethLib.js\")}`);\r\n });\r\n\r\n // Build main script (excludes @axeth/api)\r\n this.msg(`Building script: ${chalk.green(scriptPath)}`);\r\n await esbuild.build({\r\n plugins: [\r\n {\r\n name: \"alias-axeth-api\",\r\n setup(build) {\r\n build.onResolve({ filter: /^@axeth\\/api$/ }, () => {\r\n return { path: \"./AxethLib.js\", external: true };\r\n });\r\n },\r\n },\r\n ],\r\n bundle: true,\r\n entryPoints: [\r\n scriptPath,\r\n ],\r\n external: [\r\n \"@minecraft/server\",\r\n \"@minecraft/server-ui\",\r\n ],\r\n format: \"esm\",\r\n outfile: this.bpPath + \"/\" + entryPath,\r\n sourcemap: true,\r\n ...settings,\r\n }).then(() => {\r\n this.msg(`Successfully built script: ${chalk.green(\"BP/\" + entryPath)}`);\r\n });\r\n\r\n // this.fileManagers.removeDirectory(this.basePath + \"/\" + \"scripts\");\r\n }\r\n\r\n public readManifest(bpPath: string): Manifest | null {\r\n try {\r\n return JSON.parse(\r\n fs.readFileSync(`${bpPath}/manifest.json`, \"utf-8\"),\r\n ) as Manifest;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport { TSBuilds };\r\n",
9
+ "/data/filters/TSBuilds/types/Manifest.ts": "export interface Manifest {\r\n format_version: number;\r\n modules: [\r\n {\r\n description: string;\r\n language: string;\r\n type: string;\r\n uuid: string;\r\n version: [number, number, number];\r\n entry: string;\r\n },\r\n ];\r\n}\r\n",
10
+ "/data/filters/TSBuilds/utils/parseArgs.ts": "export function parseArgs(args: string[]): [Record<string, unknown>, ...string[]] {\r\n try {\r\n const settings = JSON.parse(args[0] || \"{}\");\r\n return [settings, ...args.slice(1)];\r\n } catch {\r\n return [{}, ...args];\r\n }\r\n}\r\n",
11
+ "/eslint.config.ts": "import eslint from '@eslint/js';\r\nimport { defineConfig } from 'eslint/config';\r\nimport tseslint from 'typescript-eslint';\r\n\r\nexport default defineConfig(\r\n eslint.configs.recommended,\r\n tseslint.configs.recommended,\r\n {\r\n rules: {\r\n \"no-unused-vars\": \"off\",\r\n \"@typescript-eslint/no-unused-vars\": [\"error\", {\r\n argsIgnorePattern: \"^_\"\r\n }]\r\n }\r\n }\r\n);\r\n",
12
+ "/index.ts": "import { AxethCore } from \"@axeth/core\";\r\n\r\nnew AxethCore();",
13
+ "/package.json": "{\n \"name\": \"{{project_name}}\",\n \"module\": \"index.ts\",\n \"type\": \"module\",\n \"private\": true,\n \"devDependencies\": {\n \"@types/bun\": \"latest\",\n \"chokidar-cli\": \"^3.0.0\",\n \"jiti\": \"^2.6.1\"\n },\n \"peerDependencies\": {\n \"typescript\": \"^5\"\n },\n \"scripts\": {\n \"lint\": \"bunx eslint\",\n \"dev\": \"bun run index.ts --dev\",\n \"build\": \"bun run ./index.ts --build\",\n \"packs\": \"bun run ./index.ts --packs\",\n \"clean\": \"bun run ./index.ts --clean\"\n },\n \"dependencies\": {\n \"@axeth/api\": \"{{axethApiVersion}}\",\n \"@axeth/core\": \"{{axethCoreVersion}}\",\n \"@eslint/js\": \"^9.39.2\",\n \"chalk\": \"^5.6.2\",\n \"esbuild\": \"^0.27.2\",\n \"eslint\": \"^9.39.2\",\n \"jszip\": \"^3.10.1\",\n \"typescript-eslint\": \"^8.50.1\"\n }\n}",
14
+ "/packs/BP/manifest.json": "{\r\n \"format_version\": 2,\r\n \"header\": {\r\n \"name\": \"{{pack_name}}\",\r\n \"description\": \"{{pack_description}}\",\r\n \"uuid\": \"<uuid>\",\r\n \"version\": [\r\n 1,\r\n 0,\r\n 0\r\n ],\r\n \"min_engine_version\": [\r\n 1,\r\n 21,\r\n 60\r\n ]\r\n },\r\n \"modules\": [\r\n {\r\n \"description\": \"Behavior Pack\",\r\n \"language\": \"javascript\",\r\n \"type\": \"script\",\r\n \"uuid\": \"<uuid>\",\r\n \"version\": [\r\n 1,\r\n 0,\r\n 0\r\n ],\r\n \"entry\": \"scripts/index.js\"\r\n }\r\n ],\r\n \"dependencies\": [\r\n {\r\n \"module_name\": \"@minecraft/server\",\r\n \"version\": \"{{minecraftServerVersion}}\"\r\n },\r\n {\r\n \"module_name\": \"@minecraft/server-ui\",\r\n \"version\": \"{{minecraftServerUIVersion}}\"\r\n },\r\n {\r\n \"uuid\": \"<uuid>\",\r\n \"version\": [\r\n 1,\r\n 0,\r\n 0\r\n ]\r\n }\r\n ],\r\n \"metadata\": {\r\n \"product_type\": \"addon\",\r\n \"authors\": [\r\n \"KisuX3\"\r\n ]\r\n }\r\n}",
15
+ "/packs/config.json": "{\n \"format_version\": 2,\n \"meta\": {\n \"name\": \"{{pack_name}}\",\n \"icon\": \"./packs/pack_icon.png\",\n \"version\": \"{{version}}\",\n \"description\": \"{{pack_description}}\",\n \"seed\": \"{{seed}}\",\n \"authors\": \"{{author_name}}\"\n },\n \"filters\": [\n {\n \"name\": \"TSBuilds\",\n \"config\": {}\n },\n {\n \"name\": \"ManifestBuilds\",\n \"config\": {}\n }\n ],\n \"env\": {}\n}",
16
+ "/packs/pack_icon.png": "�PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000�\u0000\u0000\u0000�\u0004\u0003\u0000\u0000\u0000y�z\u001e\u0000\u0000\u0001qiCCPicc\u0000\u0000xڕ�;HBQ\u001c��Z���PPD�\u001d,\br��F�@\u0002\u00031\u0003����\u0017x�r���\u0018�\n\r=�����Z\u001bZ� �\u0001���T�\u0012r�\u0007)%0�?}���?��;�dU�j�n\u0014�H0 ��+R�3-\f�A\u000fc�j�g��\u0010M��\u0016\u0017��O����[KX*�$���͂�u`z��\u0017�\u0005�մ�9>\u0005�M炎�E_��E8%�\u001ba3\u001a�s�\u000fH�\u0006+\rVӦ�x\n�j��9�լ\t���lQ�V.�+a,/�>0L�\u0005\u0016\t#�P$C�\u0002>2\u0018HXD\b\u0012h2?��\u000fSD!K\u0006\u0015�yr�Ȉy�\u001f���JNN\u0000��\n@�m��@�6T˶�yh��#�<…Q��U`�\u001d<�z�{\u0000��pvY�);p�\u0005�\u000fyٔ\u0001�\u0000�d\u0012^O�;\u000e}�й*r�Y��\u000e�%\b]��>���w�ɻ�\u001bs�k�w~_~}r�s��8\u0000\u0000\u0000\u001bPLTE��������W��Eۢ\u0013�d\u0011u(\u0002T$\tT\u0012\t��\u000e\u0000\u0000\u0000�IDATx��Ա\r� \fEQV�\nY!+��W`\u0005V`���\u0014\u0004ŗ���\n,��.D�yM\u0001\u0002\u0002�\u000b�\u0015 w\u0001\u0010��b�TWm\u0006\b�\u00164Sե��*ԣ�2\r\b�\f�u���wE�jQ\u0001\u0001���\u001ee\u0015\u00100-���<\u001b\n\u00100\u000f�T�y�3\u0001\u0001\u0001��2X\u0015 `.pU�\u001ci[��\u0019�P;�V(@���\u001b�j�v\u0016 `Z�j{7�-@@@\"r�\u0007~�T��cGt\u0000\u0000\u0000\u0000IEND�B`�",
17
+ "/packs/RP/manifest.json": "{\r\n \"format_version\": 2,\r\n \"header\": {\r\n \"name\": \"{{pack_name}}\",\r\n \"description\": \"{{pack_description}}\",\r\n \"uuid\": \"<uuid>\",\r\n \"version\": [\r\n 1,\r\n 0,\r\n 0\r\n ],\r\n \"min_engine_version\": [\r\n 1,\r\n 21,\r\n 60\r\n ]\r\n },\r\n \"modules\": [\r\n {\r\n \"description\": \"Resource Pack\",\r\n \"type\": \"resources\",\r\n \"uuid\": \"<uuid>\",\r\n \"version\": [\r\n 1,\r\n 0,\r\n 0\r\n ]\r\n }\r\n ],\r\n \"dependencies\": [\r\n {\r\n \"uuid\": \"<uuid>\",\r\n \"version\": [\r\n 1,\r\n 0,\r\n 0\r\n ]\r\n }\r\n ]\r\n}",
18
+ "/packs/scripts/index.ts": "import { SystemBase } from \"@axeth/api/runtimes\";\r\nimport { SamplePlugin } from \"./plugins/SamplePlugin/index.ts\";\r\n\r\nclass AxethAPI extends SystemBase {\r\n public override onLoad(): void {\r\n this.pluginManagers.registerPlugin(SamplePlugin)\r\n }\r\n};\r\n\r\nnew AxethAPI();",
19
+ "/packs/scripts/plugins/SamplePlugin/index.ts": "import { PluginBase } from \"@axeth/api/runtimes\";\r\n\r\nclass SamplePlugin extends PluginBase {\r\n public override onLoad(): void {\r\n this.logger.info(\"SamplePlugin has been loaded!\");\r\n }\r\n}\r\n\r\nexport { SamplePlugin };",
20
+ "/tsconfig.json": "{\n \"compilerOptions\": {\n // Environment setup & latest features\n \"lib\": [\"ESNext\"],\n \"target\": \"ESNext\",\n \"module\": \"Preserve\",\n \"moduleDetection\": \"force\",\n \"jsx\": \"react-jsx\",\n \"allowJs\": true,\n\n // Bundler mode\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"verbatimModuleSyntax\": true,\n \"noEmit\": true,\n\n // Best practices\n \"strict\": true,\n \"skipLibCheck\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noUncheckedIndexedAccess\": true,\n \"noImplicitOverride\": true,\n\n // Some stricter flags (disabled by default)\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"noImplicitAny\": true,\n \"noPropertyAccessFromIndexSignature\": false,\n\n \"paths\": {\n \"@axeth/api\": [\"./lib/@axeth/api/index.ts\"],\n \"@minecraft/server\": [\"./node_modules/@minecraft/server\"],\n \"@minecraft/server-ui\": [\"./node_modules/@minecraft/server-ui\"],\n \"@minecraft/math\": [\"./node_modules/@minecraft/math\"]\n }\n }\n}\n"
21
+ }
package/src/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bun
2
+
3
+ import { AxethCLI } from "./class/AxethCLI";
4
+
5
+ new AxethCLI();
package/tsconfig.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "../../config/tsconfig.default.json",
3
+ "include": ["src"],
4
+ }
package/tsup.config.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from "tsup";
2
+ import baseConfig from "../../config/tsup.config.default";
3
+
4
+ export default defineConfig({
5
+ ...baseConfig,
6
+ });
@@ -1,25 +0,0 @@
1
- declare class AxethCLI {
2
- private promptGroups;
3
- private promptDefaults;
4
- private template;
5
- private readonly axethAPI;
6
- private readonly axethCore;
7
- constructor();
8
- private version;
9
- private init;
10
- private generateTemplate;
11
- private addonInfoPrompt;
12
- private configPrompt;
13
- private getMinecraftServerVersion;
14
- private getMinecraftServerUIVersion;
15
- private registerPrompt;
16
- private getAxethCoreVersion;
17
- private getAxethApiVersion;
18
- runPrompts(groupId: string, onCancel?: () => void): Promise<{
19
- [x: string]: any;
20
- }>;
21
- private registerIntro;
22
- private runCommand;
23
- }
24
- export { AxethCLI };
25
- //# sourceMappingURL=AxethCLI.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AxethCLI.d.ts","sourceRoot":"","sources":["../../src/class/AxethCLI.ts"],"names":[],"mappings":"AAOA,cAAM,QAAQ;IACV,OAAO,CAAC,YAAY,CAA2D;IAC/E,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;;YAQ7B,OAAO;YAMP,IAAI;YAmCJ,gBAAgB;YAiBhB,eAAe;YAiBf,YAAY;YAoBZ,yBAAyB;YAQzB,2BAA2B;IAOzC,OAAO,CAAC,cAAc;YA6BR,mBAAmB;YAQnB,kBAAkB;IAQ1B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI;;;IA0BvD,OAAO,CAAC,aAAa;YAIP,UAAU;CAe3B;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}