@mbler/mcx-core 0.0.2-alpha.r2 → 0.0.2-alpha.r3

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/__test__/index.js CHANGED
@@ -0,0 +1,2 @@
1
+ import * as MCX from "./../dist/index.cjs";
2
+ MCX.load()
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import { ParserOptions } from '@babel/parser';
2
+ import * as t from '@babel/types';
3
+ import { Expression, CallExpression, SpreadElement, ArgumentPlaceholder, ImportDeclaration, ExportNamedDeclaration, ExportAllDeclaration, ExportDefaultDeclaration } from '@babel/types';
4
+ import { RollupOptions } from 'rollup';
2
5
 
3
6
  interface BaseToken {
4
7
  data: string;
@@ -71,19 +74,64 @@ declare class McxAst {
71
74
  static generateCode(node: ParsedTagNode): string;
72
75
  }
73
76
 
77
+ interface callList {
78
+ source: Expression;
79
+ set: (callEXp: CallExpression) => boolean;
80
+ arguments: Array<SpreadElement | Expression | ArgumentPlaceholder>;
81
+ remove: () => void;
82
+ }
83
+ interface ImportListImport {
84
+ isAll: boolean;
85
+ import?: string | undefined;
86
+ as: string;
87
+ }
88
+ interface ImportList {
89
+ source: string;
90
+ imported: ImportListImport[];
91
+ raw?: ImportDeclaration;
92
+ }
93
+ interface BuildCache {
94
+ call: callList[];
95
+ import: ImportList[];
96
+ export: Array<ExportNamedDeclaration | ExportAllDeclaration | ExportDefaultDeclaration>;
97
+ }
98
+ declare const _MCXstructureLocComponentTypes: {
99
+ readonly items: "item";
100
+ readonly blocks: "block";
101
+ readonly entities: "entity";
102
+ };
103
+ type MCXstructureLocComponentType = typeof _MCXstructureLocComponentTypes[keyof typeof _MCXstructureLocComponentTypes];
104
+ interface MCXstructureLoc {
105
+ script: string;
106
+ Event: {
107
+ on: "after" | "before";
108
+ subscribe: Record<string, string>;
109
+ loc: {
110
+ line: number;
111
+ pos: number;
112
+ };
113
+ isLoad: boolean;
114
+ };
115
+ Component: Record<string, {
116
+ type: MCXstructureLocComponentType;
117
+ useExpore: string;
118
+ loc: {
119
+ line: number;
120
+ pos: number;
121
+ };
122
+ }>;
123
+ }
124
+
74
125
  interface CompileUserConfig {
75
126
  babelParser?: ParserOptions;
76
- useTS?: boolean;
127
+ rollupOptions?: RollupOptions;
77
128
  }
78
129
  interface CompileOpt {
79
- cacheDir: string;
80
130
  main: string;
81
131
  ProjectDir: string;
82
132
  moduleDir: string;
83
- moduleList: string[];
84
133
  output: string;
85
- isCache: boolean;
86
- config: Partial<CompileUserConfig>;
134
+ config?: Partial<CompileUserConfig>;
87
135
  }
88
136
 
89
137
  declare function CompileMcxDir(BuildOpt: CompileOpt): Promise<void>;
@@ -107,12 +155,75 @@ declare class McxUtlis {
107
155
  static AbsoluteJoin(baseDir: string, inputPath: string): string;
108
156
  }
109
157
 
158
+ declare class JsCompileData {
159
+ node: t.Program;
160
+ BuildCache: BuildCache;
161
+ File: string;
162
+ isFile: boolean;
163
+ constructor(node: t.Program, BuildCache?: BuildCache);
164
+ setFilePath(dir: string): void;
165
+ }
166
+ declare class MCXCompileData {
167
+ raw: ParsedTagNode[];
168
+ JSIR: JsCompileData;
169
+ strLoc: MCXstructureLoc;
170
+ File: string;
171
+ isFile: boolean;
172
+ constructor(raw: ParsedTagNode[], JSIR: JsCompileData, strLoc: MCXstructureLoc);
173
+ setFilePath(dir: string): void;
174
+ }
175
+
176
+ declare class CompileError extends Error {
177
+ loc: {
178
+ line: number;
179
+ pos: number;
180
+ };
181
+ constructor(message: string, loc: {
182
+ line: number;
183
+ pos: number;
184
+ });
185
+ }
186
+ type Context = Record<string, t.Expression | {
187
+ status: "wait";
188
+ }>;
189
+ declare class CompileJS {
190
+ node: t.Program;
191
+ constructor(node: t.Program);
192
+ TopContext: Context;
193
+ private indexTemp;
194
+ private push;
195
+ private takeInnerMost;
196
+ private writeImportKeys;
197
+ private extractIdentifierNames;
198
+ private writeBuildCache;
199
+ private CompileData;
200
+ getCompileData(): JsCompileData;
201
+ private conditionalInTempImport;
202
+ private tre;
203
+ run(): void;
204
+ }
205
+ declare function compileJSFn(code: string): JsCompileData;
206
+ declare function compileMCXFn(mcxCode: string): MCXCompileData;
207
+
208
+ type Compiler_CompileError = CompileError;
209
+ declare const Compiler_CompileError: typeof CompileError;
210
+ type Compiler_CompileJS = CompileJS;
211
+ declare const Compiler_CompileJS: typeof CompileJS;
212
+ type Compiler_Context = Context;
213
+ declare const Compiler_compileJSFn: typeof compileJSFn;
214
+ declare const Compiler_compileMCXFn: typeof compileMCXFn;
215
+ declare namespace Compiler {
216
+ export { Compiler_CompileError as CompileError, Compiler_CompileJS as CompileJS, Compiler_compileJSFn as compileJSFn, Compiler_compileMCXFn as compileMCXFn };
217
+ export type { Compiler_Context as Context };
218
+ }
219
+
110
220
  declare const _default: {
111
221
  load: typeof CompileMcxDir;
112
222
  AST: {
113
223
  tag: typeof McxAst;
114
224
  prop: typeof PropParser;
115
225
  };
226
+ Compiler: typeof Compiler;
116
227
  utils: typeof McxUtlis;
117
228
  };
118
229
 
@@ -2,9 +2,12 @@
2
2
 
3
3
  var fs = require('node:fs/promises');
4
4
  var path = require('node:path');
5
+ var rollup = require('rollup');
6
+ var commjs = require('@rollup/plugin-commonjs');
7
+ var json = require('@rollup/plugin-json');
8
+ var module_resolve = require('@rollup/plugin-node-resolve');
5
9
  var t = require('@babel/types');
6
10
  var Parser = require('@babel/parser');
7
- var node_fs = require('node:fs');
8
11
 
9
12
  function _interopNamespaceDefault(e) {
10
13
  var n = Object.create(null);
@@ -420,12 +423,12 @@ class Lexer {
420
423
  let value = "";
421
424
  for (const char of this.code) {
422
425
  if (/\s/.test(char)) {
423
- if (char === '\n') {
426
+ if (char === "\n") {
424
427
  if (currStatus === STATUS[1] && key && value) {
425
428
  const propNode = {
426
429
  key,
427
430
  value: this.HandlerValue(value),
428
- type: "PropChar"
431
+ type: "PropChar",
429
432
  };
430
433
  yield propNode;
431
434
  }
@@ -435,7 +438,7 @@ class Lexer {
435
438
  }
436
439
  continue; // 跳过所有空白字符
437
440
  }
438
- if (char === '=') {
441
+ if (char === "=") {
439
442
  if (currStatus === STATUS[0]) {
440
443
  currStatus = STATUS[1]; // 切换到 value 状态
441
444
  }
@@ -453,21 +456,19 @@ class Lexer {
453
456
  const propNode = {
454
457
  key,
455
458
  value: this.HandlerValue(value),
456
- type: "PropChar"
459
+ type: "PropChar",
457
460
  };
458
461
  yield propNode;
459
462
  }
460
463
  }
461
464
  HandlerValue(value) {
462
- try {
463
- const num = Number(value);
464
- if (!Number.isNaN(num))
465
- return num;
466
- if (["[", "{"].includes(value.slice(0, 1)) && ["]", "}"].includes(value.slice(-1))) {
467
- return JSON.parse(value);
468
- }
465
+ const num = Number(value);
466
+ if (!Number.isNaN(num))
467
+ return num;
468
+ if (["[", "{"].includes(value.slice(0, 1)) &&
469
+ ["]", "}"].includes(value.slice(-1))) {
470
+ return JSON.parse(value);
469
471
  }
470
- catch { }
471
472
  return value;
472
473
  }
473
474
  }
@@ -603,7 +604,7 @@ class MCXCompileData {
603
604
  }
604
605
  }
605
606
 
606
- let Utils$1 = class Utils {
607
+ class Utils {
607
608
  static async FileAST(fileDir, parserOpt) {
608
609
  if (typeof fileDir !== "string")
609
610
  throw new TypeError("[read file]: compile utils was passed a non-string value");
@@ -700,14 +701,47 @@ let Utils$1 = class Utils {
700
701
  imported: result
701
702
  };
702
703
  }
703
- };
704
+ }
704
705
 
706
+ class CompileError extends Error {
707
+ loc;
708
+ constructor(message, loc) {
709
+ super(message);
710
+ this.name = "CompileError";
711
+ this.loc = loc || { line: -1, pos: -1 };
712
+ }
713
+ }
714
+ function extractLoc(node) {
715
+ if (!node)
716
+ return { line: -1, pos: -1 };
717
+ // Node with loc.start (Babel or MCX): prefer column, fallback to index
718
+ if (node.loc && node.loc.start) {
719
+ const line = typeof node.loc.start.line === "number" ? node.loc.start.line : -1;
720
+ const pos = typeof node.loc.start.column === "number"
721
+ ? node.loc.start.column
722
+ : typeof node.loc.start.index === "number"
723
+ ? node.loc.start.index
724
+ : -1;
725
+ return { line, pos };
726
+ }
727
+ // Our token shape from Lexer: startLine / startIndex
728
+ if (typeof node.startLine === "number" || typeof node.startIndex === "number") {
729
+ const line = typeof node.startLine === "number" ? node.startLine : -1;
730
+ const pos = typeof node.startIndex === "number" ? node.startIndex : -1;
731
+ return { line, pos };
732
+ }
733
+ // (handled above) MCX ParsedTagNode loc: { start: { line, index } }
734
+ return { line: -1, pos: -1 };
735
+ }
736
+ function makeError(msg, node) {
737
+ return new CompileError(msg, extractLoc(node));
738
+ }
705
739
  class CompileJS {
706
740
  node;
707
741
  constructor(node) {
708
742
  this.node = node;
709
743
  if (!t__namespace.isProgram(node))
710
- throw new Error("[compile error]: jsCompile can't work in a not program");
744
+ throw makeError("[compile error]: jsCompile can't work in a not program", node);
711
745
  this.CompileData = new JsCompileData(node);
712
746
  this.run();
713
747
  this.writeBuildCache();
@@ -725,7 +759,7 @@ class CompileJS {
725
759
  }
726
760
  takeInnerMost(node) {
727
761
  if (!t__namespace.isMemberExpression(node))
728
- throw new Error("[take item}: must MemberExpression");
762
+ throw makeError("[take item}: must MemberExpression", node);
729
763
  let current = node;
730
764
  while (true) {
731
765
  if (t__namespace.isMemberExpression(current)) {
@@ -787,6 +821,9 @@ class CompileJS {
787
821
  identifiers.push(...this.extractIdentifierNames(node.consequent));
788
822
  identifiers.push(...this.extractIdentifierNames(node.alternate));
789
823
  }
824
+ else if (t__namespace.isImport(node)) {
825
+ identifiers.push("import");
826
+ }
790
827
  return identifiers;
791
828
  }
792
829
  writeBuildCache() {
@@ -812,7 +849,7 @@ class CompileJS {
812
849
  }
813
850
  }
814
851
  if (!isFound)
815
- throw new Error("[mcx compoiler]: internal error: unexpected source");
852
+ throw makeError("[mcx compoiler]: internal error: unexpected source");
816
853
  }
817
854
  else {
818
855
  build.push({
@@ -835,7 +872,7 @@ class CompileJS {
835
872
  getCompileData() {
836
873
  return this.CompileData;
837
874
  }
838
- conditionalInTempImport(node, thisContext, remove) {
875
+ conditionalInTempImport(node, thisContext, remove, set) {
839
876
  // If identifier, mark it
840
877
  if (t__namespace.isIdentifier(node)) {
841
878
  if (node.name in this.indexTemp &&
@@ -850,7 +887,7 @@ class CompileJS {
850
887
  }
851
888
  if (node.type == "ArrowFunctionExpression") {
852
889
  if (t__namespace.isExpression(node.body)) {
853
- this.conditionalInTempImport(node.body, thisContext, remove);
890
+ this.conditionalInTempImport(node.body, thisContext, remove, set);
854
891
  }
855
892
  else {
856
893
  this.tre(node.body);
@@ -867,9 +904,9 @@ class CompileJS {
867
904
  this.writeImportKeys.push(n);
868
905
  }
869
906
  // recurse into object and property when applicable
870
- this.conditionalInTempImport(node.object, thisContext, remove);
907
+ this.conditionalInTempImport(node.object, thisContext, remove, set);
871
908
  if (t__namespace.isExpression(node.property))
872
- this.conditionalInTempImport(node.property, thisContext, remove);
909
+ this.conditionalInTempImport(node.property, thisContext, remove, set);
873
910
  return;
874
911
  }
875
912
  // Call expression: record call for buildcache and mark identifiers used in callee and args
@@ -877,13 +914,21 @@ class CompileJS {
877
914
  node.callee?.type !== "V8IntrinsicIdentifier") {
878
915
  this.CompileData.BuildCache.call.push({
879
916
  source: node.callee,
917
+ set(callExp) {
918
+ if (callExp.callee.type == "V8IntrinsicIdentifier")
919
+ return false;
920
+ this.source = callExp.callee;
921
+ this.arguments = callExp.arguments;
922
+ set(callExp);
923
+ return true;
924
+ },
880
925
  arguments: node.arguments,
881
926
  remove,
882
927
  });
883
- this.conditionalInTempImport(node.callee, thisContext, remove);
928
+ this.conditionalInTempImport(node.callee, thisContext, remove, set);
884
929
  for (const arg of node.arguments) {
885
930
  if (t__namespace.isExpression(arg))
886
- this.conditionalInTempImport(arg, thisContext, remove);
931
+ this.conditionalInTempImport(arg, thisContext, remove, set);
887
932
  }
888
933
  return;
889
934
  }
@@ -901,7 +946,7 @@ class CompileJS {
901
946
  }
902
947
  tre(node, ExtendContext = {}) {
903
948
  if (!t__namespace.isBlock(node))
904
- throw new Error("[compile error]: can't for in not block node");
949
+ throw makeError("[compile error]: can't for in not block node", node);
905
950
  const isTop = t__namespace.isProgram(node);
906
951
  const currenyContext = isTop ? this.TopContext : ExtendContext;
907
952
  for (let index = 0; index < node.body.length; index++) {
@@ -910,12 +955,13 @@ class CompileJS {
910
955
  node.body.splice(index, 1);
911
956
  index--;
912
957
  };
958
+ const set = (t) => (node.body[index] = t);
913
959
  if (!item)
914
960
  continue;
915
961
  if (item.type == "ImportDeclaration") {
916
962
  if (!isTop)
917
- throw new Error("[compile node]: import declaration must use in top.");
918
- this.push(Utils$1.ImportToCache(item));
963
+ throw makeError("[compile node]: import declaration must use in top.", item);
964
+ this.push(Utils.ImportToCache(item));
919
965
  remove();
920
966
  }
921
967
  else if (item.type == "BlockStatement") {
@@ -933,7 +979,10 @@ class CompileJS {
933
979
  }
934
980
  else if (item.type == "IfStatement") {
935
981
  const If = item.test;
936
- this.conditionalInTempImport(If, currenyContext, remove);
982
+ this.conditionalInTempImport(If, currenyContext, remove, (t) => {
983
+ item.test = t;
984
+ return true;
985
+ });
937
986
  const nodes = [item.consequent];
938
987
  if (item.alternate)
939
988
  nodes.push(item.alternate);
@@ -976,7 +1025,7 @@ class CompileJS {
976
1025
  superClass.type == "RegExpLiteral" ||
977
1026
  superClass.type == "DecimalLiteral" ||
978
1027
  superClass.type == "BindExpression")
979
- throw new Error("[compilr error]: class can't extends a not constructor or null");
1028
+ throw makeError("[compilr error]: class can't extends a not constructor or null", superClass);
980
1029
  if (superId) {
981
1030
  if (this.indexTemp[superId]) {
982
1031
  this.writeImportKeys.push(superId);
@@ -986,7 +1035,10 @@ class CompileJS {
986
1035
  }
987
1036
  else if (item.type == "DoWhileStatement") {
988
1037
  this.tre(t__namespace.blockStatement([item.body]));
989
- this.conditionalInTempImport(item.test, currenyContext, remove);
1038
+ this.conditionalInTempImport(item.test, currenyContext, remove, (t) => {
1039
+ item.test = t;
1040
+ return true;
1041
+ });
990
1042
  }
991
1043
  else if (item.type == "VariableDeclaration") {
992
1044
  const declaration = item.declarations;
@@ -999,7 +1051,7 @@ class CompileJS {
999
1051
  status: "wait",
1000
1052
  };
1001
1053
  if (!init)
1002
- throw new Error("[compilr node]: 'const' must has a init");
1054
+ throw makeError("[compilr node]: 'const' must has a init", varDef);
1003
1055
  currenyContext[id.name] = init;
1004
1056
  }
1005
1057
  }
@@ -1008,29 +1060,35 @@ class CompileJS {
1008
1060
  const body = item.argument;
1009
1061
  if (!body)
1010
1062
  continue;
1011
- this.conditionalInTempImport(body, currenyContext, remove);
1063
+ this.conditionalInTempImport(body, currenyContext, remove, set);
1012
1064
  }
1013
1065
  else if (item.type == "ExportAllDeclaration" ||
1014
1066
  item.type == "ExportDefaultDeclaration" ||
1015
1067
  item.type == "ExportNamedDeclaration") {
1016
1068
  if (!isTop) {
1017
- throw new Error("[compiler]: export node can't in not top");
1069
+ throw makeError("[compiler]: export node can't in not top", item);
1018
1070
  }
1019
1071
  this.CompileData.BuildCache.export.push(item);
1020
1072
  remove();
1021
1073
  }
1022
1074
  else if (item.type == "SwitchStatement") {
1023
1075
  const vaule = item.discriminant;
1024
- this.conditionalInTempImport(vaule, currenyContext, remove);
1076
+ this.conditionalInTempImport(vaule, currenyContext, remove, set);
1025
1077
  for (const caseItem of item.cases) {
1026
1078
  if (caseItem.test) {
1027
- this.conditionalInTempImport(caseItem.test, currenyContext, remove);
1079
+ this.conditionalInTempImport(caseItem.test, currenyContext, remove, (t) => {
1080
+ caseItem.test = t;
1081
+ return true;
1082
+ });
1028
1083
  }
1029
1084
  this.tre(t__namespace.blockStatement(caseItem.consequent), currenyContext);
1030
1085
  }
1031
1086
  }
1032
1087
  else if (item.type == "ExpressionStatement") {
1033
- this.conditionalInTempImport(item.expression, currenyContext, remove);
1088
+ this.conditionalInTempImport(item.expression, currenyContext, remove, (t) => {
1089
+ item.expression = t;
1090
+ return true;
1091
+ });
1034
1092
  }
1035
1093
  else if (item.type == "FunctionDeclaration") {
1036
1094
  const funcBody = item.body;
@@ -1040,7 +1098,7 @@ class CompileJS {
1040
1098
  }
1041
1099
  run() {
1042
1100
  if (!t__namespace.isBlock(this.node))
1043
- throw new Error("[compile error]: can't for a not block");
1101
+ throw makeError("[compile error]: can't for a not block", this.node);
1044
1102
  this.tre(this.node);
1045
1103
  }
1046
1104
  }
@@ -1050,7 +1108,7 @@ class CompileMCX {
1050
1108
  this.code = code;
1051
1109
  const mcxCode = new McxAst(code).parseAST();
1052
1110
  if (!MCXUtils.isParseNode(mcxCode))
1053
- throw new Error("[compile error]: mcxCompile can't work in a not mcxNode");
1111
+ throw makeError("[compile error]: mcxCompile can't work in a not mcxNode");
1054
1112
  this.mcxCode = mcxCode;
1055
1113
  this.structureCheck();
1056
1114
  const JSIR = this.genenrateJSIR();
@@ -1062,6 +1120,8 @@ class CompileMCX {
1062
1120
  Event: {
1063
1121
  on: "after",
1064
1122
  subscribe: {},
1123
+ loc: { line: -1, pos: -1 },
1124
+ isLoad: false,
1065
1125
  },
1066
1126
  Component: {},
1067
1127
  };
@@ -1081,16 +1141,16 @@ class CompileMCX {
1081
1141
  if (MCXUtils.isTagNode(node)) {
1082
1142
  return node.content.map((sub) => this.commonTagNodeContent(sub)).join("");
1083
1143
  }
1084
- throw new Error("[mcx compile]: internal error: unknown node type");
1144
+ throw makeError("[mcx compile]: internal error: unknown node type", node);
1085
1145
  }
1086
1146
  getEventOn(node) {
1087
1147
  if (!MCXUtils.isTagNode(node))
1088
- throw new Error("[mcx compile]: internal error: not tag node");
1148
+ throw makeError("[mcx compile]: internal error: not tag node", node);
1089
1149
  let on = "after";
1090
1150
  const isAfter = typeof node.arr["@after"] == "string";
1091
1151
  const isBefore = typeof node.arr["@before"] == "string";
1092
1152
  if (isAfter && isBefore)
1093
- throw new Error("[mcx compile]: Event node can't has both @after and @before");
1153
+ throw makeError("[mcx compile]: Event node can't has both @after and @before", node);
1094
1154
  if (isAfter)
1095
1155
  on = "after";
1096
1156
  if (isBefore)
@@ -1106,27 +1166,47 @@ class CompileMCX {
1106
1166
  if (!MCXUtils.isTagNode(node))
1107
1167
  continue;
1108
1168
  if (node.name == "script") {
1109
- temp.script = node.content.length == 0 ? "" : this.commonTagNodeContent(node);
1169
+ if (temp.script)
1170
+ throw makeError("[compile error]: duplicate script node", node);
1171
+ temp.script =
1172
+ node.content.length == 0 ? "" : this.commonTagNodeContent(node);
1110
1173
  }
1111
1174
  else if (node.name == "Event") {
1175
+ if (temp.Event)
1176
+ throw makeError("[compile error]: duplicate Event node", node);
1177
+ // if Component already discovered, report error
1178
+ if (component)
1179
+ throw makeError("[compile error]: Event node cannot appear after Component", node);
1112
1180
  temp.Event = node;
1113
1181
  }
1114
1182
  else if (node.name == "Component") {
1183
+ if (component)
1184
+ throw makeError("[compile error]: duplicate Component node", node);
1185
+ // if Event already discovered, report error
1186
+ if (temp.Event)
1187
+ throw makeError("[compile error]: Component node cannot appear after Event", node);
1115
1188
  component = node;
1116
1189
  }
1117
1190
  }
1118
1191
  if (!temp.script)
1119
- throw new Error("[compile error]: mcx must has a script");
1192
+ throw makeError("[compile error]: mcx must has a script");
1120
1193
  this.tempLoc.script = temp.script;
1121
1194
  if (temp.Event) {
1122
1195
  const on = this.getEventOn(temp.Event);
1123
1196
  const content = temp.Event.content;
1124
- if (content.length == 0 || content.length > 1 || !MCXUtils.isTagContentNode(content[0]))
1125
- throw new Error("[compile error]: Event node has invalid content");
1197
+ if (content.length == 0 ||
1198
+ content.length > 1 ||
1199
+ !MCXUtils.isTagContentNode(content[0]))
1200
+ throw makeError("[compile error]: Event node has invalid content", temp.Event);
1126
1201
  const subscribeData = content[0].data.trim();
1127
1202
  this.tempLoc.Event = {
1128
1203
  on: on,
1129
- subscribe: Object.fromEntries(PropParser(subscribeData).map((item) => [item.key, item.value.toString()])),
1204
+ subscribe: Object.fromEntries(PropParser(subscribeData).map((item) => [
1205
+ item.key,
1206
+ item.value.toString(),
1207
+ ])),
1208
+ loc: extractLoc(temp.Event),
1209
+ isLoad: true,
1130
1210
  };
1131
1211
  }
1132
1212
  if (component) {
@@ -1143,30 +1223,31 @@ class CompileMCX {
1143
1223
  handlerChildComponent(node) {
1144
1224
  const name = node.name;
1145
1225
  if (!this.checkComponentParentName(name))
1146
- throw new Error(`[compile error]: invalid component name: ${name}`);
1226
+ throw makeError(`[compile error]: invalid component name: ${name}`, node);
1147
1227
  const content = node.content;
1148
1228
  if (!content || content.length == 0)
1149
- throw new Error(`[compile error]: component ${name} has no content`);
1229
+ throw makeError(`[compile error]: component ${name} has no content`, node);
1150
1230
  for (const subNode of content) {
1151
1231
  if (!MCXUtils.isTagNode(subNode))
1152
1232
  continue;
1153
1233
  const subName = subNode.name;
1154
1234
  const _id = subNode.arr.id;
1155
1235
  if (!_id || typeof _id != "string" || _id.trim() == "") {
1156
- throw new Error(`[compile error]: component ${name} child component ${subName} has no id`);
1236
+ throw makeError(`[compile error]: component ${name} child component ${subName} has no id`, subNode);
1157
1237
  }
1158
1238
  const id = _id.trim();
1159
1239
  const content = subNode.content;
1160
1240
  if (content.length == 0) {
1161
- throw new Error(`[compile error]: component ${name} child component ${subName} has no content`);
1241
+ throw makeError(`[compile error]: component ${name} child component ${subName} has no content`, subNode);
1162
1242
  }
1163
1243
  if (!content[0] || !MCXUtils.isTagContentNode(content[0]))
1164
- throw new Error(`[compile error]: component ${name} child component ${subName} has invalid content`);
1244
+ throw makeError(`[compile error]: component ${name} child component ${subName} has invalid content`, subNode);
1165
1245
  const useExpore = content[0].data.trim();
1166
1246
  if (subName == _MCXstructureLocComponentTypes[name]) {
1167
1247
  this.tempLoc.Component[`${name}/${id}`] = {
1168
1248
  type: subName,
1169
1249
  useExpore: useExpore,
1250
+ loc: extractLoc(subNode)
1170
1251
  };
1171
1252
  }
1172
1253
  }
@@ -1174,7 +1255,7 @@ class CompileMCX {
1174
1255
  CompileData;
1175
1256
  genenrateJSIR() {
1176
1257
  if (!this.tempLoc.script.trim())
1177
- throw new Error("[compile error]: mcx must has a script");
1258
+ throw makeError("[compile error]: mcx must has a script");
1178
1259
  const comiler = compileJSFn(this.tempLoc.script);
1179
1260
  return comiler;
1180
1261
  }
@@ -1189,150 +1270,80 @@ function compileMCXFn(mcxCode) {
1189
1270
  return compiler.getCompileData();
1190
1271
  }
1191
1272
 
1192
- async function FileExsit(filePath) {
1193
- try {
1194
- await fs.access(filePath);
1195
- return true;
1196
- }
1197
- catch {
1198
- return false;
1199
- }
1200
- }
1201
- class Utils {
1202
- CheckPath(filePath) {
1203
- if (!filePath || typeof filePath !== "string")
1204
- throw new Error("filePath is empty");
1205
- const file = path.resolve(filePath);
1206
- return file;
1207
- }
1208
- readFile(filePath) {
1209
- const file = this.CheckPath(filePath);
1210
- return fs.readFile(file);
1211
- }
1212
- readFileAsJSON(filePath) {
1213
- return this.readFile(filePath).then((data) => JSON.parse(data.toString()));
1214
- }
1215
- readFileAsMcx(filePath) {
1216
- return this.readFile(filePath).then((data) => compileMCXFn(data.toString()));
1217
- }
1218
- readFileAsJS(filePath) {
1219
- return this.readFile(filePath).then((data) => {
1220
- const code = data.toString();
1221
- return compileJSFn(code);
1222
- });
1223
- }
1224
- async writeFile(filePath, data) {
1225
- const file = this.CheckPath(filePath);
1226
- const basedir = path.basename(filePath);
1227
- if (!(await FileExsit(basedir)))
1228
- await fs.mkdir(basedir, { recursive: true });
1229
- return await fs.writeFile(file, data).then(() => true, () => false);
1230
- }
1231
- }
1232
- const utils = new Utils();
1273
+ var Compiler = /*#__PURE__*/Object.freeze({
1274
+ __proto__: null,
1275
+ CompileError: CompileError,
1276
+ CompileJS: CompileJS,
1277
+ compileJSFn: compileJSFn,
1278
+ compileMCXFn: compileMCXFn
1279
+ });
1233
1280
 
1234
- async function MCXLoader(fileDir) {
1235
- const file = utils.readFileAsMcx(fileDir);
1236
- return file;
1281
+ function addImport(statement, source, importArray) {
1282
+ statement.unshift(t__namespace.importDeclaration(importArray, t__namespace.stringLiteral(source)));
1237
1283
  }
1238
-
1239
- const LoaderMap = {
1240
- mcx: MCXLoader
1241
- };
1242
- function isExsitLoader(name) {
1243
- return Object.keys(LoaderMap).includes(name);
1284
+ async function compileComponent(compileData) {
1285
+ // TODO
1244
1286
  }
1245
- async function loader(_dir) {
1246
- const dir = utils.CheckPath(_dir);
1247
- const ext = path.extname(dir).slice(1);
1248
- if (isExsitLoader(ext))
1249
- return await LoaderMap[ext](dir);
1250
- throw new Error(`[mcx load]: cannot find loader for file ${dir}`);
1287
+ async function transform(compileData) {
1288
+ const mcxModule = "@mbler/mcx";
1289
+ const statement = [];
1290
+ if (compileData.strLoc.Event.isLoad) {
1291
+ addImport(statement, mcxModule, [
1292
+ t__namespace.importSpecifier(t__namespace.identifier("__mcx__event"), t__namespace.identifier("Event")),
1293
+ ]);
1294
+ }
1295
+ if (Object.keys(compileData.strLoc.Component).length >= 1) {
1296
+ compileComponent();
1297
+ }
1298
+ return "";
1251
1299
  }
1252
1300
 
1253
- const cacheModule = new Map();
1254
- function findNodeModule(dir, name) {
1255
- if (cacheModule.has(name)) {
1256
- return cacheModule.get(name);
1257
- }
1258
- if (dir.length <= 3) {
1259
- throw new Error(`[mcx compile]: cannot find module ${name}`);
1260
- }
1261
- const basename = path.dirname(dir);
1262
- const nodeModulePath = path.join(basename, "node_modules", name);
1263
- if (node_fs.existsSync(nodeModulePath)) {
1264
- cacheModule.set(name, nodeModulePath);
1265
- return nodeModulePath;
1266
- }
1267
- else {
1268
- return findNodeModule(basename, name);
1269
- }
1270
- }
1271
- function genentateModuleNode(moduleName, FilePath) {
1272
- const _module = path.parse(moduleName);
1273
- if (_module.root)
1274
- throw new Error(`[mcx compile]: module name invalid ${moduleName} in ${FilePath} (You should not use absolute path as module name)`);
1275
- if (_module.dir.startsWith(".")) {
1276
- return {
1277
- stat: "success",
1278
- data: path.join(FilePath, _module.dir, _module.base)
1279
- };
1280
- }
1281
- if (moduleName.startsWith("@minecraft/") || moduleName.startsWith("minecraft/") || moduleName.startsWith("@ruanhor/mcx")) {
1282
- return {
1283
- stat: "skip",
1284
- data: null
1285
- };
1286
- }
1301
+ function mcxPlugn() {
1287
1302
  return {
1288
- stat: "success",
1289
- data: findNodeModule(FilePath, moduleName)
1303
+ name: "mbler-mcx-core",
1304
+ async transform(code, id, options) {
1305
+ const ext = path.extname(id).slice(1);
1306
+ if (ext == "mcx") {
1307
+ let compileData;
1308
+ try {
1309
+ compileData = compileMCXFn(code);
1310
+ }
1311
+ catch (err) {
1312
+ if (err instanceof CompileError) {
1313
+ const error = err;
1314
+ this.error(error.message, {
1315
+ column: error.loc.pos,
1316
+ line: error.loc.line,
1317
+ });
1318
+ }
1319
+ this.error(err.message);
1320
+ return;
1321
+ }
1322
+ compileData.setFilePath(id);
1323
+ return {
1324
+ code: await transform(compileData)
1325
+ };
1326
+ }
1327
+ return null;
1328
+ },
1290
1329
  };
1291
1330
  }
1292
-
1293
- class CompileMain {
1294
- opt;
1295
- main = "";
1296
- cacheMap = new Map();
1297
- constructor(opt) {
1298
- this.opt = opt;
1299
- if (typeof opt.main == "string")
1300
- this.main = path.join(opt.ProjectDir, opt.main);
1301
- }
1302
- async start() {
1303
- if (!this.main)
1304
- throw new Error("[mcx load]: mcx loader must has a main file");
1305
- const mainCode = await fs.readFile(this.main, "utf-8");
1306
- const IR = this.compMain(mainCode);
1307
- if (!IR)
1308
- throw new Error("[mcx compile]: compile main file error");
1309
- IR.setFilePath(this.main);
1310
- for (const importPackage of IR.BuildCache.import) {
1311
- const source = genentateModuleNode(importPackage.source, this.main);
1312
- if (source.stat === "skip" || !source.data)
1313
- continue;
1314
- if (this.cacheMap.has(source.data))
1315
- continue;
1316
- const moduleData = await loader(source.data);
1317
- this.cacheMap.set(source.data, moduleData);
1318
- }
1319
- }
1320
- compMain(code) {
1321
- const ext = path.extname(this.main);
1322
- if (ext !== ".js") {
1323
- throw new Error("[load project]: main file must is a javascript.");
1324
- }
1325
- const ir = compileJSFn(code);
1326
- return ir;
1327
- }
1331
+ function AbsoluteJoin(base, dir) {
1332
+ return path.isAbsolute(dir) ? dir : path.join(base, dir);
1333
+ }
1334
+ async function CompileProject(opt) {
1335
+ await rollup.rollup({
1336
+ input: AbsoluteJoin(opt.ProjectDir, opt.main),
1337
+ external: ["@minecraft/server", "@minecraft/server-ui"],
1338
+ plugins: [mcxPlugn(), commjs(), json(), module_resolve()],
1339
+ });
1328
1340
  }
1329
1341
 
1330
- /*import _compile from "./_compile.js"*/
1331
1342
  /**
1332
1343
  * @description - this is a function factory to generate mcxProject
1333
1344
  */
1334
1345
  function CompileMcxProject(BuildOpt) {
1335
- return (new Compile(BuildOpt)).start();
1346
+ return new Compile(BuildOpt).start();
1336
1347
  }
1337
1348
  class Compile {
1338
1349
  BuildOpt;
@@ -1340,18 +1351,19 @@ class Compile {
1340
1351
  this.BuildOpt = BuildOpt;
1341
1352
  // 类型验证
1342
1353
  if (!McxUtlis.TypeVerify(this.BuildOpt, {
1343
- cacheDir: "string",
1344
- main: "string",
1345
- moduleDir: "string",
1346
- output: "string",
1347
- isCache: "boolean"
1354
+ main: "string", // 启动文件路径
1355
+ moduleDir: "string", // 模块路径
1356
+ output: "string", // 输出的目录的scripts文件夹
1348
1357
  })) {
1349
- throw new TypeError("[compile checker]Input Opt is not right");
1358
+ throw new TypeError("[compile checker]: Input Opt is not right");
1350
1359
  }
1351
1360
  }
1352
1361
  async start() {
1353
- const compileMain = new CompileMain(this.BuildOpt);
1354
- await compileMain.start();
1362
+ if (!(await McxUtlis.FileExsit(this.BuildOpt.moduleDir)))
1363
+ await fs.mkdir(this.BuildOpt.moduleDir, {
1364
+ recursive: true,
1365
+ });
1366
+ await CompileProject(this.BuildOpt);
1355
1367
  }
1356
1368
  }
1357
1369
 
@@ -1362,7 +1374,9 @@ async function CompileMcxDir(BuildOpt) {
1362
1374
  var index = {
1363
1375
  load: CompileMcxDir,
1364
1376
  AST: AST,
1377
+ Compiler,
1365
1378
  utils: McxUtlis,
1366
1379
  };
1367
1380
 
1368
1381
  module.exports = index;
1382
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/ast/tag.ts","../src/ast/prop.ts","../src/ast/index.ts","../src/utils.ts","../src/compile-mcx/types.ts","../src/compile-mcx/compiler/compileData.ts","../src/compile-mcx/compiler/utils.ts","../src/compile-mcx/compiler/index.ts","../src/transforms/index.ts","../src/compile-mcx/compiler/main.ts","../src/compile-mcx/compile.ts","../src/compile-mcx/index.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Lexer","AST_tag","AST_prop","fs","path","readFile","Parser","t","CompileData.JsCompileData","CompileData.MCXCompileData","parse","extname","isAbsolute","join","rollup","Utils","mkdir","CompileMain","Compiler","compiler","utils"],"mappings":"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"}
@@ -1,10 +1,18 @@
1
1
  import { CompileOpt } from "../types";
2
2
  import * as CompileData from "./compileData";
3
+ import * as t from "@babel/types";
3
4
  export default class CompileMain {
4
5
  opt: CompileOpt;
5
6
  main: string;
6
7
  cacheMap: Map<string, CompileData.JsCompileData | CompileData.MCXCompileData | string>;
7
8
  constructor(opt: CompileOpt);
9
+ bundlerProgram: t.Program | null;
8
10
  start(): Promise<void>;
11
+ moduleId: Record<string, number>;
12
+ private handlerCall;
13
+ private loadModule;
14
+ private generateFnId;
15
+ private pushModule;
16
+ private buildFunction;
9
17
  private compMain;
10
18
  }
@@ -1,5 +1,15 @@
1
1
  import * as t from "@babel/types";
2
2
  import * as CompileData from "./compileData";
3
+ export declare class CompileError extends Error {
4
+ loc: {
5
+ line: number;
6
+ pos: number;
7
+ };
8
+ constructor(message: string, loc: {
9
+ line: number;
10
+ pos: number;
11
+ });
12
+ }
3
13
  export type Context = Record<string, t.Expression | {
4
14
  status: "wait";
5
15
  }>;
@@ -0,0 +1,2 @@
1
+ import { CompileOpt } from "../types";
2
+ export default function CompileProject(opt: CompileOpt): Promise<void>;
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ readonly imp: "__mcx__require";
3
+ readonly exp: "__mcx__export";
4
+ readonly module: "__mcx__module";
5
+ };
6
+ export default _default;
@@ -1,7 +1,9 @@
1
1
  import type { ParserOptions } from "@babel/parser";
2
- import type { ImportDeclaration, ExportAllDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, Expression, SpreadElement, ArgumentPlaceholder } from "@babel/types";
2
+ import type { ImportDeclaration, ExportAllDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, Expression, SpreadElement, ArgumentPlaceholder, CallExpression } from "@babel/types";
3
+ import { RollupOptions } from "rollup";
3
4
  interface callList {
4
5
  source: Expression;
6
+ set: (callEXp: CallExpression) => boolean;
5
7
  arguments: Array<SpreadElement | Expression | ArgumentPlaceholder>;
6
8
  remove: () => void;
7
9
  }
@@ -37,24 +39,30 @@ interface MCXstructureLoc {
37
39
  Event: {
38
40
  on: "after" | "before";
39
41
  subscribe: Record<string, string>;
42
+ loc: {
43
+ line: number;
44
+ pos: number;
45
+ };
46
+ isLoad: boolean;
40
47
  };
41
48
  Component: Record<string, {
42
49
  type: MCXstructureLocComponentType;
43
50
  useExpore: string;
51
+ loc: {
52
+ line: number;
53
+ pos: number;
54
+ };
44
55
  }>;
45
56
  }
46
- export type { BuildCache, MCX_INFO, ImportList, ImportListImport, CompileOpt, MCXstructureLoc, MCXstructureLocComponentType };
57
+ export type { BuildCache, MCX_INFO, ImportList, ImportListImport, CompileOpt, callList, MCXstructureLoc, MCXstructureLocComponentType };
47
58
  interface CompileUserConfig {
48
59
  babelParser?: ParserOptions;
49
- useTS?: boolean;
60
+ rollupOptions?: RollupOptions;
50
61
  }
51
62
  interface CompileOpt {
52
- cacheDir: string;
53
63
  main: string;
54
64
  ProjectDir: string;
55
65
  moduleDir: string;
56
- moduleList: string[];
57
66
  output: string;
58
- isCache: boolean;
59
- config: Partial<CompileUserConfig>;
67
+ config?: Partial<CompileUserConfig>;
60
68
  }
@@ -1,11 +1,13 @@
1
1
  import compiler from "./compile-mcx/index.js";
2
2
  import utils from "./utils.js";
3
+ import * as Compiler from "./compile-mcx/compiler";
3
4
  declare const _default: {
4
5
  load: typeof compiler;
5
6
  AST: {
6
7
  tag: typeof import("./ast/tag.js").default;
7
8
  prop: typeof import("./ast/prop.js").default;
8
9
  };
10
+ Compiler: typeof Compiler;
9
11
  utils: typeof utils;
10
12
  };
11
13
  export default _default;
@@ -0,0 +1,5 @@
1
+ import { FunctionDeclaration } from "@babel/types";
2
+ declare const index: {
3
+ readonly module: FunctionDeclaration;
4
+ };
5
+ export default index;
@@ -0,0 +1,2 @@
1
+ declare function __mcxlib__module__(): any;
2
+ export default __mcxlib__module__;
@@ -0,0 +1,2 @@
1
+ import { MCXCompileData } from "../compile-mcx/compiler/compileData";
2
+ export declare function transform(compileData: MCXCompileData): Promise<string>;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@mbler/mcx-core",
3
- "version": "0.0.2-alpha.r2",
3
+ "version": "0.0.2-alpha.r3",
4
4
  "description": "a DSL compiler of mcx",
5
- "main": "dist/index.cjs.js",
5
+ "main": "dist/index.js",
6
6
  "scripts": {
7
7
  "test": "node __test__/index.js",
8
8
  "build": "rollup -c"
@@ -15,9 +15,14 @@
15
15
  "dependencies": {
16
16
  "@babel/generator": "7.28.5",
17
17
  "@babel/parser": "7.28.5",
18
- "@babel/types": "7.28.6"
18
+ "@babel/types": "7.28.6",
19
+ "@rollup/plugin-commonjs": "^29.0.0",
20
+ "@rollup/plugin-json": "^6.1.0",
21
+ "@rollup/plugin-node-resolve": "^16.0.3",
22
+ "@rollup/plugin-typescript": "^12.3.0",
23
+ "rollup": "^4.57.1"
19
24
  },
20
- "module": "module",
25
+ "module": "commjs",
21
26
  "files": [
22
27
  "dist",
23
28
  "README.md",
@@ -32,14 +37,9 @@
32
37
  "author": "ruanhor",
33
38
  "license": "MIT",
34
39
  "devDependencies": {
35
- "@rollup/plugin-commonjs": "^29.0.0",
36
- "@rollup/plugin-json": "^6.1.0",
37
- "@rollup/plugin-node-resolve": "^16.0.3",
38
- "@rollup/plugin-typescript": "^12.3.0",
39
40
  "@types/babel__generator": "^7.27.0",
40
41
  "@types/node": "^25.2.0",
41
- "rollup": "^4.57.1",
42
42
  "rollup-plugin-dts": "^6.3.0",
43
43
  "tslib": "^2.8.1"
44
44
  }
45
- }
45
+ }