@uni-helper/vite-plugin-uni-pages 0.3.17 → 0.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -164,7 +164,7 @@ function mergePageMetaDataArray(pageMetaData) {
164
164
  }
165
165
  return result;
166
166
  }
167
- async function execScript(options) {
167
+ async function parseCode(options) {
168
168
  const { imports = [], code, filename } = options;
169
169
  let jsCode = "";
170
170
  try {
@@ -215,7 +215,24 @@ async function execScript(options) {
215
215
  __filename: filename,
216
216
  __dirname: dir,
217
217
  require: node_module.createRequire(dir),
218
- import: (id) => import(id)
218
+ import: (id) => import(id),
219
+ // 定时器相关
220
+ setTimeout,
221
+ clearTimeout,
222
+ setInterval,
223
+ clearInterval,
224
+ setImmediate,
225
+ clearImmediate,
226
+ // 控制台相关
227
+ console,
228
+ // URL 处理
229
+ URL,
230
+ URLSearchParams,
231
+ // 进程和性能相关
232
+ performance,
233
+ // 全局对象引用
234
+ global: globalThis,
235
+ globalThis
219
236
  };
220
237
  const script = new vm__default.Script(jsCode, { filename });
221
238
  await script.runInNewContext(vmContext, {
@@ -223,10 +240,7 @@ async function execScript(options) {
223
240
  // 设置超时避免长时间运行
224
241
  });
225
242
  const result = vmContext.exports.default || vmContext.exports;
226
- if (typeof result === "function") {
227
- return Promise.resolve(result());
228
- }
229
- return Promise.resolve(result);
243
+ return result;
230
244
  } catch (error) {
231
245
  throw new Error(`EXEC SCRIPT FAIL IN ${filename}: ${error.message}
232
246
 
@@ -473,7 +487,7 @@ class Page {
473
487
  if (forceUpdate || !this.meta) {
474
488
  await this.read();
475
489
  }
476
- const { path, tabBar: _, ...others } = this.meta;
490
+ const { path, tabBar: _, ...others } = this.meta || {};
477
491
  return {
478
492
  path: path ?? this.uri,
479
493
  ...others
@@ -550,14 +564,15 @@ async function tryPageMetaFromMacro(sfc) {
550
564
  const imports = findImports(ast.body).filter((imp) => !!imp.specifiers.length).map((imp) => babelGenerate(imp).code);
551
565
  const [macroOption] = macro.arguments;
552
566
  const code = babelGenerate(macroOption).code;
553
- const result = await execScript({
567
+ const parsed = await parseCode({
554
568
  imports,
555
569
  code,
556
570
  filename: sfc.filename
557
571
  });
572
+ const res = typeof parsed === "function" ? await Promise.resolve(parsed()) : await Promise.resolve(parsed);
558
573
  return {
559
574
  type: "page",
560
- ...result
575
+ ...res
561
576
  };
562
577
  }
563
578
  return void 0;
@@ -1220,7 +1235,6 @@ exports.checkPagesJsonFileSync = checkPagesJsonFileSync;
1220
1235
  exports.debug = debug;
1221
1236
  exports.default = VitePluginUniPages;
1222
1237
  exports.defineUniPages = defineUniPages;
1223
- exports.execScript = execScript;
1224
1238
  exports.extsToGlob = extsToGlob;
1225
1239
  exports.findImports = findImports;
1226
1240
  exports.findMacro = findMacro;
@@ -1230,6 +1244,7 @@ exports.getRouteSfcBlock = getRouteSfcBlock;
1230
1244
  exports.invalidatePagesModule = invalidatePagesModule;
1231
1245
  exports.isTargetFile = isTargetFile;
1232
1246
  exports.mergePageMetaDataArray = mergePageMetaDataArray;
1247
+ exports.parseCode = parseCode;
1233
1248
  exports.parseCustomBlock = parseCustomBlock;
1234
1249
  exports.parseSFC = parseSFC;
1235
1250
  exports.resolveOptions = resolveOptions;
package/dist/index.d.cts CHANGED
@@ -3024,7 +3024,7 @@ declare function isTargetFile(path: string): boolean;
3024
3024
  */
3025
3025
  declare function mergePageMetaDataArray(pageMetaData: PageMetaDatum[]): PageMetaDatum[];
3026
3026
  /**
3027
- * 执行一段 TypeScript / JavaScript 脚本代码,并返回执行结果
3027
+ * 将 TypeScript / JavaScript 脚本代码,转换为对象/函数
3028
3028
  *
3029
3029
  * @param options - 执行脚本所需的配置项
3030
3030
  * @param options.imports - 需要引入的模块导入语句列表
@@ -3032,7 +3032,7 @@ declare function mergePageMetaDataArray(pageMetaData: PageMetaDatum[]): PageMeta
3032
3032
  * @param options.filename - 脚本文件名,用于错误定位和上下文环境
3033
3033
  * @returns 返回脚本执行后的结果,若导出的是函数则执行后返回其返回值
3034
3034
  */
3035
- declare function execScript(options: {
3035
+ declare function parseCode(options: {
3036
3036
  imports: string[];
3037
3037
  code: string;
3038
3038
  filename: string;
@@ -3214,5 +3214,5 @@ declare function resolvePageDirs(dir: string, root: string, exclude: string[]):
3214
3214
 
3215
3215
  declare function VitePluginUniPages(userOptions?: UserOptions): Plugin;
3216
3216
 
3217
- export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, definePage, defineUniPages, execScript, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
3217
+ export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, definePage, defineUniPages, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCode, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
3218
3218
  export type { Condition, ConditionItem, ConfigSource, CustomBlock, DefinePage, EasyCom, GlobalStyle, MaybeCallable, MaybePromise, MaybePromiseCallable, Options, PageMetaDatum, PagePath, PagesConfig, ResolvedOptions, RouteBlockLang, SubPackage, SubPackages, SubPageMetaDatum, TabBar, TabBarIconFont, TabBarItem, TabBarMidButton, TheWindow, UniIdRouter, UserOptions, UserPageMeta, UserPagesConfig, UserTabBarItem, debugType };
package/dist/index.d.mts CHANGED
@@ -3024,7 +3024,7 @@ declare function isTargetFile(path: string): boolean;
3024
3024
  */
3025
3025
  declare function mergePageMetaDataArray(pageMetaData: PageMetaDatum[]): PageMetaDatum[];
3026
3026
  /**
3027
- * 执行一段 TypeScript / JavaScript 脚本代码,并返回执行结果
3027
+ * 将 TypeScript / JavaScript 脚本代码,转换为对象/函数
3028
3028
  *
3029
3029
  * @param options - 执行脚本所需的配置项
3030
3030
  * @param options.imports - 需要引入的模块导入语句列表
@@ -3032,7 +3032,7 @@ declare function mergePageMetaDataArray(pageMetaData: PageMetaDatum[]): PageMeta
3032
3032
  * @param options.filename - 脚本文件名,用于错误定位和上下文环境
3033
3033
  * @returns 返回脚本执行后的结果,若导出的是函数则执行后返回其返回值
3034
3034
  */
3035
- declare function execScript(options: {
3035
+ declare function parseCode(options: {
3036
3036
  imports: string[];
3037
3037
  code: string;
3038
3038
  filename: string;
@@ -3214,5 +3214,5 @@ declare function resolvePageDirs(dir: string, root: string, exclude: string[]):
3214
3214
 
3215
3215
  declare function VitePluginUniPages(userOptions?: UserOptions): Plugin;
3216
3216
 
3217
- export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, definePage, defineUniPages, execScript, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
3217
+ export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, definePage, defineUniPages, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCode, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
3218
3218
  export type { Condition, ConditionItem, ConfigSource, CustomBlock, DefinePage, EasyCom, GlobalStyle, MaybeCallable, MaybePromise, MaybePromiseCallable, Options, PageMetaDatum, PagePath, PagesConfig, ResolvedOptions, RouteBlockLang, SubPackage, SubPackages, SubPageMetaDatum, TabBar, TabBarIconFont, TabBarItem, TabBarMidButton, TheWindow, UniIdRouter, UserOptions, UserPageMeta, UserPagesConfig, UserTabBarItem, debugType };
package/dist/index.d.ts CHANGED
@@ -3024,7 +3024,7 @@ declare function isTargetFile(path: string): boolean;
3024
3024
  */
3025
3025
  declare function mergePageMetaDataArray(pageMetaData: PageMetaDatum[]): PageMetaDatum[];
3026
3026
  /**
3027
- * 执行一段 TypeScript / JavaScript 脚本代码,并返回执行结果
3027
+ * 将 TypeScript / JavaScript 脚本代码,转换为对象/函数
3028
3028
  *
3029
3029
  * @param options - 执行脚本所需的配置项
3030
3030
  * @param options.imports - 需要引入的模块导入语句列表
@@ -3032,7 +3032,7 @@ declare function mergePageMetaDataArray(pageMetaData: PageMetaDatum[]): PageMeta
3032
3032
  * @param options.filename - 脚本文件名,用于错误定位和上下文环境
3033
3033
  * @returns 返回脚本执行后的结果,若导出的是函数则执行后返回其返回值
3034
3034
  */
3035
- declare function execScript(options: {
3035
+ declare function parseCode(options: {
3036
3036
  imports: string[];
3037
3037
  code: string;
3038
3038
  filename: string;
@@ -3214,5 +3214,5 @@ declare function resolvePageDirs(dir: string, root: string, exclude: string[]):
3214
3214
 
3215
3215
  declare function VitePluginUniPages(userOptions?: UserOptions): Plugin;
3216
3216
 
3217
- export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, definePage, defineUniPages, execScript, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
3217
+ export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, definePage, defineUniPages, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCode, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
3218
3218
  export type { Condition, ConditionItem, ConfigSource, CustomBlock, DefinePage, EasyCom, GlobalStyle, MaybeCallable, MaybePromise, MaybePromiseCallable, Options, PageMetaDatum, PagePath, PagesConfig, ResolvedOptions, RouteBlockLang, SubPackage, SubPackages, SubPageMetaDatum, TabBar, TabBarIconFont, TabBarItem, TabBarMidButton, TheWindow, UniIdRouter, UserOptions, UserPageMeta, UserPagesConfig, UserTabBarItem, debugType };
package/dist/index.mjs CHANGED
@@ -129,7 +129,7 @@ function mergePageMetaDataArray(pageMetaData) {
129
129
  }
130
130
  return result;
131
131
  }
132
- async function execScript(options) {
132
+ async function parseCode(options) {
133
133
  const { imports = [], code, filename } = options;
134
134
  let jsCode = "";
135
135
  try {
@@ -180,7 +180,24 @@ async function execScript(options) {
180
180
  __filename: filename,
181
181
  __dirname: dir,
182
182
  require: createRequire(dir),
183
- import: (id) => import(id)
183
+ import: (id) => import(id),
184
+ // 定时器相关
185
+ setTimeout,
186
+ clearTimeout,
187
+ setInterval,
188
+ clearInterval,
189
+ setImmediate,
190
+ clearImmediate,
191
+ // 控制台相关
192
+ console,
193
+ // URL 处理
194
+ URL,
195
+ URLSearchParams,
196
+ // 进程和性能相关
197
+ performance,
198
+ // 全局对象引用
199
+ global: globalThis,
200
+ globalThis
184
201
  };
185
202
  const script = new vm.Script(jsCode, { filename });
186
203
  await script.runInNewContext(vmContext, {
@@ -188,10 +205,7 @@ async function execScript(options) {
188
205
  // 设置超时避免长时间运行
189
206
  });
190
207
  const result = vmContext.exports.default || vmContext.exports;
191
- if (typeof result === "function") {
192
- return Promise.resolve(result());
193
- }
194
- return Promise.resolve(result);
208
+ return result;
195
209
  } catch (error) {
196
210
  throw new Error(`EXEC SCRIPT FAIL IN ${filename}: ${error.message}
197
211
 
@@ -438,7 +452,7 @@ class Page {
438
452
  if (forceUpdate || !this.meta) {
439
453
  await this.read();
440
454
  }
441
- const { path, tabBar: _, ...others } = this.meta;
455
+ const { path, tabBar: _, ...others } = this.meta || {};
442
456
  return {
443
457
  path: path ?? this.uri,
444
458
  ...others
@@ -515,14 +529,15 @@ async function tryPageMetaFromMacro(sfc) {
515
529
  const imports = findImports(ast.body).filter((imp) => !!imp.specifiers.length).map((imp) => babelGenerate(imp).code);
516
530
  const [macroOption] = macro.arguments;
517
531
  const code = babelGenerate(macroOption).code;
518
- const result = await execScript({
532
+ const parsed = await parseCode({
519
533
  imports,
520
534
  code,
521
535
  filename: sfc.filename
522
536
  });
537
+ const res = typeof parsed === "function" ? await Promise.resolve(parsed()) : await Promise.resolve(parsed);
523
538
  return {
524
539
  type: "page",
525
- ...result
540
+ ...res
526
541
  };
527
542
  }
528
543
  return void 0;
@@ -1173,4 +1188,4 @@ function VitePluginUniPages(userOptions = {}) {
1173
1188
  };
1174
1189
  }
1175
1190
 
1176
- export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, defineUniPages, execScript, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
1191
+ export { FILE_EXTENSIONS, MODULE_ID_VIRTUAL, OUTPUT_NAME, Page, PageContext, RESOLVED_MODULE_ID_VIRTUAL, VitePluginUniPages, babelGenerate, checkPagesJsonFileSync, debug, VitePluginUniPages as default, defineUniPages, extsToGlob, findImports, findMacro, getPageFiles, getRouteBlock, getRouteSfcBlock, invalidatePagesModule, isTargetFile, mergePageMetaDataArray, parseCode, parseCustomBlock, parseSFC, resolveOptions, resolvePageDirs, sleep, tryPageMetaFromCustomBlock, tryPageMetaFromMacro, writeFileWithLock };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uni-helper/vite-plugin-uni-pages",
3
3
  "type": "module",
4
- "version": "0.3.17",
4
+ "version": "0.3.18",
5
5
  "description": "File system based routing for uni-app applications using Vite",
6
6
  "author": "KeJun",
7
7
  "maintainers": [