@axeth/create-cli 2.1.3 → 2.1.4

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,25 @@
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
@@ -0,0 +1 @@
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"}
@@ -1,224 +1,199 @@
1
- import * as prompt from "@clack/prompts";
2
- import color from "colors";
3
- import { TemplateGenerators } from "./TemplateGenerators.js";
4
- import fs from "fs-extra";
5
- import path from "path";
6
- import { exec, spawn } from "child_process";
7
-
8
- class AxethCLI {
9
- private promptGroups: Record<string, Record<string, (opts?: any) => any>> = {};
10
- private promptDefaults: Record<string, Record<string, any>> = {};
11
- private template: TemplateGenerators;
12
-
13
- private readonly axethAPI = `@axeth/api`;
14
- private readonly axethCore = `@axeth/core`;
15
-
16
- constructor() {
17
- console.clear();
18
- this.template = new TemplateGenerators();
19
- this.init();
20
- }
21
-
22
- private async version() {
23
- const url = new URL("../../package.json", import.meta.url);
24
- const pkgData = await Bun.file(url).json();
25
- return pkgData.version;
26
- }
27
-
28
- private async init() {
29
- const version = await this.version();
30
- const addonInfo = await this.addonInfoPrompt(version, () => {
31
- process.exit(0);
32
- });
33
- const config = await this.configPrompt();
34
- const minecraftServerVersion = await this.getMinecraftServerVersion();
35
- const minecraftServerUIVersion = await this.getMinecraftServerUIVersion();
36
- const spinner = prompt.spinner({ indicator: "dots" });
37
-
38
- await this.generateTemplate(addonInfo, config, minecraftServerVersion, minecraftServerUIVersion, spinner);
39
-
40
- const projectDir = path.join(process.cwd(), (addonInfo.addonName as string).replace(/\s+/g, "-").toLowerCase());
41
-
42
- //cd and bun run lint
43
- spinner.start("Linting generated add-on...");
44
- await this.runCommand("bun run lint", projectDir).catch((err) => {
45
- spinner.stop("Linting failed.");
46
- console.error(color.red(err));
47
- process.exit(1);
48
- });
49
- spinner.stop("Add-on linted successfully.");
50
- const openVSCode = await prompt.confirm({
51
- message: "Open on VSCode?",
52
- initialValue: false
53
- });
54
-
55
- if (openVSCode === true) {
56
- spinner.start("Opening VSCode...");
57
- await this.runCommand(`code "${projectDir}"`);
58
- spinner.stop("VSCode opened.");
59
- }
60
- prompt.outro(color.green(`\n Successfully created add-on: ${addonInfo.addonName}\n`));
61
- }
62
-
63
- private async generateTemplate(addonInfo: { [x: string]: any }, config: { [x: string]: any }, minecraftServerVersion: string, minecraftServerUIVersion: string, spinner: any) {
64
- await this.template.generate({
65
- "project_name": (addonInfo.addonName as string).replace(/\s+/g, "-").toLowerCase(),
66
- "axethApiVersion": config.axethApiVersion,
67
- "pack_name": addonInfo.addonName,
68
- "pack_description": addonInfo.description,
69
- "author_name": (addonInfo.authors as string).split(",").map((name: string) => name.trim()),
70
- "version": addonInfo.version.split(".").map((num: string) => parseInt(num, 10)),
71
- "seed": Math.floor(Math.random() * 1000000),
72
- "axethApiName": this.axethAPI,
73
- "axethCoreName": this.axethCore,
74
- "axethCoreVersion": config.axethCoreVersion,
75
- "minecraftServerUIVersion": minecraftServerUIVersion,
76
- "minecraftServerVersion": minecraftServerVersion
77
- }, spinner);
78
- }
79
-
80
- private async addonInfoPrompt(version: string, onCancel?: () => void) {
81
- return await new Promise<{ [x: string]: any }>((resolve) => {
82
- this.registerIntro(
83
- "\n _ _ \n /_\\ __ _____| |_ \n / _ \\ \\ \\ / -_) _|\n /_/ \\_\\/\\_\\_\\___|\\__|\n ",
84
- "Axeth CLI",
85
- version,
86
- );
87
- this.registerPrompt("addonInfo", "addonName", "Add-on Name", "text", { placeholder: "My-Addon" });
88
- this.registerPrompt("addonInfo", "description", "Description", "text", { placeholder: "This addon create for Minecraft Bedrock (Axeth)" });
89
- this.registerPrompt("addonInfo", "version", "Version", "text", { placeholder: "1.0.0" });
90
- this.registerPrompt("addonInfo", "authors", "Authors", "text", { placeholder: "YourName,Axeth" });
91
- this.runPrompts("addonInfo", onCancel).then((responses) => {
92
- resolve(responses);
93
- })
94
- })
95
- }
96
-
97
- private async configPrompt() {
98
- return new Promise<{ [x: string]: any }>(async (resolve) => {
99
- const spinner = prompt.spinner({ indicator: "dots" });
100
- spinner.start("Fetching latest Axeth API version...");
101
- const versions = await this.getAxethApiVersion();
102
- spinner.stop(`Fetched @axeth/api ${versions.length} versions.`);
103
- this.registerPrompt("config", "axethApiVersion", "Select Axeth API version", "select", {
104
- options: versions.slice(0, 10).map((ver) => ({ label: ver, value: ver })),
105
- initial: versions[0],
106
- });
107
- const axethCoreVersion = await this.getAxethCoreVersion();
108
- await this.runPrompts("config", () => { process.exit(0); }).then((response) => {
109
- resolve({
110
- axethApiVersion: response.axethApiVersion,
111
- axethCoreVersion: axethCoreVersion,
112
- });
113
- });
114
- })
115
- }
116
-
117
- private async getMinecraftServerVersion() {
118
- const moduleData: any = await fetch(`https://registry.npmjs.org/@minecraft/server`)
119
- .then(res => res.json());
120
-
121
- const distTag = moduleData["dist-tags"];
122
- return distTag.latest;
123
- }
124
-
125
- private async getMinecraftServerUIVersion() {
126
- const moduleData: any = await fetch(`https://registry.npmjs.org/@minecraft/server-ui`)
127
- .then(res => res.json());
128
- const distTag = moduleData["dist-tags"];
129
- return distTag.latest;
130
- }
131
-
132
- private registerPrompt(groupId: string, key: string, message: string, type: "text" | "password" | "confirm" | "select" | "multiselect" = "text", options: any = {}) {
133
- if (!this.promptGroups[groupId]) this.promptGroups[groupId] = {};
134
- this.promptDefaults[groupId] = this.promptDefaults[groupId] || {};
135
- switch (type) {
136
- case "text":
137
- this.promptGroups[groupId][key] = () => prompt.text({ message, ...options });
138
- this.promptDefaults[groupId][key] = options.placeholder || undefined;
139
- break;
140
- case "password":
141
- this.promptGroups[groupId][key] = () => prompt.password({ message, ...options });
142
- this.promptDefaults[groupId][key] = options.placeholder || undefined;
143
- break;
144
- case "confirm":
145
- this.promptGroups[groupId][key] = () => prompt.confirm({ message, ...options });
146
- this.promptDefaults[groupId][key] = options.initial || undefined;
147
- break;
148
- case "select":
149
- this.promptGroups[groupId][key] = () => prompt.select({ message, ...options });
150
- this.promptDefaults[groupId][key] = options.initial || undefined;
151
- break;
152
- case "multiselect":
153
- this.promptGroups[groupId][key] = () => prompt.multiselect({ message, ...options });
154
- this.promptDefaults[groupId][key] = options.initial || undefined;
155
- break;
156
- default:
157
- throw new Error(`Unknown prompt type: ${type}`);
158
- }
159
- }
160
-
161
- private async getAxethCoreVersion() {
162
- const moduleData: any = await fetch(`https://registry.npmjs.org/${this.axethCore}`)
163
- .then(res => res.json());
164
-
165
- const versions = Object.keys(moduleData.versions);
166
- return versions.reverse()[0];
167
- }
168
-
169
- private async getAxethApiVersion() {
170
- const moduleData: any = await fetch(`https://registry.npmjs.org/${this.axethAPI}`)
171
- .then(res => res.json());
172
-
173
- const versions = Object.keys(moduleData.versions);
174
- return versions.reverse();
175
- }
176
-
177
- async runPrompts(groupId: string, onCancel?: () => void) {
178
- if (!this.promptGroups[groupId] || Object.keys(this.promptGroups[groupId]).length === 0) {
179
- throw new Error(`No prompts to run for group: ${groupId}`);
180
- }
181
-
182
- const responses: { [x: string]: any } = {};
183
- for (const key of Object.keys(this.promptGroups[groupId])) {
184
- const response = await this.promptGroups[groupId][key]!();
185
- if (String(response).includes("clack:cancel")) {
186
- prompt.cancel("Operation cancelled.");
187
- if (onCancel) onCancel();
188
- return {};
189
- }
190
- if (response === undefined) {
191
- if (this.promptDefaults[groupId] && this.promptDefaults[groupId][key] !== undefined) {
192
- responses[key] = this.promptDefaults[groupId][key];
193
- } else {
194
- responses[key] = undefined;
195
- }
196
- } else {
197
- responses[key] = response;
198
- }
199
- }
200
- return responses;
201
- }
202
-
203
- private registerIntro(logo: string, title: string, version: string) {
204
- prompt.intro(color.cyan(logo) + `\n ${title} - v${version}\n`);
205
- }
206
-
207
- private async runCommand(command: string, cwd?: string): Promise<void> {
208
- return new Promise((resolve, reject) => {
209
- const options: any = {};
210
- if (cwd) {
211
- options.cwd = cwd;
212
- }
213
- exec(command, options, (error, stdout, stderr) => {
214
- if (error) {
215
- reject(error);
216
- return;
217
- }
218
- resolve();
219
- });
220
- });
221
- }
222
- }
223
-
224
- export { AxethCLI };
1
+ import * as prompt from "@clack/prompts";
2
+ import color from "colors";
3
+ import { TemplateGenerators } from "./TemplateGenerators.js";
4
+ import path from "path";
5
+ import { exec } from "child_process";
6
+ class AxethCLI {
7
+ promptGroups = {};
8
+ promptDefaults = {};
9
+ template;
10
+ axethAPI = `@axeth/api`;
11
+ axethCore = `@axeth/core`;
12
+ constructor() {
13
+ console.clear();
14
+ this.template = new TemplateGenerators();
15
+ this.init();
16
+ }
17
+ async version() {
18
+ const url = new URL("../../package.json", import.meta.url);
19
+ const pkgData = await Bun.file(url).json();
20
+ return pkgData.version;
21
+ }
22
+ async init() {
23
+ const version = await this.version();
24
+ const addonInfo = await this.addonInfoPrompt(version, () => {
25
+ process.exit(0);
26
+ });
27
+ const config = await this.configPrompt();
28
+ const minecraftServerVersion = await this.getMinecraftServerVersion();
29
+ const minecraftServerUIVersion = await this.getMinecraftServerUIVersion();
30
+ const spinner = prompt.spinner({ indicator: "dots" });
31
+ await this.generateTemplate(addonInfo, config, minecraftServerVersion, minecraftServerUIVersion, spinner);
32
+ const projectDir = path.join(process.cwd(), addonInfo.addonName.replace(/\s+/g, "-").toLowerCase());
33
+ //cd and bun run lint
34
+ spinner.start("Linting generated add-on...");
35
+ await this.runCommand("bun run lint", projectDir).catch((err) => {
36
+ spinner.stop("Linting failed.");
37
+ console.error(color.red(err));
38
+ process.exit(1);
39
+ });
40
+ spinner.stop("Add-on linted successfully.");
41
+ const openVSCode = await prompt.confirm({
42
+ message: "Open on VSCode?",
43
+ initialValue: false
44
+ });
45
+ if (openVSCode === true) {
46
+ spinner.start("Opening VSCode...");
47
+ await this.runCommand(`code "${projectDir}"`);
48
+ spinner.stop("VSCode opened.");
49
+ }
50
+ prompt.outro(color.green(`\n Successfully created add-on: ${addonInfo.addonName}\n`));
51
+ }
52
+ async generateTemplate(addonInfo, config, minecraftServerVersion, minecraftServerUIVersion, spinner) {
53
+ await this.template.generate({
54
+ "project_name": addonInfo.addonName.replace(/\s+/g, "-").toLowerCase(),
55
+ "axethApiVersion": config.axethApiVersion,
56
+ "pack_name": addonInfo.addonName,
57
+ "pack_description": addonInfo.description,
58
+ "author_name": addonInfo.authors.split(",").map((name) => name.trim()),
59
+ "version": addonInfo.version.split(".").map((num) => parseInt(num, 10)),
60
+ "seed": Math.floor(Math.random() * 1000000),
61
+ "axethApiName": this.axethAPI,
62
+ "axethCoreName": this.axethCore,
63
+ "axethCoreVersion": config.axethCoreVersion,
64
+ "minecraftServerUIVersion": minecraftServerUIVersion,
65
+ "minecraftServerVersion": minecraftServerVersion
66
+ }, spinner);
67
+ }
68
+ async addonInfoPrompt(version, onCancel) {
69
+ return await new Promise((resolve) => {
70
+ this.registerIntro("\n _ _ \n /_\\ __ _____| |_ \n / _ \\ \\ \\ / -_) _|\n /_/ \\_\\/\\_\\_\\___|\\__|\n ", "Axeth CLI", version);
71
+ this.registerPrompt("addonInfo", "addonName", "Add-on Name", "text", { placeholder: "My-Addon" });
72
+ this.registerPrompt("addonInfo", "description", "Description", "text", { placeholder: "This addon create for Minecraft Bedrock (Axeth)" });
73
+ this.registerPrompt("addonInfo", "version", "Version", "text", { placeholder: "1.0.0" });
74
+ this.registerPrompt("addonInfo", "authors", "Authors", "text", { placeholder: "YourName,Axeth" });
75
+ this.runPrompts("addonInfo", onCancel).then((responses) => {
76
+ resolve(responses);
77
+ });
78
+ });
79
+ }
80
+ async configPrompt() {
81
+ return new Promise(async (resolve) => {
82
+ const spinner = prompt.spinner({ indicator: "dots" });
83
+ spinner.start("Fetching latest Axeth API version...");
84
+ const versions = await this.getAxethApiVersion();
85
+ spinner.stop(`Fetched @axeth/api ${versions.length} versions.`);
86
+ this.registerPrompt("config", "axethApiVersion", "Select Axeth API version", "select", {
87
+ options: versions.slice(0, 10).map((ver) => ({ label: ver, value: ver })),
88
+ initial: versions[0],
89
+ });
90
+ const axethCoreVersion = await this.getAxethCoreVersion();
91
+ await this.runPrompts("config", () => { process.exit(0); }).then((response) => {
92
+ resolve({
93
+ axethApiVersion: response.axethApiVersion,
94
+ axethCoreVersion: axethCoreVersion,
95
+ });
96
+ });
97
+ });
98
+ }
99
+ async getMinecraftServerVersion() {
100
+ const moduleData = await fetch(`https://registry.npmjs.org/@minecraft/server`)
101
+ .then(res => res.json());
102
+ const distTag = moduleData["dist-tags"];
103
+ return distTag.latest;
104
+ }
105
+ async getMinecraftServerUIVersion() {
106
+ const moduleData = await fetch(`https://registry.npmjs.org/@minecraft/server-ui`)
107
+ .then(res => res.json());
108
+ const distTag = moduleData["dist-tags"];
109
+ return distTag.latest;
110
+ }
111
+ registerPrompt(groupId, key, message, type = "text", options = {}) {
112
+ if (!this.promptGroups[groupId])
113
+ this.promptGroups[groupId] = {};
114
+ this.promptDefaults[groupId] = this.promptDefaults[groupId] || {};
115
+ switch (type) {
116
+ case "text":
117
+ this.promptGroups[groupId][key] = () => prompt.text({ message, ...options });
118
+ this.promptDefaults[groupId][key] = options.placeholder || undefined;
119
+ break;
120
+ case "password":
121
+ this.promptGroups[groupId][key] = () => prompt.password({ message, ...options });
122
+ this.promptDefaults[groupId][key] = options.placeholder || undefined;
123
+ break;
124
+ case "confirm":
125
+ this.promptGroups[groupId][key] = () => prompt.confirm({ message, ...options });
126
+ this.promptDefaults[groupId][key] = options.initial || undefined;
127
+ break;
128
+ case "select":
129
+ this.promptGroups[groupId][key] = () => prompt.select({ message, ...options });
130
+ this.promptDefaults[groupId][key] = options.initial || undefined;
131
+ break;
132
+ case "multiselect":
133
+ this.promptGroups[groupId][key] = () => prompt.multiselect({ message, ...options });
134
+ this.promptDefaults[groupId][key] = options.initial || undefined;
135
+ break;
136
+ default:
137
+ throw new Error(`Unknown prompt type: ${type}`);
138
+ }
139
+ }
140
+ async getAxethCoreVersion() {
141
+ const moduleData = await fetch(`https://registry.npmjs.org/${this.axethCore}`)
142
+ .then(res => res.json());
143
+ const versions = Object.keys(moduleData.versions);
144
+ return versions.reverse()[0];
145
+ }
146
+ async getAxethApiVersion() {
147
+ const moduleData = await fetch(`https://registry.npmjs.org/${this.axethAPI}`)
148
+ .then(res => res.json());
149
+ const versions = Object.keys(moduleData.versions);
150
+ return versions.reverse();
151
+ }
152
+ async runPrompts(groupId, onCancel) {
153
+ if (!this.promptGroups[groupId] || Object.keys(this.promptGroups[groupId]).length === 0) {
154
+ throw new Error(`No prompts to run for group: ${groupId}`);
155
+ }
156
+ const responses = {};
157
+ for (const key of Object.keys(this.promptGroups[groupId])) {
158
+ const response = await this.promptGroups[groupId][key]();
159
+ if (String(response).includes("clack:cancel")) {
160
+ prompt.cancel("Operation cancelled.");
161
+ if (onCancel)
162
+ onCancel();
163
+ return {};
164
+ }
165
+ if (response === undefined) {
166
+ if (this.promptDefaults[groupId] && this.promptDefaults[groupId][key] !== undefined) {
167
+ responses[key] = this.promptDefaults[groupId][key];
168
+ }
169
+ else {
170
+ responses[key] = undefined;
171
+ }
172
+ }
173
+ else {
174
+ responses[key] = response;
175
+ }
176
+ }
177
+ return responses;
178
+ }
179
+ registerIntro(logo, title, version) {
180
+ prompt.intro(color.cyan(logo) + `\n ${title} - v${version}\n`);
181
+ }
182
+ async runCommand(command, cwd) {
183
+ return new Promise((resolve, reject) => {
184
+ const options = {};
185
+ if (cwd) {
186
+ options.cwd = cwd;
187
+ }
188
+ exec(command, options, (error, stdout, stderr) => {
189
+ if (error) {
190
+ reject(error);
191
+ return;
192
+ }
193
+ resolve();
194
+ });
195
+ });
196
+ }
197
+ }
198
+ export { AxethCLI };
199
+ //# sourceMappingURL=AxethCLI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AxethCLI.js","sourceRoot":"","sources":["../../src/class/AxethCLI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ declare class TemplateGenerators {
2
+ private fileList;
3
+ private dependencies;
4
+ constructor();
5
+ registerFile(path: string, content: string): void;
6
+ getFiles(): Map<string, string>;
7
+ generate(config: {
8
+ [key: string]: any;
9
+ }, spinner: any): Promise<void>;
10
+ private runCommand;
11
+ private installDependencies;
12
+ }
13
+ export { TemplateGenerators };
14
+ //# sourceMappingURL=TemplateGenerators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateGenerators.d.ts","sourceRoot":"","sources":["../../src/class/TemplateGenerators.ts"],"names":[],"mappings":"AAIA,cAAM,kBAAkB;IACpB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,YAAY,CAKlB;;IAKK,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAI1C,QAAQ;IAIF,QAAQ,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDpE,UAAU;YAgBV,mBAAmB;CAKpC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,102 +1,95 @@
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 };
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateGenerators.js","sourceRoot":"","sources":["../../src/class/TemplateGenerators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@axeth/create-cli",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "module": "index.ts",
5
+ "files": ["dist"],
5
6
  "type": "module",
6
7
  "bin": {
7
8
  "axeth-cli": "index.ts"
@@ -1,2 +0,0 @@
1
- [?9001h[?1004h[?25l$tsc
2
- ]0;C:\WINDOWS\system32\cmd.exe[?25h[?9001l[?1004l
package/LISENCE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 PUKAN223
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,21 +0,0 @@
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/tsconfig.json DELETED
@@ -1,18 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "NodeNext",
5
- "moduleResolution": "NodeNext",
6
- "outDir": "./dist",
7
- "rootDir": "./src",
8
- "declaration": true,
9
- "declarationMap": true,
10
- "sourceMap": true,
11
- "strict": true,
12
- "esModuleInterop": true,
13
- "skipLibCheck": true,
14
- "forceConsistentCasingInFileNames": true
15
- },
16
- "include": ["src/**/*"],
17
- "exclude": ["node_modules", "dist", "**/*.test.ts"]
18
- }