@aomex/internal-file-import 3.25.0 → 3.27.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.27.0](https://github.com/aomex/aomex/compare/v3.26.0...v3.27.0) (2025-05-03)
7
+
8
+ **Note:** Version bump only for package @aomex/internal-file-import
9
+
10
+
11
+
12
+
13
+
14
+ # [3.26.0](https://github.com/aomex/aomex/compare/v3.25.0...v3.26.0) (2025-05-03)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **file-import:** 文件路径转换成url协议 ([c989625](https://github.com/aomex/aomex/commit/c989625e0d2e02fe1a6e144bd3706a55ce24a2b9))
20
+
21
+
22
+
23
+
24
+
6
25
  # [3.25.0](https://github.com/aomex/aomex/compare/v3.24.0...v3.25.0) (2025-04-22)
7
26
 
8
27
  **Note:** Version bump only for package @aomex/internal-file-import
package/dist/index.js CHANGED
@@ -55,11 +55,12 @@ var pathToFiles = async (paths) => {
55
55
  };
56
56
 
57
57
  // src/get-file-values.ts
58
+ import { pathToFileURL } from "node:url";
58
59
  var getFileValues = async (files, filterValues) => {
59
60
  const totalFiles = /* @__PURE__ */ new Set();
60
61
  await Promise.all(
61
62
  files.map(async (file) => {
62
- const modules = await import(file);
63
+ const modules = await import(pathToFileURL(file).toString());
63
64
  if (typeof modules === "object") {
64
65
  Object.values(modules).forEach((item) => {
65
66
  totalFiles.add(item);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/path-to-file.ts","../src/normalize-glob-path.ts","../src/get-file-values.ts"],"sourcesContent":["import path from 'node:path';\nimport { stat } from 'node:fs/promises';\nimport { glob, type GlobOptionsWithFileTypesFalse, hasMagic } from 'glob';\nimport { normalizeGlobPath, type GlobPathOptions } from './normalize-glob-path';\n\nexport const pathToFiles = async (paths: GlobPathOptions): Promise<string[]> => {\n const opts = normalizeGlobPath(paths);\n\n const files = await Promise.all(\n opts.map((opt) => {\n const { dot, pattern: patterns } = opt;\n const ignore = (opt.ignore || []).slice();\n ignore.push('**/node_modules/**/**', '**/*.d.{ts,mts}');\n\n const options: GlobOptionsWithFileTypesFalse = {\n nodir: true,\n dot,\n ignore,\n absolute: true,\n withFileTypes: false,\n maxDepth: Infinity,\n };\n\n return Promise.all(\n patterns.map(async (pattern) => {\n if (!path.isAbsolute(pattern)) {\n pattern = path.resolve(pattern);\n }\n\n /**\n * 在windows系统默认使用反斜杠`\\`拼接路径,但是glob只支持正斜杠`/`.\n * @link https://github.com/isaacs/node-glob#windows\n */\n pattern = pattern.replace(/\\\\/g, path.posix.sep);\n\n /**\n * glob.hasMagic 不支持带反斜杠(\\)的路径。从glob@9.0.0起,花括号不再是魔术路径\n * @see https://github.com/isaacs/node-glob/issues/496\n */\n if (!hasMagic(pattern, { magicalBraces: true })) {\n const stats = await stat(pattern);\n if (!stats.isFile()) {\n pattern = path.posix.join(pattern, '**', '*.{ts,js,mts,mjs}');\n }\n }\n\n return glob(pattern, options);\n }),\n );\n }),\n );\n\n return [...new Set(files.flat(2))].sort();\n};\n","export interface GlobPathFullOptions {\n pattern: string[];\n ignore?: string[];\n dot?: boolean;\n}\n\nexport type GlobPathOptions =\n | string\n | string[]\n | GlobPathFullOptions\n | GlobPathFullOptions[];\n\nexport const normalizeGlobPath = (paths: GlobPathOptions): GlobPathFullOptions[] => {\n if (typeof paths === 'string') {\n return [{ pattern: [paths] }];\n }\n\n if (Array.isArray(paths)) {\n if (!paths.length) return [];\n return isStringArray(paths) ? [{ pattern: paths }] : paths;\n }\n\n return [paths];\n};\n\nconst isStringArray = (data: string[] | GlobPathFullOptions[]): data is string[] => {\n return typeof data[0] === 'string';\n};\n","export const getFileValues = async <T extends unknown>(\n files: string[],\n filterValues?: (item?: unknown) => boolean,\n): Promise<T[]> => {\n const totalFiles = new Set<T>();\n await Promise.all(\n files.map(async (file) => {\n const modules = await import(file);\n if (typeof modules === 'object') {\n Object.values(modules).forEach((item) => {\n totalFiles.add(item as any);\n });\n }\n }),\n );\n return filterValues ? [...totalFiles].filter(filterValues) : [...totalFiles];\n};\n"],"mappings":";AAAA,OAAO,UAAU;AACjB,SAAS,YAAY;AACrB,SAAS,MAA0C,gBAAgB;;;ACU5D,IAAM,oBAAoB,CAAC,UAAkD;AAClF,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AAAA,EAC9B;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,QAAI,CAAC,MAAM,OAAQ,QAAO,CAAC;AAC3B,WAAO,cAAc,KAAK,IAAI,CAAC,EAAE,SAAS,MAAM,CAAC,IAAI;AAAA,EACvD;AAEA,SAAO,CAAC,KAAK;AACf;AAEA,IAAM,gBAAgB,CAAC,SAA6D;AAClF,SAAO,OAAO,KAAK,CAAC,MAAM;AAC5B;;;ADtBO,IAAM,cAAc,OAAO,UAA8C;AAC9E,QAAM,OAAO,kBAAkB,KAAK;AAEpC,QAAM,QAAQ,MAAM,QAAQ;AAAA,IAC1B,KAAK,IAAI,CAAC,QAAQ;AAChB,YAAM,EAAE,KAAK,SAAS,SAAS,IAAI;AACnC,YAAM,UAAU,IAAI,UAAU,CAAC,GAAG,MAAM;AACxC,aAAO,KAAK,yBAAyB,iBAAiB;AAEtD,YAAM,UAAyC;AAAA,QAC7C,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,eAAe;AAAA,QACf,UAAU;AAAA,MACZ;AAEA,aAAO,QAAQ;AAAA,QACb,SAAS,IAAI,OAAO,YAAY;AAC9B,cAAI,CAAC,KAAK,WAAW,OAAO,GAAG;AAC7B,sBAAU,KAAK,QAAQ,OAAO;AAAA,UAChC;AAMA,oBAAU,QAAQ,QAAQ,OAAO,KAAK,MAAM,GAAG;AAM/C,cAAI,CAAC,SAAS,SAAS,EAAE,eAAe,KAAK,CAAC,GAAG;AAC/C,kBAAM,QAAQ,MAAM,KAAK,OAAO;AAChC,gBAAI,CAAC,MAAM,OAAO,GAAG;AACnB,wBAAU,KAAK,MAAM,KAAK,SAAS,MAAM,mBAAmB;AAAA,YAC9D;AAAA,UACF;AAEA,iBAAO,KAAK,SAAS,OAAO;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,CAAC,GAAG,IAAI,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK;AAC1C;;;AErDO,IAAM,gBAAgB,OAC3B,OACA,iBACiB;AACjB,QAAM,aAAa,oBAAI,IAAO;AAC9B,QAAM,QAAQ;AAAA,IACZ,MAAM,IAAI,OAAO,SAAS;AACxB,YAAM,UAAU,MAAM,OAAO;AAC7B,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO,OAAO,OAAO,EAAE,QAAQ,CAAC,SAAS;AACvC,qBAAW,IAAI,IAAW;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO,eAAe,CAAC,GAAG,UAAU,EAAE,OAAO,YAAY,IAAI,CAAC,GAAG,UAAU;AAC7E;","names":[]}
1
+ {"version":3,"sources":["../src/path-to-file.ts","../src/normalize-glob-path.ts","../src/get-file-values.ts"],"sourcesContent":["import path from 'node:path';\nimport { stat } from 'node:fs/promises';\nimport { glob, type GlobOptionsWithFileTypesFalse, hasMagic } from 'glob';\nimport { normalizeGlobPath, type GlobPathOptions } from './normalize-glob-path';\n\nexport const pathToFiles = async (paths: GlobPathOptions): Promise<string[]> => {\n const opts = normalizeGlobPath(paths);\n\n const files = await Promise.all(\n opts.map((opt) => {\n const { dot, pattern: patterns } = opt;\n const ignore = (opt.ignore || []).slice();\n ignore.push('**/node_modules/**/**', '**/*.d.{ts,mts}');\n\n const options: GlobOptionsWithFileTypesFalse = {\n nodir: true,\n dot,\n ignore,\n absolute: true,\n withFileTypes: false,\n maxDepth: Infinity,\n };\n\n return Promise.all(\n patterns.map(async (pattern) => {\n if (!path.isAbsolute(pattern)) {\n pattern = path.resolve(pattern);\n }\n\n /**\n * 在windows系统默认使用反斜杠`\\`拼接路径,但是glob只支持正斜杠`/`.\n * @link https://github.com/isaacs/node-glob#windows\n */\n pattern = pattern.replace(/\\\\/g, path.posix.sep);\n\n /**\n * glob.hasMagic 不支持带反斜杠(\\)的路径。从glob@9.0.0起,花括号不再是魔术路径\n * @see https://github.com/isaacs/node-glob/issues/496\n */\n if (!hasMagic(pattern, { magicalBraces: true })) {\n const stats = await stat(pattern);\n if (!stats.isFile()) {\n pattern = path.posix.join(pattern, '**', '*.{ts,js,mts,mjs}');\n }\n }\n\n return glob(pattern, options);\n }),\n );\n }),\n );\n\n return [...new Set(files.flat(2))].sort();\n};\n","export interface GlobPathFullOptions {\n pattern: string[];\n ignore?: string[];\n dot?: boolean;\n}\n\nexport type GlobPathOptions =\n | string\n | string[]\n | GlobPathFullOptions\n | GlobPathFullOptions[];\n\nexport const normalizeGlobPath = (paths: GlobPathOptions): GlobPathFullOptions[] => {\n if (typeof paths === 'string') {\n return [{ pattern: [paths] }];\n }\n\n if (Array.isArray(paths)) {\n if (!paths.length) return [];\n return isStringArray(paths) ? [{ pattern: paths }] : paths;\n }\n\n return [paths];\n};\n\nconst isStringArray = (data: string[] | GlobPathFullOptions[]): data is string[] => {\n return typeof data[0] === 'string';\n};\n","import { pathToFileURL } from 'node:url';\n\nexport const getFileValues = async <T extends unknown>(\n files: string[],\n filterValues?: (item?: unknown) => boolean,\n): Promise<T[]> => {\n const totalFiles = new Set<T>();\n await Promise.all(\n files.map(async (file) => {\n // Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:'\n const modules = await import(pathToFileURL(file).toString());\n if (typeof modules === 'object') {\n Object.values(modules).forEach((item) => {\n totalFiles.add(item as any);\n });\n }\n }),\n );\n return filterValues ? [...totalFiles].filter(filterValues) : [...totalFiles];\n};\n"],"mappings":";AAAA,OAAO,UAAU;AACjB,SAAS,YAAY;AACrB,SAAS,MAA0C,gBAAgB;;;ACU5D,IAAM,oBAAoB,CAAC,UAAkD;AAClF,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AAAA,EAC9B;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,QAAI,CAAC,MAAM,OAAQ,QAAO,CAAC;AAC3B,WAAO,cAAc,KAAK,IAAI,CAAC,EAAE,SAAS,MAAM,CAAC,IAAI;AAAA,EACvD;AAEA,SAAO,CAAC,KAAK;AACf;AAEA,IAAM,gBAAgB,CAAC,SAA6D;AAClF,SAAO,OAAO,KAAK,CAAC,MAAM;AAC5B;;;ADtBO,IAAM,cAAc,OAAO,UAA8C;AAC9E,QAAM,OAAO,kBAAkB,KAAK;AAEpC,QAAM,QAAQ,MAAM,QAAQ;AAAA,IAC1B,KAAK,IAAI,CAAC,QAAQ;AAChB,YAAM,EAAE,KAAK,SAAS,SAAS,IAAI;AACnC,YAAM,UAAU,IAAI,UAAU,CAAC,GAAG,MAAM;AACxC,aAAO,KAAK,yBAAyB,iBAAiB;AAEtD,YAAM,UAAyC;AAAA,QAC7C,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,eAAe;AAAA,QACf,UAAU;AAAA,MACZ;AAEA,aAAO,QAAQ;AAAA,QACb,SAAS,IAAI,OAAO,YAAY;AAC9B,cAAI,CAAC,KAAK,WAAW,OAAO,GAAG;AAC7B,sBAAU,KAAK,QAAQ,OAAO;AAAA,UAChC;AAMA,oBAAU,QAAQ,QAAQ,OAAO,KAAK,MAAM,GAAG;AAM/C,cAAI,CAAC,SAAS,SAAS,EAAE,eAAe,KAAK,CAAC,GAAG;AAC/C,kBAAM,QAAQ,MAAM,KAAK,OAAO;AAChC,gBAAI,CAAC,MAAM,OAAO,GAAG;AACnB,wBAAU,KAAK,MAAM,KAAK,SAAS,MAAM,mBAAmB;AAAA,YAC9D;AAAA,UACF;AAEA,iBAAO,KAAK,SAAS,OAAO;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,CAAC,GAAG,IAAI,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK;AAC1C;;;AErDA,SAAS,qBAAqB;AAEvB,IAAM,gBAAgB,OAC3B,OACA,iBACiB;AACjB,QAAM,aAAa,oBAAI,IAAO;AAC9B,QAAM,QAAQ;AAAA,IACZ,MAAM,IAAI,OAAO,SAAS;AAExB,YAAM,UAAU,MAAM,OAAO,cAAc,IAAI,EAAE,SAAS;AAC1D,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO,OAAO,OAAO,EAAE,QAAQ,CAAC,SAAS;AACvC,qBAAW,IAAI,IAAW;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO,eAAe,CAAC,GAAG,UAAU,EAAE,OAAO,YAAY,IAAI,CAAC,GAAG,UAAU;AAC7E;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aomex/internal-file-import",
3
- "version": "3.25.0",
3
+ "version": "3.27.0",
4
4
  "description": "aomex根据文件路径导入模块",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",