@umijs/mfsu 4.0.0-beta.8 → 4.0.0-canary-20240513.3
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/compiled/is-absolute-url/LICENSE +9 -0
- package/compiled/is-absolute-url/index.d.ts +20 -0
- package/compiled/is-absolute-url/index.js +1 -0
- package/compiled/is-absolute-url/package.json +1 -0
- package/compiled/mrmime/package.json +1 -1
- package/compiled/webpack-virtual-modules/index.js +1 -1
- package/compiled/webpack-virtual-modules/package.json +1 -1
- package/dist/babelPlugins/awaitImport/MFImport.d.ts +24 -0
- package/dist/babelPlugins/awaitImport/MFImport.js +66 -0
- package/dist/babelPlugins/awaitImport/awaitImport.d.ts +1 -1
- package/dist/babelPlugins/awaitImport/awaitImport.js +111 -112
- package/dist/babelPlugins/awaitImport/checkMatch.d.ts +3 -1
- package/dist/babelPlugins/awaitImport/checkMatch.js +166 -109
- package/dist/babelPlugins/awaitImport/getAliasedPath.d.ts +2 -2
- package/dist/babelPlugins/awaitImport/getAliasedPath.js +44 -33
- package/dist/babelPlugins/awaitImport/getRealPath.js +42 -21
- package/dist/babelPlugins/awaitImport/isExternals.js +55 -26
- package/dist/babelPlugins/awaitImport/parseSpecifiers.js +62 -47
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +50 -10
- package/dist/dep/dep.d.ts +11 -4
- package/dist/dep/dep.js +118 -80
- package/dist/dep/getCJSExports.js +83 -47
- package/dist/dep/getExposeFromContent.d.ts +0 -1
- package/dist/dep/getExposeFromContent.js +99 -74
- package/dist/dep/getModuleExports.js +58 -43
- package/dist/depBuilder/depBuilder.d.ts +6 -2
- package/dist/depBuilder/depBuilder.js +222 -158
- package/dist/depBuilder/getESBuildEntry.d.ts +1 -1
- package/dist/depBuilder/getESBuildEntry.js +50 -14
- package/dist/depInfo.d.ts +20 -6
- package/dist/depInfo.js +90 -39
- package/dist/esbuildHandlers/autoCssModules.d.ts +2 -0
- package/dist/esbuildHandlers/autoCssModules.js +48 -0
- package/dist/esbuildHandlers/awaitImport/index.d.ts +15 -0
- package/dist/esbuildHandlers/awaitImport/index.js +86 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +35 -13
- package/dist/loader/esbuild.d.ts +5 -0
- package/dist/loader/esbuild.js +79 -0
- package/dist/mfsu/mfsu.d.ts +69 -0
- package/dist/mfsu/mfsu.js +319 -0
- package/dist/mfsu/strategyCompileTime.d.ts +20 -0
- package/dist/mfsu/strategyCompileTime.js +142 -0
- package/dist/mfsu/strategyStaticAnalyze.d.ts +24 -0
- package/dist/mfsu/strategyStaticAnalyze.js +196 -0
- package/dist/moduleGraph.d.ts +6 -9
- package/dist/moduleGraph.js +228 -178
- package/dist/staticDepInfo/importParser.d.ts +4 -0
- package/dist/staticDepInfo/importParser.js +28 -0
- package/dist/staticDepInfo/simulations/babel-plugin-import.d.ts +15 -0
- package/dist/staticDepInfo/simulations/babel-plugin-import.js +118 -0
- package/dist/staticDepInfo/staticDepInfo.d.ts +61 -0
- package/dist/staticDepInfo/staticDepInfo.js +274 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.js +33 -8
- package/dist/utils/makeArray.js +29 -5
- package/dist/utils/resolveUtils.d.ts +1 -0
- package/dist/utils/resolveUtils.js +104 -0
- package/dist/utils/trimFileContent.js +29 -5
- package/dist/utils/webpackUtils.d.ts +3 -0
- package/dist/utils/webpackUtils.js +80 -0
- package/dist/webpackPlugins/buildDepPlugin.d.ts +4 -3
- package/dist/webpackPlugins/buildDepPlugin.js +61 -17
- package/dist/webpackPlugins/depChunkIdPrefixPlugin.d.ts +1 -1
- package/dist/webpackPlugins/depChunkIdPrefixPlugin.js +47 -19
- package/dist/webpackPlugins/stripSourceMapUrlPlugin.js +55 -27
- package/dist/webpackPlugins/writeCachePlugin.js +45 -15
- package/package.json +32 -28
- package/vendors/importParser/_importParser.js +683 -0
- package/vendors/importParser/importParser.jison +105 -0
- package/dist/babelPlugins/autoExport.d.ts +0 -7
- package/dist/babelPlugins/autoExport.d.ts.map +0 -1
- package/dist/babelPlugins/autoExport.js +0 -61
- package/dist/babelPlugins/awaitImport/awaitImport.d.ts.map +0 -1
- package/dist/babelPlugins/awaitImport/checkMatch.d.ts.map +0 -1
- package/dist/babelPlugins/awaitImport/getAliasedPath.d.ts.map +0 -1
- package/dist/babelPlugins/awaitImport/getRealPath.d.ts.map +0 -1
- package/dist/babelPlugins/awaitImport/isExternals.d.ts.map +0 -1
- package/dist/babelPlugins/awaitImport/parseSpecifiers.d.ts.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/dep/dep.d.ts.map +0 -1
- package/dist/dep/getCJSExports.d.ts.map +0 -1
- package/dist/dep/getExposeFromContent.d.ts.map +0 -1
- package/dist/dep/getModuleExports.d.ts.map +0 -1
- package/dist/depBuilder/depBuilder.d.ts.map +0 -1
- package/dist/depBuilder/getESBuildEntry.d.ts.map +0 -1
- package/dist/depInfo.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mfsu.d.ts +0 -55
- package/dist/mfsu.d.ts.map +0 -1
- package/dist/mfsu.js +0 -173
- package/dist/moduleGraph.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/makeArray.d.ts.map +0 -1
- package/dist/utils/trimFileContent.d.ts.map +0 -1
- package/dist/webpackPlugins/buildDepPlugin.d.ts.map +0 -1
- package/dist/webpackPlugins/depChunkIdPrefixPlugin.d.ts.map +0 -1
- package/dist/webpackPlugins/stripSourceMapUrlPlugin.d.ts.map +0 -1
- package/dist/webpackPlugins/writeCachePlugin.d.ts.map +0 -1
package/dist/moduleGraph.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DepModule } from './depInfo';
|
|
1
2
|
declare class ModuleNode {
|
|
2
3
|
file: string;
|
|
3
4
|
importers: Set<ModuleNode>;
|
|
@@ -15,10 +16,7 @@ interface IDep {
|
|
|
15
16
|
export declare class ModuleGraph {
|
|
16
17
|
fileToModules: Map<string, ModuleNode>;
|
|
17
18
|
depToModules: Map<string, ModuleNode>;
|
|
18
|
-
depSnapshotModules: Record<string,
|
|
19
|
-
file: string;
|
|
20
|
-
version: string;
|
|
21
|
-
}>;
|
|
19
|
+
depSnapshotModules: Record<string, DepModule>;
|
|
22
20
|
rootModules: Set<ModuleNode>;
|
|
23
21
|
constructor();
|
|
24
22
|
restore(data: {
|
|
@@ -30,15 +28,13 @@ export declare class ModuleGraph {
|
|
|
30
28
|
toJSON(): {
|
|
31
29
|
roots: string[];
|
|
32
30
|
fileModules: Record<string, {
|
|
33
|
-
|
|
31
|
+
importedModules: string[];
|
|
32
|
+
isRoot?: boolean | undefined;
|
|
34
33
|
}>;
|
|
35
34
|
depModules: Record<string, {
|
|
36
35
|
version: string | null;
|
|
37
36
|
}>;
|
|
38
|
-
depSnapshotModules: Record<string,
|
|
39
|
-
file: string;
|
|
40
|
-
version: string;
|
|
41
|
-
}>;
|
|
37
|
+
depSnapshotModules: Record<string, DepModule>;
|
|
42
38
|
};
|
|
43
39
|
snapshotDeps(): void;
|
|
44
40
|
getDepsInfo(mods: Map<string, ModuleNode>): Record<string, {
|
|
@@ -48,6 +44,7 @@ export declare class ModuleGraph {
|
|
|
48
44
|
getDepInfo(mod: ModuleNode): {
|
|
49
45
|
file: string;
|
|
50
46
|
version: string;
|
|
47
|
+
importer: string;
|
|
51
48
|
};
|
|
52
49
|
hasDepChanged(): boolean;
|
|
53
50
|
onFileChange(opts: {
|
package/dist/moduleGraph.js
CHANGED
|
@@ -1,189 +1,239 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/moduleGraph.ts
|
|
20
|
+
var moduleGraph_exports = {};
|
|
21
|
+
__export(moduleGraph_exports, {
|
|
22
|
+
ModuleGraph: () => ModuleGraph
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(moduleGraph_exports);
|
|
25
|
+
var ModuleNode = class {
|
|
26
|
+
constructor(file) {
|
|
27
|
+
this.importers = /* @__PURE__ */ new Set();
|
|
28
|
+
this.importedModules = /* @__PURE__ */ new Set();
|
|
29
|
+
this.isDependency = false;
|
|
30
|
+
this.isRoot = false;
|
|
31
|
+
this.version = null;
|
|
32
|
+
this.file = file;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var ModuleGraph = class {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.fileToModules = /* @__PURE__ */ new Map();
|
|
38
|
+
this.depToModules = /* @__PURE__ */ new Map();
|
|
39
|
+
this.depSnapshotModules = {};
|
|
40
|
+
this.rootModules = /* @__PURE__ */ new Set();
|
|
41
|
+
}
|
|
42
|
+
restore(data) {
|
|
43
|
+
const getModuleNode = (file) => {
|
|
44
|
+
if (this.fileToModules.has(file)) {
|
|
45
|
+
return this.fileToModules.get(file);
|
|
46
|
+
}
|
|
47
|
+
if (this.depToModules.has(file)) {
|
|
48
|
+
return this.depToModules.get(file);
|
|
49
|
+
}
|
|
50
|
+
const mod = new ModuleNode(file);
|
|
51
|
+
return mod;
|
|
52
|
+
};
|
|
53
|
+
const addNode = ({ file, importer }) => {
|
|
54
|
+
const mod = getModuleNode(file);
|
|
55
|
+
let isDependency = false;
|
|
56
|
+
let info;
|
|
57
|
+
if (data.fileModules[file]) {
|
|
58
|
+
info = data.fileModules[file];
|
|
59
|
+
} else if (data.depModules[file]) {
|
|
60
|
+
info = data.depModules[file];
|
|
61
|
+
isDependency = true;
|
|
62
|
+
}
|
|
63
|
+
if (info.isRoot)
|
|
64
|
+
mod.isRoot = true;
|
|
65
|
+
if (importer) {
|
|
66
|
+
mod.importers.add(importer);
|
|
67
|
+
if (!importer.importedModules.has(mod)) {
|
|
68
|
+
importer.importedModules.add(mod);
|
|
69
|
+
} else {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
mod.isDependency = isDependency;
|
|
74
|
+
if (info.version !== void 0) {
|
|
75
|
+
mod.version = info.version;
|
|
76
|
+
}
|
|
77
|
+
if (isDependency) {
|
|
78
|
+
this.depToModules.set(file, mod);
|
|
79
|
+
} else {
|
|
80
|
+
this.fileToModules.set(file, mod);
|
|
81
|
+
for (const importedModule of info.importedModules) {
|
|
82
|
+
addNode({ file: importedModule, importer: mod });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
for (const root of data.roots) {
|
|
87
|
+
addNode({ file: root });
|
|
13
88
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
89
|
+
this.depSnapshotModules = data.depSnapshotModules;
|
|
90
|
+
}
|
|
91
|
+
toJSON() {
|
|
92
|
+
const roots = [];
|
|
93
|
+
const fileModules = {};
|
|
94
|
+
const depModules = {};
|
|
95
|
+
this.depToModules.forEach((value, key) => {
|
|
96
|
+
depModules[key] = {
|
|
97
|
+
version: value.version
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
this.fileToModules.forEach((value, key) => {
|
|
101
|
+
fileModules[key] = {
|
|
102
|
+
importedModules: Array.from(value.importedModules).map(
|
|
103
|
+
(item) => item.file
|
|
104
|
+
)
|
|
105
|
+
};
|
|
106
|
+
if (value.isRoot) {
|
|
107
|
+
fileModules[key].isRoot = true;
|
|
108
|
+
roots.push(key);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
roots,
|
|
113
|
+
fileModules,
|
|
114
|
+
depModules,
|
|
115
|
+
depSnapshotModules: this.depSnapshotModules
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
snapshotDeps() {
|
|
119
|
+
this.depSnapshotModules = this.getDepsInfo(this.depToModules);
|
|
120
|
+
}
|
|
121
|
+
getDepsInfo(mods) {
|
|
122
|
+
return Array.from(mods.keys()).reduce((memo, key) => {
|
|
123
|
+
memo[key] = this.getDepInfo(mods.get(key));
|
|
124
|
+
return memo;
|
|
125
|
+
}, {});
|
|
126
|
+
}
|
|
127
|
+
getDepInfo(mod) {
|
|
128
|
+
const [importer] = mod.importers;
|
|
129
|
+
return {
|
|
130
|
+
file: mod.file,
|
|
131
|
+
version: mod.version,
|
|
132
|
+
importer: importer == null ? void 0 : importer.file
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
hasDepChanged() {
|
|
136
|
+
const depModulesInfo = this.getDepsInfo(this.depToModules);
|
|
137
|
+
const depKeys = Object.keys(depModulesInfo);
|
|
138
|
+
const snapshotKeys = Object.keys(this.depSnapshotModules);
|
|
139
|
+
if (depKeys.length !== snapshotKeys.length) {
|
|
140
|
+
return true;
|
|
21
141
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
info = data.depModules[file];
|
|
32
|
-
isDependency = true;
|
|
33
|
-
}
|
|
34
|
-
if (info.isRoot)
|
|
35
|
-
mod.isRoot = true;
|
|
36
|
-
if (importer)
|
|
37
|
-
mod.importers.add(importer);
|
|
38
|
-
mod.isDependency = isDependency;
|
|
39
|
-
if (info.version !== undefined) {
|
|
40
|
-
mod.version = info.version;
|
|
41
|
-
}
|
|
42
|
-
if (isDependency) {
|
|
43
|
-
this.depToModules.set(file, mod);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
for (const importedModule of info.importedModules) {
|
|
47
|
-
addNode({ file: importedModule, importer: mod });
|
|
48
|
-
}
|
|
49
|
-
this.fileToModules.set(file, mod);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
for (const root of data.roots) {
|
|
53
|
-
addNode({ file: root });
|
|
54
|
-
}
|
|
55
|
-
this.depSnapshotModules = data.depSnapshotModules;
|
|
142
|
+
for (const k of depKeys) {
|
|
143
|
+
const dep = depModulesInfo[k];
|
|
144
|
+
const snapshot = this.depSnapshotModules[k];
|
|
145
|
+
if (dep.file !== (snapshot == null ? void 0 : snapshot.file)) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
if (dep.version !== (snapshot == null ? void 0 : snapshot.version)) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
56
151
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
onFileChange(opts) {
|
|
155
|
+
if (this.fileToModules.has(opts.file)) {
|
|
156
|
+
const mod = this.fileToModules.get(opts.file);
|
|
157
|
+
this.updateModule({
|
|
158
|
+
mod,
|
|
159
|
+
deps: opts.deps
|
|
160
|
+
});
|
|
161
|
+
} else {
|
|
162
|
+
const mod = new ModuleNode(opts.file);
|
|
163
|
+
mod.isRoot = true;
|
|
164
|
+
this.fileToModules.set(opts.file, mod);
|
|
165
|
+
this.rootModules.add(mod);
|
|
166
|
+
opts.deps.forEach((dep) => {
|
|
167
|
+
this.addNode({
|
|
168
|
+
file: dep.file,
|
|
169
|
+
isDependency: dep.isDependency,
|
|
170
|
+
version: dep.version || null,
|
|
171
|
+
importer: mod
|
|
65
172
|
});
|
|
66
|
-
|
|
67
|
-
fileModules[key] = {
|
|
68
|
-
importModules: Array.from(value.importedModules).map((item) => item.file),
|
|
69
|
-
};
|
|
70
|
-
if (value.isRoot) {
|
|
71
|
-
roots.push(key);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
return {
|
|
75
|
-
roots,
|
|
76
|
-
fileModules,
|
|
77
|
-
depModules,
|
|
78
|
-
depSnapshotModules: this.depSnapshotModules,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
snapshotDeps() {
|
|
82
|
-
this.depSnapshotModules = this.getDepsInfo(this.depToModules);
|
|
173
|
+
});
|
|
83
174
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
175
|
+
}
|
|
176
|
+
updateModule(opts) {
|
|
177
|
+
const importedModulesMap = Array.from(opts.mod.importedModules).reduce((memo, mod) => {
|
|
178
|
+
memo[mod.file] = mod;
|
|
179
|
+
return memo;
|
|
180
|
+
}, {});
|
|
181
|
+
const newDeps = [];
|
|
182
|
+
for (const dep of opts.deps) {
|
|
183
|
+
if (importedModulesMap[dep.file]) {
|
|
184
|
+
if (dep.version !== void 0) {
|
|
185
|
+
importedModulesMap[dep.file].version = dep.version;
|
|
186
|
+
}
|
|
187
|
+
delete importedModulesMap[dep.file];
|
|
188
|
+
} else {
|
|
189
|
+
newDeps.push(dep);
|
|
190
|
+
}
|
|
89
191
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
192
|
+
Object.keys(importedModulesMap).forEach((key) => {
|
|
193
|
+
this.deleteNode({ mod: importedModulesMap[key], importer: opts.mod });
|
|
194
|
+
});
|
|
195
|
+
newDeps.forEach((dep) => {
|
|
196
|
+
this.addNode({ ...dep, importer: opts.mod });
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
addNode(opts) {
|
|
200
|
+
const modules = opts.isDependency ? this.depToModules : this.fileToModules;
|
|
201
|
+
let mod;
|
|
202
|
+
if (modules.has(opts.file)) {
|
|
203
|
+
mod = modules.get(opts.file);
|
|
204
|
+
if (opts.version !== void 0)
|
|
205
|
+
mod.version = opts.version;
|
|
206
|
+
} else {
|
|
207
|
+
mod = new ModuleNode(opts.file);
|
|
208
|
+
mod.isDependency = opts.isDependency;
|
|
209
|
+
if (opts.version !== void 0)
|
|
210
|
+
mod.version = opts.version;
|
|
211
|
+
modules.set(opts.file, mod);
|
|
95
212
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return !utils_1.lodash.isEqual(depModulesInfo, this.depSnapshotModules);
|
|
213
|
+
if (!mod.importers.has(opts.importer)) {
|
|
214
|
+
mod.importers.add(opts.importer);
|
|
99
215
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const mod = this.fileToModules.get(opts.file);
|
|
103
|
-
this.updateModule({
|
|
104
|
-
mod,
|
|
105
|
-
deps: opts.deps,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
const mod = new ModuleNode(opts.file);
|
|
110
|
-
mod.isRoot = true;
|
|
111
|
-
this.fileToModules.set(opts.file, mod);
|
|
112
|
-
this.rootModules.add(mod);
|
|
113
|
-
opts.deps.forEach((dep) => {
|
|
114
|
-
this.addNode({
|
|
115
|
-
file: dep.file,
|
|
116
|
-
isDependency: dep.isDependency,
|
|
117
|
-
version: dep.version || null,
|
|
118
|
-
importer: mod,
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
216
|
+
if (!opts.importer.importedModules.has(mod)) {
|
|
217
|
+
opts.importer.importedModules.add(mod);
|
|
122
218
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
delete importedModulesMap[dep.file];
|
|
136
|
-
}
|
|
137
|
-
// add
|
|
138
|
-
else {
|
|
139
|
-
newDeps.push(dep);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
Object.keys(importedModulesMap).forEach((key) => {
|
|
143
|
-
this.deleteNode({ mod: importedModulesMap[key], importer: opts.mod });
|
|
219
|
+
}
|
|
220
|
+
deleteNode(opts) {
|
|
221
|
+
const modules = opts.mod.isDependency ? this.depToModules : this.fileToModules;
|
|
222
|
+
const { mod, importer } = opts;
|
|
223
|
+
mod.importers.delete(opts.importer);
|
|
224
|
+
importer.importedModules.delete(mod);
|
|
225
|
+
if (!mod.importers.size) {
|
|
226
|
+
modules.delete(opts.mod.file);
|
|
227
|
+
mod.importedModules.forEach((importedModule) => {
|
|
228
|
+
this.deleteNode({
|
|
229
|
+
mod: importedModule,
|
|
230
|
+
importer: mod
|
|
144
231
|
});
|
|
145
|
-
|
|
146
|
-
this.addNode(Object.assign(Object.assign({}, dep), { importer: opts.mod }));
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
addNode(opts) {
|
|
150
|
-
const modules = opts.isDependency ? this.depToModules : this.fileToModules;
|
|
151
|
-
let mod;
|
|
152
|
-
if (modules.has(opts.file)) {
|
|
153
|
-
mod = modules.get(opts.file);
|
|
154
|
-
if (opts.version !== undefined)
|
|
155
|
-
mod.version = opts.version;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
mod = new ModuleNode(opts.file);
|
|
159
|
-
mod.isDependency = opts.isDependency;
|
|
160
|
-
if (opts.version !== undefined)
|
|
161
|
-
mod.version = opts.version;
|
|
162
|
-
modules.set(opts.file, mod);
|
|
163
|
-
}
|
|
164
|
-
if (!mod.importers.has(opts.importer)) {
|
|
165
|
-
mod.importers.add(opts.importer);
|
|
166
|
-
}
|
|
167
|
-
if (!opts.importer.importedModules.has(mod)) {
|
|
168
|
-
opts.importer.importedModules.add(mod);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
deleteNode(opts) {
|
|
172
|
-
const modules = opts.mod.isDependency
|
|
173
|
-
? this.depToModules
|
|
174
|
-
: this.fileToModules;
|
|
175
|
-
const { mod, importer } = opts;
|
|
176
|
-
mod.importers.delete(opts.importer);
|
|
177
|
-
importer.importedModules.delete(mod);
|
|
178
|
-
if (!mod.importers.size) {
|
|
179
|
-
modules.delete(opts.mod.file);
|
|
180
|
-
mod.importedModules.forEach((importedModule) => {
|
|
181
|
-
this.deleteNode({
|
|
182
|
-
mod: importedModule,
|
|
183
|
-
importer: mod,
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
}
|
|
232
|
+
});
|
|
187
233
|
}
|
|
188
|
-
}
|
|
189
|
-
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
237
|
+
0 && (module.exports = {
|
|
238
|
+
ModuleGraph
|
|
239
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/staticDepInfo/importParser.ts
|
|
20
|
+
var importParser_exports = {};
|
|
21
|
+
__export(importParser_exports, {
|
|
22
|
+
default: () => parse
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(importParser_exports);
|
|
25
|
+
var import_importParser = require("../../vendors/importParser/_importParser.js");
|
|
26
|
+
function parse(code) {
|
|
27
|
+
return (0, import_importParser.parse)(code);
|
|
28
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ImportSpecifier } from '@umijs/bundler-utils/compiled/es-module-lexer';
|
|
2
|
+
import type { Match } from '../staticDepInfo';
|
|
3
|
+
export default function createHandle(importOptions: {
|
|
4
|
+
libraryName: string;
|
|
5
|
+
libraryDirectory: string;
|
|
6
|
+
style: boolean | string;
|
|
7
|
+
camel2UnderlineComponentName?: boolean;
|
|
8
|
+
camel2DashComponentName?: boolean;
|
|
9
|
+
}): (opts: {
|
|
10
|
+
rawCode: string;
|
|
11
|
+
imports: ImportSpecifier[];
|
|
12
|
+
mfName: string;
|
|
13
|
+
alias: Record<string, string>;
|
|
14
|
+
pathToVersion(p: string): string;
|
|
15
|
+
}) => Match[];
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/staticDepInfo/simulations/babel-plugin-import.ts
|
|
30
|
+
var babel_plugin_import_exports = {};
|
|
31
|
+
__export(babel_plugin_import_exports, {
|
|
32
|
+
default: () => createHandle
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(babel_plugin_import_exports);
|
|
35
|
+
var import_utils = require("@umijs/utils");
|
|
36
|
+
var import_path = require("path");
|
|
37
|
+
var import_getAliasedPath = require("../../babelPlugins/awaitImport/getAliasedPath");
|
|
38
|
+
var import_importParser = __toESM(require("../importParser"));
|
|
39
|
+
function createHandle(importOptions) {
|
|
40
|
+
const { libraryName, libraryDirectory } = importOptions;
|
|
41
|
+
const useUnderline = importOptions.camel2UnderlineComponentName;
|
|
42
|
+
const useDash = importOptions.camel2DashComponentName ?? true;
|
|
43
|
+
const transformName = useUnderline ? (n) => transCamel(n, "_") : useDash ? (n) => transCamel(n, "-") : (n) => n;
|
|
44
|
+
const stylePathFromCompPath = importOptions.style === "css" ? (compFsPath) => (0, import_utils.winPath)((0, import_path.join)(compFsPath, "style/css")) : (compFsPath) => (0, import_utils.winPath)((0, import_path.join)(compFsPath, "style"));
|
|
45
|
+
return function handleImports(opts) {
|
|
46
|
+
const { imports, rawCode } = opts;
|
|
47
|
+
if ((imports == null ? void 0 : imports.length) > 0) {
|
|
48
|
+
let addToMatches = function(moduleFsPath) {
|
|
49
|
+
const unAliasedModulePath = (0, import_getAliasedPath.getAliasedPathWithLoopDetect)({
|
|
50
|
+
value: (0, import_utils.winPath)(moduleFsPath),
|
|
51
|
+
alias: opts.alias
|
|
52
|
+
});
|
|
53
|
+
retMatched.push({
|
|
54
|
+
isMatch: true,
|
|
55
|
+
value: unAliasedModulePath,
|
|
56
|
+
replaceValue: `${mfName}/${(0, import_utils.winPath)(unAliasedModulePath)}`,
|
|
57
|
+
version
|
|
58
|
+
});
|
|
59
|
+
const unAliasedStylePath = (0, import_getAliasedPath.getAliasedPathWithLoopDetect)({
|
|
60
|
+
value: stylePathFromCompPath(moduleFsPath),
|
|
61
|
+
alias: opts.alias
|
|
62
|
+
});
|
|
63
|
+
retMatched.push({
|
|
64
|
+
isMatch: true,
|
|
65
|
+
value: unAliasedStylePath,
|
|
66
|
+
replaceValue: `${mfName}/${(0, import_utils.winPath)(unAliasedStylePath)}`,
|
|
67
|
+
version
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const version = opts.pathToVersion(libraryName);
|
|
71
|
+
const importSnippets = imports.map(({ ss, se }) => {
|
|
72
|
+
return rawCode.slice(ss, se + 1);
|
|
73
|
+
}).join("\n");
|
|
74
|
+
const retMatched = [];
|
|
75
|
+
const parsedImports = (0, import_importParser.default)(importSnippets);
|
|
76
|
+
const importedVariable = /* @__PURE__ */ new Set();
|
|
77
|
+
for (const i of parsedImports) {
|
|
78
|
+
i.imports.forEach((v) => {
|
|
79
|
+
if (v === "*") {
|
|
80
|
+
errorLogForSpaceImport(libraryName);
|
|
81
|
+
}
|
|
82
|
+
importedVariable.add(v);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
const mfName = opts.mfName;
|
|
86
|
+
for (const v of importedVariable.entries()) {
|
|
87
|
+
const importVariableName = v[0];
|
|
88
|
+
if (importVariableName === "default") {
|
|
89
|
+
addToMatches((0, import_path.join)(libraryName, libraryDirectory));
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const transformedName = transformName(importVariableName);
|
|
93
|
+
const importFsPath = (0, import_path.join)(
|
|
94
|
+
libraryName,
|
|
95
|
+
libraryDirectory,
|
|
96
|
+
transformedName
|
|
97
|
+
);
|
|
98
|
+
addToMatches(importFsPath);
|
|
99
|
+
}
|
|
100
|
+
return retMatched;
|
|
101
|
+
}
|
|
102
|
+
return [];
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function transCamel(_str, symbol) {
|
|
106
|
+
const str = _str[0].toLowerCase() + _str.substr(1);
|
|
107
|
+
return str.replace(/([A-Z])/g, ($1) => `${symbol}${$1.toLowerCase()}`);
|
|
108
|
+
}
|
|
109
|
+
function errorLogForSpaceImport(libraryName) {
|
|
110
|
+
import_utils.logger.error(
|
|
111
|
+
`"import * as ant from 'antd'" or "export * from '${libraryName}'" are not allowed in mfsu#strategy='eager'`
|
|
112
|
+
);
|
|
113
|
+
import_utils.logger.error(`solutions:`);
|
|
114
|
+
import_utils.logger.error(` change to "import { Xxx } from '${libraryName}'" or`);
|
|
115
|
+
import_utils.logger.error(` "export { Xxx } from '${libraryName}'" syntax`);
|
|
116
|
+
import_utils.logger.error(` or use mfsu#strategy='normal' configuration`);
|
|
117
|
+
throw Error(`"import * as ant from 'antd'" not allowed in mfsu#version=4`);
|
|
118
|
+
}
|