@mybricks/to-code-taro 1.0.2 → 1.0.4

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 (256) hide show
  1. package/README.md +58 -0
  2. package/dist/cjs/core/comlib/_AesEncode.js +115 -0
  3. package/dist/cjs/core/comlib/_BackTo.js +80 -0
  4. package/dist/cjs/core/comlib/{Index.js → _CallPhone.js} +29 -16
  5. package/dist/cjs/core/comlib/_ChooseFile.js +103 -0
  6. package/dist/cjs/core/comlib/_ChooseMedia.js +70 -0
  7. package/dist/cjs/core/comlib/_Connector.js +92 -0
  8. package/dist/cjs/core/comlib/_ConnectorGlobalHeaders.js +79 -0
  9. package/dist/cjs/core/comlib/_Format.js +123 -0
  10. package/dist/cjs/core/comlib/_GetLocation.js +60 -0
  11. package/dist/cjs/core/comlib/_GetStorage.js +68 -0
  12. package/dist/cjs/core/comlib/_GetSystemInfo.js +62 -0
  13. package/dist/cjs/core/comlib/_OpenCamera.js +73 -0
  14. package/dist/cjs/core/comlib/_OpenPetalMap.js +49 -0
  15. package/dist/cjs/core/comlib/_OpenUrl.js +62 -0
  16. package/dist/cjs/core/comlib/_RemoveStorage.js +68 -0
  17. package/dist/cjs/core/comlib/_Router.js +100 -0
  18. package/dist/cjs/core/comlib/_ScanQrcode.js +9 -10
  19. package/dist/cjs/core/comlib/_SetStorage.js +10 -19
  20. package/dist/cjs/core/comlib/_Share.js +58 -0
  21. package/dist/cjs/core/comlib/_ShowToast.js +23 -50
  22. package/dist/cjs/core/comlib/_TextToSpeech.js +120 -0
  23. package/dist/cjs/core/comlib/_TimerDebounce.js +72 -0
  24. package/dist/cjs/core/comlib/_TimerDelay.js +63 -0
  25. package/dist/cjs/core/comlib/_TimerThrottle.js +75 -0
  26. package/dist/cjs/core/comlib/_Vibrate.js +60 -0
  27. package/dist/cjs/core/comlib/index.js +111 -0
  28. package/dist/cjs/core/mybricks/index.js +47 -47
  29. package/dist/cjs/core/utils/ComContext.js +3 -0
  30. package/dist/cjs/core/utils/PopupRenderer.js +63 -0
  31. package/dist/cjs/core/utils/hooks.js +131 -0
  32. package/dist/cjs/core/utils/index.js +33 -57
  33. package/dist/cjs/core/utils/pageRouter.js +81 -0
  34. package/dist/cjs/core/utils/popupRouter.js +98 -0
  35. package/dist/cjs/core/utils/useContext.js +11 -2
  36. package/dist/cjs/core/utils/with.js +37 -13
  37. package/dist/cjs/generate/generateTaroProjectJson.d.ts +3 -14
  38. package/dist/cjs/generate/generateTaroProjectJson.js +39 -6
  39. package/dist/cjs/generate/utils/tabBarImages.d.ts +1 -1
  40. package/dist/cjs/handleCom.d.ts +1 -1
  41. package/dist/cjs/handleCom.js +91 -177
  42. package/dist/cjs/handleDom.js +7 -44
  43. package/dist/cjs/handleExtension.d.ts +2 -2
  44. package/dist/cjs/handleExtension.js +5 -5
  45. package/dist/cjs/handleGlobal.d.ts +2 -12
  46. package/dist/cjs/handleGlobal.js +23 -7
  47. package/dist/cjs/handleModule.js +3 -3
  48. package/dist/cjs/handleSlot.d.ts +4 -9
  49. package/dist/cjs/handleSlot.js +61 -150
  50. package/dist/cjs/processors/processComEvents.d.ts +9 -0
  51. package/dist/cjs/processors/processComEvents.js +164 -0
  52. package/dist/cjs/processors/processModule.d.ts +31 -0
  53. package/dist/cjs/processors/processModule.js +125 -0
  54. package/dist/cjs/processors/processScene.d.ts +32 -0
  55. package/dist/cjs/processors/processScene.js +128 -0
  56. package/dist/cjs/processors/processSceneLogic.d.ts +4 -0
  57. package/dist/cjs/processors/processSceneLogic.js +170 -0
  58. package/dist/cjs/shims-taro.d.ts +20 -0
  59. package/dist/cjs/taro-template.json +501 -351
  60. package/dist/cjs/toCodeTaro.d.ts +27 -6
  61. package/dist/cjs/toCodeTaro.js +68 -340
  62. package/dist/cjs/utils/builder/buildResult.d.ts +22 -0
  63. package/dist/cjs/utils/builder/buildResult.js +117 -0
  64. package/dist/cjs/utils/common/ImportManager.d.ts +19 -0
  65. package/dist/cjs/utils/common/ImportManager.js +105 -0
  66. package/dist/cjs/utils/common/helper.d.ts +2 -0
  67. package/dist/cjs/utils/common/helper.js +31 -0
  68. package/dist/cjs/utils/common/object.d.ts +5 -0
  69. package/dist/cjs/utils/common/object.js +58 -0
  70. package/dist/cjs/utils/common/string.d.ts +8 -0
  71. package/dist/cjs/utils/common/string.js +46 -0
  72. package/dist/cjs/utils/{pageConfig → config/content}/converter.js +1 -1
  73. package/dist/cjs/utils/{pageConfig → config/content}/index.js +9 -9
  74. package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.js +12 -22
  75. package/dist/{esm/utils/pageConfig → cjs/utils/config/content}/saveBase64Image.d.ts +1 -1
  76. package/dist/cjs/utils/{pageConfig → config/content}/saveBase64Image.js +8 -17
  77. package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.js +9 -32
  78. package/dist/cjs/utils/config/content/types.js +17 -0
  79. package/dist/cjs/utils/{pageConfig → config/content}/validator.js +1 -1
  80. package/dist/{esm/utils → cjs/utils/config}/handlePageConfig.d.ts +3 -2
  81. package/dist/cjs/utils/{handlePageConfig.js → config/handlePageConfig.js} +7 -6
  82. package/dist/cjs/utils/context/buildContext.d.ts +24 -0
  83. package/dist/cjs/utils/context/buildContext.js +65 -0
  84. package/dist/cjs/utils/context/buildFrameMap.d.ts +16 -0
  85. package/dist/cjs/utils/context/buildFrameMap.js +106 -0
  86. package/dist/cjs/utils/context/buildGlobalData.d.ts +13 -0
  87. package/dist/cjs/utils/context/buildGlobalData.js +58 -0
  88. package/dist/cjs/utils/context/collectJSModules.d.ts +37 -0
  89. package/dist/cjs/utils/context/collectJSModules.js +91 -0
  90. package/dist/cjs/utils/context/createEventQueries.d.ts +45 -0
  91. package/dist/cjs/utils/context/createEventQueries.js +99 -0
  92. package/dist/cjs/utils/context/createProvider.d.ts +21 -0
  93. package/dist/cjs/utils/context/createProvider.js +49 -0
  94. package/dist/cjs/utils/index.d.ts +10 -62
  95. package/dist/cjs/utils/index.js +21 -282
  96. package/dist/cjs/utils/{convertNamespace.js → logic/convertNamespace.js} +1 -1
  97. package/dist/cjs/utils/{genJSModules.js → logic/genJSModules.js} +1 -1
  98. package/dist/{esm/utils → cjs/utils/logic}/handleProcess.d.ts +2 -2
  99. package/dist/cjs/utils/{handleProcess.js → logic/handleProcess.js} +40 -16
  100. package/dist/cjs/utils/logic/processChildren.d.ts +12 -0
  101. package/dist/cjs/utils/logic/processChildren.js +82 -0
  102. package/dist/cjs/utils/style/color.d.ts +4 -0
  103. package/dist/cjs/utils/style/color.js +45 -0
  104. package/dist/cjs/utils/style/converter.d.ts +7 -0
  105. package/dist/cjs/utils/style/converter.js +181 -0
  106. package/dist/cjs/utils/{getComponentClassName.js → style/getComponentClassName.js} +1 -1
  107. package/dist/cjs/utils/{pxtransform.js → style/pxtransform.js} +1 -1
  108. package/dist/cjs/utils/style/types.d.ts +23 -0
  109. package/dist/cjs/utils/{pageConfig → style}/types.js +1 -1
  110. package/dist/cjs/utils/{code → templates}/component.js +1 -1
  111. package/dist/cjs/utils/{code → templates}/index.js +4 -4
  112. package/dist/cjs/utils/{code → templates}/renderManager.js +1 -1
  113. package/dist/cjs/utils/{code → templates}/scene.d.ts +3 -1
  114. package/dist/cjs/utils/{code → templates}/scene.js +17 -5
  115. package/dist/esm/core/comlib/_AesEncode.js +85 -0
  116. package/dist/esm/core/comlib/_BackTo.js +66 -0
  117. package/dist/esm/core/comlib/_CallPhone.js +30 -0
  118. package/dist/esm/core/comlib/_ChooseFile.js +81 -0
  119. package/dist/esm/core/comlib/_ChooseMedia.js +38 -0
  120. package/dist/esm/core/comlib/_Connector.js +60 -0
  121. package/dist/esm/core/comlib/_ConnectorGlobalHeaders.js +56 -0
  122. package/dist/esm/core/comlib/_Format.js +102 -0
  123. package/dist/esm/core/comlib/_GetLocation.js +26 -0
  124. package/dist/esm/core/comlib/_GetStorage.js +44 -0
  125. package/dist/esm/core/comlib/_GetSystemInfo.js +32 -0
  126. package/dist/esm/core/comlib/_OpenCamera.js +44 -0
  127. package/dist/esm/core/comlib/_OpenPetalMap.js +28 -0
  128. package/dist/esm/core/comlib/_OpenUrl.js +36 -0
  129. package/dist/esm/core/comlib/_RemoveStorage.js +42 -0
  130. package/dist/esm/core/comlib/_Router.js +113 -0
  131. package/dist/esm/core/comlib/_ScanQrcode.js +10 -11
  132. package/dist/esm/core/comlib/_SetStorage.js +13 -25
  133. package/dist/esm/core/comlib/_Share.js +28 -0
  134. package/dist/esm/core/comlib/_ShowToast.js +32 -55
  135. package/dist/esm/core/comlib/_TextToSpeech.js +117 -0
  136. package/dist/esm/core/comlib/_TimerDebounce.js +66 -0
  137. package/dist/esm/core/comlib/_TimerDelay.js +47 -0
  138. package/dist/esm/core/comlib/_TimerThrottle.js +69 -0
  139. package/dist/esm/core/comlib/_Vibrate.js +34 -0
  140. package/dist/esm/core/comlib/index.js +37 -0
  141. package/dist/esm/core/mybricks/index.js +1 -1
  142. package/dist/esm/core/utils/ComContext.js +1 -0
  143. package/dist/esm/core/utils/PopupRenderer.js +27 -0
  144. package/dist/esm/core/utils/hooks.js +130 -0
  145. package/dist/esm/core/utils/index.js +8 -57
  146. package/dist/esm/core/utils/pageRouter.js +69 -0
  147. package/dist/esm/core/utils/popupRouter.js +116 -0
  148. package/dist/esm/core/utils/useContext.js +16 -3
  149. package/dist/esm/core/utils/with.js +62 -19
  150. package/dist/esm/generate/generateTaroProjectJson.d.ts +3 -14
  151. package/dist/esm/generate/generateTaroProjectJson.js +62 -24
  152. package/dist/esm/generate/utils/tabBarImages.d.ts +1 -1
  153. package/dist/esm/handleCom.d.ts +1 -1
  154. package/dist/esm/handleCom.js +159 -244
  155. package/dist/esm/handleDom.js +9 -48
  156. package/dist/esm/handleExtension.d.ts +2 -2
  157. package/dist/esm/handleExtension.js +5 -5
  158. package/dist/esm/handleGlobal.d.ts +2 -12
  159. package/dist/esm/handleGlobal.js +17 -3
  160. package/dist/esm/handleModule.js +3 -3
  161. package/dist/esm/handleSlot.d.ts +4 -9
  162. package/dist/esm/handleSlot.js +112 -173
  163. package/dist/esm/processors/processComEvents.d.ts +9 -0
  164. package/dist/esm/processors/processComEvents.js +167 -0
  165. package/dist/esm/processors/processModule.d.ts +31 -0
  166. package/dist/esm/processors/processModule.js +126 -0
  167. package/dist/esm/processors/processScene.d.ts +32 -0
  168. package/dist/esm/processors/processScene.js +134 -0
  169. package/dist/esm/processors/processSceneLogic.d.ts +4 -0
  170. package/dist/esm/processors/processSceneLogic.js +170 -0
  171. package/dist/esm/shims-taro.d.ts +20 -0
  172. package/dist/esm/taro-template.json +501 -351
  173. package/dist/esm/toCodeTaro.d.ts +27 -6
  174. package/dist/esm/toCodeTaro.js +110 -395
  175. package/dist/esm/utils/builder/buildResult.d.ts +22 -0
  176. package/dist/esm/utils/builder/buildResult.js +82 -0
  177. package/dist/esm/utils/common/ImportManager.d.ts +19 -0
  178. package/dist/esm/utils/common/ImportManager.js +103 -0
  179. package/dist/esm/utils/common/helper.d.ts +2 -0
  180. package/dist/esm/utils/common/helper.js +4 -0
  181. package/dist/esm/utils/common/object.d.ts +5 -0
  182. package/dist/esm/utils/common/object.js +32 -0
  183. package/dist/esm/utils/common/string.d.ts +8 -0
  184. package/dist/esm/utils/common/string.js +21 -0
  185. package/dist/esm/utils/config/content/pageConfig.js +40 -0
  186. package/dist/{cjs/utils/pageConfig → esm/utils/config/content}/saveBase64Image.d.ts +1 -1
  187. package/dist/esm/utils/{pageConfig → config/content}/saveBase64Image.js +11 -30
  188. package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.js +12 -34
  189. package/dist/{cjs/utils → esm/utils/config}/handlePageConfig.d.ts +3 -2
  190. package/dist/esm/utils/{handlePageConfig.js → config/handlePageConfig.js} +6 -2
  191. package/dist/esm/utils/context/buildContext.d.ts +24 -0
  192. package/dist/esm/utils/context/buildContext.js +53 -0
  193. package/dist/esm/utils/context/buildFrameMap.d.ts +16 -0
  194. package/dist/esm/utils/context/buildFrameMap.js +131 -0
  195. package/dist/esm/utils/context/buildGlobalData.d.ts +13 -0
  196. package/dist/esm/utils/context/buildGlobalData.js +44 -0
  197. package/dist/esm/utils/context/collectJSModules.d.ts +37 -0
  198. package/dist/esm/utils/context/collectJSModules.js +87 -0
  199. package/dist/esm/utils/context/createEventQueries.d.ts +45 -0
  200. package/dist/esm/utils/context/createEventQueries.js +99 -0
  201. package/dist/esm/utils/context/createProvider.d.ts +21 -0
  202. package/dist/esm/utils/context/createProvider.js +33 -0
  203. package/dist/esm/utils/index.d.ts +10 -62
  204. package/dist/esm/utils/index.js +12 -345
  205. package/dist/{cjs/utils → esm/utils/logic}/handleProcess.d.ts +2 -2
  206. package/dist/esm/utils/{handleProcess.js → logic/handleProcess.js} +42 -9
  207. package/dist/esm/utils/logic/processChildren.d.ts +12 -0
  208. package/dist/esm/utils/logic/processChildren.js +48 -0
  209. package/dist/esm/utils/style/color.d.ts +4 -0
  210. package/dist/esm/utils/style/color.js +17 -0
  211. package/dist/esm/utils/style/converter.d.ts +7 -0
  212. package/dist/esm/utils/style/converter.js +176 -0
  213. package/dist/esm/utils/style/types.d.ts +23 -0
  214. package/dist/esm/utils/style/types.js +1 -0
  215. package/dist/esm/utils/{code → templates}/scene.d.ts +3 -1
  216. package/dist/esm/utils/{code → templates}/scene.js +13 -5
  217. package/package.json +4 -2
  218. package/dist/esm/core/comlib/Index.js +0 -3
  219. package/dist/esm/utils/pageConfig/pageConfig.js +0 -60
  220. /package/dist/cjs/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  221. /package/dist/cjs/utils/{pageConfig → config/content}/index.d.ts +0 -0
  222. /package/dist/cjs/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  223. /package/dist/cjs/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  224. /package/dist/cjs/utils/{pageConfig → config/content}/types.d.ts +0 -0
  225. /package/dist/cjs/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  226. /package/dist/cjs/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  227. /package/dist/cjs/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  228. /package/dist/cjs/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  229. /package/dist/cjs/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  230. /package/dist/cjs/utils/{code → templates}/component.d.ts +0 -0
  231. /package/dist/cjs/utils/{code → templates}/index.d.ts +0 -0
  232. /package/dist/cjs/utils/{code → templates}/renderManager.d.ts +0 -0
  233. /package/dist/esm/utils/{pageConfig → config/content}/converter.d.ts +0 -0
  234. /package/dist/esm/utils/{pageConfig → config/content}/converter.js +0 -0
  235. /package/dist/esm/utils/{pageConfig → config/content}/index.d.ts +0 -0
  236. /package/dist/esm/utils/{pageConfig → config/content}/index.js +0 -0
  237. /package/dist/esm/utils/{pageConfig → config/content}/pageConfig.d.ts +0 -0
  238. /package/dist/esm/utils/{pageConfig → config/content}/tabBarConfig.d.ts +0 -0
  239. /package/dist/esm/utils/{pageConfig → config/content}/types.d.ts +0 -0
  240. /package/dist/esm/utils/{pageConfig → config/content}/types.js +0 -0
  241. /package/dist/esm/utils/{pageConfig → config/content}/validator.d.ts +0 -0
  242. /package/dist/esm/utils/{pageConfig → config/content}/validator.js +0 -0
  243. /package/dist/esm/utils/{convertNamespace.d.ts → logic/convertNamespace.d.ts} +0 -0
  244. /package/dist/esm/utils/{convertNamespace.js → logic/convertNamespace.js} +0 -0
  245. /package/dist/esm/utils/{genJSModules.d.ts → logic/genJSModules.d.ts} +0 -0
  246. /package/dist/esm/utils/{genJSModules.js → logic/genJSModules.js} +0 -0
  247. /package/dist/esm/utils/{getComponentClassName.d.ts → style/getComponentClassName.d.ts} +0 -0
  248. /package/dist/esm/utils/{getComponentClassName.js → style/getComponentClassName.js} +0 -0
  249. /package/dist/esm/utils/{pxtransform.d.ts → style/pxtransform.d.ts} +0 -0
  250. /package/dist/esm/utils/{pxtransform.js → style/pxtransform.js} +0 -0
  251. /package/dist/esm/utils/{code → templates}/component.d.ts +0 -0
  252. /package/dist/esm/utils/{code → templates}/component.js +0 -0
  253. /package/dist/esm/utils/{code → templates}/index.d.ts +0 -0
  254. /package/dist/esm/utils/{code → templates}/index.js +0 -0
  255. /package/dist/esm/utils/{code → templates}/renderManager.d.ts +0 -0
  256. /package/dist/esm/utils/{code → templates}/renderManager.js +0 -0
@@ -1,6 +1,10 @@
1
+ /**
2
+ * Taro 代码生成入口文件
3
+ * 参考鸿蒙实现,采用低耦合、高内聚的设计
4
+ */
1
5
  import toCode from "@mybricks/to-code-react/dist/cjs/toCode";
2
6
  import type { ToJSON } from "@mybricks/to-code-react/dist/cjs/toCode/types";
3
- import { ImportManager } from "./utils";
7
+ import { ImportManager } from "./utils/common/ImportManager";
4
8
  export interface ToTaroCodeConfig {
5
9
  getComponentMeta: (com: Extract<UI["children"][0], {
6
10
  type: "com";
@@ -20,7 +24,7 @@ export interface ToTaroCodeConfig {
20
24
  callName?: string;
21
25
  };
22
26
  getComponentPackageName: (props?: any) => string;
23
- getUtilsPackageName: () => string;
27
+ getUtilsPackageName: (props?: any) => string;
24
28
  getPageId?: (id: string) => string;
25
29
  getBus?: (namespace: string) => {
26
30
  title: string;
@@ -52,8 +56,8 @@ export interface ToTaroCodeConfig {
52
56
  indent: number;
53
57
  };
54
58
  }
55
- /** 返回结果 */
56
- export type Result = Array<{
59
+ /** 单个生成文件的信息 */
60
+ export interface GeneratedFile {
57
61
  content: string;
58
62
  cssContent?: string;
59
63
  pageConfigContent?: string;
@@ -62,8 +66,18 @@ export type Result = Array<{
62
66
  meta?: ReturnType<typeof toCode>["scenes"][0]["scene"];
63
67
  name: string;
64
68
  tabBarConfig?: string;
65
- }>;
66
- declare const toCodeTaro: (tojson: ToJSON, config: ToTaroCodeConfig) => Result;
69
+ }
70
+ /** 统一的生成结果结构 */
71
+ export interface GenerationResult {
72
+ files: GeneratedFile[];
73
+ assets?: {
74
+ tabBarImages?: any[];
75
+ };
76
+ }
77
+ /**
78
+ * Taro 代码生成主函数
79
+ */
80
+ declare const toCodeTaro: (tojson: ToJSON, config: ToTaroCodeConfig) => GenerationResult;
67
81
  type ToCodeResult = ReturnType<typeof toCode>;
68
82
  export type UI = ToCodeResult["scenes"][0]["ui"];
69
83
  interface Provider {
@@ -112,6 +126,13 @@ export interface BaseConfig extends ToTaroCodeConfig {
112
126
  getProviderMap: () => Record<string, ReturnType<BaseConfig["getCurrentProvider"]>>;
113
127
  getExtensionEventById: (id: string) => ReturnType<typeof toCode>["scenes"][0]["event"][0];
114
128
  getSceneById: (id: string) => ReturnType<typeof toCode>["scenes"][0]["scene"];
129
+ /** 根据 pinId 获取场景/区块的输入项事件 */
130
+ getFrameInputEvent: (pinId: string, frameId?: string) => ReturnType<typeof toCode>["scenes"][0]["event"][0];
131
+ /** 根据 frameId 获取 frame 信息(参考鸿蒙实现) */
132
+ getFrameById?: (id: string) => {
133
+ frame: any;
134
+ meta: any;
135
+ } | undefined;
115
136
  /** 层级,用于格式化代码 */
116
137
  depth: number;
117
138
  getTypeDef: () => {
@@ -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,79 @@ 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
-
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
93
 
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
+ var popupIds = new Set();
96
+ tojson.scenes.forEach(function (s) {
97
+ var _s$deps;
98
+ if (s.type === 'popup' || (_s$deps = s.deps) !== null && _s$deps !== void 0 && _s$deps.some(function (dep) {
99
+ return dep.namespace === 'mybricks.taro.popup';
100
+ })) {
101
+ popupIds.add(s.id);
102
+ }
249
103
  });
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
104
 
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"
105
+ // ========== 第六步:处理场景 ==========
106
+ processScenes(scenes, {
107
+ config: _objectSpread(_objectSpread({}, config), {}, {
108
+ // @ts-ignore
109
+ hasPopups: popupIds.size > 0
110
+ }),
111
+ globalVarTypeDef: globalVarTypeDef,
112
+ defaultFxsMap: defaultFxsMap,
113
+ abstractEventTypeDefMap: abstractEventTypeDefMap,
114
+ jsModulesMap: jsModulesCollector.getMap(),
115
+ getExtensionEventById: getExtensionEventById,
116
+ getSceneById: getSceneById,
117
+ getFrameById: getFrameById,
118
+ pageConfigHandler: pageConfigHandler,
119
+ addResult: function addResult(item) {
120
+ files.push(item);
121
+ }
405
122
  });
406
123
 
407
- // 生成 JSModules.ts 文件
408
- result.push({
409
- type: "jsModules",
410
- content: genJSModules(Array.from(jsModulesMap.values())),
411
- importManager: new ImportManager(config),
412
- name: "JSModules"
124
+ // ========== 第七步:处理模块 ==========
125
+ processModules(modules, {
126
+ config: config,
127
+ globalVarTypeDef: globalVarTypeDef,
128
+ defaultFxsMap: defaultFxsMap,
129
+ abstractEventTypeDefMap: abstractEventTypeDefMap,
130
+ jsModulesMap: jsModulesCollector.getMap(),
131
+ getExtensionEventById: getExtensionEventById,
132
+ getSceneById: getSceneById,
133
+ getFrameById: getFrameById,
134
+ addResult: function addResult(item) {
135
+ files.push(item);
136
+ }
413
137
  });
414
138
 
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;
139
+ // ========== 第八步:构建最终结果 ==========
140
+ var finalResultData = buildFinalResults({
141
+ abstractEventTypeDefMap: abstractEventTypeDefMap,
142
+ jsModulesMap: jsModulesCollector.getMap(),
143
+ globalTabBarConfig: pageConfigHandler.getTabBarConfig(),
144
+ tabBarImageFiles: pageConfigHandler.getTabBarImageFiles(),
145
+ popupIds: Array.from(popupIds),
146
+ config: config
147
+ });
148
+ files.push.apply(files, _toConsumableArray(finalResultData.files));
149
+ return {
150
+ files: files,
151
+ assets: {
152
+ tabBarImages: finalResultData.tabBarImageFiles
153
+ }
154
+ };
442
155
  };
443
156
 
444
- /** 初始化配置 */
157
+ /**
158
+ * 初始化配置
159
+ */
445
160
  var transformConfig = function transformConfig(config) {
446
161
  if (!config.codeStyle) {
447
162
  config.codeStyle = {
@@ -0,0 +1,22 @@
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
+ popupIds: string[];
13
+ config: ToTaroCodeConfig;
14
+ }
15
+ /**
16
+ * 构建最终结果
17
+ */
18
+ export declare const buildFinalResults: (params: BuildResultParams) => {
19
+ files: GeneratedFile[];
20
+ tabBarImageFiles: any[];
21
+ };
22
+ export {};