mbler 0.1.1 → 0.1.3-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +28 -0
- package/lib/build/base.js +297 -1
- package/lib/build/build-g-config.json +11 -11
- package/lib/build/getModule.js +182 -1
- package/lib/build/index.js +370 -1
- package/lib/build/manifest.build.js +103 -1
- package/lib/build/mcVersion.js +86 -1
- package/lib/build/utils.js +6 -1
- package/lib/code-processor/c-handler-export.js +12 -1
- package/lib/code-processor/index.js +141 -1
- package/lib/code-processor/mtreehandler.js +164 -1
- package/lib/commander/index.js +154 -1
- package/lib/data/includes.json +12 -12
- package/lib/git/clone.js +28 -1
- package/lib/git/index.js +12 -1
- package/lib/git/pull.js +100 -1
- package/lib/lang/__translate.js +93 -1
- package/lib/lang/en.js +128 -1
- package/lib/lang/index.js +78 -1
- package/lib/lang/zh.js +146 -1
- package/lib/loger/colors.js +13 -1
- package/lib/loger/index.js +136 -1
- package/lib/mcx/ast/index.js +11 -1
- package/lib/mcx/ast/prop.js +78 -1
- package/lib/mcx/ast/tag.js +246 -1
- package/lib/mcx/compile-component/lib.js +106 -1
- package/lib/mcx/compile-component/types.js +2 -1
- package/lib/mcx/compile-component/utils.js +26 -1
- package/lib/mcx/compile-mcx/_compile.js +1 -1
- package/lib/mcx/compile-mcx/compile.js +34 -1
- package/lib/mcx/compile-mcx/context.js +19 -1
- package/lib/mcx/compile-mcx/index.js +10 -1
- package/lib/mcx/compile-mcx/mcx/index.js +2 -1
- package/lib/mcx/compile-mcx/mcx/types.js +2 -1
- package/lib/mcx/compile-mcx/template/module.js +42 -1
- package/lib/mcx/compile-mcx/types.js +2 -1
- package/lib/mcx/compile-mcx/utils.node.js +207 -1
- package/lib/mcx/index.js +13 -1
- package/lib/mcx/test/index.js +7 -1
- package/lib/mcx/test.js +21 -1
- package/lib/mcx/types.js +2 -1
- package/lib/mcx/utils.js +86 -1
- package/lib/module-handler/index.js +482 -1
- package/lib/modules/create-game/src/Runner/RunnerManager.js +113 -1
- package/lib/modules/create-game/src/Runner/scriptRunner.js +70 -1
- package/lib/modules/create-game/src/config.js +27 -1
- package/lib/modules/create-game/src/constants.js +19 -1
- package/lib/modules/create-game/src/createGameModule.js +24 -1
- package/lib/modules/create-game/src/gameComponent/common/autoStop.js +38 -1
- package/lib/modules/create-game/src/gameComponent/common/lazyLoader.js +76 -1
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/onTimeEvent.js +36 -1
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/stopWatch.js +90 -1
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/tickEvent.js +29 -1
- package/lib/modules/create-game/src/gameComponent/common/timer/onTimeEvent.js +36 -1
- package/lib/modules/create-game/src/gameComponent/common/timer/tickEvent.js +29 -1
- package/lib/modules/create-game/src/gameComponent/common/timer/timer.js +87 -1
- package/lib/modules/create-game/src/gameComponent/gameComponent.js +53 -1
- package/lib/modules/create-game/src/gameComponent/index.js +31 -1
- package/lib/modules/create-game/src/gameComponent/player/blockInteractionBlocker.js +40 -1
- package/lib/modules/create-game/src/gameComponent/player/entityInteractionBlocker.js +48 -1
- package/lib/modules/create-game/src/gameComponent/player/healthIndicator.js +48 -1
- package/lib/modules/create-game/src/gameComponent/player/regionMonitor.js +22 -1
- package/lib/modules/create-game/src/gameComponent/player/respawn.js +59 -1
- package/lib/modules/create-game/src/gameComponent/player/spawnProtector.js +69 -1
- package/lib/modules/create-game/src/gameComponent/region/regionProtecter.js +53 -1
- package/lib/modules/create-game/src/gameComponent/region/regionTeamChooser.js +71 -1
- package/lib/modules/create-game/src/gameComponent/region/regionTeamCleaner.js +20 -1
- package/lib/modules/create-game/src/gameComponent/view/infoScoreboard.js +77 -1
- package/lib/modules/create-game/src/gameComponent/view/teamScoreboard.js +83 -1
- package/lib/modules/create-game/src/gameContext.js +6 -1
- package/lib/modules/create-game/src/gameEngine.js +139 -1
- package/lib/modules/create-game/src/gameEvent/eventManager.js +108 -1
- package/lib/modules/create-game/src/gameEvent/eventSignal.js +28 -1
- package/lib/modules/create-game/src/gameEvent/events/buttonPush.js +41 -1
- package/lib/modules/create-game/src/gameEvent/events/inSlot.js +77 -1
- package/lib/modules/create-game/src/gameEvent/events/interval.js +51 -1
- package/lib/modules/create-game/src/gameEvent/events/itemUse.js +36 -1
- package/lib/modules/create-game/src/gameEvent/events/onBlock.js +106 -1
- package/lib/modules/create-game/src/gameEvent/events/regionEvents.js +105 -1
- package/lib/modules/create-game/src/gameEvent/events/signClick.js +45 -1
- package/lib/modules/create-game/src/gameEvent/gameEvent.js +54 -1
- package/lib/modules/create-game/src/gameEvent/index.js +20 -1
- package/lib/modules/create-game/src/gameEvent/mapEventSignal.js +101 -1
- package/lib/modules/create-game/src/gameEvent/subscription.js +17 -1
- package/lib/modules/create-game/src/gamePlayer/gamePlayer.js +102 -1
- package/lib/modules/create-game/src/gamePlayer/groupBuilder.js +38 -1
- package/lib/modules/create-game/src/gamePlayer/groupSet.js +96 -1
- package/lib/modules/create-game/src/gamePlayer/index.js +25 -1
- package/lib/modules/create-game/src/gamePlayer/playerGroup.js +145 -1
- package/lib/modules/create-game/src/gamePlayer/playerManager.js +57 -1
- package/lib/modules/create-game/src/gameRegion/gameRegion.js +229 -1
- package/lib/modules/create-game/src/gameRegion/index.js +43 -1
- package/lib/modules/create-game/src/gameRegion/regionHelper.js +79 -1
- package/lib/modules/create-game/src/gameState/common/autoStop.js +39 -1
- package/lib/modules/create-game/src/gameState/gameState.js +169 -1
- package/lib/modules/create-game/src/gameState/index.js +7 -1
- package/lib/modules/create-game/src/gameState/types.js +35 -1
- package/lib/modules/create-game/src/gameStructure/gameStructure.js +36 -1
- package/lib/modules/create-game/src/main.js +86 -1
- package/lib/modules/create-game/src/system/gameCommand.js +107 -1
- package/lib/modules/create-game/src/system/gameManager.js +124 -1
- package/lib/modules/create-game/src/system/globalPlayerManager.js +119 -1
- package/lib/modules/create-game/src/utils/GameError.js +31 -1
- package/lib/modules/create-game/src/utils/algorithm.js +95 -1
- package/lib/modules/create-game/src/utils/chunk.js +63 -1
- package/lib/modules/create-game/src/utils/deferredObject.js +27 -1
- package/lib/modules/create-game/src/utils/duration.js +25 -1
- package/lib/modules/create-game/src/utils/func.js +20 -1
- package/lib/modules/create-game/src/utils/index.js +52 -1
- package/lib/modules/create-game/src/utils/interfaces.js +2 -1
- package/lib/modules/create-game/src/utils/logger.js +47 -1
- package/lib/modules/create-game/src/utils/random.js +76 -1
- package/lib/modules/create-game/src/utils/vanila-data.js +123 -1
- package/lib/modules/create-game/src/utils/vector.js +96 -1
- package/lib/modules/gameLib/src/config.js +134 -1
- package/lib/modules/gameLib/src/data.js +77 -1
- package/lib/modules/gameLib/src/entity.js +256 -1
- package/lib/modules/gameLib/src/event.js +285 -1
- package/lib/modules/gameLib/src/index.js +20 -1
- package/lib/modules/gameLib/src/loger.js +21 -1
- package/lib/modules/gameLib/src/ui.js +209 -1
- package/lib/modules/gameLib/src/utils.js +122 -1
- package/lib/modules/gutils/src/index.js +22 -1
- package/lib/runTemp/File.js +54 -1
- package/lib/runTemp/index.js +137 -1
- package/lib/runTemp/securityFile.js +93 -1
- package/lib/start/addPack.js +3 -1
- package/lib/start/clean.js +84 -1
- package/lib/start/create.js +146 -1
- package/lib/start/dev.js +99 -1
- package/lib/start/getResConfig.js +3 -1
- package/lib/start/incg.js +3 -1
- package/lib/start/index.js +207 -1
- package/lib/start/init.js +125 -1
- package/lib/start/rechce.js +57 -1
- package/lib/start/unaddPack.js +3 -1
- package/lib/start/unincg.js +67 -1
- package/lib/start/version.js +73 -1
- package/lib/utils/index.js +298 -1
- package/lib/uuid/index.js +27 -1
- package/package.json +1 -1
- package/test/script-mbler/behavior/scripts/index.js +0 -5
package/lib/start/init.js
CHANGED
|
@@ -1 +1,125 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
const fs = __importStar(require("fs/promises"));
|
|
39
|
+
const utils = __importStar(require("../utils/index.js"));
|
|
40
|
+
const index_js_1 = __importDefault(require("./../loger/index.js"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const build_g_config_json_1 = __importDefault(require("./../build/build-g-config.json"));
|
|
43
|
+
const index_js_2 = require("./../commander/index.js");
|
|
44
|
+
const mcVersion_js_1 = require("./../build/mcVersion.js");
|
|
45
|
+
let dirname = '';
|
|
46
|
+
class Init {
|
|
47
|
+
dir;
|
|
48
|
+
dirName;
|
|
49
|
+
constructor(dir, name) {
|
|
50
|
+
dirname = name;
|
|
51
|
+
this.dir = dir;
|
|
52
|
+
this.dirName = name;
|
|
53
|
+
}
|
|
54
|
+
async start() {
|
|
55
|
+
if (!(await utils.FileExsit(this.dir))) {
|
|
56
|
+
index_js_1.default.w('init', '无效的配置');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (await utils.isMblerProject(this.dir)) {
|
|
60
|
+
index_js_1.default.i('init', '已经初始化过了');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const name = await this.input('项目名称: ');
|
|
64
|
+
const description = await this.input('项目描述: ');
|
|
65
|
+
const mcVersion = await this.input('支持的minecraft版本: ');
|
|
66
|
+
const packageer = {
|
|
67
|
+
name,
|
|
68
|
+
description,
|
|
69
|
+
version: "0.0.1",
|
|
70
|
+
engines: { node: ">=20.0.0" },
|
|
71
|
+
scripts: {
|
|
72
|
+
dev: "mbler dev",
|
|
73
|
+
build: "MBLER_BUILD_MODULE=dist mbler build",
|
|
74
|
+
"dev-build": "MBLER_BUILD_MODULE=dev mbler build"
|
|
75
|
+
},
|
|
76
|
+
dependencies: Object.create(null)
|
|
77
|
+
};
|
|
78
|
+
const ManiFest = {
|
|
79
|
+
name,
|
|
80
|
+
description,
|
|
81
|
+
mcVersion,
|
|
82
|
+
version: "0.0.1",
|
|
83
|
+
minify: false
|
|
84
|
+
};
|
|
85
|
+
if ((await this.input('使用Script Api吗?(Y/N) ')).toLowerCase() === 'y') {
|
|
86
|
+
ManiFest.script = {};
|
|
87
|
+
ManiFest.script.main = (await this.input('主脚本路径(如 ./index.js): ')) || "index";
|
|
88
|
+
ManiFest.script.ui = (await this.input('使用 UI 吗?(Y/N) ')).toLowerCase() === 'y';
|
|
89
|
+
if (ManiFest.script.ui) {
|
|
90
|
+
packageer.dependencies["@minecraft/server-ui"] = mcVersion_js_1.mcVersionGeter.ToServerUi(mcVersion);
|
|
91
|
+
}
|
|
92
|
+
await Promise.all([
|
|
93
|
+
fs.mkdir(path.join(this.dir, 'behavior', "script"), { recursive: true }),
|
|
94
|
+
fs.mkdir(path.join(this.dir, 'resources'), { recursive: true }),
|
|
95
|
+
]);
|
|
96
|
+
const e = await index_js_2.Input.select("选择语言", ["ts", "js", "mcx"]);
|
|
97
|
+
ManiFest.script.lang = e;
|
|
98
|
+
if (e === "ts") {
|
|
99
|
+
packageer.dependencies["@minecraft/server"] = mcVersion_js_1.mcVersionGeter.ToServer(mcVersion);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
ManiFest.outdir = {
|
|
103
|
+
resources: "./dist/res",
|
|
104
|
+
behavior: "./dist/dep",
|
|
105
|
+
dist: "./dist.mcaddon"
|
|
106
|
+
};
|
|
107
|
+
await fs.writeFile(path.join(this.dir, 'package.json'), JSON.stringify(packageer, null, 2));
|
|
108
|
+
await fs.writeFile(path.join(this.dir, build_g_config_json_1.default.PackageFile), JSON.stringify(ManiFest, null, 2));
|
|
109
|
+
}
|
|
110
|
+
async getVersion(param) {
|
|
111
|
+
let v;
|
|
112
|
+
let fall = false;
|
|
113
|
+
while (true) {
|
|
114
|
+
v = await utils.input(fall ? '格式错误,重新输入: ' + param : param);
|
|
115
|
+
if (utils.isVerison(v))
|
|
116
|
+
break;
|
|
117
|
+
fall = true;
|
|
118
|
+
}
|
|
119
|
+
return v;
|
|
120
|
+
}
|
|
121
|
+
async input(param, t = false) {
|
|
122
|
+
return (await utils.input((t ? '不符合规范,重试: ' : '') + param)) || this.input(param, true);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
module.exports = Init;
|
package/lib/start/rechce.js
CHANGED
|
@@ -1 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
const fs = __importStar(require("fs/promises"));
|
|
39
|
+
const index_js_1 = __importDefault(require("./../lang/index.js"));
|
|
40
|
+
const path_1 = __importDefault(require("path"));
|
|
41
|
+
module.exports = async function rechce(dirname, workDir) {
|
|
42
|
+
await Promise.all([
|
|
43
|
+
fs.rm(path_1.default.join(dirname, "lib/data/path.db"), {
|
|
44
|
+
recursive: true,
|
|
45
|
+
force: true
|
|
46
|
+
}).catch(() => { }),
|
|
47
|
+
fs.rm(path_1.default.join(dirname, "lib/initializer-cache/"), {
|
|
48
|
+
recursive: true,
|
|
49
|
+
force: true
|
|
50
|
+
}).catch(() => { }),
|
|
51
|
+
fs.rm(path_1.default.join(dirname, "lib/data/cache"), {
|
|
52
|
+
recursive: true,
|
|
53
|
+
force: true
|
|
54
|
+
}).catch(() => { })
|
|
55
|
+
]);
|
|
56
|
+
console.log(index_js_1.default.s0);
|
|
57
|
+
};
|
package/lib/start/unaddPack.js
CHANGED
package/lib/start/unincg.js
CHANGED
|
@@ -1 +1,67 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
const index_js_1 = __importDefault(require("./../loger/index.js"));
|
|
39
|
+
const path_1 = __importDefault(require("path"));
|
|
40
|
+
const fs = __importStar(require("fs/promises"));
|
|
41
|
+
let dirname = '';
|
|
42
|
+
let cache = null;
|
|
43
|
+
module.exports = async function Uninstall(packName, dirname_) {
|
|
44
|
+
dirname = dirname_;
|
|
45
|
+
try {
|
|
46
|
+
const cache = await (require('./getResConfig.js'))();
|
|
47
|
+
const mods = cache.get('Mod');
|
|
48
|
+
let find = false;
|
|
49
|
+
for (let [index, item] of mods.entries()) {
|
|
50
|
+
if (item.name !== packName || item.git === 'inner')
|
|
51
|
+
continue;
|
|
52
|
+
mods.splice(index, 1);
|
|
53
|
+
find = true;
|
|
54
|
+
// 删除依赖
|
|
55
|
+
await fs.rm(path_1.default.join(dirname, 'lib/modules', item.name), {
|
|
56
|
+
recursive: true,
|
|
57
|
+
force: true
|
|
58
|
+
});
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
if (!find)
|
|
62
|
+
throw new Error('未安装此包');
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
index_js_1.default.e('uninstall', err.message);
|
|
66
|
+
}
|
|
67
|
+
};
|
package/lib/start/version.js
CHANGED
|
@@ -1 +1,73 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const fs = __importStar(require("fs/promises"));
|
|
40
|
+
const utils = __importStar(require("./../utils/index.js"));
|
|
41
|
+
const build_g_config_json_1 = __importDefault(require("./../build/build-g-config.json"));
|
|
42
|
+
const index_js_1 = __importDefault(require("./../lang/index.js"));
|
|
43
|
+
let dirname = '';
|
|
44
|
+
class Version {
|
|
45
|
+
dir;
|
|
46
|
+
baseDir;
|
|
47
|
+
two;
|
|
48
|
+
constructor(dir, baseDir) {
|
|
49
|
+
dirname = baseDir;
|
|
50
|
+
this.dir = dir;
|
|
51
|
+
this.two = process.argv[3] || '';
|
|
52
|
+
}
|
|
53
|
+
async start() {
|
|
54
|
+
const workDir = utils.join(dirname, this.dir);
|
|
55
|
+
const mblerConfig = await utils.GetData(workDir);
|
|
56
|
+
const packager = JSON.parse(await fs.readFile(path.join(workDir, 'package.json'), {
|
|
57
|
+
encoding: 'utf-8'
|
|
58
|
+
}).catch(() => ("{}")));
|
|
59
|
+
if (typeof this.two === 'string' && utils.isVerison(this.two)) {
|
|
60
|
+
packager.version = this.two;
|
|
61
|
+
mblerConfig.version = this.two;
|
|
62
|
+
}
|
|
63
|
+
console.log(`${index_js_1.default.workPackV || '当前工作目录包版本:'} ${mblerConfig.version || '0.0.1'}`);
|
|
64
|
+
await Promise.all([
|
|
65
|
+
this.write(path.join(workDir, build_g_config_json_1.default.PackageFile), mblerConfig),
|
|
66
|
+
this.write(path.join(workDir, 'package.json'), packager)
|
|
67
|
+
]);
|
|
68
|
+
}
|
|
69
|
+
write(p, c) {
|
|
70
|
+
return fs.writeFile(p, JSON.stringify(c, null, 2));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
module.exports = Version;
|
package/lib/utils/index.js
CHANGED
|
@@ -1 +1,298 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.config = exports.isVerison = exports.JSONparse = exports.readFile = exports.sleep = exports.waitGC = exports.input = void 0;
|
|
7
|
+
exports.hasKeys = hasKeys;
|
|
8
|
+
exports.zip = zip;
|
|
9
|
+
exports.toString = toString;
|
|
10
|
+
exports.ToArray = ToArray;
|
|
11
|
+
exports.readFileWithRetry = readFileWithRetry;
|
|
12
|
+
exports.join = join;
|
|
13
|
+
exports.Exit = Exit;
|
|
14
|
+
exports.FileExsit = FileExsit;
|
|
15
|
+
exports.GetData = GetData;
|
|
16
|
+
exports.isMblerProject = isMblerProject;
|
|
17
|
+
exports.handlerPackage = handlerPackage;
|
|
18
|
+
exports.copy = copy;
|
|
19
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
20
|
+
const adm_zip_1 = __importDefault(require("adm-zip"));
|
|
21
|
+
const index_js_1 = __importDefault(require("./../loger/index.js"));
|
|
22
|
+
const commander_1 = require("./../commander");
|
|
23
|
+
const config = require('./../build/build-g-config.json');
|
|
24
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
25
|
+
function hasKeys(obj, keys, minValue) {
|
|
26
|
+
if (!(typeof obj === `object` &&
|
|
27
|
+
!Array.isArray(obj)))
|
|
28
|
+
return false;
|
|
29
|
+
if (!Array.isArray(keys))
|
|
30
|
+
return false;
|
|
31
|
+
let count = 0;
|
|
32
|
+
for (const key of keys) {
|
|
33
|
+
if (obj.hasOwnProperty(key)) {
|
|
34
|
+
count++;
|
|
35
|
+
if (count >= minValue)
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
exports.input = function () {
|
|
42
|
+
let curr;
|
|
43
|
+
let currstr = "";
|
|
44
|
+
let tip = "";
|
|
45
|
+
let show = true;
|
|
46
|
+
// 在输入时使用输入中间件
|
|
47
|
+
commander_1.Input.use(function (raw, ctrl, alt, name) {
|
|
48
|
+
if (typeof curr !== "function")
|
|
49
|
+
return;
|
|
50
|
+
if (ctrl || alt)
|
|
51
|
+
return;
|
|
52
|
+
if (raw) {
|
|
53
|
+
if (raw === 'return' || raw === 'enter') {
|
|
54
|
+
curr(currstr);
|
|
55
|
+
curr = null;
|
|
56
|
+
currstr = "";
|
|
57
|
+
console.log("");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (raw === 'backspace') {
|
|
61
|
+
currstr = currstr.slice(0, -1);
|
|
62
|
+
refreshInput();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (name && typeof name === 'string') {
|
|
67
|
+
currstr += name[0];
|
|
68
|
+
refreshInput();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
function refreshInput() {
|
|
72
|
+
const out = `\x1b[2K\r${tip}${show ? currstr : ""}`;
|
|
73
|
+
process.stdout.write(out);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 输入文本
|
|
77
|
+
* @param{string} tip 提示
|
|
78
|
+
* @param{boolean} show 是否显示输入
|
|
79
|
+
*/
|
|
80
|
+
return async function (t = "", g = true) {
|
|
81
|
+
return new Promise((resolve) => {
|
|
82
|
+
show = g;
|
|
83
|
+
tip = t;
|
|
84
|
+
refreshInput();
|
|
85
|
+
curr = resolve;
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
}();
|
|
89
|
+
/**
|
|
90
|
+
* 压缩目录为 ZIP,解压后根目录是 sourceDir 内的内容,而不是 sourceDir 文件夹本身
|
|
91
|
+
* @param {Array} sourceDir 要压缩的目录路径,如 ['C:/data/myfolder' 或 '/home/user/myfolder']
|
|
92
|
+
* @param {string} outputFile 输出的 ZIP 文件完整路径,如 'C:/backup/output.zip' 或 '/backup/output.zip'
|
|
93
|
+
* @returns {Promise<boolean>} 是否压缩成功
|
|
94
|
+
*/
|
|
95
|
+
async function zip(sourceDir, outputFile) {
|
|
96
|
+
const zip = new adm_zip_1.default();
|
|
97
|
+
for (let item of sourceDir) {
|
|
98
|
+
if (typeof item !== "string")
|
|
99
|
+
continue;
|
|
100
|
+
zip.addLocalFolder(item);
|
|
101
|
+
}
|
|
102
|
+
await zip.writeZipPromise(outputFile);
|
|
103
|
+
}
|
|
104
|
+
const waitGC = () => new Promise(r => setImmediate(r));
|
|
105
|
+
exports.waitGC = waitGC;
|
|
106
|
+
function toString(t) {
|
|
107
|
+
if (typeof t === 'string')
|
|
108
|
+
return t;
|
|
109
|
+
if (t instanceof Error) {
|
|
110
|
+
if (typeof t.stack == "string")
|
|
111
|
+
return t.stack;
|
|
112
|
+
return t.message;
|
|
113
|
+
}
|
|
114
|
+
;
|
|
115
|
+
if (Array.isArray(t))
|
|
116
|
+
return t.map((item) => toString(item)).join('\n');
|
|
117
|
+
if (typeof t?.toString === 'function')
|
|
118
|
+
return t.toString();
|
|
119
|
+
if (t === void 0)
|
|
120
|
+
return '[Objeect utils]';
|
|
121
|
+
return JSON.stringify(t, null, 2);
|
|
122
|
+
}
|
|
123
|
+
function ToArray(str) {
|
|
124
|
+
return str.split(`.`).map(Number);
|
|
125
|
+
}
|
|
126
|
+
const sleep = (ms = 100) => new Promise(resolve => setTimeout(resolve, ms));
|
|
127
|
+
exports.sleep = sleep;
|
|
128
|
+
/**
|
|
129
|
+
* 读取文件内容
|
|
130
|
+
* @param filePath 文件路径
|
|
131
|
+
* @param opt 选项,包含 want: 'string' | 'object'
|
|
132
|
+
* @returns 文件内容(字符串或解析后的对象)
|
|
133
|
+
*/
|
|
134
|
+
async function readFileWithRetry(filePath, opt) {
|
|
135
|
+
const opts = {
|
|
136
|
+
maxRetries: 5,
|
|
137
|
+
delay: 200,
|
|
138
|
+
want: 'string',
|
|
139
|
+
...opt
|
|
140
|
+
};
|
|
141
|
+
let lastError;
|
|
142
|
+
for (let attempt = 0; attempt < opts.maxRetries; attempt++) {
|
|
143
|
+
try {
|
|
144
|
+
let resu = "";
|
|
145
|
+
const text = (await promises_1.default.readFile(filePath)).toString();
|
|
146
|
+
if (opts.want === 'string')
|
|
147
|
+
resu = text.toString();
|
|
148
|
+
if (opts.want === 'object') {
|
|
149
|
+
try {
|
|
150
|
+
resu = JSON.parse(text);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
resu = {};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return resu;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
lastError = err;
|
|
160
|
+
if (attempt < opts.maxRetries - 1) {
|
|
161
|
+
await (0, exports.sleep)(opts.delay);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return {};
|
|
166
|
+
}
|
|
167
|
+
exports.readFile = readFileWithRetry;
|
|
168
|
+
const JSONparse = function (str) {
|
|
169
|
+
return JSON.parse(str);
|
|
170
|
+
};
|
|
171
|
+
exports.JSONparse = JSONparse;
|
|
172
|
+
function join(baseDir, inputPath) {
|
|
173
|
+
return node_path_1.default.isAbsolute(inputPath) ?
|
|
174
|
+
inputPath :
|
|
175
|
+
node_path_1.default.join(baseDir, inputPath);
|
|
176
|
+
}
|
|
177
|
+
const isVerison = function (str) {
|
|
178
|
+
return /\d+\.\d+\.\d+/.test(str);
|
|
179
|
+
};
|
|
180
|
+
exports.isVerison = isVerison;
|
|
181
|
+
function Exit(msg) {
|
|
182
|
+
index_js_1.default.e('ERROR', msg);
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
async function FileExsit(dir) {
|
|
186
|
+
try {
|
|
187
|
+
await promises_1.default.access(dir);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
async function GetData(dir) {
|
|
195
|
+
const configPath = node_path_1.default.join(dir, config.PackageFile);
|
|
196
|
+
const fileContent = await promises_1.default.readFile(configPath, 'utf-8');
|
|
197
|
+
const data = (0, exports.JSONparse)(fileContent);
|
|
198
|
+
if (typeof data.version === "string" && typeof data.name === "string" && typeof data.description === "string")
|
|
199
|
+
return data;
|
|
200
|
+
throw new Error("[mbler find config]: " + dir + ": not found config");
|
|
201
|
+
}
|
|
202
|
+
async function isMblerProject(Dir) {
|
|
203
|
+
const rel = await Promise.all([
|
|
204
|
+
node_path_1.default.join(Dir, "package.json"),
|
|
205
|
+
node_path_1.default.join(Dir, config.PackageFile)
|
|
206
|
+
].map(FileExsit)).catch((e) => {
|
|
207
|
+
console.log(e.stack);
|
|
208
|
+
return [false, false];
|
|
209
|
+
});
|
|
210
|
+
const res = rel.every(Boolean);
|
|
211
|
+
return res;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* 检查版本号是否有效(有效返回 true)
|
|
215
|
+
* @param {any} v
|
|
216
|
+
* @returns {boolean}
|
|
217
|
+
*/
|
|
218
|
+
function isValidVersion(v) {
|
|
219
|
+
return typeof v === 'string' && (0, exports.isVerison)(v);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* 处理模块包配置,提取依赖、主入口、UI 配置等
|
|
223
|
+
* @param {string} dir 模块目录路径
|
|
224
|
+
* @param {Object} opt 可选参数(如:已处理的依赖列表)
|
|
225
|
+
* @returns {Promise<Object>} { des: string[], ui: boolean, main: string }
|
|
226
|
+
*/
|
|
227
|
+
async function handlerPackage(dir, opt = {
|
|
228
|
+
des: []
|
|
229
|
+
}) {
|
|
230
|
+
let data;
|
|
231
|
+
try {
|
|
232
|
+
data = await GetData(dir);
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
throw new Error(`无法读取模块配置文件: ${node_path_1.default.join(dir, config.PackageFile)}`);
|
|
236
|
+
}
|
|
237
|
+
// 必需字段校验
|
|
238
|
+
if (typeof data.name !== 'string' ||
|
|
239
|
+
typeof data.description !== 'string' ||
|
|
240
|
+
!isValidVersion(data.version)) {
|
|
241
|
+
throw new Error(`ERR-\n${node_path_1.default.join(dir, config.PackageFile)} 缺少必要字段。\n` +
|
|
242
|
+
'必需字段: name, description, version');
|
|
243
|
+
}
|
|
244
|
+
const result = {
|
|
245
|
+
des: {}, // 依赖模块名数组
|
|
246
|
+
ui: false, // 是否使用 @minecraft/server-ui
|
|
247
|
+
main: './index.js', // 默认主入口
|
|
248
|
+
name: data.name,
|
|
249
|
+
version: data.version,
|
|
250
|
+
description: data.description
|
|
251
|
+
};
|
|
252
|
+
// opt.des : Type Array || undefined
|
|
253
|
+
if (opt.des && data?.script?.dependencies)
|
|
254
|
+
result.des = ForOfMod(data.script.dependencies, opt.des);
|
|
255
|
+
result.ui = Boolean(Boolean(data?.script?.ui));
|
|
256
|
+
if (data?.script) {
|
|
257
|
+
result.main = data.script.main;
|
|
258
|
+
}
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
261
|
+
;
|
|
262
|
+
/**
|
|
263
|
+
* * 遍历模块依赖配置,过滤掉已经安装的模块
|
|
264
|
+
* @param Mod 模块依赖对象,key 是包名,value 是 Git 地址,例如 { "module-a": "git-url" }
|
|
265
|
+
* @param InstallMod 已安装的模块名数组,例如 ["module-a", "module-b"]
|
|
266
|
+
* @returns 过滤后的模块对象,只包含未安装的模块
|
|
267
|
+
*/
|
|
268
|
+
function ForOfMod(Mod, // 比如 { "pkg": "git-url" }
|
|
269
|
+
InstallMod // 比如 ["pkg1", "pkg2"]
|
|
270
|
+
) {
|
|
271
|
+
let returnValue = {};
|
|
272
|
+
try {
|
|
273
|
+
for (const [packageName, gitRepo] of Object.entries(Mod)) {
|
|
274
|
+
if (InstallMod?.includes &&
|
|
275
|
+
typeof InstallMod.includes === 'function' &&
|
|
276
|
+
InstallMod.includes(packageName)) {
|
|
277
|
+
continue; // 如果已安装,跳过
|
|
278
|
+
}
|
|
279
|
+
returnValue[packageName] = gitRepo;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
console.error('ForOfMod 发生错误:', err);
|
|
284
|
+
}
|
|
285
|
+
return returnValue;
|
|
286
|
+
}
|
|
287
|
+
async function copy(src, out) {
|
|
288
|
+
try {
|
|
289
|
+
await promises_1.default.cp(src, out, {
|
|
290
|
+
force: true,
|
|
291
|
+
recursive: true
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
catch (err) { }
|
|
295
|
+
}
|
|
296
|
+
;
|
|
297
|
+
const iconfig = require("./../build/build-g-config.json");
|
|
298
|
+
exports.config = iconfig;
|