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,207 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class NodeUtils {
|
|
4
|
-
static stringArrayToMemberExpression(stringArray) {
|
|
5
|
-
if (stringArray.length < 2) {
|
|
6
|
-
throw new Error('String array must contain at least 2 items');
|
|
7
|
-
}
|
|
8
|
-
let current = {
|
|
9
|
-
type: 'Identifier',
|
|
10
|
-
name: stringArray[0]
|
|
11
|
-
};
|
|
12
|
-
for (let i = 1; i < stringArray.length; i++) {
|
|
13
|
-
current = {
|
|
14
|
-
type: 'MemberExpression',
|
|
15
|
-
object: current,
|
|
16
|
-
property: {
|
|
17
|
-
type: 'Identifier',
|
|
18
|
-
name: stringArray[i]
|
|
19
|
-
},
|
|
20
|
-
computed: false
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
if (current.type !== 'MemberExpression') {
|
|
24
|
-
throw new Error('Internal error: expected MemberExpression');
|
|
25
|
-
}
|
|
26
|
-
return current;
|
|
27
|
-
}
|
|
28
|
-
static memberExpressionToStringArray(memberExpression, maxLength) {
|
|
29
|
-
const result = [];
|
|
30
|
-
let current = memberExpression;
|
|
31
|
-
while (current.type === 'MemberExpression' &&
|
|
32
|
-
result.length < maxLength) {
|
|
33
|
-
const prop = current.property;
|
|
34
|
-
if (!current.computed &&
|
|
35
|
-
prop.type === 'Identifier') {
|
|
36
|
-
result.unshift(prop.name);
|
|
37
|
-
}
|
|
38
|
-
current = current.object;
|
|
39
|
-
}
|
|
40
|
-
if (result.length >= maxLength) {
|
|
41
|
-
return result;
|
|
42
|
-
}
|
|
43
|
-
switch (current.type) {
|
|
44
|
-
case 'Identifier':
|
|
45
|
-
result.unshift(current.name);
|
|
46
|
-
break;
|
|
47
|
-
case 'ThisExpression':
|
|
48
|
-
result.unshift('this');
|
|
49
|
-
break;
|
|
50
|
-
case 'StringLiteral':
|
|
51
|
-
case 'NumericLiteral':
|
|
52
|
-
case 'BooleanLiteral':
|
|
53
|
-
result.unshift(String(current.value));
|
|
54
|
-
break;
|
|
55
|
-
case 'NullLiteral':
|
|
56
|
-
result.unshift('null');
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* 计算表达式的值
|
|
63
|
-
* @param expression Babel AST 表达式节点
|
|
64
|
-
* @param currentContext 当前上下文变量
|
|
65
|
-
* @param topContext 顶层上下文变量
|
|
66
|
-
* @returns 计算结果 (string | number | symbol | object)
|
|
67
|
-
*/
|
|
68
|
-
static evaluateExpression(expression, currentContext = {}, topContext = {}) {
|
|
69
|
-
const context = { ...topContext, ...currentContext };
|
|
70
|
-
const evaluate = (expr) => {
|
|
71
|
-
if (!expr)
|
|
72
|
-
return undefined;
|
|
73
|
-
switch (expr.type) {
|
|
74
|
-
case 'Identifier':
|
|
75
|
-
if (!expr.name)
|
|
76
|
-
return undefined;
|
|
77
|
-
if (expr.name in context) {
|
|
78
|
-
return evaluate(context[expr.name]);
|
|
79
|
-
}
|
|
80
|
-
if (expr.name === 'this') {
|
|
81
|
-
return currentContext;
|
|
82
|
-
}
|
|
83
|
-
if (expr.name === 'global') {
|
|
84
|
-
return topContext;
|
|
85
|
-
}
|
|
86
|
-
throw new Error(`Undefined variable: ${expr.name}`);
|
|
87
|
-
case 'StringLiteral':
|
|
88
|
-
return expr.value;
|
|
89
|
-
case 'NumericLiteral':
|
|
90
|
-
return expr.value;
|
|
91
|
-
case 'BooleanLiteral':
|
|
92
|
-
return expr.value;
|
|
93
|
-
case 'NullLiteral':
|
|
94
|
-
return null;
|
|
95
|
-
case 'MemberExpression':
|
|
96
|
-
const objectValue = evaluate(expr.object);
|
|
97
|
-
const property = expr.computed
|
|
98
|
-
? evaluate(expr.property)
|
|
99
|
-
: expr.property.name;
|
|
100
|
-
if (objectValue && typeof objectValue === 'object' && property in objectValue) {
|
|
101
|
-
return objectValue[property];
|
|
102
|
-
}
|
|
103
|
-
throw new Error(`Cannot access property '${property}' of ${objectValue}`);
|
|
104
|
-
case 'ObjectExpression':
|
|
105
|
-
const obj = {};
|
|
106
|
-
for (const prop of expr.properties) {
|
|
107
|
-
if (prop.type === 'ObjectProperty') {
|
|
108
|
-
const key = prop.computed
|
|
109
|
-
? evaluate(prop.key)
|
|
110
|
-
: prop.key.name;
|
|
111
|
-
obj[key] = evaluate(prop.value);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return obj;
|
|
115
|
-
case 'ArrayExpression':
|
|
116
|
-
return expr.elements.map((element) => element && element.type !== 'SpreadElement'
|
|
117
|
-
? evaluate(element)
|
|
118
|
-
: undefined);
|
|
119
|
-
case 'UnaryExpression':
|
|
120
|
-
const argumentValue = evaluate(expr.argument);
|
|
121
|
-
switch (expr.operator) {
|
|
122
|
-
case '+': return +argumentValue;
|
|
123
|
-
case '-': return -argumentValue;
|
|
124
|
-
case '!': return !argumentValue;
|
|
125
|
-
case '~': return ~argumentValue;
|
|
126
|
-
case 'typeof': return typeof argumentValue;
|
|
127
|
-
case 'void': return void argumentValue;
|
|
128
|
-
default: throw new Error(`Unsupported unary operator: ${expr.operator}`);
|
|
129
|
-
}
|
|
130
|
-
case "PrivateName":
|
|
131
|
-
return evaluate(context[expr.id.name]);
|
|
132
|
-
case 'BinaryExpression':
|
|
133
|
-
const leftValue = expr.left.type == evaluate(expr.left);
|
|
134
|
-
const rightValue = evaluate(expr.right);
|
|
135
|
-
const isNum = typeof leftValue == "number" && typeof rightValue == "number";
|
|
136
|
-
switch (expr.operator) {
|
|
137
|
-
case '+': return leftValue + rightValue;
|
|
138
|
-
case '-': if (isNum) {
|
|
139
|
-
return leftValue - rightValue;
|
|
140
|
-
}
|
|
141
|
-
else
|
|
142
|
-
return 0;
|
|
143
|
-
case '*': if (isNum) {
|
|
144
|
-
return leftValue * rightValue;
|
|
145
|
-
}
|
|
146
|
-
else
|
|
147
|
-
return 0;
|
|
148
|
-
case '/': if (isNum) {
|
|
149
|
-
return leftValue / rightValue;
|
|
150
|
-
}
|
|
151
|
-
else
|
|
152
|
-
return 0;
|
|
153
|
-
case '%': if (isNum) {
|
|
154
|
-
return leftValue % rightValue;
|
|
155
|
-
}
|
|
156
|
-
else
|
|
157
|
-
return 0;
|
|
158
|
-
case '==': return leftValue == rightValue;
|
|
159
|
-
case '!=': return leftValue != rightValue;
|
|
160
|
-
case '===': return leftValue === rightValue;
|
|
161
|
-
case '!==': return leftValue !== rightValue;
|
|
162
|
-
case '<': return leftValue < rightValue;
|
|
163
|
-
case '<=': return leftValue <= rightValue;
|
|
164
|
-
case '>': return leftValue > rightValue;
|
|
165
|
-
case '>=': return leftValue >= rightValue;
|
|
166
|
-
case '|': return leftValue | rightValue;
|
|
167
|
-
case '&': return leftValue & rightValue;
|
|
168
|
-
case '^': return leftValue ^ rightValue;
|
|
169
|
-
case '<<': return leftValue << rightValue;
|
|
170
|
-
case '>>': return leftValue >> rightValue;
|
|
171
|
-
case '>>>': return leftValue >>> rightValue;
|
|
172
|
-
default: throw new Error(`Unsupported binary operator: ${expr.operator}`);
|
|
173
|
-
}
|
|
174
|
-
case 'LogicalExpression':
|
|
175
|
-
const left = evaluate(expr.left);
|
|
176
|
-
switch (expr.operator) {
|
|
177
|
-
case '&&': return left && evaluate(expr.right);
|
|
178
|
-
case '||': return left || evaluate(expr.right);
|
|
179
|
-
case '??': return left ?? evaluate(expr.right);
|
|
180
|
-
default: throw new Error(`Unsupported logical operator: ${expr.operator}`);
|
|
181
|
-
}
|
|
182
|
-
case 'ConditionalExpression':
|
|
183
|
-
return evaluate(expr.test)
|
|
184
|
-
? evaluate(expr.consequent)
|
|
185
|
-
: evaluate(expr.alternate);
|
|
186
|
-
case 'CallExpression':
|
|
187
|
-
const callee = evaluate(expr.callee);
|
|
188
|
-
if (typeof callee !== 'function') {
|
|
189
|
-
throw new Error(`Cannot call non-function: ${callee}`);
|
|
190
|
-
}
|
|
191
|
-
const args = expr.arguments.map((arg) => arg.type === 'SpreadElement'
|
|
192
|
-
? evaluate(arg.argument)
|
|
193
|
-
: evaluate(arg));
|
|
194
|
-
return callee.apply(null, args);
|
|
195
|
-
default:
|
|
196
|
-
throw new Error(`Unsupported expression type: ${expr.type}`);
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
try {
|
|
200
|
-
return evaluate(expression);
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
throw new Error(`Expression evaluation failed: ${error.message}`);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
exports.default = NodeUtils;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class NodeUtils{static stringArrayToMemberExpression(e){if(e.length<2)throw new Error("String array must contain at least 2 items");let r={type:"Identifier",name:e[0]};for(let t=1;t<e.length;t++)r={type:"MemberExpression",object:r,property:{type:"Identifier",name:e[t]},computed:!1};if("MemberExpression"!==r.type)throw new Error("Internal error: expected MemberExpression");return r}static memberExpressionToStringArray(e,r){const t=[];let n=e;for(;"MemberExpression"===n.type&&t.length<r;){const e=n.property;n.computed||"Identifier"!==e.type||t.unshift(e.name),n=n.object}if(t.length>=r)return t;switch(n.type){case"Identifier":t.unshift(n.name);break;case"ThisExpression":t.unshift("this");break;case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":t.unshift(String(n.value));break;case"NullLiteral":t.unshift("null")}return t}static evaluateExpression(e,r={},t={}){const n={...t,...r},a=e=>{if(e)switch(e.type){case"Identifier":if(!e.name)return;if(e.name in n)return a(n[e.name]);if("this"===e.name)return r;if("global"===e.name)return t;throw new Error(`Undefined variable: ${e.name}`);case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":return e.value;case"NullLiteral":return null;case"MemberExpression":const s=a(e.object),o=e.computed?a(e.property):e.property.name;if(s&&"object"==typeof s&&o in s)return s[o];throw new Error(`Cannot access property '${o}' of ${s}`);case"ObjectExpression":const i={};for(const r of e.properties)if("ObjectProperty"===r.type){i[r.computed?a(r.key):r.key.name]=a(r.value)}return i;case"ArrayExpression":return e.elements.map(e=>e&&"SpreadElement"!==e.type?a(e):void 0);case"UnaryExpression":const c=a(e.argument);switch(e.operator){case"+":return+c;case"-":return-c;case"!":return!c;case"~":return~c;case"typeof":return typeof c;case"void":return;default:throw new Error(`Unsupported unary operator: ${e.operator}`)}case"PrivateName":return a(n[e.id.name]);case"BinaryExpression":const u=e.left.type==a(e.left),p=a(e.right),l="number"==typeof u&&"number"==typeof p;switch(e.operator){case"+":return u+p;case"-":return l?u-p:0;case"*":return l?u*p:0;case"/":return l?u/p:0;case"%":return l?u%p:0;case"==":return u==p;case"!=":return u!=p;case"===":return u===p;case"!==":return u!==p;case"<":return u<p;case"<=":return u<=p;case">":return u>p;case">=":return u>=p;case"|":return u|p;case"&":return u&p;case"^":return u^p;case"<<":return u<<p;case">>":return u>>p;case">>>":return u>>>p;default:throw new Error(`Unsupported binary operator: ${e.operator}`)}case"LogicalExpression":const f=a(e.left);switch(e.operator){case"&&":return f&&a(e.right);case"||":return f||a(e.right);case"??":return f??a(e.right);default:throw new Error(`Unsupported logical operator: ${e.operator}`)}case"ConditionalExpression":return a(e.test)?a(e.consequent):a(e.alternate);case"CallExpression":const m=a(e.callee);if("function"!=typeof m)throw new Error(`Cannot call non-function: ${m}`);const y=e.arguments.map(e=>"SpreadElement"===e.type?a(e.argument):a(e));return m.apply(null,y);default:throw new Error(`Unsupported expression type: ${e.type}`)}};try{return a(e)}catch(e){throw new Error(`Expression evaluation failed: ${e.message}`)}}}exports.default=NodeUtils;
|
package/lib/mcx/index.js
CHANGED
|
@@ -1,13 +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
|
-
const index_js_1 = __importDefault(require("./ast/index.js"));
|
|
7
|
-
const index_js_2 = __importDefault(require("./compile-mcx/index.js"));
|
|
8
|
-
const utils_js_1 = __importDefault(require("./utils.js"));
|
|
9
|
-
exports.default = {
|
|
10
|
-
load: index_js_2.default,
|
|
11
|
-
AST: index_js_1.default,
|
|
12
|
-
utils: utils_js_1.default,
|
|
13
|
-
};
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const index_js_1=__importDefault(require("./ast/index.js")),index_js_2=__importDefault(require("./compile-mcx/index.js")),utils_js_1=__importDefault(require("./utils.js"));exports.default={load:index_js_2.default,AST:index_js_1.default,utils:utils_js_1.default};
|
package/lib/mcx/test/index.js
CHANGED
|
@@ -1,7 +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
|
-
const app_mcx_1 = __importDefault(require("./app.mcx"));
|
|
7
|
-
app_mcx_1.default.start();
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const app_mcx_1=__importDefault(require("./app.mcx"));app_mcx_1.default.start();
|
package/lib/mcx/test.js
CHANGED
|
@@ -1,21 +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 = test;
|
|
7
|
-
const _1 = __importDefault(require("."));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
async function test() {
|
|
10
|
-
const testPath = node_path_1.default.join(__dirname, "./tezt");
|
|
11
|
-
await _1.default.load({
|
|
12
|
-
ProjectDir: testPath,
|
|
13
|
-
cacheDir: node_path_1.default.join(testPath, ".cache"),
|
|
14
|
-
isCache: true,
|
|
15
|
-
moduleDir: node_path_1.default.join(testPath, "node_modules"),
|
|
16
|
-
output: node_path_1.default.join(testPath, "dist"),
|
|
17
|
-
moduleList: [],
|
|
18
|
-
config: {},
|
|
19
|
-
main: "./main.js"
|
|
20
|
-
});
|
|
21
|
-
}
|
|
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=test;const _1=__importDefault(require(".")),node_path_1=__importDefault(require("node:path"));async function test(){const e=node_path_1.default.join(__dirname,"./tezt");await _1.default.load({ProjectDir:e,cacheDir:node_path_1.default.join(e,".cache"),isCache:!0,moduleDir:node_path_1.default.join(e,"node_modules"),output:node_path_1.default.join(e,"dist"),moduleList:[],config:{},main:"./main.js"})}
|
package/lib/mcx/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
package/lib/mcx/utils.js
CHANGED
|
@@ -1,86 +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
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
class McxUtlis {
|
|
9
|
-
/**
|
|
10
|
-
* 检查文件是否存在
|
|
11
|
-
* @param path 文件路径
|
|
12
|
-
* @returns 是否存在
|
|
13
|
-
*/
|
|
14
|
-
static async FileExsit(path) {
|
|
15
|
-
try {
|
|
16
|
-
await promises_1.default.access(path);
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* 读取文件内容,支持返回 string 或 object,带重试机制
|
|
25
|
-
* @param filePath 文件路径
|
|
26
|
-
* @param opt 配置选项
|
|
27
|
-
* @returns 文件内容(string | object),出错时返回 {}
|
|
28
|
-
*/
|
|
29
|
-
static async readFile(filePath, opt = {}) {
|
|
30
|
-
// 补全必填字段,确保类型安全
|
|
31
|
-
const opts = {
|
|
32
|
-
delay: 200, // 默认延迟
|
|
33
|
-
maxRetries: 3, // 默认最大重试次数
|
|
34
|
-
want: 'string', // 默认返回字符串
|
|
35
|
-
...opt, // 用户传入的配置覆盖默认值
|
|
36
|
-
};
|
|
37
|
-
for (let attempt = 0; attempt < opts.maxRetries; attempt++) {
|
|
38
|
-
try {
|
|
39
|
-
const buffer = await promises_1.default.readFile(filePath);
|
|
40
|
-
let text;
|
|
41
|
-
if (opts.want === 'string') {
|
|
42
|
-
text = buffer.toString(); // Buffer -> string
|
|
43
|
-
}
|
|
44
|
-
else if (opts.want === 'object') {
|
|
45
|
-
try {
|
|
46
|
-
text = JSON.parse(buffer.toString()); // Buffer -> string -> object
|
|
47
|
-
}
|
|
48
|
-
catch (parseErr) {
|
|
49
|
-
// JSON 解析失败时返回空对象
|
|
50
|
-
text = {};
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// 默认情况也返回字符串
|
|
55
|
-
text = buffer.toString();
|
|
56
|
-
}
|
|
57
|
-
return text;
|
|
58
|
-
}
|
|
59
|
-
catch (err) {
|
|
60
|
-
// 如果不是最后一次尝试,则等待后重试
|
|
61
|
-
if (attempt < opts.maxRetries - 1) {
|
|
62
|
-
await McxUtlis.sleep(opts.delay);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return opts.want === 'object' ? {} : '';
|
|
67
|
-
}
|
|
68
|
-
static sleep(time) {
|
|
69
|
-
return new Promise((resolve) => setTimeout(resolve, time));
|
|
70
|
-
}
|
|
71
|
-
// 在运行时进行对象类型验证
|
|
72
|
-
static TypeVerify(obj, types) {
|
|
73
|
-
for (const item of Object.entries(types)) {
|
|
74
|
-
const [key, ShouldType] = item;
|
|
75
|
-
if (!(typeof obj[key] === ShouldType))
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
static AbsoluteJoin(baseDir, inputPath) {
|
|
81
|
-
return node_path_1.default.isAbsolute(inputPath) ?
|
|
82
|
-
inputPath :
|
|
83
|
-
node_path_1.default.join(baseDir, inputPath);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
exports.default = McxUtlis;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const promises_1=__importDefault(require("node:fs/promises")),node_path_1=__importDefault(require("node:path"));class McxUtlis{static async FileExsit(t){try{return await promises_1.default.access(t),!0}catch{return!1}}static async readFile(t,e={}){const r={delay:200,maxRetries:3,want:"string",...e};for(let e=0;e<r.maxRetries;e++)try{const e=await promises_1.default.readFile(t);let s;if("string"===r.want)s=e.toString();else if("object"===r.want)try{s=JSON.parse(e.toString())}catch(t){s={}}else s=e.toString();return s}catch(t){e<r.maxRetries-1&&await McxUtlis.sleep(r.delay)}return"object"===r.want?{}:""}static sleep(t){return new Promise(e=>setTimeout(e,t))}static TypeVerify(t,e){for(const r of Object.entries(e)){const[e,s]=r;if(typeof t[e]!==s)return!1}return!0}static AbsoluteJoin(t,e){return node_path_1.default.isAbsolute(e)?e:node_path_1.default.join(t,e)}}exports.default=McxUtlis;
|