mbler 0.1.3-alpha → 0.1.3-alpha-r2
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 -21
- package/README.md +15 -6
- package/bin/mbler.js +12 -12
- package/bin/minify.js +58 -44
- package/lib/build/base.js +1 -297
- package/lib/build/build-g-config.json +12 -12
- package/lib/build/getModule.js +1 -182
- package/lib/build/index.js +1 -370
- package/lib/build/manifest.build.js +1 -103
- package/lib/build/mcVersion.js +1 -86
- package/lib/build/utils.js +1 -6
- package/lib/code-processor/c-handler-export.js +1 -12
- package/lib/code-processor/index.js +1 -141
- package/lib/code-processor/mtreehandler.js +1 -164
- package/lib/commander/index.js +1 -154
- package/lib/data/includes.json +13 -13
- package/lib/data/version.json +88 -88
- package/lib/git/clone.js +1 -28
- package/lib/git/index.js +1 -12
- package/lib/git/pull.js +1 -100
- package/lib/lang/__translate.js +1 -93
- package/lib/lang/en.js +1 -128
- package/lib/lang/index.js +1 -78
- package/lib/lang/zh.js +1 -146
- package/lib/loger/colors.js +1 -13
- package/lib/loger/index.js +1 -136
- package/lib/mcx/ast/index.js +1 -11
- package/lib/mcx/ast/prop.js +1 -78
- package/lib/mcx/ast/tag.js +1 -246
- package/lib/mcx/compile-component/lib.js +1 -106
- package/lib/mcx/compile-component/types.js +1 -2
- package/lib/mcx/compile-component/utils.js +1 -26
- package/lib/mcx/compile-mcx/compile.js +1 -34
- package/lib/mcx/compile-mcx/compiler/bundler.js +1 -0
- package/lib/mcx/compile-mcx/compiler/compileData.js +1 -0
- package/lib/mcx/compile-mcx/compiler/compileMain.js +1 -0
- package/lib/mcx/compile-mcx/compiler/index.js +1 -0
- package/lib/mcx/compile-mcx/compiler/utils.js +1 -0
- package/lib/mcx/compile-mcx/context.js +1 -19
- package/lib/mcx/compile-mcx/index.js +1 -10
- package/lib/mcx/compile-mcx/mcx/index.js +1 -2
- package/lib/mcx/compile-mcx/mcx/types.js +1 -2
- package/lib/mcx/compile-mcx/template/module.js +1 -42
- package/lib/mcx/compile-mcx/types.js +1 -2
- package/lib/mcx/compile-mcx/utils.node.js +1 -207
- package/lib/mcx/index.js +1 -13
- package/lib/mcx/test/index.js +1 -7
- package/lib/mcx/test.js +1 -21
- package/lib/mcx/types.js +1 -2
- package/lib/mcx/utils.js +1 -86
- package/lib/module-handler/index.js +1 -482
- package/lib/modules/create-game/mbler.config.json +13 -13
- package/lib/modules/create-game/src/Runner/RunnerManager.js +1 -113
- package/lib/modules/create-game/src/Runner/scriptRunner.js +1 -70
- package/lib/modules/create-game/src/config.js +1 -27
- package/lib/modules/create-game/src/constants.js +1 -19
- package/lib/modules/create-game/src/createGameModule.js +1 -24
- package/lib/modules/create-game/src/gameComponent/common/autoStop.js +1 -38
- package/lib/modules/create-game/src/gameComponent/common/lazyLoader.js +1 -76
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/onTimeEvent.js +1 -36
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/stopWatch.js +1 -90
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/tickEvent.js +1 -29
- package/lib/modules/create-game/src/gameComponent/common/timer/onTimeEvent.js +1 -36
- package/lib/modules/create-game/src/gameComponent/common/timer/tickEvent.js +1 -29
- package/lib/modules/create-game/src/gameComponent/common/timer/timer.js +1 -87
- package/lib/modules/create-game/src/gameComponent/gameComponent.js +1 -53
- package/lib/modules/create-game/src/gameComponent/index.js +1 -31
- package/lib/modules/create-game/src/gameComponent/player/blockInteractionBlocker.js +1 -40
- package/lib/modules/create-game/src/gameComponent/player/entityInteractionBlocker.js +1 -48
- package/lib/modules/create-game/src/gameComponent/player/healthIndicator.js +1 -48
- package/lib/modules/create-game/src/gameComponent/player/regionMonitor.js +1 -22
- package/lib/modules/create-game/src/gameComponent/player/respawn.js +1 -59
- package/lib/modules/create-game/src/gameComponent/player/spawnProtector.js +1 -69
- package/lib/modules/create-game/src/gameComponent/region/regionProtecter.js +1 -53
- package/lib/modules/create-game/src/gameComponent/region/regionTeamChooser.js +1 -71
- package/lib/modules/create-game/src/gameComponent/region/regionTeamCleaner.js +1 -20
- package/lib/modules/create-game/src/gameComponent/view/infoScoreboard.js +1 -77
- package/lib/modules/create-game/src/gameComponent/view/teamScoreboard.js +1 -83
- package/lib/modules/create-game/src/gameContext.js +1 -6
- package/lib/modules/create-game/src/gameEngine.js +1 -139
- package/lib/modules/create-game/src/gameEvent/eventManager.js +1 -108
- package/lib/modules/create-game/src/gameEvent/eventSignal.js +1 -28
- package/lib/modules/create-game/src/gameEvent/events/buttonPush.js +1 -41
- package/lib/modules/create-game/src/gameEvent/events/inSlot.js +1 -77
- package/lib/modules/create-game/src/gameEvent/events/interval.js +1 -51
- package/lib/modules/create-game/src/gameEvent/events/itemUse.js +1 -36
- package/lib/modules/create-game/src/gameEvent/events/onBlock.js +1 -106
- package/lib/modules/create-game/src/gameEvent/events/regionEvents.js +1 -105
- package/lib/modules/create-game/src/gameEvent/events/signClick.js +1 -45
- package/lib/modules/create-game/src/gameEvent/gameEvent.js +1 -54
- package/lib/modules/create-game/src/gameEvent/index.js +1 -20
- package/lib/modules/create-game/src/gameEvent/mapEventSignal.js +1 -101
- package/lib/modules/create-game/src/gameEvent/subscription.js +1 -17
- package/lib/modules/create-game/src/gamePlayer/gamePlayer.js +1 -102
- package/lib/modules/create-game/src/gamePlayer/groupBuilder.js +1 -38
- package/lib/modules/create-game/src/gamePlayer/groupSet.js +1 -96
- package/lib/modules/create-game/src/gamePlayer/index.js +1 -25
- package/lib/modules/create-game/src/gamePlayer/playerGroup.js +1 -145
- package/lib/modules/create-game/src/gamePlayer/playerManager.js +1 -57
- package/lib/modules/create-game/src/gameRegion/gameRegion.js +1 -229
- package/lib/modules/create-game/src/gameRegion/index.js +1 -43
- package/lib/modules/create-game/src/gameRegion/regionHelper.js +1 -79
- package/lib/modules/create-game/src/gameState/common/autoStop.js +1 -39
- package/lib/modules/create-game/src/gameState/gameState.js +1 -169
- package/lib/modules/create-game/src/gameState/index.js +1 -7
- package/lib/modules/create-game/src/gameState/types.js +1 -35
- package/lib/modules/create-game/src/gameStructure/gameStructure.js +1 -36
- package/lib/modules/create-game/src/main.js +1 -86
- package/lib/modules/create-game/src/system/gameCommand.js +1 -107
- package/lib/modules/create-game/src/system/gameManager.js +1 -124
- package/lib/modules/create-game/src/system/globalPlayerManager.js +1 -119
- package/lib/modules/create-game/src/utils/GameError.js +1 -31
- package/lib/modules/create-game/src/utils/algorithm.js +1 -95
- package/lib/modules/create-game/src/utils/chunk.js +1 -63
- package/lib/modules/create-game/src/utils/deferredObject.js +1 -27
- package/lib/modules/create-game/src/utils/duration.js +1 -25
- package/lib/modules/create-game/src/utils/func.js +1 -20
- package/lib/modules/create-game/src/utils/index.js +1 -52
- package/lib/modules/create-game/src/utils/interfaces.js +1 -2
- package/lib/modules/create-game/src/utils/logger.js +1 -47
- package/lib/modules/create-game/src/utils/random.js +1 -76
- package/lib/modules/create-game/src/utils/vanila-data.js +1 -123
- package/lib/modules/create-game/src/utils/vector.js +1 -96
- package/lib/modules/gameLib/mbler.config.json +15 -15
- package/lib/modules/gameLib/src/config.js +1 -134
- package/lib/modules/gameLib/src/data.js +1 -77
- package/lib/modules/gameLib/src/entity.js +1 -256
- package/lib/modules/gameLib/src/event.js +1 -285
- package/lib/modules/gameLib/src/index.js +1 -20
- package/lib/modules/gameLib/src/loger.js +1 -21
- package/lib/modules/gameLib/src/ui.js +1 -209
- package/lib/modules/gameLib/src/utils.js +1 -122
- package/lib/modules/gutils/mbler.config.json +11 -11
- package/lib/modules/gutils/src/index.js +1 -22
- package/lib/modules/innerDef.json +4 -4
- package/lib/runTemp/File.js +1 -54
- package/lib/runTemp/config.json +3 -3
- package/lib/runTemp/index.js +1 -137
- package/lib/runTemp/securityFile.js +1 -93
- package/lib/start/addPack.js +1 -3
- package/lib/start/clean.js +1 -84
- package/lib/start/create.js +1 -146
- package/lib/start/dev.js +1 -99
- package/lib/start/getResConfig.js +1 -3
- package/lib/start/incg.js +1 -3
- package/lib/start/index.js +1 -207
- package/lib/start/init.js +1 -125
- package/lib/start/rechce.js +1 -57
- package/lib/start/unaddPack.js +1 -3
- package/lib/start/unincg.js +1 -67
- package/lib/start/version.js +1 -73
- package/lib/utils/index.js +1 -298
- package/lib/uuid/index.js +1 -27
- package/package.json +49 -1
- package/test/2x sword/behavior/scripts/index.js +24 -24
- package/test/2x sword/mbler.config.json +11 -11
- package/test/2x sword/package.json +13 -13
- package/test/README.md +7 -7
- package/test/des/index.js +19 -19
- package/test/des/mbler.config.json +4 -4
- package/test/des/package.json +6 -6
- package/test/initializer/index.js +5 -5
- package/test/initializer/mbler.config.json +4 -4
- package/test/initializer/package.json +6 -6
- package/test/mbler-int/behavior/res/items/mang_one_int.json +21 -21
- package/test/mbler-int/behavior/scripts/index.js +7 -7
- package/test/mbler-int/behavior/scripts/lib/event/index.js +19 -19
- package/test/mbler-int/behavior/scripts/lib/ui/Lore.js +18 -18
- package/test/mbler-int/behavior/scripts/lib/ui/baseUi.js +6 -6
- package/test/mbler-int/behavior/scripts/lib/ui/index.js +206 -206
- package/test/mbler-int/behavior/scripts/lib/utils/index.js +51 -51
- package/test/mbler-int/mbler.config.json +18 -18
- package/test/mbler-int/package.json +12 -12
- package/test/script-mbler/behavior/scripts/index.js +5 -0
- package/test/script-mbler/behavior/scripts/index.ts +5 -5
- package/test/script-mbler/mbler.config.json +14 -14
- package/test/script-mbler/package.json +15 -15
- package/lib/mcx/compile-mcx/_compile.js +0 -602
|
@@ -1,103 +1 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.ManiFest = void 0;
|
|
40
|
-
const build_g_config_json_1 = __importDefault(require("./build-g-config.json"));
|
|
41
|
-
const utils = __importStar(require("./../utils/index.js"));
|
|
42
|
-
const mcVersion_js_1 = require("./mcVersion.js");
|
|
43
|
-
const index_js_1 = require("./../uuid/index.js");
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
|
-
const config = build_g_config_json_1.default;
|
|
46
|
-
const isNonEmptyString = (str) => typeof str === 'string' && str.trim().length > 0;
|
|
47
|
-
class ManiFest {
|
|
48
|
-
data;
|
|
49
|
-
constructor(MblerConfig, type) {
|
|
50
|
-
this.data = {
|
|
51
|
-
format_version: 2,
|
|
52
|
-
header: {
|
|
53
|
-
name: MblerConfig.name,
|
|
54
|
-
description: MblerConfig.description,
|
|
55
|
-
uuid: (0, index_js_1.fromString)(MblerConfig.name, config[type].header),
|
|
56
|
-
version: utils.ToArray(MblerConfig.version),
|
|
57
|
-
min_engine_version: utils.ToArray(MblerConfig.mcVersion.toString()),
|
|
58
|
-
},
|
|
59
|
-
modules: [{
|
|
60
|
-
type: type,
|
|
61
|
-
uuid: (0, index_js_1.fromString)(MblerConfig.name, config[type].module),
|
|
62
|
-
description: `From Mbler`,
|
|
63
|
-
version: utils.ToArray(MblerConfig.version),
|
|
64
|
-
}]
|
|
65
|
-
};
|
|
66
|
-
if (type === "data" && MblerConfig.script)
|
|
67
|
-
this.processScriptConfig(MblerConfig, this.data);
|
|
68
|
-
}
|
|
69
|
-
processScriptConfig(data, manifest) {
|
|
70
|
-
const { script } = data;
|
|
71
|
-
if (!script)
|
|
72
|
-
return;
|
|
73
|
-
let entry = script.main || "index.js";
|
|
74
|
-
// 如果是mcx,直接设为index.js,因为mcxLoad类会聚集mcx文件和其他文件将其编译输出到index.js
|
|
75
|
-
if (entry?.endsWith(".mcx") && script.lang === "mcx")
|
|
76
|
-
entry = "index.js";
|
|
77
|
-
if (!isNonEmptyString(entry))
|
|
78
|
-
throw new Error('Script main entry is missing or invalid');
|
|
79
|
-
if (!manifest.dependencies)
|
|
80
|
-
manifest.dependencies = [];
|
|
81
|
-
manifest.dependencies.push({
|
|
82
|
-
module_name: '@minecraft/server',
|
|
83
|
-
version: mcVersion_js_1.mcVersionGeter.ToServer(data.mcVersion.toString(), Boolean(script.UseBeta))
|
|
84
|
-
});
|
|
85
|
-
manifest.modules.push({
|
|
86
|
-
type: 'script',
|
|
87
|
-
language: 'javascript',
|
|
88
|
-
entry: path.join("scripts", entry).replace("\\", "/ "),
|
|
89
|
-
uuid: (0, index_js_1.fromString)(data.name, config.ScriptId),
|
|
90
|
-
version: utils.ToArray(data.version),
|
|
91
|
-
});
|
|
92
|
-
if (script.ui === true) {
|
|
93
|
-
manifest.dependencies.push({
|
|
94
|
-
module_name: '@minecraft/server-ui',
|
|
95
|
-
version: mcVersion_js_1.mcVersionGeter.ToServerUi(data.mcVersion.toString(), Boolean(script.UseBeta))
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
;
|
|
99
|
-
manifest.capabilities = ['script_eval'];
|
|
100
|
-
}
|
|
101
|
-
;
|
|
102
|
-
}
|
|
103
|
-
exports.ManiFest = ManiFest;
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,i,r,t){void 0===t&&(t=r);var n=Object.getOwnPropertyDescriptor(i,r);n&&!("get"in n?!i.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return i[r]}}),Object.defineProperty(e,t,n)}:function(e,i,r,t){void 0===t&&(t=r),e[t]=i[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,i){Object.defineProperty(e,"default",{enumerable:!0,value:i})}:function(e,i){e.default=i}),__importStar=this&&this.__importStar||function(){var e=function(i){return e=Object.getOwnPropertyNames||function(e){var i=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[i.length]=r);return i},e(i)};return function(i){if(i&&i.__esModule)return i;var r={};if(null!=i)for(var t=e(i),n=0;n<t.length;n++)"default"!==t[n]&&__createBinding(r,i,t[n]);return __setModuleDefault(r,i),r}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ManiFest=void 0;const build_g_config_json_1=__importDefault(require("./build-g-config.json")),utils=__importStar(require("./../utils/index.js")),mcVersion_js_1=require("./mcVersion.js"),index_js_1=require("./../uuid/index.js"),path=__importStar(require("path")),config=build_g_config_json_1.default,isNonEmptyString=e=>"string"==typeof e&&e.trim().length>0;class ManiFest{data;constructor(e,i){this.data={format_version:2,header:{name:e.name,description:e.description,uuid:(0,index_js_1.fromString)(e.name,config[i].header),version:utils.ToArray(e.version),min_engine_version:utils.ToArray(e.mcVersion.toString())},modules:[{type:i,uuid:(0,index_js_1.fromString)(e.name,config[i].module),description:"From Mbler",version:utils.ToArray(e.version)}]},"data"===i&&e.script&&this.processScriptConfig(e,this.data)}processScriptConfig(e,i){const{script:r}=e;if(!r)return;let t=r.main||"index.js";if(t?.endsWith(".mcx")&&"mcx"===r.lang&&(t="index.js"),!isNonEmptyString(t))throw new Error("Script main entry is missing or invalid");i.dependencies||(i.dependencies=[]),i.dependencies.push({module_name:"@minecraft/server",version:mcVersion_js_1.mcVersionGeter.ToServer(e.mcVersion.toString(),Boolean(r.UseBeta))}),i.modules.push({type:"script",language:"javascript",entry:path.join("scripts",t).replace("\\","/ "),uuid:(0,index_js_1.fromString)(e.name,config.ScriptId),version:utils.ToArray(e.version)}),!0===r.ui&&i.dependencies.push({module_name:"@minecraft/server-ui",version:mcVersion_js_1.mcVersionGeter.ToServerUi(e.mcVersion.toString(),Boolean(r.UseBeta))}),i.capabilities=["script_eval"]}}exports.ManiFest=ManiFest;
|
package/lib/build/mcVersion.js
CHANGED
|
@@ -1,86 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mcVersionGeter = void 0;
|
|
4
|
-
// 版本资源表
|
|
5
|
-
const VERSION_TABLE = require('./../data/version.json').version;
|
|
6
|
-
// 转字符串
|
|
7
|
-
const normalize = (v) => {
|
|
8
|
-
return String(v || '')
|
|
9
|
-
.trim();
|
|
10
|
-
};
|
|
11
|
-
const parts = (v) => {
|
|
12
|
-
return normalize(v)
|
|
13
|
-
.split('.')
|
|
14
|
-
.slice(0, 3)
|
|
15
|
-
.map((n) => parseInt(n, 10) || 0);
|
|
16
|
-
};
|
|
17
|
-
const compareVer = (a, b) => {
|
|
18
|
-
const A = parts(a);
|
|
19
|
-
const B = parts(b);
|
|
20
|
-
for (let i = 0; i < 3; i++) {
|
|
21
|
-
const a = A[i];
|
|
22
|
-
const b = B[i];
|
|
23
|
-
if (!a || !b)
|
|
24
|
-
continue;
|
|
25
|
-
if (a !== b)
|
|
26
|
-
return a > b ? 1 : -1;
|
|
27
|
-
}
|
|
28
|
-
return 0;
|
|
29
|
-
};
|
|
30
|
-
const findMatch = (version) => {
|
|
31
|
-
const v = normalize(version);
|
|
32
|
-
for (const item of VERSION_TABLE) {
|
|
33
|
-
// 遍历查找
|
|
34
|
-
const [start, end] = item.range;
|
|
35
|
-
if (compareVer(v, start) >= 0 && compareVer(v, end) <= 0) {
|
|
36
|
-
return {
|
|
37
|
-
item,
|
|
38
|
-
match: 'exact',
|
|
39
|
-
start,
|
|
40
|
-
end
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const sorted = [
|
|
45
|
-
...VERSION_TABLE
|
|
46
|
-
].sort((a, b) => compareVer(b.range[0], a.range[0]));
|
|
47
|
-
for (const item of sorted) {
|
|
48
|
-
if (compareVer(v, item.range[0]) >= 0) {
|
|
49
|
-
return {
|
|
50
|
-
item,
|
|
51
|
-
match: 'fallback',
|
|
52
|
-
start: item.range[0],
|
|
53
|
-
end: item.range[1]
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const last = sorted[sorted.length - 1];
|
|
58
|
-
return {
|
|
59
|
-
item: last,
|
|
60
|
-
match: 'oldest',
|
|
61
|
-
start: last.range[0],
|
|
62
|
-
end: last.range[1]
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
exports.mcVersionGeter = {
|
|
66
|
-
/**
|
|
67
|
-
* @param version Minecraft版本号
|
|
68
|
-
* @param useBeta 是否返回Beta版本
|
|
69
|
-
*/
|
|
70
|
-
ToServer(version, useBeta = false) {
|
|
71
|
-
const { item, match, start, end } = findMatch(version);
|
|
72
|
-
if (match !== 'exact')
|
|
73
|
-
console.warn(`⚠️ 使用兼容版本 ${start}-${end}(输入:${version})`);
|
|
74
|
-
return useBeta ? item.beta.server : item.format.server;
|
|
75
|
-
},
|
|
76
|
-
/**
|
|
77
|
-
* @param version Minecraft版本号
|
|
78
|
-
* @param useBeta 是否返回Beta版本
|
|
79
|
-
*/
|
|
80
|
-
ToServerUi(version, useBeta = false) {
|
|
81
|
-
const { item, match, start, end } = findMatch(version);
|
|
82
|
-
if (match !== 'exact')
|
|
83
|
-
console.warn(`⚠️ 使用兼容版本 ${start}-${end}(输入:${version})`);
|
|
84
|
-
return useBeta ? item.beta.server_ui : item.format.server_ui;
|
|
85
|
-
}
|
|
86
|
-
};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mcVersionGeter=void 0;const VERSION_TABLE=require("./../data/version.json").version,normalize=e=>String(e||"").trim(),parts=e=>normalize(e).split(".").slice(0,3).map(e=>parseInt(e,10)||0),compareVer=(e,r)=>{const t=parts(e),n=parts(r);for(let e=0;e<3;e++){const r=t[e],a=n[e];if(r&&a&&r!==a)return r>a?1:-1}return 0},findMatch=e=>{const r=normalize(e);for(const e of VERSION_TABLE){const[t,n]=e.range;if(compareVer(r,t)>=0&&compareVer(r,n)<=0)return{item:e,match:"exact",start:t,end:n}}const t=[...VERSION_TABLE].sort((e,r)=>compareVer(r.range[0],e.range[0]));for(const e of t)if(compareVer(r,e.range[0])>=0)return{item:e,match:"fallback",start:e.range[0],end:e.range[1]};const n=t[t.length-1];return{item:n,match:"oldest",start:n.range[0],end:n.range[1]}};exports.mcVersionGeter={ToServer(e,r=!1){const{item:t,match:n,start:a,end:o}=findMatch(e);return"exact"!==n&&console.warn(`⚠️ 使用兼容版本 ${a}-${o}(输入:${e})`),r?t.beta.server:t.format.server},ToServerUi(e,r=!1){const{item:t,match:n,start:a,end:o}=findMatch(e);return"exact"!==n&&console.warn(`⚠️ 使用兼容版本 ${a}-${o}(输入:${e})`),r?t.beta.server_ui:t.format.server_ui}};
|
package/lib/build/utils.js
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = next;
|
|
4
|
-
function next(tip) {
|
|
5
|
-
process.stdout.write(`\r[${new Date}] ${tip}`);
|
|
6
|
-
}
|
|
1
|
+
"use strict";function next(e){process.stdout.write(`\r[${new Date}] ${e}`)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=next;
|
|
@@ -1,12 +1 @@
|
|
|
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.default = default_1;
|
|
7
|
-
const mtreehandler_1 = __importDefault(require("./mtreehandler"));
|
|
8
|
-
function default_1(text) {
|
|
9
|
-
if (typeof text !== 'string')
|
|
10
|
-
return new mtreehandler_1.default(null);
|
|
11
|
-
return new mtreehandler_1.default(text);
|
|
12
|
-
}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=default_1;const mtreehandler_1=__importDefault(require("./mtreehandler"));function default_1(e){return"string"!=typeof e?new mtreehandler_1.default(null):new mtreehandler_1.default(e)}
|
|
@@ -1,141 +1 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.default = processor;
|
|
40
|
-
const fs = __importStar(require("fs/promises"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const utils = __importStar(require("../utils/index.js"));
|
|
43
|
-
const c_handler_export_1 = __importDefault(require("./c-handler-export"));
|
|
44
|
-
const terser_1 = require("terser");
|
|
45
|
-
const getModule_js_1 = __importDefault(require("../build/getModule.js"));
|
|
46
|
-
let gamelib_modules;
|
|
47
|
-
let forInscript = false;
|
|
48
|
-
/**
|
|
49
|
-
* 替换模块 import 路径
|
|
50
|
-
*/
|
|
51
|
-
async function replaceModuleImports(code, modules, targetDir, sourceDir) {
|
|
52
|
-
const im = (0, c_handler_export_1.default)(code);
|
|
53
|
-
if (Array.isArray(modules)) {
|
|
54
|
-
const imports = im.get();
|
|
55
|
-
if (imports.length < 1)
|
|
56
|
-
return code;
|
|
57
|
-
for (const item of modules) {
|
|
58
|
-
const moduleDir = await gamelib_modules.getDir(item);
|
|
59
|
-
const main = (await utils.handlerPackage(moduleDir)).main;
|
|
60
|
-
const relPath = path
|
|
61
|
-
.relative(path.dirname(targetDir), path.join(sourceDir, 'node_modules', path.basename(moduleDir), main))
|
|
62
|
-
.split(path.sep).join('/');
|
|
63
|
-
const found = imports.find((imp) => imp.ModuleName === item);
|
|
64
|
-
if (found)
|
|
65
|
-
im.set({
|
|
66
|
-
ModuleName: `./${relPath}`,
|
|
67
|
-
ImportItem: found.ImportItem
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return im.generate();
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* 处理单个文件
|
|
75
|
-
*/
|
|
76
|
-
async function processFile(filePath, modules, sourceDir, shouldMinify) {
|
|
77
|
-
try {
|
|
78
|
-
const ext = path.extname(filePath).slice(1);
|
|
79
|
-
const code = await fs.readFile(filePath, "utf-8");
|
|
80
|
-
switch (ext) {
|
|
81
|
-
case 'js':
|
|
82
|
-
let replaced = await replaceModuleImports(code, modules, filePath, sourceDir);
|
|
83
|
-
if (shouldMinify === true) {
|
|
84
|
-
const result = await (0, terser_1.minify)(replaced);
|
|
85
|
-
if (result.code)
|
|
86
|
-
replaced = result.code;
|
|
87
|
-
}
|
|
88
|
-
await fs.writeFile(filePath, replaced, 'utf-8');
|
|
89
|
-
break;
|
|
90
|
-
case 'json':
|
|
91
|
-
let re = code;
|
|
92
|
-
if (shouldMinify === true) {
|
|
93
|
-
const json = utils.JSONparse(code);
|
|
94
|
-
re = JSON.stringify(json);
|
|
95
|
-
if (forInscript) {
|
|
96
|
-
await Promise.all([
|
|
97
|
-
fs.writeFile(`${filePath}.js`, `export const data=${re}`),
|
|
98
|
-
fs.rm(filePath, { recursive: true, force: true })
|
|
99
|
-
]);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
break;
|
|
103
|
-
case 'map':
|
|
104
|
-
case 'ts':
|
|
105
|
-
await fs.rm(filePath, { recursive: true, force: true });
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
console.log(filePath, err.message);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* 递归遍历并处理文件
|
|
115
|
-
*/
|
|
116
|
-
async function processDir(targetDir, modules, sourceDir, baseDir, shouldMinify) {
|
|
117
|
-
const stat = await fs.stat(targetDir);
|
|
118
|
-
gamelib_modules = await (0, getModule_js_1.default)(baseDir);
|
|
119
|
-
let inScriptTemp = false;
|
|
120
|
-
if (stat.isDirectory()) {
|
|
121
|
-
const files = await fs.readdir(targetDir);
|
|
122
|
-
if (path.basename(targetDir) === "scripts") {
|
|
123
|
-
forInscript = true;
|
|
124
|
-
inScriptTemp = true;
|
|
125
|
-
}
|
|
126
|
-
for (const file of files) {
|
|
127
|
-
await processDir(path.join(targetDir, file), modules, sourceDir, baseDir, shouldMinify);
|
|
128
|
-
}
|
|
129
|
-
if (forInscript && inScriptTemp)
|
|
130
|
-
forInscript = false;
|
|
131
|
-
}
|
|
132
|
-
else if (stat.isFile()) {
|
|
133
|
-
await processFile(targetDir, modules, sourceDir, shouldMinify);
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
console.warn(`跳过未知类型:${targetDir}`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
async function processor(targetDir, options) {
|
|
140
|
-
await processDir(targetDir, options.modules || [], options.sourceDir, options.baseDir, options.minify);
|
|
141
|
-
}
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,a)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var i=e(t),a=0;a<i.length;a++)"default"!==i[a]&&__createBinding(r,t,i[a]);return __setModuleDefault(r,t),r}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=processor;const fs=__importStar(require("fs/promises")),path=__importStar(require("path")),utils=__importStar(require("../utils/index.js")),c_handler_export_1=__importDefault(require("./c-handler-export")),terser_1=require("terser"),getModule_js_1=__importDefault(require("../build/getModule.js"));let gamelib_modules,forInscript=!1;async function replaceModuleImports(e,t,r,i){const a=(0,c_handler_export_1.default)(e);if(Array.isArray(t)){const s=a.get();if(s.length<1)return e;for(const e of t){const t=await gamelib_modules.getDir(e),o=(await utils.handlerPackage(t)).main,n=path.relative(path.dirname(r),path.join(i,"node_modules",path.basename(t),o)).split(path.sep).join("/"),c=s.find(t=>t.ModuleName===e);c&&a.set({ModuleName:`./${n}`,ImportItem:c.ImportItem})}}return a.generate()}async function processFile(e,t,r,i){try{const a=path.extname(e).slice(1),s=await fs.readFile(e,"utf-8");switch(a){case"js":let a=await replaceModuleImports(s,t,e,r);if(!0===i){const e=await(0,terser_1.minify)(a);e.code&&(a=e.code)}await fs.writeFile(e,a,"utf-8");break;case"json":let o=s;if(!0===i){const t=utils.JSONparse(s);o=JSON.stringify(t),forInscript&&await Promise.all([fs.writeFile(`${e}.js`,`export const data=${o}`),fs.rm(e,{recursive:!0,force:!0})])}break;case"map":case"ts":await fs.rm(e,{recursive:!0,force:!0})}}catch(t){console.log(e,t.message)}}async function processDir(e,t,r,i,a){const s=await fs.stat(e);gamelib_modules=await(0,getModule_js_1.default)(i);let o=!1;if(s.isDirectory()){const s=await fs.readdir(e);"scripts"===path.basename(e)&&(forInscript=!0,o=!0);for(const o of s)await processDir(path.join(e,o),t,r,i,a);forInscript&&o&&(forInscript=!1)}else s.isFile()?await processFile(e,t,r,a):console.warn(`跳过未知类型:${e}`)}async function processor(e,t){await processDir(e,t.modules||[],t.sourceDir,t.baseDir,t.minify)}
|
|
@@ -1,164 +1 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const parser_1 = require("@babel/parser");
|
|
40
|
-
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
41
|
-
const generator_1 = __importDefault(require("@babel/generator"));
|
|
42
|
-
const types = __importStar(require("@babel/types"));
|
|
43
|
-
class ImportManager {
|
|
44
|
-
code;
|
|
45
|
-
ast;
|
|
46
|
-
imports;
|
|
47
|
-
constructor(code) {
|
|
48
|
-
this.code = code;
|
|
49
|
-
this.ast = null;
|
|
50
|
-
this.imports = [];
|
|
51
|
-
this._parse();
|
|
52
|
-
}
|
|
53
|
-
_parse() {
|
|
54
|
-
if (!this.code) {
|
|
55
|
-
this.ast = { program: { body: [] } };
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// 解析源码为 AST
|
|
59
|
-
this.ast = (0, parser_1.parse)(this.code, {
|
|
60
|
-
sourceType: 'module'
|
|
61
|
-
});
|
|
62
|
-
this._collectImports();
|
|
63
|
-
}
|
|
64
|
-
_collectImports() {
|
|
65
|
-
this.imports = [];
|
|
66
|
-
(0, traverse_1.default)(this.ast, {
|
|
67
|
-
ImportDeclaration: (path) => {
|
|
68
|
-
const source = path.node.source.value;
|
|
69
|
-
const specifiers = path.node.specifiers.map(specifier => {
|
|
70
|
-
if (specifier.type === 'ImportDefaultSpecifier') {
|
|
71
|
-
return specifier.local.name;
|
|
72
|
-
}
|
|
73
|
-
else if (specifier.type === 'ImportSpecifier') {
|
|
74
|
-
if (specifier.imported.type == "Identifier")
|
|
75
|
-
return specifier.imported.name;
|
|
76
|
-
return specifier.imported.value;
|
|
77
|
-
}
|
|
78
|
-
else if (specifier.type === 'ImportNamespaceSpecifier') {
|
|
79
|
-
return '*' + specifier.local.name; // * as name
|
|
80
|
-
}
|
|
81
|
-
return null;
|
|
82
|
-
}).filter(name => name !== null);
|
|
83
|
-
this.imports.push({
|
|
84
|
-
moduleName: source,
|
|
85
|
-
importItem: specifiers
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
// 检查是否导入了某个包
|
|
91
|
-
has(moduleName) {
|
|
92
|
-
return this.imports
|
|
93
|
-
.some(imp => imp.moduleName === moduleName);
|
|
94
|
-
}
|
|
95
|
-
// 返回所有导入包
|
|
96
|
-
get() {
|
|
97
|
-
return this.imports.map(imp => ({
|
|
98
|
-
ModuleName: imp.moduleName,
|
|
99
|
-
ImportItem: [...imp.importItem]
|
|
100
|
-
}));
|
|
101
|
-
}
|
|
102
|
-
// 设置/修改导入项
|
|
103
|
-
set({ ModuleName, ImportItem }) {
|
|
104
|
-
// 查找是否已有该包,或有相同的包名或导入项
|
|
105
|
-
const exists = this.imports.findIndex(imp => imp.moduleName === ModuleName ||
|
|
106
|
-
imp.importItem.some(item => ImportItem.includes(item)));
|
|
107
|
-
if (exists > -1) {
|
|
108
|
-
// 修改已存在的项
|
|
109
|
-
this.imports[exists] = {
|
|
110
|
-
moduleName: ModuleName,
|
|
111
|
-
importItem: [...ImportItem]
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
// 新增
|
|
116
|
-
this.imports.push({
|
|
117
|
-
moduleName: ModuleName,
|
|
118
|
-
importItem: [...ImportItem]
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
// 同步更新 AST
|
|
122
|
-
this._syncAST();
|
|
123
|
-
}
|
|
124
|
-
// 同步 imports 数据到 AST
|
|
125
|
-
_syncAST() {
|
|
126
|
-
// 先删除所有 import 声明
|
|
127
|
-
(0, traverse_1.default)(this.ast, {
|
|
128
|
-
ImportDeclaration(path) {
|
|
129
|
-
path.remove();
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
// 重新插入 import 声明
|
|
133
|
-
this.imports.forEach(imp => {
|
|
134
|
-
const specifiers = [];
|
|
135
|
-
imp.importItem.forEach(name => {
|
|
136
|
-
if (name === '*') {
|
|
137
|
-
// 处理 * as xx 的情况
|
|
138
|
-
const match = name.match(/\*\s+as\s+(\w+)/) || [];
|
|
139
|
-
if (match)
|
|
140
|
-
specifiers.push(types.importNamespaceSpecifier(types.identifier(match[1] || "")));
|
|
141
|
-
}
|
|
142
|
-
else if (name.endsWith('*')) {
|
|
143
|
-
// 默认导入
|
|
144
|
-
specifiers
|
|
145
|
-
.push(types.importDefaultSpecifier(types.identifier(name.replace('*', ''))));
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
specifiers
|
|
149
|
-
.push(types.importSpecifier(types.identifier(name), types.identifier(name)));
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
// 构造 ImportDeclaration 节点
|
|
153
|
-
const importNode = types.importDeclaration(specifiers, types.stringLiteral(imp.moduleName));
|
|
154
|
-
this.ast.program.body.unshift(importNode);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
// 生成最终代码
|
|
158
|
-
generate() {
|
|
159
|
-
return (0, generator_1.default)(this.ast, {
|
|
160
|
-
compact: false
|
|
161
|
-
}).code;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
exports.default = ImportManager;
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var i=e(t),o=0;o<i.length;o++)"default"!==i[o]&&__createBinding(r,t,i[o]);return __setModuleDefault(r,t),r}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const parser_1=require("@babel/parser"),traverse_1=__importDefault(require("@babel/traverse")),generator_1=__importDefault(require("@babel/generator")),types=__importStar(require("@babel/types"));class ImportManager{code;ast;imports;constructor(e){this.code=e,this.ast=null,this.imports=[],this._parse()}_parse(){this.code?(this.ast=(0,parser_1.parse)(this.code,{sourceType:"module"}),this._collectImports()):this.ast={program:{body:[]}}}_collectImports(){this.imports=[],(0,traverse_1.default)(this.ast,{ImportDeclaration:e=>{const t=e.node.source.value,r=e.node.specifiers.map(e=>"ImportDefaultSpecifier"===e.type?e.local.name:"ImportSpecifier"===e.type?"Identifier"==e.imported.type?e.imported.name:e.imported.value:"ImportNamespaceSpecifier"===e.type?"*"+e.local.name:null).filter(e=>null!==e);this.imports.push({moduleName:t,importItem:r})}})}has(e){return this.imports.some(t=>t.moduleName===e)}get(){return this.imports.map(e=>({ModuleName:e.moduleName,ImportItem:[...e.importItem]}))}set({ModuleName:e,ImportItem:t}){const r=this.imports.findIndex(r=>r.moduleName===e||r.importItem.some(e=>t.includes(e)));r>-1?this.imports[r]={moduleName:e,importItem:[...t]}:this.imports.push({moduleName:e,importItem:[...t]}),this._syncAST()}_syncAST(){(0,traverse_1.default)(this.ast,{ImportDeclaration(e){e.remove()}}),this.imports.forEach(e=>{const t=[];e.importItem.forEach(e=>{if("*"===e){const r=e.match(/\*\s+as\s+(\w+)/)||[];r&&t.push(types.importNamespaceSpecifier(types.identifier(r[1]||"")))}else e.endsWith("*")?t.push(types.importDefaultSpecifier(types.identifier(e.replace("*","")))):t.push(types.importSpecifier(types.identifier(e),types.identifier(e)))});const r=types.importDeclaration(t,types.stringLiteral(e.moduleName));this.ast.program.body.unshift(r)})}generate(){return(0,generator_1.default)(this.ast,{compact:!1}).code}}exports.default=ImportManager;
|