@mybricks/to-code-taro 1.0.1 → 1.0.3

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.
Files changed (201) hide show
  1. package/README.md +58 -0
  2. package/dist/cjs/core/comlib/{Index.js → index.js} +4 -4
  3. package/dist/cjs/core/mybricks/index.js +47 -47
  4. package/dist/cjs/core/utils/ComContext.js +3 -0
  5. package/dist/cjs/core/utils/hooks.js +125 -0
  6. package/dist/cjs/core/utils/index.js +21 -57
  7. package/dist/cjs/core/utils/page.js +67 -0
  8. package/dist/cjs/core/utils/useContext.js +2 -1
  9. package/dist/cjs/generate/generateTaroProjectJson.d.ts +3 -14
  10. package/dist/cjs/generate/generateTaroProjectJson.js +9 -6
  11. package/dist/cjs/generate/utils/tabBarImages.d.ts +1 -1
  12. package/dist/cjs/handleCom.d.ts +1 -1
  13. package/dist/cjs/handleCom.js +91 -177
  14. package/dist/cjs/handleDom.js +7 -44
  15. package/dist/cjs/handleExtension.d.ts +2 -2
  16. package/dist/cjs/handleExtension.js +5 -5
  17. package/dist/cjs/handleGlobal.d.ts +2 -12
  18. package/dist/cjs/handleGlobal.js +23 -7
  19. package/dist/cjs/handleModule.js +3 -3
  20. package/dist/cjs/handleSlot.d.ts +2 -9
  21. package/dist/cjs/handleSlot.js +47 -150
  22. package/dist/cjs/index.d.ts +1 -1
  23. package/dist/cjs/index.js +4 -3
  24. package/dist/cjs/processors/processComEvents.d.ts +9 -0
  25. package/dist/cjs/processors/processComEvents.js +122 -0
  26. package/dist/cjs/processors/processModule.d.ts +31 -0
  27. package/dist/cjs/processors/processModule.js +125 -0
  28. package/dist/cjs/processors/processScene.d.ts +32 -0
  29. package/dist/cjs/processors/processScene.js +124 -0
  30. package/dist/cjs/processors/processSceneLogic.d.ts +4 -0
  31. package/dist/cjs/processors/processSceneLogic.js +166 -0
  32. package/dist/cjs/taro-template.json +15 -7
  33. package/dist/cjs/toCodeTaro.d.ts +26 -5
  34. package/dist/cjs/toCodeTaro.js +59 -343
  35. package/dist/cjs/utils/builder/buildResult.d.ts +21 -0
  36. package/dist/cjs/utils/builder/buildResult.js +91 -0
  37. package/dist/cjs/utils/common/ImportManager.d.ts +19 -0
  38. package/dist/cjs/utils/common/ImportManager.js +105 -0
  39. package/dist/cjs/utils/common/helper.d.ts +2 -0
  40. package/dist/cjs/utils/common/helper.js +31 -0
  41. package/dist/cjs/utils/common/object.d.ts +5 -0
  42. package/dist/cjs/utils/common/object.js +58 -0
  43. package/dist/cjs/utils/common/string.d.ts +8 -0
  44. package/dist/cjs/utils/common/string.js +46 -0
  45. package/dist/cjs/utils/{pageConfig → config/content}/converter.js +1 -1
  46. package/dist/cjs/utils/{pageConfig → config/content}/index.js +9 -9
  47. package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.js +12 -22
  48. package/dist/{esm/utils/pageConfig → cjs/utils/config/content}/saveBase64Image.d.ts +1 -1
  49. package/dist/cjs/utils/{pageConfig → config/content}/saveBase64Image.js +8 -17
  50. package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.js +9 -32
  51. package/dist/cjs/utils/config/content/types.js +17 -0
  52. package/dist/cjs/utils/{pageConfig → config/content}/validator.js +1 -1
  53. package/dist/{esm/utils → cjs/utils/config}/handlePageConfig.d.ts +1 -1
  54. package/dist/cjs/utils/{handlePageConfig.js → config/handlePageConfig.js} +4 -4
  55. package/dist/cjs/utils/context/buildContext.d.ts +24 -0
  56. package/dist/cjs/utils/context/buildContext.js +65 -0
  57. package/dist/cjs/utils/context/buildFrameMap.d.ts +16 -0
  58. package/dist/cjs/utils/context/buildFrameMap.js +106 -0
  59. package/dist/cjs/utils/context/buildGlobalData.d.ts +13 -0
  60. package/dist/cjs/utils/context/buildGlobalData.js +58 -0
  61. package/dist/cjs/utils/context/collectJSModules.d.ts +37 -0
  62. package/dist/cjs/utils/context/collectJSModules.js +91 -0
  63. package/dist/cjs/utils/context/createEventQueries.d.ts +45 -0
  64. package/dist/cjs/utils/context/createEventQueries.js +99 -0
  65. package/dist/cjs/utils/context/createProvider.d.ts +21 -0
  66. package/dist/cjs/utils/context/createProvider.js +49 -0
  67. package/dist/cjs/utils/index.d.ts +10 -62
  68. package/dist/cjs/utils/index.js +21 -282
  69. package/dist/cjs/utils/{convertNamespace.js → logic/convertNamespace.js} +1 -1
  70. package/dist/cjs/utils/{genJSModules.js → logic/genJSModules.js} +1 -1
  71. package/dist/{esm/utils → cjs/utils/logic}/handleProcess.d.ts +2 -2
  72. package/dist/cjs/utils/{handleProcess.js → logic/handleProcess.js} +14 -11
  73. package/dist/cjs/utils/logic/processChildren.d.ts +12 -0
  74. package/dist/cjs/utils/logic/processChildren.js +82 -0
  75. package/dist/cjs/utils/style/color.d.ts +4 -0
  76. package/dist/cjs/utils/style/color.js +45 -0
  77. package/dist/cjs/utils/style/converter.d.ts +7 -0
  78. package/dist/cjs/utils/style/converter.js +181 -0
  79. package/dist/cjs/utils/{getComponentClassName.js → style/getComponentClassName.js} +1 -1
  80. package/dist/cjs/utils/{pxtransform.js → style/pxtransform.js} +1 -1
  81. package/dist/cjs/utils/style/types.d.ts +23 -0
  82. package/dist/cjs/utils/{pageConfig → style}/types.js +1 -1
  83. package/dist/cjs/utils/{code → templates}/component.js +1 -1
  84. package/dist/cjs/utils/{code → templates}/index.js +4 -4
  85. package/dist/cjs/utils/{code → templates}/renderManager.js +1 -1
  86. package/dist/cjs/utils/{code → templates}/scene.js +1 -1
  87. package/dist/esm/core/mybricks/index.js +1 -1
  88. package/dist/esm/core/utils/ComContext.js +1 -0
  89. package/dist/esm/core/utils/hooks.js +118 -0
  90. package/dist/esm/core/utils/index.js +6 -57
  91. package/dist/esm/core/utils/page.js +50 -0
  92. package/dist/esm/core/utils/useContext.js +2 -1
  93. package/dist/esm/generate/generateTaroProjectJson.d.ts +3 -14
  94. package/dist/esm/generate/generateTaroProjectJson.js +27 -23
  95. package/dist/esm/generate/utils/tabBarImages.d.ts +1 -1
  96. package/dist/esm/handleCom.d.ts +1 -1
  97. package/dist/esm/handleCom.js +159 -244
  98. package/dist/esm/handleDom.js +9 -48
  99. package/dist/esm/handleExtension.d.ts +2 -2
  100. package/dist/esm/handleExtension.js +5 -5
  101. package/dist/esm/handleGlobal.d.ts +2 -12
  102. package/dist/esm/handleGlobal.js +17 -3
  103. package/dist/esm/handleModule.js +3 -3
  104. package/dist/esm/handleSlot.d.ts +2 -9
  105. package/dist/esm/handleSlot.js +97 -174
  106. package/dist/esm/index.d.ts +1 -1
  107. package/dist/esm/index.js +1 -1
  108. package/dist/esm/processors/processComEvents.d.ts +9 -0
  109. package/dist/esm/processors/processComEvents.js +110 -0
  110. package/dist/esm/processors/processModule.d.ts +31 -0
  111. package/dist/esm/processors/processModule.js +126 -0
  112. package/dist/esm/processors/processScene.d.ts +32 -0
  113. package/dist/esm/processors/processScene.js +126 -0
  114. package/dist/esm/processors/processSceneLogic.d.ts +4 -0
  115. package/dist/esm/processors/processSceneLogic.js +160 -0
  116. package/dist/esm/taro-template.json +15 -7
  117. package/dist/esm/toCodeTaro.d.ts +26 -5
  118. package/dist/esm/toCodeTaro.js +96 -396
  119. package/dist/esm/utils/builder/buildResult.d.ts +21 -0
  120. package/dist/esm/utils/builder/buildResult.js +61 -0
  121. package/dist/esm/utils/common/ImportManager.d.ts +19 -0
  122. package/dist/esm/utils/common/ImportManager.js +103 -0
  123. package/dist/esm/utils/common/helper.d.ts +2 -0
  124. package/dist/esm/utils/common/helper.js +4 -0
  125. package/dist/esm/utils/common/object.d.ts +5 -0
  126. package/dist/esm/utils/common/object.js +32 -0
  127. package/dist/esm/utils/common/string.d.ts +8 -0
  128. package/dist/esm/utils/common/string.js +21 -0
  129. package/dist/esm/utils/config/content/pageConfig.js +40 -0
  130. package/dist/{cjs/utils/pageConfig → esm/utils/config/content}/saveBase64Image.d.ts +1 -1
  131. package/dist/esm/utils/{pageConfig → config/content}/saveBase64Image.js +11 -30
  132. package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.js +12 -34
  133. package/dist/{cjs/utils → esm/utils/config}/handlePageConfig.d.ts +1 -1
  134. package/dist/esm/utils/{handlePageConfig.js → config/handlePageConfig.js} +1 -1
  135. package/dist/esm/utils/context/buildContext.d.ts +24 -0
  136. package/dist/esm/utils/context/buildContext.js +53 -0
  137. package/dist/esm/utils/context/buildFrameMap.d.ts +16 -0
  138. package/dist/esm/utils/context/buildFrameMap.js +131 -0
  139. package/dist/esm/utils/context/buildGlobalData.d.ts +13 -0
  140. package/dist/esm/utils/context/buildGlobalData.js +44 -0
  141. package/dist/esm/utils/context/collectJSModules.d.ts +37 -0
  142. package/dist/esm/utils/context/collectJSModules.js +87 -0
  143. package/dist/esm/utils/context/createEventQueries.d.ts +45 -0
  144. package/dist/esm/utils/context/createEventQueries.js +98 -0
  145. package/dist/esm/utils/context/createProvider.d.ts +21 -0
  146. package/dist/esm/utils/context/createProvider.js +33 -0
  147. package/dist/esm/utils/index.d.ts +10 -62
  148. package/dist/esm/utils/index.js +12 -345
  149. package/dist/{cjs/utils → esm/utils/logic}/handleProcess.d.ts +2 -2
  150. package/dist/esm/utils/{handleProcess.js → logic/handleProcess.js} +11 -5
  151. package/dist/esm/utils/logic/processChildren.d.ts +12 -0
  152. package/dist/esm/utils/logic/processChildren.js +48 -0
  153. package/dist/esm/utils/style/color.d.ts +4 -0
  154. package/dist/esm/utils/style/color.js +17 -0
  155. package/dist/esm/utils/style/converter.d.ts +7 -0
  156. package/dist/esm/utils/style/converter.js +176 -0
  157. package/dist/esm/utils/style/types.d.ts +23 -0
  158. package/dist/esm/utils/style/types.js +1 -0
  159. package/package.json +1 -1
  160. package/dist/esm/utils/pageConfig/pageConfig.js +0 -60
  161. /package/dist/cjs/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  162. /package/dist/cjs/utils/{pageConfig → config/content}/index.d.ts +0 -0
  163. /package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  164. /package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  165. /package/dist/cjs/utils/{pageConfig → config/content}/types.d.ts +0 -0
  166. /package/dist/cjs/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  167. /package/dist/cjs/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  168. /package/dist/cjs/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  169. /package/dist/cjs/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  170. /package/dist/cjs/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  171. /package/dist/cjs/utils/{code → templates}/component.d.ts +0 -0
  172. /package/dist/cjs/utils/{code → templates}/index.d.ts +0 -0
  173. /package/dist/cjs/utils/{code → templates}/renderManager.d.ts +0 -0
  174. /package/dist/cjs/utils/{code → templates}/scene.d.ts +0 -0
  175. /package/dist/esm/core/comlib/{Index.js → index.js} +0 -0
  176. /package/dist/esm/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  177. /package/dist/esm/utils/{pageConfig → config/content}/converter.js +0 -0
  178. /package/dist/esm/utils/{pageConfig → config/content}/index.d.ts +0 -0
  179. /package/dist/esm/utils/{pageConfig → config/content}/index.js +0 -0
  180. /package/dist/esm/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  181. /package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  182. /package/dist/esm/utils/{pageConfig → config/content}/types.d.ts +0 -0
  183. /package/dist/esm/utils/{pageConfig → config/content}/types.js +0 -0
  184. /package/dist/esm/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  185. /package/dist/esm/utils/{pageConfig → config/content}/validator.js +0 -0
  186. /package/dist/esm/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  187. /package/dist/esm/utils/{convertNamespace.js → logic/convertNamespace.js} +0 -0
  188. /package/dist/esm/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  189. /package/dist/esm/utils/{genJSModules.js → logic/genJSModules.js} +0 -0
  190. /package/dist/esm/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  191. /package/dist/esm/utils/{getComponentClassName.js → style/getComponentClassName.js} +0 -0
  192. /package/dist/esm/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  193. /package/dist/esm/utils/{pxtransform.js → style/pxtransform.js} +0 -0
  194. /package/dist/esm/utils/{code → templates}/component.d.ts +0 -0
  195. /package/dist/esm/utils/{code → templates}/component.js +0 -0
  196. /package/dist/esm/utils/{code → templates}/index.d.ts +0 -0
  197. /package/dist/esm/utils/{code → templates}/index.js +0 -0
  198. /package/dist/esm/utils/{code → templates}/renderManager.d.ts +0 -0
  199. /package/dist/esm/utils/{code → templates}/renderManager.js +0 -0
  200. /package/dist/esm/utils/{code → templates}/scene.d.ts +0 -0
  201. /package/dist/esm/utils/{code → templates}/scene.js +0 -0
@@ -1,27 +1,47 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
+ /**
4
+ * Taro 代码生成入口文件
5
+ * 参考鸿蒙实现,采用低耦合、高内聚的设计
6
+ */
7
+
4
8
  import toCode from "@mybricks/to-code-react/dist/cjs/toCode";
5
- import handleSlot from "./handleSlot";
6
- import { ImportManager, firstCharToLowerCase, firstCharToUpperCase } from "./utils";
7
9
  import handleGlobal from "./handleGlobal";
8
10
  import handleExtension from "./handleExtension";
9
- import abstractEventTypeDef from "./abstractEventTypeDef";
10
- import { genJSModules } from "./utils/genJSModules";
11
- import { HandlePageConfig } from "./utils/handlePageConfig";
11
+ import { HandlePageConfig } from "./utils/config/handlePageConfig";
12
+
13
+ // 工具函数
14
+ import { buildFrameMap } from "./utils/context/buildFrameMap";
15
+ import { buildSceneMap, buildEventsMap, createGetSceneById, createGetExtensionEventById, createGetFrameById } from "./utils/context/buildContext";
16
+ import { createJSModulesCollector } from "./utils/context/collectJSModules";
17
+ import { buildGlobalVarTypeDef, buildDefaultFxsMap } from "./utils/context/buildGlobalData";
18
+ import { buildFinalResults } from "./utils/builder/buildResult";
19
+
20
+ // 处理器
21
+ import { processScenes } from "./processors/processScene";
22
+ import { processModules } from "./processors/processModule";
12
23
 
13
- /** 返回结果 */
24
+ /** 单个生成文件的信息 */
14
25
 
26
+ /** 统一的生成结果结构 */
27
+
28
+ /**
29
+ * Taro 代码生成主函数
30
+ */
15
31
  var toCodeTaro = function toCodeTaro(tojson, config) {
16
- console.log('tojson', tojson);
17
32
  return getCode({
18
33
  tojson: tojson,
19
34
  toCodejson: toCode(tojson)
20
35
  }, config);
21
36
  };
37
+ /**
38
+ * 核心代码生成逻辑
39
+ * 参考鸿蒙实现,采用模块化设计
40
+ */
22
41
  var getCode = function getCode(params, config) {
42
+ // 初始化配置
23
43
  transformConfig(config);
24
- var result = [];
44
+ var files = [];
25
45
  var tojson = params.tojson,
26
46
  toCodejson = params.toCodejson;
27
47
  var scenes = toCodejson.scenes,
@@ -30,25 +50,19 @@ var getCode = function getCode(params, config) {
30
50
  globalVars = toCodejson.globalVars,
31
51
  modules = toCodejson.modules;
32
52
 
33
- // 收集所有 JS 计算组件
34
- var jsModulesMap = new Map();
35
- var eventsMap = tojson.frames.reduce(function (pre, cur) {
36
- if (cur.type === "extension-event") {
37
- pre[cur.id] = cur;
38
- }
39
- return pre;
40
- }, {});
41
- var sceneMap = tojson.scenes.reduce(function (pre, cur) {
42
- pre[cur.id] = cur;
43
- return pre;
44
- }, {});
45
- var getSceneById = function getSceneById(id) {
46
- return sceneMap[id];
47
- };
48
- var getExtensionEventById = function getExtensionEventById(id) {
49
- return eventsMap[id];
50
- };
51
- result.push.apply(result, _toConsumableArray(handleExtension({
53
+ // ========== 第一步:构建上下文数据 ==========
54
+ // 构建 frameMap(参考鸿蒙实现)
55
+ var frameMap = buildFrameMap(tojson);
56
+ var getFrameById = createGetFrameById(frameMap);
57
+
58
+ // 构建场景和事件映射
59
+ var sceneMap = buildSceneMap(tojson.scenes);
60
+ var eventsMap = buildEventsMap(tojson.frames);
61
+ var getSceneById = createGetSceneById(sceneMap);
62
+ var getExtensionEventById = createGetExtensionEventById(eventsMap);
63
+
64
+ // ========== 第二步:处理扩展事件 ==========
65
+ files.push.apply(files, _toConsumableArray(handleExtension({
52
66
  extensionEvents: extensionEvents,
53
67
  tojson: tojson
54
68
  }, _objectSpread(_objectSpread({}, config), {}, {
@@ -56,34 +70,13 @@ var getCode = function getCode(params, config) {
56
70
  getExtensionEventById: getExtensionEventById,
57
71
  getSceneById: getSceneById
58
72
  }))));
59
- var globalVarTypeDef = {};
60
- Object.entries(tojson.global.comsReg).forEach(function (_ref) {
61
- var _ref2 = _slicedToArray(_ref, 2),
62
- com = _ref2[1];
63
- if (com.def.namespace !== "mybricks.core-comlib.var") {
64
- // 非变量,不需要初始化
65
- return;
66
- }
67
- globalVarTypeDef[com.title] = com;
68
- });
69
73
 
70
- /** 向下记录组件可调用的fx,id唯一,所以直接key-value即可 */
71
- var defaultFxsMap = {};
72
- (tojson.global.fxFrames || []).filter(function (fxFrame) {
73
- return fxFrame.type === "fx";
74
- }).forEach(function (fxFrame) {
75
- defaultFxsMap[fxFrame.id] = {
76
- name: "global",
77
- class: "global",
78
- controllers: new Set(),
79
- useParams: false,
80
- useEvents: false,
81
- coms: new Set(),
82
- useController: false,
83
- useData: false
84
- };
85
- });
86
- result.push(handleGlobal({
74
+ // ========== 第三步:构建全局数据 ==========
75
+ var globalVarTypeDef = buildGlobalVarTypeDef(tojson.global.comsReg);
76
+ var defaultFxsMap = buildDefaultFxsMap(tojson.global.fxFrames || []);
77
+
78
+ // ========== 第四步:处理全局变量和 FX ==========
79
+ files.push.apply(files, _toConsumableArray(handleGlobal({
87
80
  tojson: tojson,
88
81
  globalFxs: globalFxs,
89
82
  globalVars: globalVars
@@ -91,357 +84,64 @@ var getCode = function getCode(params, config) {
91
84
  // @ts-ignore
92
85
  getExtensionEventById: getExtensionEventById,
93
86
  getSceneById: getSceneById
94
- })));
95
- var abstractEventTypeDefMap = {};
87
+ }))));
96
88
 
97
- // 创建页面配置处理器
89
+ // ========== 第五步:初始化共享资源 ==========
90
+ var abstractEventTypeDefMap = {};
91
+ var jsModulesCollector = createJSModulesCollector();
98
92
  var pageConfigHandler = new HandlePageConfig();
99
- scenes.forEach(function (_ref3) {
100
- var _config$getFileName;
101
- var scene = _ref3.scene,
102
- ui = _ref3.ui,
103
- event = _ref3.event;
104
- Object.entries(scene.coms || {}).forEach(function (_ref4) {
105
- var _ref5 = _slicedToArray(_ref4, 2),
106
- comId = _ref5[0],
107
- comInfo = _ref5[1];
108
- var def = comInfo.def,
109
- model = comInfo.model;
110
93
 
111
- // 收集js计算
112
- var isJsCalculationComponent = (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.taro._muilt-inputJs" || (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.core-comlib.js-ai";
113
- if (isJsCalculationComponent) {
114
- var _model$data, _model$data2, _model$data3;
115
- // 优先使用原始代码(code),而不是转译后的代码(transformCode),避免包含 Babel 辅助函数
116
- var transformCode = (model === null || model === void 0 || (_model$data = model.data) === null || _model$data === void 0 || (_model$data = _model$data.fns) === null || _model$data === void 0 ? void 0 : _model$data.code) || (model === null || model === void 0 || (_model$data2 = model.data) === null || _model$data2 === void 0 || (_model$data2 = _model$data2.fns) === null || _model$data2 === void 0 ? void 0 : _model$data2.transformCode) || (model === null || model === void 0 || (_model$data3 = model.data) === null || _model$data3 === void 0 ? void 0 : _model$data3.fns);
117
- if (transformCode && !jsModulesMap.has(comId)) {
118
- jsModulesMap.set(comId, {
119
- id: comId,
120
- title: comInfo.title || "JS计算",
121
- transformCode: typeof transformCode === 'string' ? transformCode : '',
122
- inputs: (model === null || model === void 0 ? void 0 : model.inputs) || [],
123
- outputs: (model === null || model === void 0 ? void 0 : model.outputs) || [],
124
- data: (model === null || model === void 0 ? void 0 : model.data) || {}
125
- });
126
- }
127
- }
128
- });
129
- var providerMap = {};
130
- var fileName = (_config$getFileName = config.getFileName) === null || _config$getFileName === void 0 ? void 0 : _config$getFileName.call(config, ui.meta.slotId);
131
- var providerName = fileName ? "".concat(fileName, "Provider") : "slot_Index";
132
- var currentProvider = {
133
- name: firstCharToLowerCase(providerName),
134
- class: firstCharToUpperCase(providerName),
135
- controllers: new Set(),
136
- useParams: false,
137
- useEvents: false,
138
- coms: new Set(),
139
- useController: false,
140
- useData: false
141
- };
142
- providerMap[currentProvider.name] = currentProvider;
143
-
144
- /** 类型定义 */
145
- var typeDef = {
146
- // 变量
147
- vars: Object.assign({}, globalVarTypeDef),
148
- // 输入
149
- inputs: {},
150
- // 输出
151
- outputs: {}
152
- };
153
- var fxsMap = Object.assign({}, defaultFxsMap);
154
-
155
- // 处理页面配置
156
- var pageConfigContent = pageConfigHandler.handle(scene);
157
- handleSlot(ui, _objectSpread(_objectSpread({}, config), {}, {
158
- getCurrentScene: function getCurrentScene() {
159
- return scene;
160
- },
161
- add: function add(value) {
162
- result.push(_objectSpread(_objectSpread({}, value), {}, {
163
- type: scene.type ? scene.type : "normal",
164
- meta: scene,
165
- pageConfigContent: pageConfigContent // 添加页面配置内容
166
- }));
167
- },
168
- addJSModule: function addJSModule(module) {
169
- if (!jsModulesMap.has(module.id)) {
170
- jsModulesMap.set(module.id, module);
171
- }
172
- },
173
- getEventByDiagramId: function getEventByDiagramId(diagramId) {
174
- return event.find(function (event) {
175
- return event.diagramId === diagramId;
176
- });
177
- },
178
- getVarEvents: function getVarEvents(params) {
179
- if (!params) {
180
- return event.filter(function (event) {
181
- return event.type === "var" && !event.meta.parentComId || event.type === "listener" && !event.meta.proxy.parentComId;
182
- });
183
- }
184
- return event.filter(function (event) {
185
- return event.type === "var" && params.comId === event.meta.parentComId && params.slotId === event.meta.frameId || event.type === "listener" && params.comId === event.meta.proxy.parentComId && params.slotId === event.meta.proxy.frameId;
186
- });
187
- },
188
- getFxEvents: function getFxEvents(params) {
189
- if (!params) {
190
- return event.filter(function (event) {
191
- return event.type === "fx" && !event.parentComId;
192
- });
193
- }
194
- return event.filter(function (event) {
195
- return event.type === "fx" && params.comId === event.parentComId && params.slotId === event.parentSlotId;
196
- });
197
- },
198
- checkIsRoot: function checkIsRoot() {
199
- return true;
200
- },
201
- getEffectEvent: function getEffectEvent(params) {
202
- // 默认只有一个生命周期事件
203
- if (!params) {
204
- // 主场景
205
- return event.find(function (event) {
206
- return !event.slotId; // 没有slotId,认为是主场景
207
- });
208
- } else {
209
- // 作用域插槽
210
- var comId = params.comId,
211
- slotId = params.slotId;
212
- return event.find(function (event) {
213
- return event.slotId === slotId && event.comId === comId;
214
- });
215
- }
216
- },
217
- getCurrentProvider: function getCurrentProvider() {
218
- return currentProvider;
219
- },
220
- getRootProvider: function getRootProvider() {
221
- return currentProvider;
222
- },
223
- getProviderMap: function getProviderMap() {
224
- return providerMap;
225
- },
226
- getExtensionEventById: getExtensionEventById,
227
- getSceneById: getSceneById,
228
- depth: 0,
229
- getTypeDef: function getTypeDef() {
230
- return typeDef;
231
- },
232
- getFxsMap: function getFxsMap() {
233
- return fxsMap;
234
- },
235
- setAbstractEventTypeDefMap: function setAbstractEventTypeDefMap(params) {
236
- var comId = params.comId,
237
- eventId = params.eventId,
238
- typeDef = params.typeDef,
239
- schema = params.schema;
240
- if (!abstractEventTypeDefMap[comId]) {
241
- abstractEventTypeDefMap[comId] = {
242
- typeDef: typeDef,
243
- eventIdMap: {}
244
- };
245
- }
246
- abstractEventTypeDefMap[comId].eventIdMap[eventId] = schema;
247
- }
248
- }));
94
+ // ========== 第六步:处理场景 ==========
95
+ processScenes(scenes, {
96
+ config: config,
97
+ globalVarTypeDef: globalVarTypeDef,
98
+ defaultFxsMap: defaultFxsMap,
99
+ abstractEventTypeDefMap: abstractEventTypeDefMap,
100
+ jsModulesMap: jsModulesCollector.getMap(),
101
+ getExtensionEventById: getExtensionEventById,
102
+ getSceneById: getSceneById,
103
+ getFrameById: getFrameById,
104
+ pageConfigHandler: pageConfigHandler,
105
+ addResult: function addResult(item) {
106
+ files.push(item);
107
+ }
249
108
  });
250
- modules.forEach(function (_ref6) {
251
- var _config$getFileName2;
252
- var scene = _ref6.scene,
253
- ui = _ref6.ui,
254
- event = _ref6.event;
255
- // 遍历 scene.coms 收集所有 JS 计算组件(它们不在 slot.comAry 中)
256
- Object.entries(scene.coms || {}).forEach(function (_ref7) {
257
- var _ref8 = _slicedToArray(_ref7, 2),
258
- comId = _ref8[0],
259
- comInfo = _ref8[1];
260
- var def = comInfo.def,
261
- model = comInfo.model;
262
- var isJsCalculationComponent = (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.taro._muilt-inputJs" || (def === null || def === void 0 ? void 0 : def.namespace) === "mybricks.core-comlib.js-ai";
263
- if (isJsCalculationComponent) {
264
- var _model$data4, _model$data5, _model$data6;
265
- // 优先使用原始代码(code),而不是转译后的代码(transformCode),避免包含 Babel 辅助函数
266
- var transformCode = (model === null || model === void 0 || (_model$data4 = model.data) === null || _model$data4 === void 0 || (_model$data4 = _model$data4.fns) === null || _model$data4 === void 0 ? void 0 : _model$data4.code) || (model === null || model === void 0 || (_model$data5 = model.data) === null || _model$data5 === void 0 || (_model$data5 = _model$data5.fns) === null || _model$data5 === void 0 ? void 0 : _model$data5.transformCode) || (model === null || model === void 0 || (_model$data6 = model.data) === null || _model$data6 === void 0 ? void 0 : _model$data6.fns);
267
- if (transformCode && !jsModulesMap.has(comId)) {
268
- jsModulesMap.set(comId, {
269
- id: comId,
270
- title: comInfo.title || "JS计算",
271
- transformCode: typeof transformCode === 'string' ? transformCode : '',
272
- inputs: (model === null || model === void 0 ? void 0 : model.inputs) || [],
273
- outputs: (model === null || model === void 0 ? void 0 : model.outputs) || [],
274
- data: (model === null || model === void 0 ? void 0 : model.data) || {}
275
- });
276
- }
277
- }
278
- });
279
- var providerMap = {};
280
- var fileName = (_config$getFileName2 = config.getFileName) === null || _config$getFileName2 === void 0 ? void 0 : _config$getFileName2.call(config, ui.meta.slotId);
281
- var providerName = fileName ? "".concat(fileName, "Provider") : "slot_Index";
282
- var currentProvider = {
283
- name: firstCharToLowerCase(providerName),
284
- class: firstCharToUpperCase(providerName),
285
- controllers: new Set(),
286
- useParams: false,
287
- useEvents: false,
288
- coms: new Set(),
289
- useController: false,
290
- useData: false
291
- };
292
- providerMap[currentProvider.name] = currentProvider;
293
109
 
294
- /** 类型定义 */
295
- var typeDef = {
296
- // 变量
297
- vars: Object.assign({}, globalVarTypeDef),
298
- // 输入
299
- inputs: {},
300
- // 输出
301
- outputs: {}
302
- };
303
- var fxsMap = Object.assign({}, defaultFxsMap);
304
- handleSlot(ui, _objectSpread(_objectSpread({}, config), {}, {
305
- getCurrentScene: function getCurrentScene() {
306
- return scene;
307
- },
308
- add: function add(value) {
309
- result.push(_objectSpread(_objectSpread({}, value), {}, {
310
- type: scene.type,
311
- meta: scene
312
- }));
313
- },
314
- addJSModule: function addJSModule(module) {
315
- if (!jsModulesMap.has(module.id)) {
316
- jsModulesMap.set(module.id, module);
317
- }
318
- },
319
- getEventByDiagramId: function getEventByDiagramId(diagramId) {
320
- return event.find(function (event) {
321
- return event.diagramId === diagramId;
322
- });
323
- },
324
- getVarEvents: function getVarEvents(params) {
325
- if (!params) {
326
- return event.filter(function (event) {
327
- return event.type === "var" && !event.meta.parentComId || event.type === "listener" && !event.meta.proxy.parentComId;
328
- });
329
- }
330
- return event.filter(function (event) {
331
- return event.type === "var" && params.comId === event.meta.parentComId && params.slotId === event.meta.frameId || event.type === "listener" && params.comId === event.meta.proxy.parentComId && params.slotId === event.meta.proxy.frameId;
332
- });
333
- },
334
- getFxEvents: function getFxEvents(params) {
335
- if (!params) {
336
- return event.filter(function (event) {
337
- return event.type === "fx" && !event.parentComId;
338
- });
339
- }
340
- return event.filter(function (event) {
341
- return event.type === "fx" && params.comId === event.parentComId && params.slotId === event.parentSlotId;
342
- });
343
- },
344
- checkIsRoot: function checkIsRoot() {
345
- return true;
346
- },
347
- getEffectEvent: function getEffectEvent(params) {
348
- // 默认只有一个生命周期事件
349
- if (!params) {
350
- // 主场景
351
- return event.find(function (event) {
352
- return !event.slotId; // 没有slotId,认为是主场景
353
- });
354
- } else {
355
- // 作用域插槽
356
- var comId = params.comId,
357
- slotId = params.slotId;
358
- return event.find(function (event) {
359
- return event.slotId === slotId && event.comId === comId;
360
- });
361
- }
362
- },
363
- getCurrentProvider: function getCurrentProvider() {
364
- return currentProvider;
365
- },
366
- getRootProvider: function getRootProvider() {
367
- return currentProvider;
368
- },
369
- getProviderMap: function getProviderMap() {
370
- return providerMap;
371
- },
372
- getExtensionEventById: getExtensionEventById,
373
- getSceneById: getSceneById,
374
- depth: 0,
375
- getTypeDef: function getTypeDef() {
376
- return typeDef;
377
- },
378
- getFxsMap: function getFxsMap() {
379
- return fxsMap;
380
- },
381
- setAbstractEventTypeDefMap: function setAbstractEventTypeDefMap(params) {
382
- var comId = params.comId,
383
- eventId = params.eventId,
384
- typeDef = params.typeDef,
385
- schema = params.schema;
386
- if (!abstractEventTypeDefMap[comId]) {
387
- abstractEventTypeDefMap[comId] = {
388
- typeDef: typeDef,
389
- eventIdMap: {}
390
- };
391
- }
392
- abstractEventTypeDefMap[comId].eventIdMap[eventId] = schema;
393
- },
394
- getComponentController: function getComponentController(_ref9) {
395
- var com = _ref9.com;
396
- return com.id;
397
- }
398
- }));
399
- });
400
- result.push({
401
- type: "abstractEventTypeDef",
402
- content: abstractEventTypeDef(abstractEventTypeDefMap, config),
403
- importManager: new ImportManager(config),
404
- name: "abstractEventTypeDef"
110
+ // ========== 第七步:处理模块 ==========
111
+ processModules(modules, {
112
+ config: config,
113
+ globalVarTypeDef: globalVarTypeDef,
114
+ defaultFxsMap: defaultFxsMap,
115
+ abstractEventTypeDefMap: abstractEventTypeDefMap,
116
+ jsModulesMap: jsModulesCollector.getMap(),
117
+ getExtensionEventById: getExtensionEventById,
118
+ getSceneById: getSceneById,
119
+ getFrameById: getFrameById,
120
+ addResult: function addResult(item) {
121
+ files.push(item);
122
+ }
405
123
  });
406
124
 
407
- // 生成 JSModules.ts 文件
408
- result.push({
409
- type: "jsModules",
410
- content: genJSModules(Array.from(jsModulesMap.values())),
411
- importManager: new ImportManager(config),
412
- name: "JSModules"
125
+ // ========== 第八步:构建最终结果 ==========
126
+ var finalResultData = buildFinalResults({
127
+ abstractEventTypeDefMap: abstractEventTypeDefMap,
128
+ jsModulesMap: jsModulesCollector.getMap(),
129
+ globalTabBarConfig: pageConfigHandler.getTabBarConfig(),
130
+ tabBarImageFiles: pageConfigHandler.getTabBarImageFiles(),
131
+ config: config
413
132
  });
414
-
415
- // 生成 common/index.ts 文件(初始化并导出 jsModules)
416
- if (jsModulesMap.size > 0) {
417
- var commonIndexContent = "import jsModulesGenerator from \"./jsModules\";\nimport { createJSHandle } from \"../core/mybricks/index\";\n\nconst jsModules: Record<string, (props: any, appContext: any) => any> = jsModulesGenerator({ createJSHandle });\n\nexport { jsModules };\n";
418
- result.push({
419
- type: "commonIndex",
420
- content: commonIndexContent,
421
- importManager: new ImportManager(config),
422
- name: "commonIndex"
423
- });
424
- }
425
-
426
- // 添加 TabBar 配置项(如果存在)
427
- var globalTabBarConfig = pageConfigHandler.getTabBarConfig();
428
- if (globalTabBarConfig) {
429
- result.push({
430
- type: "tabBarConfig",
431
- content: globalTabBarConfig,
432
- importManager: new ImportManager(config),
433
- name: "tabBarConfig",
434
- tabBarConfig: globalTabBarConfig
435
- });
436
- }
437
-
438
- // 将 TabBar 图片文件信息附加到结果中(通过扩展字段)
439
- // 由于 TypeScript 类型限制,我们使用 any 来扩展
440
- result.__tabBarImageFiles = pageConfigHandler.getTabBarImageFiles();
441
- return result;
133
+ files.push.apply(files, _toConsumableArray(finalResultData.files));
134
+ return {
135
+ files: files,
136
+ assets: {
137
+ tabBarImages: finalResultData.tabBarImageFiles
138
+ }
139
+ };
442
140
  };
443
141
 
444
- /** 初始化配置 */
142
+ /**
143
+ * 初始化配置
144
+ */
445
145
  var transformConfig = function transformConfig(config) {
446
146
  if (!config.codeStyle) {
447
147
  config.codeStyle = {
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 构建最终结果
3
+ * 包括抽象事件类型定义、JS 模块、TabBar 配置等
4
+ */
5
+ import type { ToTaroCodeConfig, GeneratedFile } from "../../toCodeTaro";
6
+ import type { JSModulesMap } from "../context/collectJSModules";
7
+ interface BuildResultParams {
8
+ abstractEventTypeDefMap: Record<string, any>;
9
+ jsModulesMap: JSModulesMap;
10
+ globalTabBarConfig: string | null;
11
+ tabBarImageFiles: any[];
12
+ config: ToTaroCodeConfig;
13
+ }
14
+ /**
15
+ * 构建最终结果
16
+ */
17
+ export declare const buildFinalResults: (params: BuildResultParams) => {
18
+ files: GeneratedFile[];
19
+ tabBarImageFiles: any[];
20
+ };
21
+ export {};
@@ -0,0 +1,61 @@
1
+ /**
2
+ * 构建最终结果
3
+ * 包括抽象事件类型定义、JS 模块、TabBar 配置等
4
+ */
5
+
6
+ import { ImportManager } from "../common/ImportManager";
7
+ import abstractEventTypeDef from "../../abstractEventTypeDef";
8
+ import { genJSModules } from "../logic/genJSModules";
9
+ /**
10
+ * 构建最终结果
11
+ */
12
+ export var buildFinalResults = function buildFinalResults(params) {
13
+ var abstractEventTypeDefMap = params.abstractEventTypeDefMap,
14
+ jsModulesMap = params.jsModulesMap,
15
+ globalTabBarConfig = params.globalTabBarConfig,
16
+ tabBarImageFiles = params.tabBarImageFiles,
17
+ config = params.config;
18
+ var files = [];
19
+
20
+ // 添加抽象事件类型定义
21
+ files.push({
22
+ type: "abstractEventTypeDef",
23
+ content: abstractEventTypeDef(abstractEventTypeDefMap, config),
24
+ importManager: new ImportManager(config),
25
+ name: "abstractEventTypeDef"
26
+ });
27
+
28
+ // 生成 JSModules.ts 文件
29
+ files.push({
30
+ type: "jsModules",
31
+ content: genJSModules(Array.from(jsModulesMap.values())),
32
+ importManager: new ImportManager(config),
33
+ name: "JSModules"
34
+ });
35
+
36
+ // 生成 common/index.ts 文件(初始化并导出 jsModules)
37
+ if (jsModulesMap.size > 0) {
38
+ var commonIndexContent = "import jsModulesGenerator from \"./jsModules\";\nimport { createJSHandle } from \"../core/mybricks/index\";\n\nconst jsModules: Record<string, (props: any, appContext: any) => any> = jsModulesGenerator({ createJSHandle });\n\nexport { jsModules };\n";
39
+ files.push({
40
+ type: "commonIndex",
41
+ content: commonIndexContent,
42
+ importManager: new ImportManager(config),
43
+ name: "commonIndex"
44
+ });
45
+ }
46
+
47
+ // 添加 TabBar 配置项(如果存在)
48
+ if (globalTabBarConfig) {
49
+ files.push({
50
+ type: "tabBarConfig",
51
+ content: globalTabBarConfig,
52
+ importManager: new ImportManager(config),
53
+ name: "tabBarConfig",
54
+ tabBarConfig: globalTabBarConfig
55
+ });
56
+ }
57
+ return {
58
+ files: files,
59
+ tabBarImageFiles: tabBarImageFiles
60
+ };
61
+ };
@@ -0,0 +1,19 @@
1
+ import type { ToTaroCodeConfig } from "../../toCodeTaro";
2
+ export type ImportType = "default" | "named" | "module";
3
+ export type DependencyImport = Record<string, Record<string, {
4
+ importType: ImportType;
5
+ }>>;
6
+ /** 导入依赖收集、解析 */
7
+ export declare class ImportManager {
8
+ private _config;
9
+ private _imports;
10
+ constructor(_config: ToTaroCodeConfig);
11
+ /** 添加依赖 */
12
+ addImport({ packageName, dependencyNames, importType, }: {
13
+ packageName: string;
14
+ dependencyNames: string[];
15
+ importType: ImportType;
16
+ }): void;
17
+ /** 依赖解析为code */
18
+ toCode(): string;
19
+ }