@tachybase/loader 1.3.6 → 1.3.7

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/lib/index.d.ts CHANGED
@@ -0,0 +1,3 @@
1
+ type LoaderFunction = (request: string, parent: NodeModule | null, isMain: boolean) => unknown;
2
+ export declare const defineLoader: (whitelists: Set<string>, originalLoad: LoaderFunction, lookingPaths: string[]) => LoaderFunction;
3
+ export {};
package/lib/index.js CHANGED
@@ -0,0 +1,51 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var src_exports = {};
20
+ __export(src_exports, {
21
+ defineLoader: () => defineLoader
22
+ });
23
+ module.exports = __toCommonJS(src_exports);
24
+ var import_node_module = require("node:module");
25
+ var import_node_path = require("node:path");
26
+ const defineLoader = /* @__PURE__ */ __name((whitelists, originalLoad, lookingPaths) => function(request, parent, isMain) {
27
+ if (whitelists.has(request) || request.startsWith("@tachybase/")) {
28
+ try {
29
+ const resolvedFromApp = require.resolve(request, { paths: lookingPaths });
30
+ return originalLoad(resolvedFromApp, parent, isMain);
31
+ } catch (err) {
32
+ for (const basePath of lookingPaths) {
33
+ try {
34
+ const pluginRoot = (0, import_node_path.resolve)(basePath, request);
35
+ const fakeRequire = (0, import_node_module.createRequire)(pluginRoot + "/index.js");
36
+ const resolved = fakeRequire.resolve(pluginRoot);
37
+ return originalLoad(resolved, parent, isMain);
38
+ } catch {
39
+ }
40
+ }
41
+ if (err.code === "MODULE_NOT_FOUND") {
42
+ return originalLoad(request, parent, isMain);
43
+ }
44
+ }
45
+ }
46
+ return originalLoad(request, parent, isMain);
47
+ }, "defineLoader");
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ defineLoader
51
+ });
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@tachybase/loader",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
- "main": "./define-loader.mjs"
6
+ "main": "./lib/index.js",
7
+ "types": "./lib/index.d.ts"
7
8
  }
package/src/index.ts CHANGED
@@ -0,0 +1,37 @@
1
+ import { createRequire } from 'node:module';
2
+ import { resolve } from 'node:path';
3
+
4
+ type LoaderFunction = (request: string, parent: NodeModule | null, isMain: boolean) => unknown;
5
+
6
+ export const defineLoader = (
7
+ whitelists: Set<string>,
8
+ originalLoad: LoaderFunction,
9
+ lookingPaths: string[],
10
+ ): LoaderFunction =>
11
+ function (request, parent, isMain) {
12
+ // 使用白名单拦截,以及所有符合 '@tachybase/' 前缀的包
13
+ // TODO 未来支持动态的前缀判定或者更严格的判定
14
+ if (whitelists.has(request) || request.startsWith('@tachybase/')) {
15
+ try {
16
+ const resolvedFromApp = require.resolve(request, { paths: lookingPaths });
17
+ return originalLoad(resolvedFromApp, parent, isMain);
18
+ } catch (err) {
19
+ for (const basePath of lookingPaths) {
20
+ // 支持非 node_modules 的加载
21
+ try {
22
+ const pluginRoot = resolve(basePath, request);
23
+ const fakeRequire = createRequire(pluginRoot + '/index.js');
24
+ const resolved = fakeRequire.resolve(pluginRoot);
25
+ return originalLoad(resolved, parent, isMain);
26
+ } catch {}
27
+ }
28
+ // 这里不应该发生,但是我们依旧提供回退的机制,使用默认行为来加载模块
29
+ if (err.code === 'MODULE_NOT_FOUND') {
30
+ return originalLoad(request, parent, isMain);
31
+ }
32
+ }
33
+ }
34
+
35
+ // 相对路径、绝对路径不动
36
+ return originalLoad(request, parent, isMain);
37
+ };
@@ -1,19 +0,0 @@
1
- /// <reference types="node" />
2
-
3
- import { Module } from 'node:module';
4
-
5
- /**
6
- * 自定义模块加载器工厂函数
7
- *
8
- * @param whitelists - 包含被允许特殊处理的模块名的集合
9
- * @param originalLoad - 原始的模块加载函数(通常为 Module._load)
10
- * @param lookingPaths - 用于尝试解析模块的路径数组
11
- * @returns 一个新的模块加载函数
12
- */
13
- declare const defineLoader: (
14
- whitelists: Set<string>,
15
- originalLoad: typeof Module._load,
16
- lookingPaths: string[],
17
- ) => (request: string, parent: NodeModule | null, isMain: boolean) => any;
18
-
19
- export { defineLoader };
package/define-loader.mjs DELETED
@@ -1,30 +0,0 @@
1
- import { createRequire } from 'node:module';
2
- import { resolve } from 'node:path';
3
-
4
- export const defineLoader = (whitelists, originalLoad, lookingPaths) =>
5
- function (request, parent, isMain) {
6
- // 使用白名单拦截,以及所有符合 '@tachybase/' 前缀的包
7
- if (whitelists.has(request) || request.startsWith('@tachybase/')) {
8
- try {
9
- const resolvedFromApp = require.resolve(request, { paths: lookingPaths });
10
- return originalLoad(resolvedFromApp, parent, isMain);
11
- } catch (err) {
12
- for (const basePath of lookingPaths) {
13
- // 支持非 node_modules 的加载
14
- try {
15
- const pluginRoot = resolve(basePath, request);
16
- const fakeRequire = createRequire(pluginRoot + '/index.js');
17
- const resolved = fakeRequire.resolve(pluginRoot);
18
- return originalLoad(resolved, parent, isMain);
19
- } catch {}
20
- }
21
- // 这里不应该发生,但是我们依旧提供回退的机制,使用默认行为来加载模块
22
- if (err.code === 'MODULE_NOT_FOUND') {
23
- return originalLoad(request, parent, isMain);
24
- }
25
- }
26
- }
27
-
28
- // 相对路径、绝对路径不动
29
- return originalLoad(request, parent, isMain);
30
- };