@cloudbase/framework-plugin-low-code 1.7.2 → 1.7.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 (238) hide show
  1. package/lib/builder/config/common.d.ts +2 -0
  2. package/lib/builder/config/common.d.ts.map +1 -0
  3. package/lib/builder/config/common.js +13 -0
  4. package/lib/builder/config/index.d.ts +3 -0
  5. package/lib/builder/config/index.d.ts.map +1 -0
  6. package/lib/builder/config/index.js +29 -0
  7. package/lib/builder/config/mp.d.ts +2 -0
  8. package/lib/builder/config/mp.d.ts.map +1 -0
  9. package/lib/builder/config/mp.js +13 -0
  10. package/lib/builder/core/copy.d.ts +5 -0
  11. package/lib/builder/core/copy.d.ts.map +1 -0
  12. package/lib/builder/core/copy.js +62 -0
  13. package/lib/builder/core/generate.d.ts +9 -0
  14. package/lib/builder/core/generate.d.ts.map +1 -0
  15. package/lib/builder/core/generate.js +128 -0
  16. package/lib/builder/core/index.d.ts +32 -0
  17. package/lib/builder/core/index.d.ts.map +1 -0
  18. package/lib/builder/core/index.js +149 -0
  19. package/lib/builder/core/material.d.ts +4 -0
  20. package/lib/builder/core/material.d.ts.map +1 -0
  21. package/lib/builder/core/material.js +80 -0
  22. package/lib/builder/core/plugin.d.ts +4 -0
  23. package/lib/builder/core/plugin.d.ts.map +1 -0
  24. package/lib/builder/core/plugin.js +30 -0
  25. package/lib/builder/core/prepare.d.ts +8 -0
  26. package/lib/builder/core/prepare.d.ts.map +1 -0
  27. package/lib/builder/core/prepare.js +108 -0
  28. package/lib/builder/core/webpack.d.ts +15 -0
  29. package/lib/builder/core/webpack.d.ts.map +1 -0
  30. package/lib/builder/core/webpack.js +58 -0
  31. package/lib/builder/mp/BuildContext.d.ts +13 -0
  32. package/lib/builder/mp/BuildContext.d.ts.map +1 -0
  33. package/lib/builder/mp/BuildContext.js +2 -0
  34. package/lib/builder/mp/index.d.ts +33 -0
  35. package/lib/builder/mp/index.d.ts.map +1 -0
  36. package/lib/builder/mp/index.js +450 -0
  37. package/lib/builder/mp/lowcode.d.ts +8 -0
  38. package/lib/builder/mp/lowcode.d.ts.map +1 -0
  39. package/lib/builder/mp/lowcode.js +54 -0
  40. package/lib/builder/mp/materials.d.ts +15 -0
  41. package/lib/builder/mp/materials.d.ts.map +1 -0
  42. package/lib/builder/mp/materials.js +338 -0
  43. package/lib/builder/mp/mixMode.d.ts +10 -0
  44. package/lib/builder/mp/mixMode.d.ts.map +1 -0
  45. package/lib/builder/mp/mixMode.js +215 -0
  46. package/lib/builder/mp/mp_config.d.ts +18 -0
  47. package/lib/builder/mp/mp_config.d.ts.map +1 -0
  48. package/lib/builder/mp/mp_config.js +206 -0
  49. package/lib/builder/mp/util.d.ts +20 -0
  50. package/lib/builder/mp/util.d.ts.map +1 -0
  51. package/lib/builder/mp/util.js +243 -0
  52. package/lib/builder/mp/wxml.d.ts +16 -0
  53. package/lib/builder/mp/wxml.d.ts.map +1 -0
  54. package/lib/builder/mp/wxml.js +300 -0
  55. package/lib/builder/service/builder/copy.d.ts +14 -0
  56. package/lib/builder/service/builder/copy.d.ts.map +1 -0
  57. package/lib/builder/service/builder/copy.js +189 -0
  58. package/lib/builder/service/builder/generate.d.ts +52 -0
  59. package/lib/builder/service/builder/generate.d.ts.map +1 -0
  60. package/lib/builder/service/builder/generate.js +792 -0
  61. package/lib/builder/service/builder/index.d.ts +16 -0
  62. package/lib/builder/service/builder/index.d.ts.map +1 -0
  63. package/lib/builder/service/builder/index.js +69 -0
  64. package/lib/builder/service/builder/plugin.d.ts +8 -0
  65. package/lib/builder/service/builder/plugin.d.ts.map +1 -0
  66. package/lib/builder/service/builder/plugin.js +149 -0
  67. package/lib/builder/service/builder/webpack.d.ts +91 -0
  68. package/lib/builder/service/builder/webpack.d.ts.map +1 -0
  69. package/lib/builder/service/builder/webpack.js +589 -0
  70. package/lib/builder/types/common.d.ts +12 -0
  71. package/lib/builder/types/common.d.ts.map +1 -0
  72. package/lib/builder/types/common.js +7 -0
  73. package/lib/builder/util/common.d.ts +36 -0
  74. package/lib/builder/util/common.d.ts.map +1 -0
  75. package/lib/builder/util/common.js +257 -0
  76. package/lib/builder/util/console.d.ts +2 -0
  77. package/lib/builder/util/console.d.ts.map +1 -0
  78. package/lib/builder/util/console.js +13 -0
  79. package/lib/builder/util/generateFiles.d.ts +6 -0
  80. package/lib/builder/util/generateFiles.d.ts.map +1 -0
  81. package/lib/builder/util/generateFiles.js +94 -0
  82. package/lib/builder/util/index.d.ts +2 -0
  83. package/lib/builder/util/index.d.ts.map +1 -0
  84. package/lib/builder/util/index.js +13 -0
  85. package/lib/builder/util/junk.d.ts +3 -0
  86. package/lib/builder/util/junk.d.ts.map +1 -0
  87. package/lib/builder/util/junk.js +25 -0
  88. package/lib/builder/util/mp.d.ts +5 -0
  89. package/lib/builder/util/mp.d.ts.map +1 -0
  90. package/lib/builder/util/mp.js +99 -0
  91. package/lib/builder/util/name-mangler.d.ts +3 -0
  92. package/lib/builder/util/name-mangler.d.ts.map +1 -0
  93. package/lib/builder/util/name-mangler.js +7 -0
  94. package/lib/builder/util/net.d.ts +3 -0
  95. package/lib/builder/util/net.d.ts.map +1 -0
  96. package/lib/builder/util/net.js +54 -0
  97. package/lib/builder/util/process.d.ts +9 -0
  98. package/lib/builder/util/process.d.ts.map +1 -0
  99. package/lib/builder/util/process.js +28 -0
  100. package/lib/builder/util/style.d.ts +2 -0
  101. package/lib/builder/util/style.d.ts.map +1 -0
  102. package/lib/builder/util/style.js +13 -0
  103. package/lib/builder/util/weapp.d.ts +2 -0
  104. package/lib/builder/util/weapp.d.ts.map +1 -0
  105. package/lib/builder/util/weapp.js +13 -0
  106. package/lib/config/private.d.ts +3 -0
  107. package/lib/config/private.d.ts.map +1 -0
  108. package/lib/config/private.js +14 -0
  109. package/lib/generate.d.ts +2 -0
  110. package/lib/generate.d.ts.map +1 -0
  111. package/lib/generate.js +49 -0
  112. package/lib/generator/config/common.d.ts +6 -0
  113. package/lib/generator/config/common.d.ts.map +1 -0
  114. package/lib/generator/config/common.js +25 -0
  115. package/lib/generator/config/index.d.ts +18 -0
  116. package/lib/generator/config/index.d.ts.map +1 -0
  117. package/lib/generator/config/index.js +43 -0
  118. package/lib/generator/config/mp.d.ts +56 -0
  119. package/lib/generator/config/mp.d.ts.map +1 -0
  120. package/lib/generator/config/mp.js +104 -0
  121. package/lib/generator/core/generate.d.ts +59 -0
  122. package/lib/generator/core/generate.d.ts.map +1 -0
  123. package/lib/generator/core/generate.js +663 -0
  124. package/lib/generator/core/index.d.ts +25 -0
  125. package/lib/generator/core/index.d.ts.map +1 -0
  126. package/lib/generator/core/index.js +102 -0
  127. package/lib/generator/core/material.d.ts +14 -0
  128. package/lib/generator/core/material.d.ts.map +1 -0
  129. package/lib/generator/core/material.js +230 -0
  130. package/lib/generator/template.d.ts +3 -0
  131. package/lib/generator/template.d.ts.map +1 -0
  132. package/lib/generator/template.js +3 -0
  133. package/lib/generator/types/common.d.ts +69 -0
  134. package/lib/generator/types/common.d.ts.map +1 -0
  135. package/lib/generator/types/common.js +21 -0
  136. package/lib/generator/util/common.d.ts +36 -0
  137. package/lib/generator/util/common.d.ts.map +1 -0
  138. package/lib/generator/util/common.js +238 -0
  139. package/lib/generator/util/console.d.ts +3 -0
  140. package/lib/generator/util/console.d.ts.map +1 -0
  141. package/lib/generator/util/console.js +17 -0
  142. package/lib/generator/util/index.d.ts +2 -0
  143. package/lib/generator/util/index.d.ts.map +1 -0
  144. package/lib/generator/util/index.js +13 -0
  145. package/lib/generator/util/name-mangler.d.ts +17 -0
  146. package/lib/generator/util/name-mangler.d.ts.map +1 -0
  147. package/lib/generator/util/name-mangler.js +63 -0
  148. package/lib/generator/util/postcss-rpx.d.ts +11 -0
  149. package/lib/generator/util/postcss-rpx.d.ts.map +1 -0
  150. package/lib/generator/util/postcss-rpx.js +16 -0
  151. package/lib/generator/util/style.d.ts +6 -0
  152. package/lib/generator/util/style.d.ts.map +1 -0
  153. package/lib/generator/util/style.js +92 -0
  154. package/lib/generator/util/weapp.d.ts +5 -0
  155. package/lib/generator/util/weapp.d.ts.map +1 -0
  156. package/lib/generator/util/weapp.js +17 -0
  157. package/lib/index.d.ts +0 -0
  158. package/lib/index.d.ts.map +0 -0
  159. package/lib/index.js +0 -0
  160. package/lib/types.d.ts +14 -0
  161. package/lib/types.d.ts.map +1 -0
  162. package/lib/types.js +19 -0
  163. package/lib/utils/common.d.ts +0 -0
  164. package/lib/utils/common.d.ts.map +0 -0
  165. package/lib/utils/common.js +0 -0
  166. package/lib/utils/dataSource.d.ts +28 -0
  167. package/lib/utils/dataSource.d.ts.map +1 -0
  168. package/lib/utils/dataSource.js +171 -0
  169. package/lib/utils/index.d.ts +0 -0
  170. package/lib/utils/index.d.ts.map +0 -0
  171. package/lib/utils/index.js +0 -0
  172. package/lib/utils/postProcess.d.ts +3 -0
  173. package/lib/utils/postProcess.d.ts.map +1 -0
  174. package/lib/utils/postProcess.js +48 -0
  175. package/lib/weapps-core/config/index.d.ts +2 -0
  176. package/lib/weapps-core/config/index.d.ts.map +1 -0
  177. package/lib/weapps-core/config/index.js +13 -0
  178. package/lib/weapps-core/config/style.d.ts +7 -0
  179. package/lib/weapps-core/config/style.d.ts.map +1 -0
  180. package/lib/weapps-core/config/style.js +70 -0
  181. package/lib/weapps-core/index.d.ts +6 -0
  182. package/lib/weapps-core/index.d.ts.map +1 -0
  183. package/lib/weapps-core/index.js +31 -0
  184. package/lib/weapps-core/types/action.d.ts +25 -0
  185. package/lib/weapps-core/types/action.d.ts.map +1 -0
  186. package/lib/weapps-core/types/action.js +28 -0
  187. package/lib/weapps-core/types/app.d.ts +142 -0
  188. package/lib/weapps-core/types/app.d.ts.map +1 -0
  189. package/lib/weapps-core/types/app.js +21 -0
  190. package/lib/weapps-core/types/appbuild.d.ts +63 -0
  191. package/lib/weapps-core/types/appbuild.d.ts.map +1 -0
  192. package/lib/weapps-core/types/appbuild.js +78 -0
  193. package/lib/weapps-core/types/code_types.d.ts +26 -0
  194. package/lib/weapps-core/types/code_types.d.ts.map +1 -0
  195. package/lib/weapps-core/types/code_types.js +2 -0
  196. package/lib/weapps-core/types/git.d.ts +7 -0
  197. package/lib/weapps-core/types/git.d.ts.map +1 -0
  198. package/lib/weapps-core/types/git.js +2 -0
  199. package/lib/weapps-core/types/index.d.ts +11 -0
  200. package/lib/weapps-core/types/index.d.ts.map +1 -0
  201. package/lib/weapps-core/types/index.js +22 -0
  202. package/lib/weapps-core/types/lowcode.d.ts +26 -0
  203. package/lib/weapps-core/types/lowcode.d.ts.map +1 -0
  204. package/lib/weapps-core/types/lowcode.js +25 -0
  205. package/lib/weapps-core/types/material.d.ts +90 -0
  206. package/lib/weapps-core/types/material.d.ts.map +1 -0
  207. package/lib/weapps-core/types/material.js +9 -0
  208. package/lib/weapps-core/types/plugins.d.ts +17 -0
  209. package/lib/weapps-core/types/plugins.d.ts.map +1 -0
  210. package/lib/weapps-core/types/plugins.js +2 -0
  211. package/lib/weapps-core/types/style.d.ts +93 -0
  212. package/lib/weapps-core/types/style.d.ts.map +1 -0
  213. package/lib/weapps-core/types/style.js +2 -0
  214. package/lib/weapps-core/types/web.d.ts +120 -0
  215. package/lib/weapps-core/types/web.d.ts.map +1 -0
  216. package/lib/weapps-core/types/web.js +2 -0
  217. package/lib/weapps-core/utils/appbuild.d.ts +6 -0
  218. package/lib/weapps-core/utils/appbuild.d.ts.map +1 -0
  219. package/lib/weapps-core/utils/appbuild.js +40 -0
  220. package/lib/weapps-core/utils/common.d.ts +16 -0
  221. package/lib/weapps-core/utils/common.d.ts.map +1 -0
  222. package/lib/weapps-core/utils/common.js +90 -0
  223. package/lib/weapps-core/utils/file.d.ts +12 -0
  224. package/lib/weapps-core/utils/file.d.ts.map +1 -0
  225. package/lib/weapps-core/utils/file.js +142 -0
  226. package/lib/weapps-core/utils/formily.d.ts +5 -0
  227. package/lib/weapps-core/utils/formily.d.ts.map +1 -0
  228. package/lib/weapps-core/utils/formily.js +416 -0
  229. package/lib/weapps-core/utils/index.d.ts +7 -0
  230. package/lib/weapps-core/utils/index.d.ts.map +1 -0
  231. package/lib/weapps-core/utils/index.js +18 -0
  232. package/lib/weapps-core/utils/lowcdoe.d.ts +4 -0
  233. package/lib/weapps-core/utils/lowcdoe.d.ts.map +1 -0
  234. package/lib/weapps-core/utils/lowcdoe.js +69 -0
  235. package/lib/weapps-core/utils/style.d.ts +17 -0
  236. package/lib/weapps-core/utils/style.d.ts.map +1 -0
  237. package/lib/weapps-core/utils/style.js +330 -0
  238. package/package.json +3 -3
@@ -0,0 +1,450 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.handleUsedComponents = exports.writeLowCodeFiles = exports.generateWxMp = void 0;
35
+ const chalk_1 = __importDefault(require("chalk"));
36
+ const path_1 = __importDefault(require("path"));
37
+ const util_1 = require("util");
38
+ const fs = __importStar(require("fs-extra"));
39
+ const weapps_core_1 = require("../../weapps-core");
40
+ const config_1 = require("../config");
41
+ const mp_1 = require("../config/mp");
42
+ const generateFiles_1 = __importStar(require("../util/generateFiles"));
43
+ const materials_1 = require("./materials");
44
+ const webpack_1 = require("../service/builder/webpack");
45
+ const util_2 = require("./util");
46
+ const wxml_1 = require("./wxml");
47
+ const lowcode_1 = require("./lowcode");
48
+ const mp_config_1 = require("./mp_config");
49
+ const plugin_1 = require("../service/builder/plugin");
50
+ const plugin_2 = require("../core/plugin");
51
+ const util_3 = require("../util");
52
+ const style_1 = require("../util/style");
53
+ const dataSource_1 = require("../../utils/dataSource");
54
+ const types_1 = require("../../types");
55
+ const common_1 = require("../types/common");
56
+ const lodash_1 = require("lodash");
57
+ const junk = __importStar(require("../util/junk"));
58
+ const net_1 = require("../util/net");
59
+ const templateDir = `${config_1.appTemplateDir}/mp/`;
60
+ const em = chalk_1.default.blue.bold;
61
+ function generateWxMp({ weapps, projDir, appId, domain, materials, plugins, isProduction, deployMode, extraData, isMixMode, options, buildTypeList, }) {
62
+ var _a;
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const operationLabel = em('Wexin MiniProgram Generated');
65
+ console.time(operationLabel);
66
+ console.log(`Generating ${em('Wexin MiniProgram')} to ${projDir}`);
67
+ console.log(em('domain') + domain);
68
+ let mainAppData = weapps[0];
69
+ const buildContext = {
70
+ projDir,
71
+ appId,
72
+ isProduction,
73
+ materialLibs: materials,
74
+ isMixMode,
75
+ mainAppData,
76
+ domain,
77
+ };
78
+ const yyptConfig = yield (0, util_3.getYyptConfigInfo)(extraData);
79
+ const { appUsedComps, allAppUsedComps } = handleUsedComponents({
80
+ buildContext,
81
+ weapps,
82
+ materials,
83
+ });
84
+ buildContext.miniprogramPlugins = (mainAppData.miniprogramPlugins || []).filter((plugin) => allAppUsedComps[plugin.name]);
85
+ yield (0, materials_1.installMaterials)(projDir, allAppUsedComps, weapps, buildContext);
86
+ const wxmlDataPrefix = (0, mp_1.getWxmlDataPrefix)(!isProduction);
87
+ const { projConfig, appConfig, pageConfigs } = (0, mp_config_1.generateMpConfig)(weapps, buildContext);
88
+ if (!mainAppData.mpPkgUrl) {
89
+ const projectFileData = {
90
+ 'project.config.json': { content: projConfig },
91
+ };
92
+ console.log(`Generating ${em('project')} files`);
93
+ yield (0, generateFiles_1.default)(projectFileData, templateDir, projDir, buildContext);
94
+ }
95
+ yield generatePkg(mainAppData, path_1.default.join(projDir, '/'), Object.assign(Object.assign({}, buildContext), { rootPath: mainAppData.rootPath }), pageConfigs[0]);
96
+ const projectConfigJsonPath = path_1.default.join(projDir, mainAppData.rootPath || '', 'project.config.json');
97
+ let projectConfigJson = yield fs.readJSON(projectConfigJsonPath);
98
+ const miniprogramRoot = path_1.default.join(projDir, projectConfigJson.miniprogramRoot || '/');
99
+ let appFileData = {};
100
+ if (weapps.find((item) => !item.mpPkgUrl)) {
101
+ yield generateFramework(mainAppData, miniprogramRoot, buildContext);
102
+ if (mainAppData.mpPkgUrl) {
103
+ let appJsPath = path_1.default.join(miniprogramRoot, 'app.js');
104
+ let appJsContent = yield fs.readFile(appJsPath);
105
+ yield (0, generateFiles_1.writeFile)(appJsPath, `import { app as wedaApp } from './app/weapps-api'\n${appJsContent}`);
106
+ }
107
+ appFileData = Object.assign(Object.assign({}, appFileData), { 'common/style.js': {}, 'common/utils.wxs': {
108
+ domain,
109
+ }, 'common/util.js': {
110
+ isAdminPortal: (0, common_1.buildAsAdminPortalByBuildType)(buildTypeList),
111
+ }, 'common/widget.js': {}, 'common/url.js': {}, 'common/weapp-sdk.js': {}, 'common/weapp-page.js': {
112
+ dataPropNames: wxmlDataPrefix,
113
+ debug: !buildContext.isProduction,
114
+ }, 'common/weapp-component.js': {}, 'common/merge-renderer.js': {
115
+ dataPropNames: wxmlDataPrefix,
116
+ debug: !buildContext.isProduction,
117
+ }, 'common/process.js': {}, 'common/data-patch.js': {} });
118
+ }
119
+ if (mainAppData.mpPkgUrl) {
120
+ if (!projectConfigJson.setting) {
121
+ projectConfigJson.setting = {};
122
+ }
123
+ projectConfigJson.setting = Object.assign(Object.assign({}, projectConfigJson.setting), projConfig.setting);
124
+ yield (0, generateFiles_1.writeFile)(projectConfigJsonPath, JSON.stringify(projectConfigJson, undefined, 2));
125
+ let appJsonPath = path_1.default.join(miniprogramRoot, 'app.json');
126
+ let appJson = yield fs.readJson(appJsonPath);
127
+ appJson.subpackages = (0, mp_config_1.mergeSubPackages)(appJson.subpackages, appConfig.subpackages);
128
+ yield (0, generateFiles_1.writeFile)(appJsonPath, JSON.stringify(appJson, undefined, 2));
129
+ }
130
+ else {
131
+ appFileData = Object.assign(Object.assign({}, appFileData), { 'common/wx_yypt_report_v2.js': {}, 'app.js': { yyptConfig }, 'app.json': { content: appConfig }, 'app.wxss': {
132
+ importStyles: materials.reduce((styles, lib) => {
133
+ styles = styles.concat((lib.styles || []).map((stylePath) => stylePath && !stylePath.startsWith('/') ? `/${config_1.materialsDirName}/${lib.name}/${stylePath}` : stylePath) || []);
134
+ return styles;
135
+ }, []),
136
+ }, 'package.json': {
137
+ appId,
138
+ extraDeps: resolveNpmDeps(),
139
+ } });
140
+ }
141
+ console.log(`Generating ${em('miniprogramRoot')} files`);
142
+ yield (0, generateFiles_1.default)(appFileData, templateDir, miniprogramRoot, buildContext);
143
+ if (miniprogramRoot !== path_1.default.join(projDir, '/') && fs.existsSync(path_1.default.join(projDir, config_1.materialsDirName))) {
144
+ console.log(`Move ${em(config_1.materialsDirName)} from` + `${projDir} to ${miniprogramRoot}`);
145
+ yield fs.move(path_1.default.join(projDir, config_1.materialsDirName), path_1.default.join(miniprogramRoot, config_1.materialsDirName));
146
+ }
147
+ if (weapps.find((item) => !item.mpPkgUrl)) {
148
+ const datasourceFileData = {
149
+ 'datasources/index.js': {},
150
+ 'datasources/config.js.tpl': {
151
+ envID: mainAppData.envId,
152
+ appID: appId,
153
+ resourceAppid: !!options.isCrossAccount ? options.resourceAppid : '',
154
+ isProd: deployMode === types_1.DEPLOY_MODE.UPLOAD,
155
+ clientID: ((_a = mainAppData.extra) === null || _a === void 0 ? void 0 : _a.clientId) || '',
156
+ },
157
+ 'datasources/datasource-profiles.js.tpl': {
158
+ datasourceProfiles: (0, util_3.JsonToStringWithVariableName)((0, dataSource_1.getDatasourceProfiles)([])),
159
+ },
160
+ 'datasources/dataset-profiles.js.tpl': {
161
+ datasetProfiles: (0, util_3.JsonToStringWithVariableName)((0, dataSource_1.getDatasetProfiles)(mainAppData, weapps)),
162
+ },
163
+ };
164
+ console.log(`Generating ${em('datasources')} files`);
165
+ yield (0, generateFiles_1.default)(datasourceFileData, templateDir, miniprogramRoot, buildContext);
166
+ }
167
+ yield Promise.all(weapps.map((app, index) => __awaiter(this, void 0, void 0, function* () {
168
+ if (index == 0) {
169
+ return;
170
+ }
171
+ else {
172
+ const subpackageRootPath = path_1.default.join(miniprogramRoot, app.rootPath || '/');
173
+ let subpackageBuildCtx = Object.assign(Object.assign({}, buildContext), { rootPath: app.rootPath });
174
+ yield generatePkg(app, subpackageRootPath, subpackageBuildCtx, pageConfigs[index]);
175
+ yield generateFramework(app, subpackageRootPath, subpackageBuildCtx);
176
+ let packageJsonPath = path_1.default.join(subpackageRootPath, 'package.json');
177
+ if (!fs.existsSync(packageJsonPath)) {
178
+ yield (0, generateFiles_1.default)({
179
+ 'package.json': {
180
+ appId,
181
+ extraDeps: resolveNpmDeps(),
182
+ },
183
+ }, templateDir, subpackageRootPath, buildContext);
184
+ }
185
+ }
186
+ })));
187
+ if (fs.existsSync(path_1.default.join(miniprogramRoot, 'package.json'))) {
188
+ yield (0, webpack_1.installDependencies)(miniprogramRoot);
189
+ }
190
+ yield handleMpPlugins();
191
+ console.timeEnd(operationLabel);
192
+ cleanProj(weapps, miniprogramRoot);
193
+ cleanMaterils(path_1.default.join(miniprogramRoot, config_1.materialsDirName), allAppUsedComps);
194
+ return { miniprogramRoot };
195
+ function resolveNpmDeps() {
196
+ const deps = weapps.map((app) => app.npmDependencies);
197
+ materials.map((lib) => deps.push(lib.dependencies));
198
+ materials.map((compLb) => {
199
+ if (compLb.isComposite && compLb.compLibCommonResource) {
200
+ deps.push(compLb.compLibCommonResource.npm || {});
201
+ }
202
+ });
203
+ return deps.reduce((combined, cur) => {
204
+ return Object.assign(Object.assign({}, combined), cur);
205
+ }, {});
206
+ }
207
+ function handleMpPlugins() {
208
+ return __awaiter(this, void 0, void 0, function* () {
209
+ const mpPlugins = (yield (0, plugin_1.getPluginType)(miniprogramRoot, plugins)).filter((item) => item.type === 'mp');
210
+ yield (0, plugin_2.runHandleMpPlugin)(miniprogramRoot, mpPlugins);
211
+ });
212
+ }
213
+ });
214
+ }
215
+ exports.generateWxMp = generateWxMp;
216
+ function generatePkg(weapp, appRoot, ctx, pageConfigs) {
217
+ return __awaiter(this, void 0, void 0, function* () {
218
+ const wxmlDataPrefix = (0, mp_1.getWxmlDataPrefix)(!ctx.isProduction);
219
+ console.log(`Generating ${em(weapp.rootPath ? 'subApp' : 'app')} to ${appRoot}`);
220
+ if (weapp.mpPkgUrl) {
221
+ console.log(`Removing ${appRoot}`);
222
+ yield (0, generateFiles_1.cleanDir)(appRoot, ['materials']);
223
+ yield (0, net_1.downloadZip)(weapp.mpPkgUrl, appRoot);
224
+ if (fs.existsSync(path_1.default.join(appRoot, '__MACOSX'))) {
225
+ yield fs.remove(path_1.default.join(appRoot, '__MACOSX'));
226
+ }
227
+ }
228
+ else {
229
+ console.log(`Generating ${em('page')} files`);
230
+ (0, generateFiles_1.cleanDir)(path_1.default.join(appRoot, 'pages'), []);
231
+ yield Promise.all(weapp.pageInstanceList.map((page) => __awaiter(this, void 0, void 0, function* () {
232
+ var _a, _b;
233
+ const rootPath = weapp.rootPath || '';
234
+ const usingComponents = {};
235
+ const wxml = (0, wxml_1.generateWxml)(page.componentInstances, `Page ${rootPath ? path_1.default.join(rootPath, 'pages') : ''}/${page.id}`, wxmlDataPrefix, Object.assign(Object.assign({}, ctx), { rootPath, isPage: true }), usingComponents);
236
+ const pageFileName = (0, lodash_1.get)(pageConfigs, `${page.id}.pageFileName`, 'index');
237
+ const pageFileData = {
238
+ [`index.js|${pageFileName}.js`]: {
239
+ widgetProps: (0, util_2.createWidgetProps)(page.componentInstances, ctx),
240
+ pageUUID: rootPath ? `${rootPath}/${page.id}` : page.id,
241
+ pageName: page.id,
242
+ pageSource: page.data.src || '',
243
+ eventHanlders: (0, util_2.createEventHanlders)(page.componentInstances, '$page', ctx),
244
+ dataBinds: (0, util_2.createDataBinds)(page.componentInstances, ctx),
245
+ pageAttributes: Object.assign({}, (((_a = page.data) === null || _a === void 0 ? void 0 : _a.appShareMessage) ? { appShareMessage: page.data.appShareMessage.value } : {})),
246
+ debug: !ctx.isProduction,
247
+ stringifyObj: util_1.inspect,
248
+ subLevelPath: rootPath ? `${path_1.default.relative(rootPath, '')}/` : '',
249
+ },
250
+ [`index.json|${pageFileName}.json`]: {
251
+ usingComponents,
252
+ extra: getAppendableJson(pageConfigs[page.id]),
253
+ },
254
+ [`index.wxml|${pageFileName}.wxml`]: {
255
+ content: wxml,
256
+ },
257
+ [`index.wxss|${pageFileName}.wxss`]: {
258
+ subWxss: rootPath && !((_b = ctx.mainAppData) === null || _b === void 0 ? void 0 : _b.mpPkgUrl)
259
+ ? `@import "${path_1.default.relative(`/${rootPath}/pages/${page.id}`, '/lowcode')}/style.wxss";`
260
+ : '',
261
+ content: (0, weapps_core_1.toCssText)((0, weapps_core_1.toCssStyle)(page.commonStyle, {
262
+ toRem: false,
263
+ toRpx: true,
264
+ }), 'page'),
265
+ pageWxss: `@import "../../lowcode/${page.id}/style.wxss"`,
266
+ },
267
+ 'api.js': {},
268
+ };
269
+ yield (0, generateFiles_1.default)(pageFileData, `${templateDir}/page`, path_1.default.join(appRoot, 'pages', page.id), ctx);
270
+ })));
271
+ yield writeLowCodeFiles(weapp, appRoot, ctx);
272
+ }
273
+ });
274
+ }
275
+ function generateFramework(appData, outDir, ctx) {
276
+ return __awaiter(this, void 0, void 0, function* () {
277
+ let fileData = {};
278
+ if (appData.mpPkgUrl) {
279
+ if (!appData.rootPath) {
280
+ fileData = Object.assign(Object.assign({}, fileData), { 'app/app-global.js': {}, 'app/weapps-api.js': {
281
+ appId: ctx.appId,
282
+ subLevelPath: '',
283
+ subPackageName: '',
284
+ isBare: true,
285
+ domain: ctx.domain || '',
286
+ appConfig: JSON.stringify({}),
287
+ } });
288
+ }
289
+ }
290
+ else {
291
+ const allCodeModules = [];
292
+ (0, weapps_core_1.loopDealWithFn)(appData.pageInstanceList || [], (p) => {
293
+ allCodeModules.push({
294
+ id: p.id,
295
+ lowCodes: p.lowCodes || [],
296
+ });
297
+ });
298
+ fileData['app/handlers.js'] = {
299
+ pageModules: allCodeModules.sort(),
300
+ };
301
+ const isMixSubpackage = ctx.isMixMode && appData.rootPath;
302
+ if (!isMixSubpackage) {
303
+ fileData = Object.assign(Object.assign({}, fileData), { 'app/app-global.js': {}, 'app/weapps-api.js': {
304
+ appId: ctx.appId,
305
+ domain: ctx.domain || '',
306
+ subLevelPath: appData.rootPath ? `${path_1.default.relative(`${appData.rootPath}`, '')}/` : '',
307
+ subPackageName: appData.rootPath || '',
308
+ isBare: false,
309
+ appConfig: (0, util_3.JsonToStringWithVariableName)({
310
+ id: ctx.appId,
311
+ envId: appData.envId,
312
+ staticResourceDomain: ctx.domain || '',
313
+ envVersion: (ctx === null || ctx === void 0 ? void 0 : ctx.isProduction) ? 'production' : 'preview',
314
+ pages: appData.pageInstanceList
315
+ .sort((item) => (item.isHome ? -1 : 1))
316
+ .map((item) => {
317
+ return {
318
+ id: item.id,
319
+ type: item.data.isCustomLoginPage ? 'login' : '',
320
+ };
321
+ }),
322
+ }),
323
+ }, 'app/common.js': {
324
+ mods: appData.lowCodes
325
+ .filter((m) => m.type === 'normal-module' && m.name !== '____index____')
326
+ .map((m) => m.name)
327
+ .sort(),
328
+ } });
329
+ }
330
+ }
331
+ console.log('Generate app framework');
332
+ yield (0, generateFiles_1.default)(fileData, templateDir, outDir, ctx);
333
+ });
334
+ }
335
+ function writeLowCodeFiles(appData, outDir, ctx) {
336
+ return __awaiter(this, void 0, void 0, function* () {
337
+ console.log(`Writing ${em('lowcode')} files:`);
338
+ const lowcodeRootDir = path_1.default.join(outDir, 'lowcode');
339
+ const themeStyle = (0, style_1.generateDefaultTheme)(appData);
340
+ if (!(ctx.isMixMode && appData.rootPath)) {
341
+ yield Promise.all(appData.lowCodes
342
+ .filter((mod) => mod.name !== '____index____')
343
+ .filter((mod) => mod.type !== 'renderer')
344
+ .map((m) => (0, lowcode_1.writeCode2file)(m, lowcodeRootDir, { appDir: outDir }, themeStyle.code)));
345
+ }
346
+ yield Promise.all((0, weapps_core_1.loopDealWithFn)(appData.pageInstanceList, (page) => __awaiter(this, void 0, void 0, function* () {
347
+ var _a;
348
+ (0, style_1.generateDefaultStyle)(page);
349
+ yield ((_a = page === null || page === void 0 ? void 0 : page.lowCodes) === null || _a === void 0 ? void 0 : _a.filter((mod) => mod.name !== '____index____').filter((mod) => mod.type !== 'renderer').forEach((m) => (0, lowcode_1.writeCode2file)(m, lowcodeRootDir, { pageId: page.id, appDir: outDir }, themeStyle.code, ctx)));
350
+ })));
351
+ });
352
+ }
353
+ exports.writeLowCodeFiles = writeLowCodeFiles;
354
+ function getAppendableJson(json) {
355
+ const obj = Object.assign({}, json);
356
+ if (obj.reachBottomDistance) {
357
+ obj.onReachBottomDistance = parseInt(obj.reachBottomDistance) || 0;
358
+ delete obj.reachBottomDistance;
359
+ }
360
+ if (obj && Object.keys(obj).length > 0) {
361
+ const str = JSON.stringify(obj);
362
+ return `,\n${str.substr(1, str.length - 2)}`;
363
+ }
364
+ return '';
365
+ }
366
+ function handleUsedComponents({ buildContext, weapps, materials, }) {
367
+ const appUsedComps = weapps.map((app) => {
368
+ var _a;
369
+ const usedComps = {};
370
+ (_a = app.pageInstanceList) === null || _a === void 0 ? void 0 : _a.forEach((p) => (0, wxml_1.getUsedComponents)(p.componentInstances, usedComps));
371
+ return {
372
+ rootPath: app.rootPath || '',
373
+ usedComps,
374
+ };
375
+ });
376
+ let allAppUsedComps = appUsedComps.reduce((comps, item) => {
377
+ Object.keys(item.usedComps).forEach((libName) => {
378
+ comps[libName] = new Set([...Array.from(item.usedComps[libName]), ...Array.from(comps[libName] || [])]);
379
+ });
380
+ return comps;
381
+ }, {});
382
+ const compositedLibs = materials.filter((lib) => lib.isComposite);
383
+ allAppUsedComps = (0, materials_1.extractUsedCompsRecursively)(allAppUsedComps, [], compositedLibs);
384
+ if (buildContext.isMixMode) {
385
+ appUsedComps.forEach((item) => {
386
+ const appCompositedLibs = materials.filter((lib) => lib.isComposite);
387
+ item.usedComps = (0, materials_1.extractUsedCompsRecursively)(item.usedComps, [], appCompositedLibs);
388
+ });
389
+ }
390
+ return {
391
+ appUsedComps,
392
+ allAppUsedComps,
393
+ };
394
+ }
395
+ exports.handleUsedComponents = handleUsedComponents;
396
+ function cleanProj(weapps, miniprogramRoot) {
397
+ return __awaiter(this, void 0, void 0, function* () {
398
+ weapps.map((pkg) => cleanPkg(pkg, miniprogramRoot));
399
+ });
400
+ }
401
+ function cleanPkg(pkg, miniprogramRoot) {
402
+ return __awaiter(this, void 0, void 0, function* () {
403
+ if (pkg.mpPkgUrl) {
404
+ return;
405
+ }
406
+ const pkgDir = [miniprogramRoot, pkg.rootPath].filter((p) => !!p).join(path_1.default.sep);
407
+ const pagesDir = path_1.default.join(pkgDir, 'pages');
408
+ const lowcodesDir = path_1.default.join(pkgDir, 'lowcode');
409
+ const existedPages = yield fs.readdir(pagesDir);
410
+ const pages = pkg.pageInstanceList.map((p) => p.id);
411
+ existedPages.forEach((pageName) => {
412
+ var _a, _b, _c, _d;
413
+ const pageDir = path_1.default.join(pagesDir, pageName);
414
+ const lowcodeDir = path_1.default.join(lowcodesDir, pageName);
415
+ if (pages.indexOf(pageName) < 0) {
416
+ (0, generateFiles_1.removeFile)(pageDir);
417
+ (0, generateFiles_1.removeFile)(lowcodeDir);
418
+ }
419
+ else {
420
+ const handlersDir = path_1.default.join(lowcodeDir, 'handler');
421
+ const handlers = ((_d = (_c = (_b = (_a = pkg === null || pkg === void 0 ? void 0 : pkg.pageInstanceList) === null || _a === void 0 ? void 0 : _a.find((p) => p.id === pageName)) === null || _b === void 0 ? void 0 : _b.lowCodes) === null || _c === void 0 ? void 0 : _c.filter((m) => m.type === 'handler-fn')) === null || _d === void 0 ? void 0 : _d.map((m) => `${m.name}.js`)) || [];
422
+ (0, generateFiles_1.cleanDir)(handlersDir, handlers);
423
+ }
424
+ });
425
+ const commonModules = pkg.lowCodes.filter((m) => m.type === 'normal-module').map((m) => `${m.name}.js`);
426
+ const commonDir = path_1.default.join(lowcodesDir, 'common');
427
+ (0, generateFiles_1.cleanDir)(commonDir, commonModules);
428
+ });
429
+ }
430
+ function cleanMaterils(materialsDir, usedComps) {
431
+ if (fs.existsSync(materialsDir)) {
432
+ fs.readdirSync(materialsDir)
433
+ .filter(junk.not)
434
+ .map((libName) => {
435
+ const libDir = path_1.default.join(materialsDir, libName);
436
+ if (fs.existsSync(path_1.default.join(libDir, 'meta.json'))) {
437
+ try {
438
+ (0, generateFiles_1.removeFile)(path_1.default.join(libDir, 'meta.json'));
439
+ }
440
+ catch (e) { }
441
+ return;
442
+ }
443
+ if (!usedComps[libName]) {
444
+ (0, generateFiles_1.removeFile)(libDir);
445
+ return;
446
+ }
447
+ (0, generateFiles_1.cleanDir)(libDir, [...Array.from(usedComps[libName]), 'libCommonRes']);
448
+ });
449
+ }
450
+ }
@@ -0,0 +1,8 @@
1
+ import { IWeAppCode, ICompositedComponent } from '../../weapps-core';
2
+ import { IBuildContext } from './BuildContext';
3
+ export declare function writeCode2file(mod: IWeAppCode, lowcodeRootDir: string, opts?: {
4
+ pageId?: string;
5
+ appDir?: string;
6
+ comp?: ICompositedComponent;
7
+ }, themeCode?: '', ctx?: IBuildContext): Promise<void>;
8
+ //# sourceMappingURL=lowcode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowcode.d.ts","sourceRoot":"","sources":["../../../src/builder/mp/lowcode.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EAEV,oBAAoB,EAErB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,EACf,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,oBAAoB,CAAA;CAAO,EAC5E,SAAS,CAAC,EAAE,EAAE,EACd,GAAG,CAAC,EAAE,aAAa,iBAwCpB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.writeCode2file = void 0;
16
+ const path_1 = __importDefault(require("path"));
17
+ const weapps_core_1 = require("../../weapps-core");
18
+ const style_1 = require("../util/style");
19
+ const generateFiles_1 = require("../util/generateFiles");
20
+ function writeCode2file(mod, lowcodeRootDir, opts = {}, themeCode, ctx) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const { pageId = 'global', appDir, comp } = opts;
23
+ const file = path_1.default.join(lowcodeRootDir, (0, weapps_core_1.getCodeModuleFilePath)(pageId, mod, { style: '.wxss' }));
24
+ let code = mod.code;
25
+ if (mod.type !== 'style' && mod.type !== 'theme') {
26
+ if (appDir) {
27
+ const baseDir = path_1.default.relative(path_1.default.dirname(file), appDir).replace(/\\/g, '/');
28
+ const relativeRoot = (ctx === null || ctx === void 0 ? void 0 : ctx.isMixMode) && ctx.rootPath ? path_1.default.relative(ctx.rootPath, '') + '/' : '';
29
+ let weappsApiPrefix = `import { app, process } from '${relativeRoot}${baseDir}/app/weapps-api';\nconst $app = app;`;
30
+ if (pageId !== 'global') {
31
+ weappsApiPrefix += `\nimport { $page } from '${baseDir}/pages/${pageId}/api'`;
32
+ }
33
+ code = weappsApiPrefix + '\n' + code;
34
+ }
35
+ else {
36
+ code = `import process from '${mod.type === 'handler-fn' ? '../' : ''}../../../../common/process'\nimport { app } from '${mod.type === 'handler-fn' ? '../' : ''}../../../../app/weapps-api';\nconst $app = app;\n${code.replace(/\$comp/g, weapps_core_1.COMPONENT_API_PREFIX)}`;
37
+ }
38
+ }
39
+ else {
40
+ code = `${themeCode ? themeCode : ''}\n${code}`;
41
+ if (comp) {
42
+ code = `.${(0, weapps_core_1.getCompositedComponentClass)(comp)} {\n${code}\n}`;
43
+ }
44
+ try {
45
+ code = yield (0, style_1.processLessToRpx)(`${code}`);
46
+ }
47
+ catch (e) {
48
+ console.error('processLess Error', e);
49
+ }
50
+ }
51
+ yield (0, generateFiles_1.writeFile)(file, code);
52
+ });
53
+ }
54
+ exports.writeCode2file = writeCode2file;
@@ -0,0 +1,15 @@
1
+ import { IMaterialItem, ICompositedComponent, IWeAppComponentInstance } from '../../weapps-core';
2
+ import { IBuildContext } from './BuildContext';
3
+ import NameMangler from '../util/name-mangler';
4
+ import { IWeAppData } from '../../weapps-core';
5
+ import { IUsedComps } from '../types/common';
6
+ export declare function installMaterials(projDir: string, usedComps: IUsedComps, weapps: IWeAppData[], ctx: IBuildContext): Promise<void>;
7
+ export declare function extractUsedCompsRecursively(comps: IUsedComps, checkedComps: ICompositedComponent[], compositedLibs: IMaterialItem[], outputComps?: IUsedComps): IUsedComps;
8
+ export declare function getWxmlTag(cmp: Required<IWeAppComponentInstance>['xComponent'], ctx: IBuildContext, nameMangler?: NameMangler): {
9
+ tagName: string;
10
+ path?: undefined;
11
+ } | {
12
+ tagName: string;
13
+ path: any;
14
+ };
15
+ //# sourceMappingURL=materials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../../../src/builder/mp/materials.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EAIxB,MAAM,mBAAmB,CAAC;AAa3B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAU/C,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,UAAU,EAAE,EACpB,GAAG,EAAE,aAAa,iBAmLnB;AAGD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,oBAAoB,EAAE,EACpC,cAAc,EAAE,aAAa,EAAE,EAC/B,WAAW,CAAC,EAAE,UAAU,cAsCzB;AA6ID,wBAAgB,UAAU,CACxB,GAAG,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC,YAAY,CAAC,EACpD,GAAG,EAAE,aAAa,EAClB,WAAW,CAAC,EAAE,WAAW;;;;;;EAgE1B"}