@eggjs/utils 4.1.1 → 4.1.2
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/commonjs/import.js +138 -40
- package/dist/esm/import.js +139 -41
- package/dist/package.json +1 -1
- package/package.json +9 -6
- package/src/import.ts +140 -39
package/dist/commonjs/import.js
CHANGED
|
@@ -12,6 +12,8 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
12
12
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
13
13
|
const debug = (0, node_util_1.debuglog)('@eggjs/utils/import');
|
|
14
14
|
const isESM = typeof require === 'undefined';
|
|
15
|
+
const nodeMajorVersion = parseInt(process.versions.node.split('.', 1)[0], 10);
|
|
16
|
+
const supportImportMetaResolve = nodeMajorVersion >= 18;
|
|
15
17
|
let _customRequire;
|
|
16
18
|
function getRequire() {
|
|
17
19
|
if (!_customRequire) {
|
|
@@ -33,17 +35,86 @@ function isSupportTypeScript() {
|
|
|
33
35
|
}
|
|
34
36
|
return _supportTypeScript;
|
|
35
37
|
}
|
|
36
|
-
function
|
|
38
|
+
function tryToResolveFromFile(filepath) {
|
|
39
|
+
// "type": "module", try index.mjs then index.js
|
|
40
|
+
const type = isESM ? 'module' : 'commonjs';
|
|
41
|
+
let mainIndexFile = '';
|
|
42
|
+
if (type === 'module') {
|
|
43
|
+
mainIndexFile = filepath + '.mjs';
|
|
44
|
+
if (node_fs_1.default.existsSync(mainIndexFile)) {
|
|
45
|
+
debug('[tryToResolveFromFile] %o, use index.mjs, type: %o', mainIndexFile, type);
|
|
46
|
+
return mainIndexFile;
|
|
47
|
+
}
|
|
48
|
+
mainIndexFile = filepath + '.js';
|
|
49
|
+
if (node_fs_1.default.existsSync(mainIndexFile)) {
|
|
50
|
+
debug('[tryToResolveFromFile] %o, use index.js, type: %o', mainIndexFile, type);
|
|
51
|
+
return mainIndexFile;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// "type": "commonjs", try index.js then index.cjs
|
|
56
|
+
mainIndexFile = filepath + '.cjs';
|
|
57
|
+
if (node_fs_1.default.existsSync(mainIndexFile)) {
|
|
58
|
+
debug('[tryToResolveFromFile] %o, use index.cjs, type: %o', mainIndexFile, type);
|
|
59
|
+
return mainIndexFile;
|
|
60
|
+
}
|
|
61
|
+
mainIndexFile = filepath + '.js';
|
|
62
|
+
if (node_fs_1.default.existsSync(mainIndexFile)) {
|
|
63
|
+
debug('[tryToResolveFromFile] %o, use index.js, type: %o', mainIndexFile, type);
|
|
64
|
+
return mainIndexFile;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (!isSupportTypeScript()) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// for the module under development
|
|
71
|
+
mainIndexFile = filepath + '.ts';
|
|
72
|
+
if (node_fs_1.default.existsSync(mainIndexFile)) {
|
|
73
|
+
debug('[tryToResolveFromFile] %o, use index.ts, type: %o', mainIndexFile, type);
|
|
74
|
+
return mainIndexFile;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function tryToResolveByDirnameFromPackage(dirname, pkg) {
|
|
37
78
|
// try to read pkg.main or pkg.module first
|
|
38
79
|
// "main": "./dist/commonjs/index.js",
|
|
39
80
|
// "module": "./dist/esm/index.js"
|
|
40
81
|
const defaultMainFile = isESM ? pkg.module ?? pkg.main : pkg.main;
|
|
41
82
|
if (defaultMainFile) {
|
|
42
|
-
const mainIndexFilePath = node_path_1.default.join(
|
|
83
|
+
const mainIndexFilePath = node_path_1.default.join(dirname, defaultMainFile);
|
|
84
|
+
if (node_fs_1.default.existsSync(mainIndexFilePath)) {
|
|
85
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use pkg.main or pkg.module: %o, isESM: %s', mainIndexFilePath, defaultMainFile, isESM);
|
|
86
|
+
return mainIndexFilePath;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// "type": "module", try index.mjs then index.js
|
|
90
|
+
const type = pkg?.type ?? (isESM ? 'module' : 'commonjs');
|
|
91
|
+
if (type === 'module') {
|
|
92
|
+
const mainIndexFilePath = node_path_1.default.join(dirname, 'index.mjs');
|
|
93
|
+
if (node_fs_1.default.existsSync(mainIndexFilePath)) {
|
|
94
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.mjs, pkg.type: %o', mainIndexFilePath, type);
|
|
95
|
+
return mainIndexFilePath;
|
|
96
|
+
}
|
|
97
|
+
const mainIndexMjsFilePath = node_path_1.default.join(dirname, 'index.js');
|
|
98
|
+
if (node_fs_1.default.existsSync(mainIndexMjsFilePath)) {
|
|
99
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.js, pkg.type: %o', mainIndexMjsFilePath, type);
|
|
100
|
+
return mainIndexMjsFilePath;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// "type": "commonjs", try index.cjs then index.js
|
|
105
|
+
const mainIndexFilePath = node_path_1.default.join(dirname, 'index.cjs');
|
|
43
106
|
if (node_fs_1.default.existsSync(mainIndexFilePath)) {
|
|
44
|
-
debug('[
|
|
45
|
-
return;
|
|
107
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.cjs, pkg.type: %o', mainIndexFilePath, type);
|
|
108
|
+
return mainIndexFilePath;
|
|
46
109
|
}
|
|
110
|
+
const mainIndexCjsFilePath = node_path_1.default.join(dirname, 'index.js');
|
|
111
|
+
if (node_fs_1.default.existsSync(mainIndexCjsFilePath)) {
|
|
112
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.js, pkg.type: %o', mainIndexCjsFilePath, type);
|
|
113
|
+
return mainIndexCjsFilePath;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (!isSupportTypeScript()) {
|
|
117
|
+
return;
|
|
47
118
|
}
|
|
48
119
|
// for the module under development
|
|
49
120
|
// "tshy": {
|
|
@@ -52,55 +123,69 @@ function tryToGetTypeScriptMainFile(pkg, baseDir) {
|
|
|
52
123
|
// ".": "./src/index.ts"
|
|
53
124
|
// }
|
|
54
125
|
// }
|
|
55
|
-
const mainIndexFile = pkg.tshy?.exports?.['.'];
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
126
|
+
const mainIndexFile = pkg.tshy?.exports?.['.'] ?? 'index.ts';
|
|
127
|
+
const mainIndexFilePath = node_path_1.default.join(dirname, mainIndexFile);
|
|
128
|
+
if (node_fs_1.default.existsSync(mainIndexFilePath)) {
|
|
129
|
+
return mainIndexFilePath;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function tryToResolveByDirname(dirname) {
|
|
133
|
+
const pkgFile = node_path_1.default.join(dirname, 'package.json');
|
|
134
|
+
if (node_fs_1.default.existsSync(pkgFile)) {
|
|
135
|
+
const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgFile, 'utf-8'));
|
|
136
|
+
return tryToResolveByDirnameFromPackage(dirname, pkg);
|
|
61
137
|
}
|
|
62
138
|
}
|
|
63
139
|
function importResolve(filepath, options) {
|
|
64
|
-
|
|
65
|
-
if (node_path_1.default.isAbsolute(filepath)
|
|
66
|
-
const
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
140
|
+
let moduleFilePath;
|
|
141
|
+
if (node_path_1.default.isAbsolute(filepath)) {
|
|
142
|
+
const stat = node_fs_1.default.statSync(filepath, { throwIfNoEntry: false });
|
|
143
|
+
if (stat?.isDirectory()) {
|
|
144
|
+
moduleFilePath = tryToResolveByDirname(filepath);
|
|
145
|
+
if (moduleFilePath) {
|
|
146
|
+
debug('[importResolve] %o => %o', filepath, moduleFilePath);
|
|
147
|
+
return moduleFilePath;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (!stat) {
|
|
151
|
+
moduleFilePath = tryToResolveFromFile(filepath);
|
|
152
|
+
if (moduleFilePath) {
|
|
153
|
+
debug('[importResolve] %o => %o', filepath, moduleFilePath);
|
|
154
|
+
return moduleFilePath;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (isESM) {
|
|
159
|
+
if (supportImportMetaResolve) {
|
|
160
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
161
|
+
// @ts-ignore
|
|
162
|
+
moduleFilePath = require.resolve(filepath);
|
|
163
|
+
if (moduleFilePath.startsWith('file://')) {
|
|
164
|
+
// resolve will return file:// URL on Linux and MacOS expect on Windows
|
|
165
|
+
moduleFilePath = (0, node_url_1.fileURLToPath)(moduleFilePath);
|
|
73
166
|
}
|
|
74
167
|
}
|
|
168
|
+
else {
|
|
169
|
+
moduleFilePath = getRequire().resolve(filepath);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
const cwd = process.cwd();
|
|
174
|
+
const paths = options?.paths ?? [cwd];
|
|
175
|
+
moduleFilePath = require.resolve(filepath, {
|
|
176
|
+
paths,
|
|
177
|
+
});
|
|
75
178
|
}
|
|
76
|
-
const cwd = process.cwd();
|
|
77
|
-
const paths = options?.paths ?? [cwd];
|
|
78
|
-
const moduleFilePath = getRequire().resolve(filepath, {
|
|
79
|
-
paths,
|
|
80
|
-
});
|
|
81
179
|
debug('[importResolve] %o, options: %o => %o', filepath, options, moduleFilePath);
|
|
82
180
|
return moduleFilePath;
|
|
83
181
|
}
|
|
84
182
|
async function importModule(filepath, options) {
|
|
85
183
|
const moduleFilePath = importResolve(filepath, options);
|
|
86
184
|
let obj;
|
|
87
|
-
if (
|
|
88
|
-
// commonjs
|
|
89
|
-
obj = require(moduleFilePath);
|
|
90
|
-
debug('[importModule] require %o => %o', filepath, obj);
|
|
91
|
-
if (obj?.__esModule === true && 'default' in obj) {
|
|
92
|
-
// 兼容 cjs 模拟 esm 的导出格式
|
|
93
|
-
// {
|
|
94
|
-
// __esModule: true,
|
|
95
|
-
// default: { fn: [Function: fn], foo: 'bar', one: 1 }
|
|
96
|
-
// }
|
|
97
|
-
obj = obj.default;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
185
|
+
if (isESM) {
|
|
101
186
|
// esm
|
|
102
|
-
debug('[importModule] await import start: %o', filepath);
|
|
103
187
|
const fileUrl = (0, node_url_1.pathToFileURL)(moduleFilePath).toString();
|
|
188
|
+
debug('[importModule] await import start: %o', fileUrl);
|
|
104
189
|
obj = await import(fileUrl);
|
|
105
190
|
debug('[importModule] await import end: %o => %o', filepath, obj);
|
|
106
191
|
// {
|
|
@@ -143,7 +228,20 @@ async function importModule(filepath, options) {
|
|
|
143
228
|
}
|
|
144
229
|
}
|
|
145
230
|
}
|
|
231
|
+
else {
|
|
232
|
+
// commonjs
|
|
233
|
+
obj = require(moduleFilePath);
|
|
234
|
+
debug('[importModule] require %o => %o', filepath, obj);
|
|
235
|
+
if (obj?.__esModule === true && 'default' in obj) {
|
|
236
|
+
// 兼容 cjs 模拟 esm 的导出格式
|
|
237
|
+
// {
|
|
238
|
+
// __esModule: true,
|
|
239
|
+
// default: { fn: [Function: fn], foo: 'bar', one: 1 }
|
|
240
|
+
// }
|
|
241
|
+
obj = obj.default;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
146
244
|
debug('[importModule] return %o => %o', filepath, obj);
|
|
147
245
|
return obj;
|
|
148
246
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXVKQSxzQ0F5Q0M7QUFFRCxvQ0ErREM7QUFqUUQseUNBQXFDO0FBQ3JDLDZDQUE0QztBQUM1Qyx1Q0FBd0Q7QUFDeEQsMERBQTZCO0FBQzdCLHNEQUF5QjtBQUV6QixNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMscUJBQXFCLENBQUMsQ0FBQztBQVc5QyxNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUM7QUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5RSxNQUFNLHdCQUF3QixHQUFHLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztBQUV4RCxJQUFJLGNBQTJCLENBQUM7QUFDaEMsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ25DLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcsSUFBQSwyQkFBYSxFQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQUVELElBQUksa0JBQXVDLENBQUM7QUFDNUMsU0FBUyxtQkFBbUI7SUFDMUIsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDM0Msa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEtBQUss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
|
package/dist/esm/import.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { debuglog } from 'node:util';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { pathToFileURL, fileURLToPath } from 'node:url';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import fs from 'node:fs';
|
|
6
6
|
const debug = debuglog('@eggjs/utils/import');
|
|
7
7
|
const isESM = typeof require === 'undefined';
|
|
8
|
+
const nodeMajorVersion = parseInt(process.versions.node.split('.', 1)[0], 10);
|
|
9
|
+
const supportImportMetaResolve = nodeMajorVersion >= 18;
|
|
8
10
|
let _customRequire;
|
|
9
11
|
function getRequire() {
|
|
10
12
|
if (!_customRequire) {
|
|
@@ -26,17 +28,86 @@ function isSupportTypeScript() {
|
|
|
26
28
|
}
|
|
27
29
|
return _supportTypeScript;
|
|
28
30
|
}
|
|
29
|
-
function
|
|
31
|
+
function tryToResolveFromFile(filepath) {
|
|
32
|
+
// "type": "module", try index.mjs then index.js
|
|
33
|
+
const type = isESM ? 'module' : 'commonjs';
|
|
34
|
+
let mainIndexFile = '';
|
|
35
|
+
if (type === 'module') {
|
|
36
|
+
mainIndexFile = filepath + '.mjs';
|
|
37
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
38
|
+
debug('[tryToResolveFromFile] %o, use index.mjs, type: %o', mainIndexFile, type);
|
|
39
|
+
return mainIndexFile;
|
|
40
|
+
}
|
|
41
|
+
mainIndexFile = filepath + '.js';
|
|
42
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
43
|
+
debug('[tryToResolveFromFile] %o, use index.js, type: %o', mainIndexFile, type);
|
|
44
|
+
return mainIndexFile;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// "type": "commonjs", try index.js then index.cjs
|
|
49
|
+
mainIndexFile = filepath + '.cjs';
|
|
50
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
51
|
+
debug('[tryToResolveFromFile] %o, use index.cjs, type: %o', mainIndexFile, type);
|
|
52
|
+
return mainIndexFile;
|
|
53
|
+
}
|
|
54
|
+
mainIndexFile = filepath + '.js';
|
|
55
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
56
|
+
debug('[tryToResolveFromFile] %o, use index.js, type: %o', mainIndexFile, type);
|
|
57
|
+
return mainIndexFile;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!isSupportTypeScript()) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// for the module under development
|
|
64
|
+
mainIndexFile = filepath + '.ts';
|
|
65
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
66
|
+
debug('[tryToResolveFromFile] %o, use index.ts, type: %o', mainIndexFile, type);
|
|
67
|
+
return mainIndexFile;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function tryToResolveByDirnameFromPackage(dirname, pkg) {
|
|
30
71
|
// try to read pkg.main or pkg.module first
|
|
31
72
|
// "main": "./dist/commonjs/index.js",
|
|
32
73
|
// "module": "./dist/esm/index.js"
|
|
33
74
|
const defaultMainFile = isESM ? pkg.module ?? pkg.main : pkg.main;
|
|
34
75
|
if (defaultMainFile) {
|
|
35
|
-
const mainIndexFilePath = path.join(
|
|
76
|
+
const mainIndexFilePath = path.join(dirname, defaultMainFile);
|
|
77
|
+
if (fs.existsSync(mainIndexFilePath)) {
|
|
78
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use pkg.main or pkg.module: %o, isESM: %s', mainIndexFilePath, defaultMainFile, isESM);
|
|
79
|
+
return mainIndexFilePath;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// "type": "module", try index.mjs then index.js
|
|
83
|
+
const type = pkg?.type ?? (isESM ? 'module' : 'commonjs');
|
|
84
|
+
if (type === 'module') {
|
|
85
|
+
const mainIndexFilePath = path.join(dirname, 'index.mjs');
|
|
86
|
+
if (fs.existsSync(mainIndexFilePath)) {
|
|
87
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.mjs, pkg.type: %o', mainIndexFilePath, type);
|
|
88
|
+
return mainIndexFilePath;
|
|
89
|
+
}
|
|
90
|
+
const mainIndexMjsFilePath = path.join(dirname, 'index.js');
|
|
91
|
+
if (fs.existsSync(mainIndexMjsFilePath)) {
|
|
92
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.js, pkg.type: %o', mainIndexMjsFilePath, type);
|
|
93
|
+
return mainIndexMjsFilePath;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// "type": "commonjs", try index.cjs then index.js
|
|
98
|
+
const mainIndexFilePath = path.join(dirname, 'index.cjs');
|
|
36
99
|
if (fs.existsSync(mainIndexFilePath)) {
|
|
37
|
-
debug('[
|
|
38
|
-
return;
|
|
100
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.cjs, pkg.type: %o', mainIndexFilePath, type);
|
|
101
|
+
return mainIndexFilePath;
|
|
39
102
|
}
|
|
103
|
+
const mainIndexCjsFilePath = path.join(dirname, 'index.js');
|
|
104
|
+
if (fs.existsSync(mainIndexCjsFilePath)) {
|
|
105
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.js, pkg.type: %o', mainIndexCjsFilePath, type);
|
|
106
|
+
return mainIndexCjsFilePath;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (!isSupportTypeScript()) {
|
|
110
|
+
return;
|
|
40
111
|
}
|
|
41
112
|
// for the module under development
|
|
42
113
|
// "tshy": {
|
|
@@ -45,55 +116,69 @@ function tryToGetTypeScriptMainFile(pkg, baseDir) {
|
|
|
45
116
|
// ".": "./src/index.ts"
|
|
46
117
|
// }
|
|
47
118
|
// }
|
|
48
|
-
const mainIndexFile = pkg.tshy?.exports?.['.'];
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
119
|
+
const mainIndexFile = pkg.tshy?.exports?.['.'] ?? 'index.ts';
|
|
120
|
+
const mainIndexFilePath = path.join(dirname, mainIndexFile);
|
|
121
|
+
if (fs.existsSync(mainIndexFilePath)) {
|
|
122
|
+
return mainIndexFilePath;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function tryToResolveByDirname(dirname) {
|
|
126
|
+
const pkgFile = path.join(dirname, 'package.json');
|
|
127
|
+
if (fs.existsSync(pkgFile)) {
|
|
128
|
+
const pkg = JSON.parse(fs.readFileSync(pkgFile, 'utf-8'));
|
|
129
|
+
return tryToResolveByDirnameFromPackage(dirname, pkg);
|
|
54
130
|
}
|
|
55
131
|
}
|
|
56
132
|
export function importResolve(filepath, options) {
|
|
57
|
-
|
|
58
|
-
if (path.isAbsolute(filepath)
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
133
|
+
let moduleFilePath;
|
|
134
|
+
if (path.isAbsolute(filepath)) {
|
|
135
|
+
const stat = fs.statSync(filepath, { throwIfNoEntry: false });
|
|
136
|
+
if (stat?.isDirectory()) {
|
|
137
|
+
moduleFilePath = tryToResolveByDirname(filepath);
|
|
138
|
+
if (moduleFilePath) {
|
|
139
|
+
debug('[importResolve] %o => %o', filepath, moduleFilePath);
|
|
140
|
+
return moduleFilePath;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (!stat) {
|
|
144
|
+
moduleFilePath = tryToResolveFromFile(filepath);
|
|
145
|
+
if (moduleFilePath) {
|
|
146
|
+
debug('[importResolve] %o => %o', filepath, moduleFilePath);
|
|
147
|
+
return moduleFilePath;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (isESM) {
|
|
152
|
+
if (supportImportMetaResolve) {
|
|
153
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
154
|
+
// @ts-ignore
|
|
155
|
+
moduleFilePath = import.meta.resolve(filepath);
|
|
156
|
+
if (moduleFilePath.startsWith('file://')) {
|
|
157
|
+
// resolve will return file:// URL on Linux and MacOS expect on Windows
|
|
158
|
+
moduleFilePath = fileURLToPath(moduleFilePath);
|
|
66
159
|
}
|
|
67
160
|
}
|
|
161
|
+
else {
|
|
162
|
+
moduleFilePath = getRequire().resolve(filepath);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
const cwd = process.cwd();
|
|
167
|
+
const paths = options?.paths ?? [cwd];
|
|
168
|
+
moduleFilePath = require.resolve(filepath, {
|
|
169
|
+
paths,
|
|
170
|
+
});
|
|
68
171
|
}
|
|
69
|
-
const cwd = process.cwd();
|
|
70
|
-
const paths = options?.paths ?? [cwd];
|
|
71
|
-
const moduleFilePath = getRequire().resolve(filepath, {
|
|
72
|
-
paths,
|
|
73
|
-
});
|
|
74
172
|
debug('[importResolve] %o, options: %o => %o', filepath, options, moduleFilePath);
|
|
75
173
|
return moduleFilePath;
|
|
76
174
|
}
|
|
77
175
|
export async function importModule(filepath, options) {
|
|
78
176
|
const moduleFilePath = importResolve(filepath, options);
|
|
79
177
|
let obj;
|
|
80
|
-
if (
|
|
81
|
-
// commonjs
|
|
82
|
-
obj = require(moduleFilePath);
|
|
83
|
-
debug('[importModule] require %o => %o', filepath, obj);
|
|
84
|
-
if (obj?.__esModule === true && 'default' in obj) {
|
|
85
|
-
// 兼容 cjs 模拟 esm 的导出格式
|
|
86
|
-
// {
|
|
87
|
-
// __esModule: true,
|
|
88
|
-
// default: { fn: [Function: fn], foo: 'bar', one: 1 }
|
|
89
|
-
// }
|
|
90
|
-
obj = obj.default;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
178
|
+
if (isESM) {
|
|
94
179
|
// esm
|
|
95
|
-
debug('[importModule] await import start: %o', filepath);
|
|
96
180
|
const fileUrl = pathToFileURL(moduleFilePath).toString();
|
|
181
|
+
debug('[importModule] await import start: %o', fileUrl);
|
|
97
182
|
obj = await import(fileUrl);
|
|
98
183
|
debug('[importModule] await import end: %o => %o', filepath, obj);
|
|
99
184
|
// {
|
|
@@ -136,7 +221,20 @@ export async function importModule(filepath, options) {
|
|
|
136
221
|
}
|
|
137
222
|
}
|
|
138
223
|
}
|
|
224
|
+
else {
|
|
225
|
+
// commonjs
|
|
226
|
+
obj = require(moduleFilePath);
|
|
227
|
+
debug('[importModule] require %o => %o', filepath, obj);
|
|
228
|
+
if (obj?.__esModule === true && 'default' in obj) {
|
|
229
|
+
// 兼容 cjs 模拟 esm 的导出格式
|
|
230
|
+
// {
|
|
231
|
+
// __esModule: true,
|
|
232
|
+
// default: { fn: [Function: fn], foo: 'bar', one: 1 }
|
|
233
|
+
// }
|
|
234
|
+
obj = obj.default;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
139
237
|
debug('[importModule] return %o => %o', filepath, obj);
|
|
140
238
|
return obj;
|
|
141
239
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQVc5QyxNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUM7QUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5RSxNQUFNLHdCQUF3QixHQUFHLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztBQUV4RCxJQUFJLGNBQTJCLENBQUM7QUFDaEMsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ25DLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQUVELElBQUksa0JBQXVDLENBQUM7QUFDNUMsU0FBUyxtQkFBbUI7SUFDMUIsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVB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
|
package/dist/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/utils",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.2",
|
|
4
4
|
"engine": {
|
|
5
5
|
"node": ">=18.19.0"
|
|
6
6
|
},
|
|
@@ -10,12 +10,13 @@
|
|
|
10
10
|
"description": "Utils for all egg projects",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"lint": "eslint src test --ext ts",
|
|
13
|
-
"pretest": "npm run prepublishOnly",
|
|
14
|
-
"test": "npm run
|
|
13
|
+
"pretest": "npm run clean && npm run lint -- --fix && npm run prepublishOnly",
|
|
14
|
+
"test": "npm run test-local",
|
|
15
15
|
"test-local": "egg-bin test",
|
|
16
|
-
"preci": "npm run prepublishOnly",
|
|
17
|
-
"ci": "
|
|
18
|
-
"
|
|
16
|
+
"preci": "npm run clean && npm run lint && npm run prepublishOnly",
|
|
17
|
+
"ci": "egg-bin cov",
|
|
18
|
+
"clean": "rimraf dist",
|
|
19
|
+
"prepublishOnly": "tshy && tshy-after && attw --pack"
|
|
19
20
|
},
|
|
20
21
|
"keywords": [
|
|
21
22
|
"egg",
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
"license": "MIT",
|
|
30
31
|
"dependencies": {},
|
|
31
32
|
"devDependencies": {
|
|
33
|
+
"@arethetypeswrong/cli": "^0.17.2",
|
|
32
34
|
"@eggjs/tsconfig": "1",
|
|
33
35
|
"@types/mocha": "10",
|
|
34
36
|
"@types/node": "22",
|
|
@@ -38,6 +40,7 @@
|
|
|
38
40
|
"eslint-config-egg": "14",
|
|
39
41
|
"mm": "3",
|
|
40
42
|
"npminstall": "7",
|
|
43
|
+
"rimraf": "6",
|
|
41
44
|
"runscript": "2",
|
|
42
45
|
"tshy": "3",
|
|
43
46
|
"tshy-after": "1",
|
package/src/import.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { debuglog } from 'node:util';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { pathToFileURL, fileURLToPath } from 'node:url';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import fs from 'node:fs';
|
|
6
6
|
|
|
@@ -16,6 +16,8 @@ export interface ImportModuleOptions extends ImportResolveOptions {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
const isESM = typeof require === 'undefined';
|
|
19
|
+
const nodeMajorVersion = parseInt(process.versions.node.split('.', 1)[0], 10);
|
|
20
|
+
const supportImportMetaResolve = nodeMajorVersion >= 18;
|
|
19
21
|
|
|
20
22
|
let _customRequire: NodeRequire;
|
|
21
23
|
function getRequire() {
|
|
@@ -39,20 +41,92 @@ function isSupportTypeScript() {
|
|
|
39
41
|
return _supportTypeScript;
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
function
|
|
44
|
+
function tryToResolveFromFile(filepath: string): string | undefined {
|
|
45
|
+
// "type": "module", try index.mjs then index.js
|
|
46
|
+
const type = isESM ? 'module' : 'commonjs';
|
|
47
|
+
let mainIndexFile = '';
|
|
48
|
+
if (type === 'module') {
|
|
49
|
+
mainIndexFile = filepath + '.mjs';
|
|
50
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
51
|
+
debug('[tryToResolveFromFile] %o, use index.mjs, type: %o', mainIndexFile, type);
|
|
52
|
+
return mainIndexFile;
|
|
53
|
+
}
|
|
54
|
+
mainIndexFile = filepath + '.js';
|
|
55
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
56
|
+
debug('[tryToResolveFromFile] %o, use index.js, type: %o', mainIndexFile, type);
|
|
57
|
+
return mainIndexFile;
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
// "type": "commonjs", try index.js then index.cjs
|
|
61
|
+
mainIndexFile = filepath + '.cjs';
|
|
62
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
63
|
+
debug('[tryToResolveFromFile] %o, use index.cjs, type: %o', mainIndexFile, type);
|
|
64
|
+
return mainIndexFile;
|
|
65
|
+
}
|
|
66
|
+
mainIndexFile = filepath + '.js';
|
|
67
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
68
|
+
debug('[tryToResolveFromFile] %o, use index.js, type: %o', mainIndexFile, type);
|
|
69
|
+
return mainIndexFile;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!isSupportTypeScript()) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// for the module under development
|
|
78
|
+
mainIndexFile = filepath + '.ts';
|
|
79
|
+
if (fs.existsSync(mainIndexFile)) {
|
|
80
|
+
debug('[tryToResolveFromFile] %o, use index.ts, type: %o', mainIndexFile, type);
|
|
81
|
+
return mainIndexFile;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function tryToResolveByDirnameFromPackage(dirname: string, pkg: any): string | undefined {
|
|
43
86
|
// try to read pkg.main or pkg.module first
|
|
44
87
|
// "main": "./dist/commonjs/index.js",
|
|
45
88
|
// "module": "./dist/esm/index.js"
|
|
46
89
|
const defaultMainFile = isESM ? pkg.module ?? pkg.main : pkg.main;
|
|
47
90
|
if (defaultMainFile) {
|
|
48
|
-
const mainIndexFilePath = path.join(
|
|
91
|
+
const mainIndexFilePath = path.join(dirname, defaultMainFile);
|
|
49
92
|
if (fs.existsSync(mainIndexFilePath)) {
|
|
50
|
-
debug('[
|
|
93
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use pkg.main or pkg.module: %o, isESM: %s',
|
|
51
94
|
mainIndexFilePath, defaultMainFile, isESM);
|
|
52
|
-
return;
|
|
95
|
+
return mainIndexFilePath;
|
|
53
96
|
}
|
|
54
97
|
}
|
|
55
98
|
|
|
99
|
+
// "type": "module", try index.mjs then index.js
|
|
100
|
+
const type = pkg?.type ?? (isESM ? 'module' : 'commonjs');
|
|
101
|
+
if (type === 'module') {
|
|
102
|
+
const mainIndexFilePath = path.join(dirname, 'index.mjs');
|
|
103
|
+
if (fs.existsSync(mainIndexFilePath)) {
|
|
104
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.mjs, pkg.type: %o', mainIndexFilePath, type);
|
|
105
|
+
return mainIndexFilePath;
|
|
106
|
+
}
|
|
107
|
+
const mainIndexMjsFilePath = path.join(dirname, 'index.js');
|
|
108
|
+
if (fs.existsSync(mainIndexMjsFilePath)) {
|
|
109
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.js, pkg.type: %o', mainIndexMjsFilePath, type);
|
|
110
|
+
return mainIndexMjsFilePath;
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
// "type": "commonjs", try index.cjs then index.js
|
|
114
|
+
const mainIndexFilePath = path.join(dirname, 'index.cjs');
|
|
115
|
+
if (fs.existsSync(mainIndexFilePath)) {
|
|
116
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.cjs, pkg.type: %o', mainIndexFilePath, type);
|
|
117
|
+
return mainIndexFilePath;
|
|
118
|
+
}
|
|
119
|
+
const mainIndexCjsFilePath = path.join(dirname, 'index.js');
|
|
120
|
+
if (fs.existsSync(mainIndexCjsFilePath)) {
|
|
121
|
+
debug('[tryToResolveByDirnameFromPackage] %o, use index.js, pkg.type: %o', mainIndexCjsFilePath, type);
|
|
122
|
+
return mainIndexCjsFilePath;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (!isSupportTypeScript()) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
56
130
|
// for the module under development
|
|
57
131
|
// "tshy": {
|
|
58
132
|
// "exports": {
|
|
@@ -60,33 +134,60 @@ function tryToGetTypeScriptMainFile(pkg: any, baseDir: string): string | undefin
|
|
|
60
134
|
// ".": "./src/index.ts"
|
|
61
135
|
// }
|
|
62
136
|
// }
|
|
63
|
-
const mainIndexFile = pkg.tshy?.exports?.['.'];
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
137
|
+
const mainIndexFile = pkg.tshy?.exports?.['.'] ?? 'index.ts';
|
|
138
|
+
const mainIndexFilePath = path.join(dirname, mainIndexFile);
|
|
139
|
+
if (fs.existsSync(mainIndexFilePath)) {
|
|
140
|
+
return mainIndexFilePath;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function tryToResolveByDirname(dirname: string): string | undefined {
|
|
145
|
+
const pkgFile = path.join(dirname, 'package.json');
|
|
146
|
+
if (fs.existsSync(pkgFile)) {
|
|
147
|
+
const pkg = JSON.parse(fs.readFileSync(pkgFile, 'utf-8'));
|
|
148
|
+
return tryToResolveByDirnameFromPackage(dirname, pkg);
|
|
69
149
|
}
|
|
70
150
|
}
|
|
71
151
|
|
|
72
152
|
export function importResolve(filepath: string, options?: ImportResolveOptions) {
|
|
73
|
-
|
|
74
|
-
if (path.isAbsolute(filepath)
|
|
75
|
-
const
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
return mainFile;
|
|
153
|
+
let moduleFilePath: string | undefined;
|
|
154
|
+
if (path.isAbsolute(filepath)) {
|
|
155
|
+
const stat = fs.statSync(filepath, { throwIfNoEntry: false });
|
|
156
|
+
if (stat?.isDirectory()) {
|
|
157
|
+
moduleFilePath = tryToResolveByDirname(filepath);
|
|
158
|
+
if (moduleFilePath) {
|
|
159
|
+
debug('[importResolve] %o => %o', filepath, moduleFilePath);
|
|
160
|
+
return moduleFilePath;
|
|
82
161
|
}
|
|
83
162
|
}
|
|
163
|
+
if (!stat) {
|
|
164
|
+
moduleFilePath = tryToResolveFromFile(filepath);
|
|
165
|
+
if (moduleFilePath) {
|
|
166
|
+
debug('[importResolve] %o => %o', filepath, moduleFilePath);
|
|
167
|
+
return moduleFilePath;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (isESM) {
|
|
173
|
+
if (supportImportMetaResolve) {
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
175
|
+
// @ts-ignore
|
|
176
|
+
moduleFilePath = import.meta.resolve(filepath);
|
|
177
|
+
if (moduleFilePath.startsWith('file://')) {
|
|
178
|
+
// resolve will return file:// URL on Linux and MacOS expect on Windows
|
|
179
|
+
moduleFilePath = fileURLToPath(moduleFilePath);
|
|
180
|
+
}
|
|
181
|
+
} else {
|
|
182
|
+
moduleFilePath = getRequire().resolve(filepath);
|
|
183
|
+
}
|
|
184
|
+
} else {
|
|
185
|
+
const cwd = process.cwd();
|
|
186
|
+
const paths = options?.paths ?? [ cwd ];
|
|
187
|
+
moduleFilePath = require.resolve(filepath, {
|
|
188
|
+
paths,
|
|
189
|
+
});
|
|
84
190
|
}
|
|
85
|
-
const cwd = process.cwd();
|
|
86
|
-
const paths = options?.paths ?? [ cwd ];
|
|
87
|
-
const moduleFilePath = getRequire().resolve(filepath, {
|
|
88
|
-
paths,
|
|
89
|
-
});
|
|
90
191
|
debug('[importResolve] %o, options: %o => %o', filepath, options, moduleFilePath);
|
|
91
192
|
return moduleFilePath;
|
|
92
193
|
}
|
|
@@ -94,22 +195,10 @@ export function importResolve(filepath: string, options?: ImportResolveOptions)
|
|
|
94
195
|
export async function importModule(filepath: string, options?: ImportModuleOptions) {
|
|
95
196
|
const moduleFilePath = importResolve(filepath, options);
|
|
96
197
|
let obj: any;
|
|
97
|
-
if (
|
|
98
|
-
// commonjs
|
|
99
|
-
obj = require(moduleFilePath);
|
|
100
|
-
debug('[importModule] require %o => %o', filepath, obj);
|
|
101
|
-
if (obj?.__esModule === true && 'default' in obj) {
|
|
102
|
-
// 兼容 cjs 模拟 esm 的导出格式
|
|
103
|
-
// {
|
|
104
|
-
// __esModule: true,
|
|
105
|
-
// default: { fn: [Function: fn], foo: 'bar', one: 1 }
|
|
106
|
-
// }
|
|
107
|
-
obj = obj.default;
|
|
108
|
-
}
|
|
109
|
-
} else {
|
|
198
|
+
if (isESM) {
|
|
110
199
|
// esm
|
|
111
|
-
debug('[importModule] await import start: %o', filepath);
|
|
112
200
|
const fileUrl = pathToFileURL(moduleFilePath).toString();
|
|
201
|
+
debug('[importModule] await import start: %o', fileUrl);
|
|
113
202
|
obj = await import(fileUrl);
|
|
114
203
|
debug('[importModule] await import end: %o => %o', filepath, obj);
|
|
115
204
|
// {
|
|
@@ -151,6 +240,18 @@ export async function importModule(filepath: string, options?: ImportModuleOptio
|
|
|
151
240
|
obj = obj.default;
|
|
152
241
|
}
|
|
153
242
|
}
|
|
243
|
+
} else {
|
|
244
|
+
// commonjs
|
|
245
|
+
obj = require(moduleFilePath);
|
|
246
|
+
debug('[importModule] require %o => %o', filepath, obj);
|
|
247
|
+
if (obj?.__esModule === true && 'default' in obj) {
|
|
248
|
+
// 兼容 cjs 模拟 esm 的导出格式
|
|
249
|
+
// {
|
|
250
|
+
// __esModule: true,
|
|
251
|
+
// default: { fn: [Function: fn], foo: 'bar', one: 1 }
|
|
252
|
+
// }
|
|
253
|
+
obj = obj.default;
|
|
254
|
+
}
|
|
154
255
|
}
|
|
155
256
|
debug('[importModule] return %o => %o', filepath, obj);
|
|
156
257
|
return obj;
|