@aiot-toolkit/aiotpack 2.1.0-prender.4 → 2.1.0-prender.5

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.
@@ -7,10 +7,95 @@ exports.default = void 0;
7
7
  var _TemplateCompiler = require("./TemplateCompiler");
8
8
  var _path = _interopRequireDefault(require("path"));
9
9
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
10
+ var acorn = _interopRequireWildcard(require("acorn"));
10
11
  var _UxCompileUtil = _interopRequireDefault(require("./vela/utils/UxCompileUtil"));
11
12
  var _UxFileUtils = _interopRequireDefault(require("../../utils/ux/UxFileUtils"));
12
13
  var _UxLoaderUtils = _interopRequireDefault(require("../../utils/ux/UxLoaderUtils"));
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ const NS_PREFIX = /^@(system|service|android|hap)\./;
18
+ const APP_MODULE_PREFIX = '@app-module/';
19
+ function rewriteSystemImports(code) {
20
+ if (!/@(system|service|android|hap)\.|@app-module\//.test(code)) return code;
21
+ let ast;
22
+ try {
23
+ ast = acorn.parse(code, {
24
+ sourceType: 'module',
25
+ ecmaVersion: 'latest',
26
+ allowHashBang: true,
27
+ allowAwaitOutsideFunction: true,
28
+ allowReturnOutsideFunction: true,
29
+ allowImportExportEverywhere: true
30
+ });
31
+ } catch {
32
+ return code;
33
+ }
34
+ const edits = [];
35
+ let tempCounter = 0;
36
+ for (const node of ast.body) {
37
+ if (node.type !== 'ImportDeclaration') continue;
38
+ const src = node.source.value;
39
+ let moduleName = null;
40
+ if (NS_PREFIX.test(src)) {
41
+ moduleName = src.replace(NS_PREFIX, '$1.');
42
+ } else if (src.startsWith(APP_MODULE_PREFIX)) {
43
+ moduleName = src.slice(APP_MODULE_PREFIX.length);
44
+ }
45
+ if (moduleName === null) continue;
46
+ const target = `"${APP_MODULE_PREFIX}${moduleName}"`;
47
+ if (node.specifiers.length === 0) {
48
+ edits.push({
49
+ start: node.start,
50
+ end: node.end,
51
+ replacement: `$app_require$(${target});`
52
+ });
53
+ continue;
54
+ }
55
+ if (node.specifiers.length === 1) {
56
+ const spec = node.specifiers[0];
57
+ const local = spec.local.name;
58
+ if (spec.type === 'ImportDefaultSpecifier' || spec.type === 'ImportNamespaceSpecifier') {
59
+ edits.push({
60
+ start: node.start,
61
+ end: node.end,
62
+ replacement: `const ${local} = $app_require$(${target});`
63
+ });
64
+ } else if (spec.type === 'ImportSpecifier') {
65
+ const imported = spec.imported.name;
66
+ const dest = imported === local ? `{ ${local} }` : `{ ${imported}: ${local} }`;
67
+ edits.push({
68
+ start: node.start,
69
+ end: node.end,
70
+ replacement: `const ${dest} = $app_require$(${target});`
71
+ });
72
+ }
73
+ continue;
74
+ }
75
+ const tempVar = `$_imp${tempCounter++}`;
76
+ const parts = [`const ${tempVar} = $app_require$(${target});`];
77
+ for (const spec of node.specifiers) {
78
+ const local = spec.local.name;
79
+ if (spec.type === 'ImportDefaultSpecifier' || spec.type === 'ImportNamespaceSpecifier') {
80
+ parts.push(`const ${local} = ${tempVar};`);
81
+ } else if (spec.type === 'ImportSpecifier') {
82
+ const imported = spec.imported.name;
83
+ const dest = imported === local ? `{ ${local} }` : `{ ${imported}: ${local} }`;
84
+ parts.push(`const ${dest} = ${tempVar};`);
85
+ }
86
+ }
87
+ edits.push({
88
+ start: node.start,
89
+ end: node.end,
90
+ replacement: parts.join(' ')
91
+ });
92
+ }
93
+ if (edits.length === 0) return code;
94
+ edits.sort((a, b) => b.start - a.start);
95
+ let out = code;
96
+ for (const e of edits) out = out.slice(0, e.start) + e.replacement + out.slice(e.end);
97
+ return out;
98
+ }
14
99
  function loadUserViteConfig(projectPath, mode) {
15
100
  const configPath = _path.default.join(projectPath, 'quickapp.config.js');
16
101
  if (!_fsExtra.default.existsSync(configPath)) return {};
@@ -143,17 +228,9 @@ class ViteCompiler {
143
228
  name: 'system-to-app-require',
144
229
  enforce: 'pre',
145
230
  transform(code, id) {
146
- if (!/@(system|service|android|hap)\.|@app-module\//.test(code)) return null;
147
- const NS = '(system|service|android|hap)';
148
- let t = code;
149
- t = t.replace(new RegExp(`import\\s+(\\w+)\\s+from\\s+['"]@${NS}\\.([^'"]+)['"]\\s*;?`, 'g'), 'const $1 = $app_require$("@app-module/$2.$3");');
150
- t = t.replace(new RegExp(`import\\s+\\{([^}]+)\\}\\s+from\\s+['"]@${NS}\\.([^'"]+)['"]\\s*;?`, 'g'), 'const {$1} = $app_require$("@app-module/$2.$3");');
151
- t = t.replace(/import\s+(\w+)\s+from\s+['"]@app-module\/([^'"]+)['"]\s*;?/g, 'const $1 = $app_require$("@app-module/$2");');
152
- t = t.replace(/import\s+\{([^}]+)\}\s+from\s+['"]@app-module\/([^'"]+)['"]\s*;?/g, 'const {$1} = $app_require$("@app-module/$2");');
153
- t = t.replace(/import\s+['"]@app-module\/([^'"]+)['"]\s*;?/g, '$app_require$("@app-module/$1");');
154
- t = t.replace(new RegExp(`import\\s+['"]@${NS}\\.([^'"]+)['"]\\s*;?`, 'g'), '$app_require$("@app-module/$1.$2");');
155
- return t !== code ? {
156
- code: t,
231
+ const out = rewriteSystemImports(code);
232
+ return out !== code ? {
233
+ code: out,
157
234
  map: null
158
235
  } : null;
159
236
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiot-toolkit/aiotpack",
3
- "version": "2.1.0-prender.4",
3
+ "version": "2.1.0-prender.5",
4
4
  "description": "The process tool for packaging aiot projects.",
5
5
  "keywords": [
6
6
  "aiotpack"
@@ -19,16 +19,16 @@
19
19
  "test": "node ./__tests__/aiotpack.test.js"
20
20
  },
21
21
  "dependencies": {
22
- "@aiot-toolkit/generator": "2.1.0-prender.4",
23
- "@aiot-toolkit/parser": "2.1.0-prender.4",
24
- "@aiot-toolkit/shared-utils": "2.1.0-prender.4",
22
+ "@aiot-toolkit/generator": "2.1.0-prender.5",
23
+ "@aiot-toolkit/parser": "2.1.0-prender.5",
24
+ "@aiot-toolkit/shared-utils": "2.1.0-prender.5",
25
25
  "@hap-toolkit/aaptjs": "^2.0.0",
26
26
  "@rspack/core": "^1.3.9",
27
27
  "acorn": "^8.16.0",
28
28
  "aiot-parse5": "^1.0.2",
29
29
  "astring": "^1.9.0",
30
30
  "babel-loader": "^9.1.3",
31
- "file-lane": "2.1.0-prender.4",
31
+ "file-lane": "2.1.0-prender.5",
32
32
  "file-loader": "^6.2.0",
33
33
  "fs-extra": "^11.2.0",
34
34
  "jsrsasign": "^11.1.0",