@nano191225/scriptup 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ export declare function lts(): Promise<void>;
@@ -0,0 +1,59 @@
1
+ import ora from "ora";
2
+ import { getManifest, updateManifest } from "../utils/manifest.js";
3
+ import { getVersions, extractMcVersion } from "../utils/versions.js";
4
+ import { detectPackageManager, installPackage } from "../utils/package-manager.js";
5
+ import * as logger from "../utils/logger.js";
6
+ export async function lts() {
7
+ const spinner = ora("Fetching Minecraft version...").start();
8
+ const mcVersion = await getStableMinecraftVersion();
9
+ spinner.succeed(`Install modules for Minecraft version: ${mcVersion}`);
10
+ const manifest = getManifest();
11
+ logger.log("Manifest loaded. Fetching new module versions...");
12
+ const pm = detectPackageManager();
13
+ const modules = [];
14
+ for (const dependency of manifest.dependencies) {
15
+ const versions = await getVersions(dependency.module_name);
16
+ // LTS: non-stable, non-preview, non-internal, non-beta, non-0.x
17
+ let matched = versions.find((v) => !v.includes("stable") && !v.includes("preview") && !v.includes("internal") && !v.includes("beta") && !v.startsWith("0."));
18
+ if (matched) {
19
+ dependency.version = matched;
20
+ }
21
+ else {
22
+ logger.warn(`No LTS versions found for ${dependency.module_name}. Falling back to stable.`);
23
+ matched = versions.find((v) => v.includes(mcVersion));
24
+ if (!matched) {
25
+ logger.error(`No version found for ${dependency.module_name}`);
26
+ process.exit(1);
27
+ }
28
+ dependency.version = extractMcVersion(matched);
29
+ }
30
+ logger.log(`${dependency.module_name}: ${matched}`);
31
+ modules.push({ name: dependency.module_name, version: matched });
32
+ }
33
+ updateManifest(manifest);
34
+ logger.log("Module versions fetched and manifest updated.");
35
+ const installSpinner = ora("Installing modules...").start();
36
+ for (let i = 0; i < modules.length; i++) {
37
+ const mod = modules[i];
38
+ installSpinner.text = `Installing modules... (${i + 1}/${modules.length}) ${mod.name}`;
39
+ try {
40
+ installPackage(pm, `${mod.name}@${mod.version}`);
41
+ }
42
+ catch (e) {
43
+ installSpinner.fail(`Failed to install ${mod.name}`);
44
+ logger.error(e instanceof Error ? e.message : String(e));
45
+ process.exit(1);
46
+ }
47
+ }
48
+ installSpinner.succeed("All modules installed successfully.");
49
+ }
50
+ async function getStableMinecraftVersion() {
51
+ const versions = await getVersions("@minecraft/server");
52
+ const version = versions.find((v) => v.includes("-stable"));
53
+ if (!version) {
54
+ logger.error("No stable versions found.");
55
+ process.exit(1);
56
+ }
57
+ return extractMcVersion(version);
58
+ }
59
+ //# sourceMappingURL=lts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lts.js","sourceRoot":"","sources":["../../src/commands/lts.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,GAAG;IACrB,MAAM,OAAO,GAAG,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE7D,MAAM,SAAS,GAAG,MAAM,yBAAyB,EAAE,CAAC;IACpD,OAAO,CAAC,OAAO,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAE/D,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAMlC,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAE3D,gEAAgE;QAChE,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAClI,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACV,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,6BAA6B,UAAU,CAAC,WAAW,2BAA2B,CAAC,CAAC;YAC5F,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,UAAU,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC,CAAC;QAEpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE5D,MAAM,cAAc,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,cAAc,CAAC,IAAI,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QAEvF,IAAI,CAAC;YACD,cAAc,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,cAAc,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,yBAAyB;IACpC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function manual(version: string): Promise<void>;
@@ -0,0 +1,28 @@
1
+ import { getVersions, extractMcVersion } from "../utils/versions.js";
2
+ import * as logger from "../utils/logger.js";
3
+ export async function manual(version) {
4
+ const versions = await getVersions("@minecraft/server");
5
+ // Exact match
6
+ const exact = versions.find((v) => v === version);
7
+ if (exact) {
8
+ logger.info(`Found exact version: ${exact}`);
9
+ return;
10
+ }
11
+ // Partial match
12
+ const partial = versions.find((v) => v.includes(version));
13
+ if (!partial) {
14
+ logger.error(`Version not found: ${version}`);
15
+ process.exit(1);
16
+ }
17
+ const mcVersion = extractMcVersion(partial);
18
+ logger.info(`Found version: ${mcVersion}`);
19
+ const serverVersions = await getVersions("@minecraft/server");
20
+ const server = serverVersions.find((v) => v.includes(mcVersion));
21
+ const serverUiVersions = await getVersions("@minecraft/server-ui");
22
+ const serverUi = serverUiVersions.find((v) => v.includes(mcVersion));
23
+ if (server)
24
+ logger.info(`Server version: ${server}`);
25
+ if (serverUi)
26
+ logger.info(`Server UI version: ${serverUi}`);
27
+ }
28
+ //# sourceMappingURL=manual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/commands/manual.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe;IACxC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAExD,cAAc;IACd,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAClD,IAAI,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,IAAI,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;QAC7C,OAAO;IACX,CAAC;IAED,gBAAgB;IAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;IAE3C,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEjE,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAErE,IAAI,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IACrD,IAAI,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;AAChE,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function preview(): Promise<void>;
@@ -0,0 +1,51 @@
1
+ import ora from "ora";
2
+ import { getManifest, updateManifest } from "../utils/manifest.js";
3
+ import { getVersions, extractMcVersion, extractModuleVersion } from "../utils/versions.js";
4
+ import { detectPackageManager, installPackage } from "../utils/package-manager.js";
5
+ import * as logger from "../utils/logger.js";
6
+ export async function preview() {
7
+ const spinner = ora("Fetching Minecraft version...").start();
8
+ const mcVersion = await getPreviewMinecraftVersion();
9
+ spinner.succeed(`Install modules for Minecraft version: ${mcVersion}`);
10
+ const manifest = getManifest();
11
+ logger.log("Manifest loaded. Fetching new module versions...");
12
+ const pm = detectPackageManager();
13
+ const modules = [];
14
+ for (const dependency of manifest.dependencies) {
15
+ const versions = await getVersions(dependency.module_name);
16
+ const matched = versions.find((v) => v.includes(mcVersion));
17
+ if (!matched) {
18
+ logger.error(`No version found for ${dependency.module_name} matching MC ${mcVersion}`);
19
+ process.exit(1);
20
+ }
21
+ dependency.version = extractModuleVersion(matched);
22
+ logger.log(`${dependency.module_name}: ${matched}`);
23
+ modules.push({ name: dependency.module_name, version: matched });
24
+ }
25
+ updateManifest(manifest);
26
+ logger.log("Module versions fetched and manifest updated.");
27
+ const installSpinner = ora("Installing modules...").start();
28
+ for (let i = 0; i < modules.length; i++) {
29
+ const mod = modules[i];
30
+ installSpinner.text = `Installing modules... (${i + 1}/${modules.length}) ${mod.name}`;
31
+ try {
32
+ installPackage(pm, `${mod.name}@${mod.version}`);
33
+ }
34
+ catch (e) {
35
+ installSpinner.fail(`Failed to install ${mod.name}`);
36
+ logger.error(e instanceof Error ? e.message : String(e));
37
+ process.exit(1);
38
+ }
39
+ }
40
+ installSpinner.succeed("All modules installed successfully.");
41
+ }
42
+ async function getPreviewMinecraftVersion() {
43
+ const versions = await getVersions("@minecraft/server");
44
+ const version = versions.find((v) => v.includes("-preview"));
45
+ if (!version) {
46
+ logger.error("No preview versions found.");
47
+ process.exit(1);
48
+ }
49
+ return extractMcVersion(version);
50
+ }
51
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function stable(): Promise<void>;
@@ -0,0 +1,51 @@
1
+ import ora from "ora";
2
+ import { getManifest, updateManifest } from "../utils/manifest.js";
3
+ import { getVersions, extractMcVersion, extractModuleVersion } from "../utils/versions.js";
4
+ import { detectPackageManager, installPackage } from "../utils/package-manager.js";
5
+ import * as logger from "../utils/logger.js";
6
+ export async function stable() {
7
+ const spinner = ora("Fetching Minecraft version...").start();
8
+ const mcVersion = await getStableMinecraftVersion();
9
+ spinner.succeed(`Install modules for Minecraft version: ${mcVersion}`);
10
+ const manifest = getManifest();
11
+ logger.log("Manifest loaded. Fetching new module versions...");
12
+ const pm = detectPackageManager();
13
+ const modules = [];
14
+ for (const dependency of manifest.dependencies) {
15
+ const versions = await getVersions(dependency.module_name);
16
+ const matched = versions.find((v) => v.includes(mcVersion));
17
+ if (!matched) {
18
+ logger.error(`No version found for ${dependency.module_name} matching MC ${mcVersion}`);
19
+ process.exit(1);
20
+ }
21
+ dependency.version = extractModuleVersion(matched);
22
+ logger.log(`${dependency.module_name}: ${matched}`);
23
+ modules.push({ name: dependency.module_name, version: matched });
24
+ }
25
+ updateManifest(manifest);
26
+ logger.log("Module versions fetched and manifest updated.");
27
+ const installSpinner = ora("Installing modules...").start();
28
+ for (let i = 0; i < modules.length; i++) {
29
+ const mod = modules[i];
30
+ installSpinner.text = `Installing modules... (${i + 1}/${modules.length}) ${mod.name}`;
31
+ try {
32
+ installPackage(pm, `${mod.name}@${mod.version}`);
33
+ }
34
+ catch (e) {
35
+ installSpinner.fail(`Failed to install ${mod.name}`);
36
+ logger.error(e instanceof Error ? e.message : String(e));
37
+ process.exit(1);
38
+ }
39
+ }
40
+ installSpinner.succeed("All modules installed successfully.");
41
+ }
42
+ async function getStableMinecraftVersion() {
43
+ const versions = await getVersions("@minecraft/server");
44
+ const version = versions.find((v) => v.includes("-stable"));
45
+ if (!version) {
46
+ logger.error("No stable versions found.");
47
+ process.exit(1);
48
+ }
49
+ return extractMcVersion(version);
50
+ }
51
+ //# sourceMappingURL=stable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable.js","sourceRoot":"","sources":["../../src/commands/stable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { stable } from "./commands/stable.js";
4
+ import { preview } from "./commands/preview.js";
5
+ import { lts } from "./commands/lts.js";
6
+ import { manual } from "./commands/manual.js";
7
+ const program = new Command();
8
+ program
9
+ .name("scriptup")
10
+ .description("ScriptAPI version updater for Minecraft Bedrock")
11
+ .version("1.0.0")
12
+ .argument("[version]", "Manually specify a version to look up");
13
+ program
14
+ .command("stable")
15
+ .description("Install the latest stable version modules")
16
+ .action(async () => {
17
+ await stable();
18
+ });
19
+ program
20
+ .command("preview")
21
+ .description("Install the latest preview version modules")
22
+ .action(async () => {
23
+ await preview();
24
+ });
25
+ program
26
+ .command("lts")
27
+ .description("Install the latest LTS version modules")
28
+ .action(async () => {
29
+ await lts();
30
+ });
31
+ program.action(async (version) => {
32
+ if (version) {
33
+ await manual(version);
34
+ }
35
+ else {
36
+ program.help();
37
+ }
38
+ });
39
+ program.parse();
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC;AAEpE,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,MAAM,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IACjD,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function info(message: string): void;
2
+ export declare function log(message: string): void;
3
+ export declare function warn(message: string): void;
4
+ export declare function error(message: string): void;
5
+ export declare function done(message: string): void;
@@ -0,0 +1,17 @@
1
+ import chalk from "chalk";
2
+ export function info(message) {
3
+ console.log(`${chalk.blue("[INFO]")} ${message}`);
4
+ }
5
+ export function log(message) {
6
+ console.log(`${chalk.gray("[LOG]")} ${message}`);
7
+ }
8
+ export function warn(message) {
9
+ console.log(`${chalk.yellow("[WARN]")} ${message}`);
10
+ }
11
+ export function error(message) {
12
+ console.error(`${chalk.red("[ERROR]")} ${message}`);
13
+ }
14
+ export function done(message) {
15
+ console.log(`${chalk.green("[DONE]")} ${message}`);
16
+ }
17
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,IAAI,CAAC,OAAe;IAChC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAe;IAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAChC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACjC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAChC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,28 @@
1
+ export interface Manifest {
2
+ format_version: number;
3
+ header: {
4
+ name: string;
5
+ description: string;
6
+ uuid: string;
7
+ version: number[];
8
+ min_engine_version: number[];
9
+ };
10
+ metadata: {
11
+ authors: string[];
12
+ url: string;
13
+ };
14
+ modules: Array<{
15
+ type: string;
16
+ uuid: string;
17
+ version: number[];
18
+ language?: string;
19
+ description?: string;
20
+ entry?: string;
21
+ }>;
22
+ dependencies: Array<{
23
+ module_name: string;
24
+ version: string;
25
+ }>;
26
+ }
27
+ export declare function getManifest(): Manifest;
28
+ export declare function updateManifest(manifest: Manifest): void;
@@ -0,0 +1,18 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { error } from "./logger.js";
4
+ export function getManifest() {
5
+ const manifestPath = path.resolve("manifest.json");
6
+ if (!fs.existsSync(manifestPath)) {
7
+ error("manifest.json not found.");
8
+ process.exit(1);
9
+ }
10
+ const raw = fs.readFileSync(manifestPath, "utf-8");
11
+ return JSON.parse(raw);
12
+ }
13
+ export function updateManifest(manifest) {
14
+ const manifestPath = path.resolve("manifest.json");
15
+ const raw = JSON.stringify(manifest, null, "\t");
16
+ fs.writeFileSync(manifestPath, raw, "utf-8");
17
+ }
18
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA6BpC,MAAM,UAAU,WAAW;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEjD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type PackageManager = "npm" | "pnpm" | "yarn" | "bun";
2
+ export declare function detectPackageManager(): PackageManager;
3
+ export declare function installPackage(pm: PackageManager, packageSpec: string): void;
@@ -0,0 +1,81 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { execSync } from "node:child_process";
4
+ import { log } from "./logger.js";
5
+ export function detectPackageManager() {
6
+ const cwd = process.cwd();
7
+ // 1. Check packageManager field in package.json
8
+ const pkgJsonPath = path.resolve(cwd, "package.json");
9
+ if (fs.existsSync(pkgJsonPath)) {
10
+ const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
11
+ if (pkgJson.packageManager) {
12
+ const name = pkgJson.packageManager.split("@")[0];
13
+ if (isValidPackageManager(name)) {
14
+ log(`Detected package manager from package.json: ${name}`);
15
+ return name;
16
+ }
17
+ }
18
+ }
19
+ // 2. Check lock files
20
+ if (fs.existsSync(path.resolve(cwd, "bun.lockb")) || fs.existsSync(path.resolve(cwd, "bun.lock"))) {
21
+ log("Detected package manager from lock file: bun");
22
+ return "bun";
23
+ }
24
+ if (fs.existsSync(path.resolve(cwd, "pnpm-lock.yaml"))) {
25
+ log("Detected package manager from lock file: pnpm");
26
+ return "pnpm";
27
+ }
28
+ if (fs.existsSync(path.resolve(cwd, "yarn.lock"))) {
29
+ log("Detected package manager from lock file: yarn");
30
+ return "yarn";
31
+ }
32
+ if (fs.existsSync(path.resolve(cwd, "package-lock.json"))) {
33
+ log("Detected package manager from lock file: npm");
34
+ return "npm";
35
+ }
36
+ // 3. Fallback to npm
37
+ log("No lock file found. Defaulting to npm.");
38
+ return "npm";
39
+ }
40
+ function isValidPackageManager(name) {
41
+ return ["npm", "pnpm", "yarn", "bun"].includes(name);
42
+ }
43
+ function getInstallCommand(pm) {
44
+ return pm === "yarn" ? "add" : "install";
45
+ }
46
+ function getExactFlag(pm) {
47
+ switch (pm) {
48
+ case "npm":
49
+ return "--save-exact";
50
+ case "pnpm":
51
+ return "--save-exact";
52
+ case "yarn":
53
+ return "--exact";
54
+ case "bun":
55
+ return "--exact";
56
+ }
57
+ }
58
+ function getForceFlag(pm) {
59
+ switch (pm) {
60
+ case "npm":
61
+ return "--force";
62
+ case "pnpm":
63
+ return "--force";
64
+ case "yarn":
65
+ return undefined;
66
+ case "bun":
67
+ return "--force";
68
+ }
69
+ }
70
+ export function installPackage(pm, packageSpec) {
71
+ const cmd = getInstallCommand(pm);
72
+ const exact = getExactFlag(pm);
73
+ const force = getForceFlag(pm);
74
+ const devFlag = pm === "yarn" ? "--dev" : "--save-dev";
75
+ const args = [pm, cmd, packageSpec, devFlag, exact];
76
+ if (force)
77
+ args.push(force);
78
+ const command = args.join(" ");
79
+ execSync(command, { stdio: "pipe", cwd: process.cwd() });
80
+ }
81
+ //# sourceMappingURL=package-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type PackageManager = "npm" | "pnpm" | "yarn" | "bun";
2
+ export declare function detectPackageManager(): PackageManager;
3
+ export declare function installPackage(pm: PackageManager, packageSpec: string): void;
@@ -0,0 +1,81 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { execSync } from "node:child_process";
4
+ import { log } from "./logger.js";
5
+ export function detectPackageManager() {
6
+ const cwd = process.cwd();
7
+ // 1. Check packageManager field in package.json
8
+ const pkgJsonPath = path.resolve(cwd, "package.json");
9
+ if (fs.existsSync(pkgJsonPath)) {
10
+ const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
11
+ if (pkgJson.packageManager) {
12
+ const name = pkgJson.packageManager.split("@")[0];
13
+ if (isValidPackageManager(name)) {
14
+ log(`Detected package manager from package.json: ${name}`);
15
+ return name;
16
+ }
17
+ }
18
+ }
19
+ // 2. Check lock files
20
+ if (fs.existsSync(path.resolve(cwd, "bun.lockb")) || fs.existsSync(path.resolve(cwd, "bun.lock"))) {
21
+ log("Detected package manager from lock file: bun");
22
+ return "bun";
23
+ }
24
+ if (fs.existsSync(path.resolve(cwd, "pnpm-lock.yaml"))) {
25
+ log("Detected package manager from lock file: pnpm");
26
+ return "pnpm";
27
+ }
28
+ if (fs.existsSync(path.resolve(cwd, "yarn.lock"))) {
29
+ log("Detected package manager from lock file: yarn");
30
+ return "yarn";
31
+ }
32
+ if (fs.existsSync(path.resolve(cwd, "package-lock.json"))) {
33
+ log("Detected package manager from lock file: npm");
34
+ return "npm";
35
+ }
36
+ // 3. Fallback to npm
37
+ log("No lock file found. Defaulting to npm.");
38
+ return "npm";
39
+ }
40
+ function isValidPackageManager(name) {
41
+ return ["npm", "pnpm", "yarn", "bun"].includes(name);
42
+ }
43
+ function getInstallCommand(pm) {
44
+ return pm === "yarn" ? "add" : "install";
45
+ }
46
+ function getExactFlag(pm) {
47
+ switch (pm) {
48
+ case "npm":
49
+ return "--save-exact";
50
+ case "pnpm":
51
+ return "--save-exact";
52
+ case "yarn":
53
+ return "--exact";
54
+ case "bun":
55
+ return "--exact";
56
+ }
57
+ }
58
+ function getForceFlag(pm) {
59
+ switch (pm) {
60
+ case "npm":
61
+ return "--force";
62
+ case "pnpm":
63
+ return "--force";
64
+ case "yarn":
65
+ return undefined;
66
+ case "bun":
67
+ return "--force";
68
+ }
69
+ }
70
+ export function installPackage(pm, packageSpec) {
71
+ const cmd = getInstallCommand(pm);
72
+ const exact = getExactFlag(pm);
73
+ const force = getForceFlag(pm);
74
+ const devFlag = pm === "yarn" ? "--dev" : "--save-dev";
75
+ const args = [pm, cmd, packageSpec, devFlag, exact];
76
+ if (force)
77
+ args.push(force);
78
+ const command = args.join(" ");
79
+ execSync(command, { stdio: "pipe", cwd: process.cwd() });
80
+ }
81
+ //# sourceMappingURL=packageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/utils/packageManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface VersionInfo {
2
+ versions: string[];
3
+ }
4
+ export declare function getVersions(packageName: string): Promise<string[]>;
5
+ export declare function extractMcVersion(version: string): string;
6
+ export declare function extractModuleVersion(version: string): string;
@@ -0,0 +1,44 @@
1
+ export async function getVersions(packageName) {
2
+ const url = `https://registry.npmjs.org/${packageName}`;
3
+ const response = await fetch(url);
4
+ if (!response.ok) {
5
+ throw new Error(`Failed to fetch versions for ${packageName}: ${response.statusText}`);
6
+ }
7
+ const data = (await response.json());
8
+ const versions = Object.keys(data.versions).reverse();
9
+ versions.sort((a, b) => {
10
+ const priority = (v) => {
11
+ if (v.includes("stable"))
12
+ return 0;
13
+ if (v.includes("preview"))
14
+ return 1;
15
+ return 2;
16
+ };
17
+ return priority(a) - priority(b);
18
+ });
19
+ return versions;
20
+ }
21
+ export function extractMcVersion(version) {
22
+ const firstDash = version.indexOf("-");
23
+ if (firstDash === -1)
24
+ return version;
25
+ const afterDash = version.substring(firstDash);
26
+ const firstDot = afterDash.indexOf(".");
27
+ if (firstDot === -1)
28
+ return version;
29
+ const start = firstDash + firstDot + 1;
30
+ const rest = version.substring(start);
31
+ const nextDash = rest.indexOf("-");
32
+ return nextDash === -1 ? rest : rest.substring(0, nextDash);
33
+ }
34
+ export function extractModuleVersion(version) {
35
+ const firstDash = version.indexOf("-");
36
+ if (firstDash === -1)
37
+ return version;
38
+ const afterDash = version.substring(firstDash);
39
+ const firstDot = afterDash.indexOf(".");
40
+ if (firstDot === -1)
41
+ return version;
42
+ return version.substring(0, firstDash + firstDot);
43
+ }
44
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/utils/versions.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACjD,MAAM,GAAG,GAAG,8BAA8B,WAAW,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0C,CAAC;IAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IAEtD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE;YAC3B,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACb,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAErC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAEpC,MAAM,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAErC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAEpC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;AACtD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@nano191225/scriptup",
3
+ "version": "1.0.0",
4
+ "description": "ScriptAPI version updater for Minecraft Bedrock",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "scriptup": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsc --watch",
12
+ "prepublishOnly": "npm run build"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/Nano191225/scriptup.git"
17
+ },
18
+ "keywords": [
19
+ "minecraft",
20
+ "bedrock",
21
+ "scriptapi",
22
+ "addon"
23
+ ],
24
+ "author": "Nano191225",
25
+ "license": "MIT",
26
+ "bugs": {
27
+ "url": "https://github.com/Nano191225/scriptup/issues"
28
+ },
29
+ "homepage": "https://github.com/Nano191225/scriptup#readme",
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "dependencies": {
34
+ "chalk": "^5.4.1",
35
+ "commander": "^13.1.0",
36
+ "ora": "^8.2.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/node": "^22.13.0",
40
+ "typescript": "^5.7.0"
41
+ },
42
+ "engines": {
43
+ "node": ">=18.0.0"
44
+ },
45
+ "type": "module"
46
+ }