@eggjs/utils 3.0.1 → 4.0.1

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.
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getFrameworkOrEggPath = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_fs_1 = require("node:fs");
9
+ const utils_js_1 = require("./utils.js");
10
+ /**
11
+ * Try to get framework dir path
12
+ * If can't find any framework, try to find egg dir path
13
+ *
14
+ * @param {String} cwd - current work path
15
+ * @param {Array} [eggNames] - egg names, default is ['egg']
16
+ * @return {String} framework or egg dir path
17
+ * @deprecated
18
+ */
19
+ function getFrameworkOrEggPath(cwd, eggNames) {
20
+ eggNames = eggNames || ['egg'];
21
+ const moduleDir = node_path_1.default.join(cwd, 'node_modules');
22
+ if (!(0, node_fs_1.existsSync)(moduleDir)) {
23
+ return '';
24
+ }
25
+ // try to get framework
26
+ // 1. try to read egg.framework property on package.json
27
+ const pkgFile = node_path_1.default.join(cwd, 'package.json');
28
+ if ((0, node_fs_1.existsSync)(pkgFile)) {
29
+ const pkg = (0, utils_js_1.readJSONSync)(pkgFile);
30
+ if (pkg.egg && pkg.egg.framework) {
31
+ return node_path_1.default.join(moduleDir, pkg.egg.framework);
32
+ }
33
+ }
34
+ // 2. try the module dependencies includes eggNames
35
+ const names = (0, node_fs_1.readdirSync)(moduleDir);
36
+ for (const name of names) {
37
+ const pkgfile = node_path_1.default.join(moduleDir, name, 'package.json');
38
+ if (!(0, node_fs_1.existsSync)(pkgfile)) {
39
+ continue;
40
+ }
41
+ const pkg = (0, utils_js_1.readJSONSync)(pkgfile);
42
+ if (pkg.dependencies) {
43
+ for (const eggName of eggNames) {
44
+ if (pkg.dependencies[eggName]) {
45
+ return node_path_1.default.join(moduleDir, name);
46
+ }
47
+ }
48
+ }
49
+ }
50
+ // try to get egg
51
+ for (const eggName of eggNames) {
52
+ const pkgfile = node_path_1.default.join(moduleDir, eggName, 'package.json');
53
+ if ((0, node_fs_1.existsSync)(pkgfile)) {
54
+ return node_path_1.default.join(moduleDir, eggName);
55
+ }
56
+ }
57
+ return '';
58
+ }
59
+ exports.getFrameworkOrEggPath = getFrameworkOrEggPath;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXByZWNhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUE2QjtBQUM3QixxQ0FBa0Q7QUFDbEQseUNBQTBDO0FBRTFDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsR0FBVyxFQUFFLFFBQW1CO0lBQ3BFLFFBQVEsR0FBRyxRQUFRLElBQUksQ0FBRSxLQUFLLENBQUUsQ0FBQztJQUNqQyxNQUFNLFNBQVMsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLElBQUEsb0JBQVUsRUFBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELHVCQUF1QjtJQUV2Qix3REFBd0Q7SUFDeEQsTUFBTSxPQUFPLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLElBQUksSUFBQSxvQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBVyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsSUFBQSxvQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekIsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFBLHVCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQzlCLE9BQU8sbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxPQUFPLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM5RCxJQUFJLElBQUEsb0JBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBNUNELHNEQTRDQyJ9
@@ -7,7 +7,7 @@ exports.getFrameworkPath = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const node_assert_1 = __importDefault(require("node:assert"));
9
9
  const node_fs_1 = require("node:fs");
10
- const utils_1 = require("./utils");
10
+ const utils_js_1 = require("./utils.js");
11
11
  const initCwd = process.cwd();
12
12
  /**
13
13
  * Find the framework directory, lookup order
@@ -36,7 +36,7 @@ function getFrameworkPath(options) {
36
36
  // framework: 'frameworkName'
37
37
  return assertAndReturn(framework, moduleDir);
38
38
  }
39
- const pkg = (0, utils_1.readJSONSync)(pkgPath);
39
+ const pkg = (0, utils_js_1.readJSONSync)(pkgPath);
40
40
  // 2. framework is not specified
41
41
  // 2.1 use framework name from pkg.egg.framework
42
42
  if (pkg.egg?.framework) {
@@ -78,3 +78,4 @@ function assertAndReturn(frameworkName, moduleDir) {
78
78
  }
79
79
  throw new Error(`${frameworkName} is not found in ${Array.from(moduleDirs)}`);
80
80
  }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBNkI7QUFDN0IsOERBQWlDO0FBQ2pDLHFDQUFxQztBQUNyQyx5Q0FBMEM7QUFFMUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBTzlCOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BQWdCO0lBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLG1CQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNuRCxJQUFBLHFCQUFNLEVBQUMsSUFBQSxvQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsT0FBTyxlQUFlLENBQUMsQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFckQsaUNBQWlDO0lBQ2pDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxvQ0FBb0M7UUFDcEMsaUVBQWlFO1FBQ2pFLElBQUksbUJBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFBLHFCQUFNLEVBQUMsSUFBQSxvQkFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxlQUFlLENBQUMsQ0FBQztZQUMzRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsOERBQThEO1FBQzlELDZCQUE2QjtRQUM3QixPQUFPLGVBQWUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxnQ0FBZ0M7SUFDaEMsZ0RBQWdEO0lBQ2hELElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN2QixPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBNUJELDRDQTRCQztBQUVELFNBQVMsZUFBZSxDQUFDLGFBQXFCLEVBQUUsU0FBaUI7SUFDL0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDekIsU0FBUztRQUNULHdEQUF3RDtRQUN4RCwyQ0FBMkM7UUFDM0Msa0RBQWtEO1FBQ2xELG1CQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLENBQUM7UUFDeEMsbUNBQW1DO1FBQ25DLG1CQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUM7S0FDbkMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDO1FBQ0gsc0RBQXNEO1FBQ3RELElBQUksZUFBZSxDQUFDO1FBQ3BCLG9EQUFvRDtRQUNwRCxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pFLGVBQWUsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGFBQWEsZUFBZSxDQUFDLEVBQ2hELFVBQVUsQ0FDWCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixlQUFlLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQ3pCLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxhQUFhLGVBQWUsQ0FBQyxFQUNoRCxPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUM7UUFDRCxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsU0FBUztJQUNYLENBQUM7SUFDRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLG1CQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUEsb0JBQVUsRUFBQyxhQUFhLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGFBQWEsb0JBQW9CLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUMifQ==
@@ -0,0 +1,8 @@
1
+ export interface ImportResolveOptions {
2
+ paths?: string[];
3
+ }
4
+ export interface ImportModuleOptions extends ImportResolveOptions {
5
+ importDefaultOnly?: boolean;
6
+ }
7
+ export declare function importResolve(filepath: string, options?: ImportResolveOptions): string;
8
+ export declare function importModule(filepath: string, options?: ImportModuleOptions): Promise<any>;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.importModule = exports.importResolve = void 0;
4
+ const node_util_1 = require("node:util");
5
+ const node_module_1 = require("node:module");
6
+ const node_url_1 = require("node:url");
7
+ const debug = (0, node_util_1.debuglog)('@eggjs/utils:loader');
8
+ let _customRequire;
9
+ function importResolve(filepath, options) {
10
+ if (!_customRequire) {
11
+ if (typeof require !== 'undefined') {
12
+ _customRequire = require;
13
+ }
14
+ else {
15
+ _customRequire = (0, node_module_1.createRequire)(process.cwd());
16
+ }
17
+ }
18
+ const moduleFilePath = _customRequire.resolve(filepath, options);
19
+ debug('[importResolve] %o, options: %o => %o', filepath, options, moduleFilePath);
20
+ return moduleFilePath;
21
+ }
22
+ exports.importResolve = importResolve;
23
+ async function importModule(filepath, options) {
24
+ const moduleFilePath = importResolve(filepath, options);
25
+ let obj;
26
+ if (typeof require === 'function') {
27
+ // commonjs
28
+ obj = require(moduleFilePath);
29
+ debug('[importModule] require %o => %o', filepath, obj);
30
+ if (obj?.__esModule === true && 'default' in obj) {
31
+ // 兼容 cjs 模拟 esm 的导出格式
32
+ // {
33
+ // __esModule: true,
34
+ // default: { fn: [Function: fn], foo: 'bar', one: 1 }
35
+ // }
36
+ obj = obj.default;
37
+ }
38
+ }
39
+ else {
40
+ // esm
41
+ debug('[importModule] await import start: %o', filepath);
42
+ const fileUrl = (0, node_url_1.pathToFileURL)(moduleFilePath).toString();
43
+ obj = await import(fileUrl);
44
+ debug('[importModule] await import end: %o => %o', filepath, obj);
45
+ // {
46
+ // default: { foo: 'bar', one: 1 },
47
+ // foo: 'bar',
48
+ // one: 1,
49
+ // [Symbol(Symbol.toStringTag)]: 'Module'
50
+ // }
51
+ if (obj?.__esModule === true && obj?.default?.__esModule === true) {
52
+ // 兼容 cjs 模拟 esm 的导出格式
53
+ // {
54
+ // __esModule: true,
55
+ // default: {
56
+ // __esModule: true,
57
+ // default: {
58
+ // fn: [Function: fn] { [length]: 0, [name]: 'fn' },
59
+ // foo: 'bar',
60
+ // one: 1
61
+ // }
62
+ // },
63
+ // [Symbol(Symbol.toStringTag)]: 'Module'
64
+ // }
65
+ obj = obj.default;
66
+ }
67
+ if (options?.importDefaultOnly) {
68
+ if ('default' in obj) {
69
+ obj = obj.default;
70
+ }
71
+ }
72
+ }
73
+ debug('[importModule] return %o => %o', filepath, obj);
74
+ return obj;
75
+ }
76
+ exports.importModule = importModule;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBcUM7QUFDckMsNkNBQTRDO0FBQzVDLHVDQUF5QztBQUV6QyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU5QyxJQUFJLGNBQTJCLENBQUM7QUFXaEMsU0FBZ0IsYUFBYSxDQUFDLFFBQWdCLEVBQUUsT0FBOEI7SUFDNUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkMsY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsR0FBRyxJQUFBLDJCQUFhLEVBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRSxLQUFLLENBQUMsdUNBQXVDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRixPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBWEQsc0NBV0M7QUFFTSxLQUFLLFVBQVUsWUFBWSxDQUFDLFFBQWdCLEVBQUUsT0FBNkI7SUFDaEYsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxJQUFJLEdBQVEsQ0FBQztJQUNiLElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDbEMsV0FBVztRQUNYLEdBQUcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RCxJQUFJLEdBQUcsRUFBRSxVQUFVLEtBQUssSUFBSSxJQUFJLFNBQVMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNqRCxzQkFBc0I7WUFDdEIsSUFBSTtZQUNKLHNCQUFzQjtZQUN0Qix3REFBd0Q7WUFDeEQsSUFBSTtZQUNKLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU07UUFDTixLQUFLLENBQUMsdUNBQXVDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQUcsSUFBQSx3QkFBYSxFQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pELEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixLQUFLLENBQUMsMkNBQTJDLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUk7UUFDSixxQ0FBcUM7UUFDckMsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWiwyQ0FBMkM7UUFDM0MsSUFBSTtRQUNKLElBQUksR0FBRyxFQUFFLFVBQVUsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEUsc0JBQXNCO1lBQ3RCLElBQUk7WUFDSixzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLHdCQUF3QjtZQUN4QixpQkFBaUI7WUFDakIsMERBQTBEO1lBQzFELG9CQUFvQjtZQUNwQixlQUFlO1lBQ2YsUUFBUTtZQUNSLE9BQU87WUFDUCwyQ0FBMkM7WUFDM0MsSUFBSTtZQUNKLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQW5ERCxvQ0FtREMifQ==
@@ -0,0 +1,15 @@
1
+ import { getFrameworkPath } from './framework.js';
2
+ import { getPlugins, getConfig, getLoadUnits } from './plugin.js';
3
+ import { getFrameworkOrEggPath } from './deprecated.js';
4
+ export { getFrameworkPath } from './framework.js';
5
+ export { getPlugins, getConfig, getLoadUnits } from './plugin.js';
6
+ export { getFrameworkOrEggPath } from './deprecated.js';
7
+ export * from './import.js';
8
+ declare const _default: {
9
+ getFrameworkPath: typeof getFrameworkPath;
10
+ getPlugins: typeof getPlugins;
11
+ getConfig: typeof getConfig;
12
+ getLoadUnits: typeof getLoadUnits;
13
+ getFrameworkOrEggPath: typeof getFrameworkOrEggPath;
14
+ };
15
+ export default _default;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getFrameworkOrEggPath = exports.getLoadUnits = exports.getConfig = exports.getPlugins = exports.getFrameworkPath = void 0;
18
+ const framework_js_1 = require("./framework.js");
19
+ const plugin_js_1 = require("./plugin.js");
20
+ const deprecated_js_1 = require("./deprecated.js");
21
+ // support import { getFrameworkPath } from '@eggjs/utils'
22
+ var framework_js_2 = require("./framework.js");
23
+ Object.defineProperty(exports, "getFrameworkPath", { enumerable: true, get: function () { return framework_js_2.getFrameworkPath; } });
24
+ var plugin_js_2 = require("./plugin.js");
25
+ Object.defineProperty(exports, "getPlugins", { enumerable: true, get: function () { return plugin_js_2.getPlugins; } });
26
+ Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return plugin_js_2.getConfig; } });
27
+ Object.defineProperty(exports, "getLoadUnits", { enumerable: true, get: function () { return plugin_js_2.getLoadUnits; } });
28
+ var deprecated_js_2 = require("./deprecated.js");
29
+ Object.defineProperty(exports, "getFrameworkOrEggPath", { enumerable: true, get: function () { return deprecated_js_2.getFrameworkOrEggPath; } });
30
+ __exportStar(require("./import.js"), exports);
31
+ // support import utils from '@eggjs/utils'
32
+ exports.default = {
33
+ getFrameworkPath: framework_js_1.getFrameworkPath,
34
+ getPlugins: plugin_js_1.getPlugins, getConfig: plugin_js_1.getConfig, getLoadUnits: plugin_js_1.getLoadUnits,
35
+ getFrameworkOrEggPath: deprecated_js_1.getFrameworkOrEggPath,
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBa0Q7QUFDbEQsMkNBQWtFO0FBQ2xFLG1EQUF3RDtBQUV4RCwwREFBMEQ7QUFDMUQsK0NBQWtEO0FBQXpDLGdIQUFBLGdCQUFnQixPQUFBO0FBQ3pCLHlDQUFrRTtBQUF6RCx1R0FBQSxVQUFVLE9BQUE7QUFBRSxzR0FBQSxTQUFTLE9BQUE7QUFBRSx5R0FBQSxZQUFZLE9BQUE7QUFDNUMsaURBQXdEO0FBQS9DLHNIQUFBLHFCQUFxQixPQUFBO0FBQzlCLDhDQUE0QjtBQUU1QiwyQ0FBMkM7QUFDM0Msa0JBQWU7SUFDYixnQkFBZ0IsRUFBaEIsK0JBQWdCO0lBQ2hCLFVBQVUsRUFBVixzQkFBVSxFQUFFLFNBQVMsRUFBVCxxQkFBUyxFQUFFLFlBQVksRUFBWix3QkFBWTtJQUNuQyxxQkFBcUIsRUFBckIscUNBQXFCO0NBQ3RCLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -1,9 +1,9 @@
1
- interface LoaderOptions {
1
+ export interface LoaderOptions {
2
2
  framework: string;
3
3
  baseDir: string;
4
4
  env?: string;
5
5
  }
6
- interface Plugin {
6
+ export interface Plugin {
7
7
  name: string;
8
8
  version?: string;
9
9
  enable: boolean;
@@ -17,7 +17,7 @@ interface Plugin {
17
17
  /**
18
18
  * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/mixin/plugin.js#L203
19
19
  */
20
- export declare function getPlugins(options: LoaderOptions): Record<string, Plugin>;
20
+ export declare function getPlugins(options: LoaderOptions): Promise<Record<string, Plugin>>;
21
21
  interface Unit {
22
22
  type: 'plugin' | 'framework' | 'app';
23
23
  path: string;
@@ -25,6 +25,6 @@ interface Unit {
25
25
  /**
26
26
  * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/egg_loader.js#L348
27
27
  */
28
- export declare function getLoadUnits(options: LoaderOptions): Unit[];
29
- export declare function getConfig(options: LoaderOptions): Record<string, any>;
28
+ export declare function getLoadUnits(options: LoaderOptions): Promise<Unit[]>;
29
+ export declare function getConfig(options: LoaderOptions): Promise<Record<string, any>>;
30
30
  export {};
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getConfig = exports.getLoadUnits = exports.getPlugins = void 0;
7
+ const node_util_1 = require("node:util");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_assert_1 = __importDefault(require("node:assert"));
10
+ const node_os_1 = __importDefault(require("node:os"));
11
+ const promises_1 = require("node:fs/promises");
12
+ const import_js_1 = require("./import.js");
13
+ const debug = (0, node_util_1.debuglog)('@eggjs/utils:plugin');
14
+ const tmpDir = node_os_1.default.tmpdir();
15
+ function noop() { }
16
+ const logger = {
17
+ debug: noop,
18
+ info: noop,
19
+ warn: noop,
20
+ error: noop,
21
+ };
22
+ /**
23
+ * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/mixin/plugin.js#L203
24
+ */
25
+ async function getPlugins(options) {
26
+ const loader = await getLoader(options);
27
+ await loader.loadPlugin();
28
+ return loader.allPlugins;
29
+ }
30
+ exports.getPlugins = getPlugins;
31
+ /**
32
+ * @see https://github.com/eggjs/egg-core/blob/2920f6eade07959d25f5c4f96b154d3fbae877db/lib/loader/egg_loader.js#L348
33
+ */
34
+ async function getLoadUnits(options) {
35
+ const loader = await getLoader(options);
36
+ await loader.loadPlugin();
37
+ return loader.getLoadUnits();
38
+ }
39
+ exports.getLoadUnits = getLoadUnits;
40
+ async function getConfig(options) {
41
+ const loader = await getLoader(options);
42
+ await loader.loadPlugin();
43
+ await loader.loadConfig();
44
+ return loader.config;
45
+ }
46
+ exports.getConfig = getConfig;
47
+ async function exists(filepath) {
48
+ try {
49
+ await (0, promises_1.stat)(filepath);
50
+ return true;
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ }
56
+ async function getLoader(options) {
57
+ (0, node_assert_1.default)(options.framework, 'framework is required');
58
+ (0, node_assert_1.default)(await exists(options.framework), `${options.framework} should exist`);
59
+ if (!(options.baseDir && await exists(options.baseDir))) {
60
+ options.baseDir = node_path_1.default.join(tmpDir, 'egg_utils', `${Date.now()}`, 'tmp_app');
61
+ await (0, promises_1.mkdir)(options.baseDir, { recursive: true });
62
+ await (0, promises_1.writeFile)(node_path_1.default.join(options.baseDir, 'package.json'), JSON.stringify({
63
+ name: 'tmp_app',
64
+ }));
65
+ debug('[getLoader] create baseDir: %o', options.baseDir);
66
+ }
67
+ const { EggCore, EggLoader } = await findEggCore(options);
68
+ const mod = await (0, import_js_1.importModule)(options.framework);
69
+ const Application = mod.Application ?? mod.default?.Application;
70
+ (0, node_assert_1.default)(Application, `Application not export on ${options.framework}`);
71
+ if (options.env) {
72
+ process.env.EGG_SERVER_ENV = options.env;
73
+ }
74
+ return new EggLoader({
75
+ baseDir: options.baseDir,
76
+ logger,
77
+ app: Object.create(Application.prototype),
78
+ EggCoreClass: EggCore,
79
+ });
80
+ }
81
+ async function findEggCore(options) {
82
+ const baseDirRealpath = await (0, promises_1.realpath)(options.baseDir);
83
+ const frameworkRealpath = await (0, promises_1.realpath)(options.framework);
84
+ const paths = [frameworkRealpath, baseDirRealpath];
85
+ // custom framework => egg => @eggjs/core
86
+ try {
87
+ const { EggCore, EggLoader } = await (0, import_js_1.importModule)('egg', { paths });
88
+ if (EggLoader) {
89
+ return { EggCore, EggLoader };
90
+ }
91
+ }
92
+ catch (err) {
93
+ debug('[findEggCore] import "egg" from paths:%o error: %o', paths, err);
94
+ }
95
+ const name = '@eggjs/core';
96
+ // egg => egg-core
97
+ try {
98
+ const { EggCore, EggLoader } = await (0, import_js_1.importModule)(name, { paths });
99
+ if (EggLoader) {
100
+ return { EggCore, EggLoader };
101
+ }
102
+ }
103
+ catch (err) {
104
+ debug('[findEggCore] import "%s" from paths:%o error: %o', name, paths, err);
105
+ }
106
+ try {
107
+ const { EggCore, EggLoader } = await (0, import_js_1.importModule)(name);
108
+ if (EggLoader) {
109
+ return { EggCore, EggLoader };
110
+ }
111
+ }
112
+ catch (err) {
113
+ debug('[findEggCore] import "%s" error: %o', name, err);
114
+ }
115
+ let eggCorePath = node_path_1.default.join(options.baseDir, `node_modules/${name}`);
116
+ if (!(await exists(eggCorePath))) {
117
+ eggCorePath = node_path_1.default.join(options.framework, `node_modules/${name}`);
118
+ }
119
+ (0, node_assert_1.default)(await exists(eggCorePath), `Can't find ${name} from ${options.baseDir} and ${options.framework}`);
120
+ return await (0, import_js_1.importModule)(eggCorePath);
121
+ }
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5Q0FBcUM7QUFDckMsMERBQTZCO0FBQzdCLDhEQUFpQztBQUNqQyxzREFBeUI7QUFDekIsK0NBQW9FO0FBQ3BFLDJDQUEyQztBQUUzQyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU5QyxNQUFNLE1BQU0sR0FBRyxpQkFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRTNCLFNBQVMsSUFBSSxLQUFJLENBQUM7QUFFbEIsTUFBTSxNQUFNLEdBQUc7SUFDYixLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxJQUFJO0lBQ1YsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFvQkY7O0dBRUc7QUFDSSxLQUFLLFVBQVUsVUFBVSxDQUFDLE9BQXNCO0lBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFCLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUMzQixDQUFDO0FBSkQsZ0NBSUM7QUFPRDs7R0FFRztBQUNJLEtBQUssVUFBVSxZQUFZLENBQUMsT0FBc0I7SUFDdkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUIsT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDL0IsQ0FBQztBQUpELG9DQUlDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBQyxPQUFzQjtJQUNwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxNQUFNLE1BQU0sQ0FBQyxV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
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readJSONSync = void 0;
4
+ const node_fs_1 = require("node:fs");
5
+ function readJSONSync(file) {
6
+ if (!(0, node_fs_1.existsSync)(file)) {
7
+ throw new Error(`${file} is not found`);
8
+ }
9
+ return JSON.parse((0, node_fs_1.readFileSync)(file, 'utf-8'));
10
+ }
11
+ exports.readJSONSync = readJSONSync;
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQW1EO0FBRW5ELFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxJQUFBLG9CQUFVLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsc0JBQVksRUFBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBTEQsb0NBS0MifQ==
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Try to get framework dir path
3
+ * If can't find any framework, try to find egg dir path
4
+ *
5
+ * @param {String} cwd - current work path
6
+ * @param {Array} [eggNames] - egg names, default is ['egg']
7
+ * @return {String} framework or egg dir path
8
+ * @deprecated
9
+ */
10
+ export declare function getFrameworkOrEggPath(cwd: string, eggNames?: string[]): string;
@@ -0,0 +1,53 @@
1
+ import path from 'node:path';
2
+ import { existsSync, readdirSync } from 'node:fs';
3
+ import { readJSONSync } from './utils.js';
4
+ /**
5
+ * Try to get framework dir path
6
+ * If can't find any framework, try to find egg dir path
7
+ *
8
+ * @param {String} cwd - current work path
9
+ * @param {Array} [eggNames] - egg names, default is ['egg']
10
+ * @return {String} framework or egg dir path
11
+ * @deprecated
12
+ */
13
+ export function getFrameworkOrEggPath(cwd, eggNames) {
14
+ eggNames = eggNames || ['egg'];
15
+ const moduleDir = path.join(cwd, 'node_modules');
16
+ if (!existsSync(moduleDir)) {
17
+ return '';
18
+ }
19
+ // try to get framework
20
+ // 1. try to read egg.framework property on package.json
21
+ const pkgFile = path.join(cwd, 'package.json');
22
+ if (existsSync(pkgFile)) {
23
+ const pkg = readJSONSync(pkgFile);
24
+ if (pkg.egg && pkg.egg.framework) {
25
+ return path.join(moduleDir, pkg.egg.framework);
26
+ }
27
+ }
28
+ // 2. try the module dependencies includes eggNames
29
+ const names = readdirSync(moduleDir);
30
+ for (const name of names) {
31
+ const pkgfile = path.join(moduleDir, name, 'package.json');
32
+ if (!existsSync(pkgfile)) {
33
+ continue;
34
+ }
35
+ const pkg = readJSONSync(pkgfile);
36
+ if (pkg.dependencies) {
37
+ for (const eggName of eggNames) {
38
+ if (pkg.dependencies[eggName]) {
39
+ return path.join(moduleDir, name);
40
+ }
41
+ }
42
+ }
43
+ }
44
+ // try to get egg
45
+ for (const eggName of eggNames) {
46
+ const pkgfile = path.join(moduleDir, eggName, 'package.json');
47
+ if (existsSync(pkgfile)) {
48
+ return path.join(moduleDir, eggName);
49
+ }
50
+ }
51
+ return '';
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXByZWNhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTFDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQVcsRUFBRSxRQUFtQjtJQUNwRSxRQUFRLEdBQUcsUUFBUSxJQUFJLENBQUUsS0FBSyxDQUFFLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELHVCQUF1QjtJQUV2Qix3REFBd0Q7SUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekIsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7SUFDakIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIn0=
@@ -0,0 +1,16 @@
1
+ interface Options {
2
+ baseDir: string;
3
+ framework?: string;
4
+ }
5
+ /**
6
+ * Find the framework directory, lookup order
7
+ * - specify framework path
8
+ * - get framework name from
9
+ * - use egg by default
10
+ * @param {Object} options - options
11
+ * @param {String} options.baseDir - the current directory of application
12
+ * @param {String} [options.framework] - the directory of framework
13
+ * @return {String} frameworkPath
14
+ */
15
+ export declare function getFrameworkPath(options: Options): string;
16
+ export {};
@@ -0,0 +1,74 @@
1
+ import path from 'node:path';
2
+ import assert from 'node:assert';
3
+ import { existsSync } from 'node:fs';
4
+ import { readJSONSync } from './utils.js';
5
+ const initCwd = process.cwd();
6
+ /**
7
+ * Find the framework directory, lookup order
8
+ * - specify framework path
9
+ * - get framework name from
10
+ * - use egg by default
11
+ * @param {Object} options - options
12
+ * @param {String} options.baseDir - the current directory of application
13
+ * @param {String} [options.framework] - the directory of framework
14
+ * @return {String} frameworkPath
15
+ */
16
+ export function getFrameworkPath(options) {
17
+ const { framework, baseDir } = options;
18
+ const pkgPath = path.join(baseDir, 'package.json');
19
+ assert(existsSync(pkgPath), `${pkgPath} should exist`);
20
+ const moduleDir = path.join(baseDir, 'node_modules');
21
+ // 1. pass framework or customEgg
22
+ if (framework) {
23
+ // 1.1 framework is an absolute path
24
+ // framework: path.join(baseDir, 'node_modules/${frameworkName}')
25
+ if (path.isAbsolute(framework)) {
26
+ assert(existsSync(framework), `${framework} should exist`);
27
+ return framework;
28
+ }
29
+ // 1.2 framework is a npm package that required by application
30
+ // framework: 'frameworkName'
31
+ return assertAndReturn(framework, moduleDir);
32
+ }
33
+ const pkg = readJSONSync(pkgPath);
34
+ // 2. framework is not specified
35
+ // 2.1 use framework name from pkg.egg.framework
36
+ if (pkg.egg?.framework) {
37
+ return assertAndReturn(pkg.egg.framework, moduleDir);
38
+ }
39
+ // 2.2 use egg by default
40
+ return assertAndReturn('egg', moduleDir);
41
+ }
42
+ function assertAndReturn(frameworkName, moduleDir) {
43
+ const moduleDirs = new Set([
44
+ moduleDir,
45
+ // find framework from process.cwd, especially for test,
46
+ // the application is in test/fixtures/app,
47
+ // and framework is install in ${cwd}/node_modules
48
+ path.join(process.cwd(), 'node_modules'),
49
+ // prevent from mocking process.cwd
50
+ path.join(initCwd, 'node_modules'),
51
+ ]);
52
+ try {
53
+ // find framework from global, especially for monorepo
54
+ let globalModuleDir;
55
+ // if frameworkName is scoped package, like @ali/egg
56
+ if (frameworkName.startsWith('@') && frameworkName.includes('/')) {
57
+ globalModuleDir = path.join(require.resolve(`${frameworkName}/package.json`), '../../..');
58
+ }
59
+ else {
60
+ globalModuleDir = path.join(require.resolve(`${frameworkName}/package.json`), '../..');
61
+ }
62
+ moduleDirs.add(globalModuleDir);
63
+ }
64
+ catch (err) {
65
+ // ignore
66
+ }
67
+ for (const moduleDir of moduleDirs) {
68
+ const frameworkPath = path.join(moduleDir, frameworkName);
69
+ if (existsSync(frameworkPath))
70
+ return frameworkPath;
71
+ }
72
+ throw new Error(`${frameworkName} is not found in ${Array.from(moduleDirs)}`);
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFPOUI7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQWdCO0lBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxPQUFPLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXJELGlDQUFpQztJQUNqQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2Qsb0NBQW9DO1FBQ3BDLGlFQUFpRTtRQUNqRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsU0FBUyxlQUFlLENBQUMsQ0FBQztZQUMzRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsOERBQThEO1FBQzlELDZCQUE2QjtRQUM3QixPQUFPLGVBQWUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxnQ0FBZ0M7SUFDaEMsZ0RBQWdEO0lBQ2hELElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN2QixPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsYUFBcUIsRUFBRSxTQUFpQjtJQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUN6QixTQUFTO1FBQ1Qsd0RBQXdEO1FBQ3hELDJDQUEyQztRQUMzQyxrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxDQUFDO1FBQ3hDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUM7S0FDbkMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDO1FBQ0gsc0RBQXNEO1FBQ3RELElBQUksZUFBZSxDQUFDO1FBQ3BCLG9EQUFvRDtRQUNwRCxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pFLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBYSxlQUFlLENBQUMsRUFDaEQsVUFBVSxDQUNYLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBYSxlQUFlLENBQUMsRUFDaEQsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFNBQVM7SUFDWCxDQUFDO0lBQ0QsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMxRCxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGFBQWEsb0JBQW9CLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUMifQ==
@@ -0,0 +1,8 @@
1
+ export interface ImportResolveOptions {
2
+ paths?: string[];
3
+ }
4
+ export interface ImportModuleOptions extends ImportResolveOptions {
5
+ importDefaultOnly?: boolean;
6
+ }
7
+ export declare function importResolve(filepath: string, options?: ImportResolveOptions): string;
8
+ export declare function importModule(filepath: string, options?: ImportModuleOptions): Promise<any>;