@empjs/share 3.9.3 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter.cjs +143 -1
- package/dist/adapter.cjs.map +1 -1
- package/dist/adapter.d.cts +3 -3
- package/dist/adapter.d.ts +3 -3
- package/dist/adapter.js +115 -1
- package/dist/adapter.js.map +1 -1
- package/dist/adapterVue.cjs +107 -1
- package/dist/adapterVue.cjs.map +1 -1
- package/dist/adapterVue.js +82 -1
- package/dist/adapterVue.js.map +1 -1
- package/dist/{index-DxEb4EPT.d.cts → index-Db0Os_5A.d.cts} +2 -2
- package/dist/{index-DxEb4EPT.d.ts → index-Db0Os_5A.d.ts} +2 -2
- package/dist/index.cjs +413 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +384 -2
- package/dist/index.js.map +1 -1
- package/dist/mfRuntime.cjs +25 -0
- package/dist/mfRuntime.cjs.map +1 -0
- package/dist/mfRuntime.d.cts +1 -0
- package/dist/mfRuntime.d.ts +1 -0
- package/dist/mfRuntime.js +3 -0
- package/dist/mfRuntime.js.map +1 -0
- package/dist/rspack.cjs +410 -2
- package/dist/rspack.cjs.map +1 -1
- package/dist/rspack.d.cts +1 -1
- package/dist/rspack.d.ts +1 -1
- package/dist/rspack.js +381 -2
- package/dist/rspack.js.map +1 -1
- package/dist/runtime.cjs +106 -1
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +9 -12
- package/dist/runtime.d.ts +9 -12
- package/dist/runtime.js +79 -1
- package/dist/runtime.js.map +1 -1
- package/output/sdk.d.ts +3 -3
- package/output/sdk.js +5750 -1
- package/output/sdk.js.map +1 -1
- package/package.json +19 -7
package/dist/rspack.js
CHANGED
|
@@ -1,3 +1,382 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// src/helper/index.ts
|
|
2
|
+
var importJsVm = (content) => `data:text/javascript,${content}`;
|
|
3
|
+
function deepAssign(target, ...sources) {
|
|
4
|
+
for (const source of sources) {
|
|
5
|
+
for (const k in source) {
|
|
6
|
+
const vs = source[k], vt = target[k];
|
|
7
|
+
if (Object(vs) == vs && Object(vt) === vt) {
|
|
8
|
+
target[k] = deepAssign(vt, vs);
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
target[k] = source[k];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return target;
|
|
15
|
+
}
|
|
16
|
+
var isDev = true;
|
|
17
|
+
var log = isDev ? console.log.bind(console, "[EMP Share]") : () => {
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// src/helper/config.ts
|
|
21
|
+
var shareGlobalName = "EMP_SHARE_RUNTIME";
|
|
22
|
+
|
|
23
|
+
// src/helper/rspack.ts
|
|
24
|
+
import { ModuleFederationPlugin } from "@module-federation/rspack";
|
|
25
|
+
|
|
26
|
+
// src/plugins/rspack/plugin.ts
|
|
27
|
+
var getShareRuntimeEntry = (url) => {
|
|
28
|
+
const content = [`import '${url}'`].join("\n");
|
|
29
|
+
return importJsVm(content);
|
|
30
|
+
};
|
|
31
|
+
var EmpShareRemoteLibPlugin = class {
|
|
32
|
+
options;
|
|
33
|
+
constructor(op) {
|
|
34
|
+
this.options = op;
|
|
35
|
+
}
|
|
36
|
+
apply(compiler) {
|
|
37
|
+
const { webpack } = compiler;
|
|
38
|
+
const entry = getShareRuntimeEntry("@empjs/share/library");
|
|
39
|
+
new webpack.EntryPlugin(compiler.context, entry, {
|
|
40
|
+
name: void 0
|
|
41
|
+
}).apply(compiler);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// src/plugins/rspack/utils.ts
|
|
46
|
+
function getRuntimeLib(host, mode, entry = "runtime") {
|
|
47
|
+
if (typeof host === "string") {
|
|
48
|
+
if (entry === "runtime") {
|
|
49
|
+
return `${host}/runtime${mode === "development" ? ".development" : ""}.umd.js`;
|
|
50
|
+
} else {
|
|
51
|
+
return `${host}/${entry}.${mode}.umd.js`;
|
|
52
|
+
}
|
|
53
|
+
} else if (typeof host === "object") {
|
|
54
|
+
if (mode === "development") return host.dev;
|
|
55
|
+
else return host.prod;
|
|
56
|
+
}
|
|
57
|
+
return "";
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// src/plugins/rspack/share.ts
|
|
61
|
+
var exp = /^([0-9a-zA-Z_\s]+)@(.*)/;
|
|
62
|
+
var EmpShare = class {
|
|
63
|
+
op;
|
|
64
|
+
store;
|
|
65
|
+
/**
|
|
66
|
+
* 注入资源
|
|
67
|
+
*/
|
|
68
|
+
injectHtml = [];
|
|
69
|
+
/**
|
|
70
|
+
* 兼容 shareLib
|
|
71
|
+
*/
|
|
72
|
+
externalsLib = [];
|
|
73
|
+
constructor(op, store) {
|
|
74
|
+
this.op = op || {};
|
|
75
|
+
this.store = store;
|
|
76
|
+
}
|
|
77
|
+
setup() {
|
|
78
|
+
this.resetRuntime();
|
|
79
|
+
this.resetFramework();
|
|
80
|
+
this.setMfName();
|
|
81
|
+
this.setMF();
|
|
82
|
+
this.injectGlobalVal();
|
|
83
|
+
this.injectFramework();
|
|
84
|
+
this.setShareLib();
|
|
85
|
+
this.setRuntimeLib();
|
|
86
|
+
this.injectToHtml();
|
|
87
|
+
this.setExternal();
|
|
88
|
+
}
|
|
89
|
+
injectToHtml() {
|
|
90
|
+
const { store, injectHtml } = this;
|
|
91
|
+
if (injectHtml.length > 0) {
|
|
92
|
+
store.injectTags(injectHtml, "EMPShare");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
injectFramework() {
|
|
96
|
+
if (this.fk && this.fk.libs.length > 0) {
|
|
97
|
+
return this.injectFkLibs(this.fk.libs);
|
|
98
|
+
}
|
|
99
|
+
if (!this.op.empRuntime || !this.fk.lib) return;
|
|
100
|
+
const { store, injectHtml } = this;
|
|
101
|
+
if (this.fk.lib) {
|
|
102
|
+
const url = getRuntimeLib(this.fk.lib, store.mode, this.fk.entry);
|
|
103
|
+
injectHtml.push({
|
|
104
|
+
attributes: {
|
|
105
|
+
src: url
|
|
106
|
+
},
|
|
107
|
+
tagName: "script"
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
injectFkLibs(libs) {
|
|
112
|
+
libs.map((url) => {
|
|
113
|
+
if (url.endsWith(".css")) {
|
|
114
|
+
return this.injectHtml.push({
|
|
115
|
+
attributes: {
|
|
116
|
+
href: url,
|
|
117
|
+
rel: "stylesheet"
|
|
118
|
+
},
|
|
119
|
+
tagName: "link"
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
this.injectHtml.push({
|
|
123
|
+
attributes: {
|
|
124
|
+
src: url
|
|
125
|
+
},
|
|
126
|
+
tagName: "script"
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
injectGlobalVal() {
|
|
131
|
+
if (!this.op.empRuntime) return;
|
|
132
|
+
const { empRuntime } = this.op;
|
|
133
|
+
const { injectHtml } = this;
|
|
134
|
+
const frameworkGlobal = this.fk.global || (empRuntime.shareLib ? "window" : "");
|
|
135
|
+
const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false || !this.rt.lib ? false : true;
|
|
136
|
+
if (injectGlobalValToHtml) {
|
|
137
|
+
const injectData = { frameworkLib: frameworkGlobal, runtimeLib: this.rt.global };
|
|
138
|
+
if (this.fk.name && this.fk.name !== "none") injectData.framework = this.fk.name;
|
|
139
|
+
injectHtml.push({
|
|
140
|
+
// type: 'js',
|
|
141
|
+
tagName: "script",
|
|
142
|
+
innerHTML: `EMPShareGlobalVal=${JSON.stringify(injectData)}`
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
fk;
|
|
147
|
+
resetFramework() {
|
|
148
|
+
if (!this.op.empRuntime) return;
|
|
149
|
+
const { framework, frameworkGlobal, frameworkLib } = this.op.empRuntime;
|
|
150
|
+
this.fk = {
|
|
151
|
+
name: "none",
|
|
152
|
+
version: 0,
|
|
153
|
+
entry: "",
|
|
154
|
+
global: frameworkGlobal || "",
|
|
155
|
+
lib: frameworkLib || "",
|
|
156
|
+
libs: []
|
|
157
|
+
};
|
|
158
|
+
if (typeof framework === "string") {
|
|
159
|
+
this.fk.name = framework;
|
|
160
|
+
} else if (typeof framework === "object" && Object.keys(framework).length > 0) {
|
|
161
|
+
framework.entry = framework.entry ? framework.entry : framework.name;
|
|
162
|
+
this.fk = deepAssign(this.fk, framework);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
rt;
|
|
166
|
+
resetRuntime() {
|
|
167
|
+
const { empRuntime } = this.op;
|
|
168
|
+
if (!empRuntime) return;
|
|
169
|
+
const global = empRuntime.runtimeGlobal || shareGlobalName;
|
|
170
|
+
const lib = empRuntime.runtimeLib ? empRuntime.runtimeLib : empRuntime.runtime?.lib ? empRuntime.runtime.lib : "";
|
|
171
|
+
this.rt = {
|
|
172
|
+
lib,
|
|
173
|
+
global
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
setExternal() {
|
|
177
|
+
if (!this.op.empRuntime) return;
|
|
178
|
+
const { store, externalsLib } = this;
|
|
179
|
+
const { empRuntime } = this.op;
|
|
180
|
+
const { shareLib } = empRuntime;
|
|
181
|
+
const externalRuntime = this.rt.lib ? {
|
|
182
|
+
"@module-federation/runtime": `MFRuntime`,
|
|
183
|
+
"@module-federation/sdk": `MFSDK`
|
|
184
|
+
} : {};
|
|
185
|
+
const externals = {};
|
|
186
|
+
for (const [key, value] of Object.entries(externalRuntime)) {
|
|
187
|
+
externals[key] = `${this.rt.global}.${value}`;
|
|
188
|
+
}
|
|
189
|
+
if (this.fk.name === "react" && !shareLib && this.fk.global) {
|
|
190
|
+
const version = this.fk.version;
|
|
191
|
+
const externalReact2 = {
|
|
192
|
+
react: `React`,
|
|
193
|
+
"react-dom": `ReactDOM`
|
|
194
|
+
};
|
|
195
|
+
if (this.fk.entry === "reactRouter") {
|
|
196
|
+
externalReact2["react-router-dom"] = "ReactRouterDOM";
|
|
197
|
+
}
|
|
198
|
+
for (const [key, value] of Object.entries(externalReact2)) {
|
|
199
|
+
externals[key] = `${this.fk.global}.${value}`;
|
|
200
|
+
}
|
|
201
|
+
if ([17, 18, 19].includes(version)) {
|
|
202
|
+
externals["react-dom/client"] = this.fk.global;
|
|
203
|
+
externals["react/jsx-runtime"] = this.fk.global;
|
|
204
|
+
externals["react/jsx-dev-runtime"] = this.fk.global;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (shareLib) {
|
|
208
|
+
externalsLib.map((v) => {
|
|
209
|
+
if (v.type === "js" && v.module && v.global) {
|
|
210
|
+
externals[v.module] = `${this.fk.global}.${v.global}`;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
if (empRuntime.setExternals) empRuntime.setExternals(externals, this.fk.global, this.rt.global);
|
|
215
|
+
store.chain.merge({ externals });
|
|
216
|
+
}
|
|
217
|
+
setRuntimeLib() {
|
|
218
|
+
if (!this.op.empRuntime) return;
|
|
219
|
+
const { shareLib } = this.op.empRuntime;
|
|
220
|
+
const { store, injectHtml } = this;
|
|
221
|
+
const { empRuntime } = this.op;
|
|
222
|
+
if (!this.rt.lib) {
|
|
223
|
+
store.chain.plugin("plugin-emp-share-framework").use(EmpShareRemoteLibPlugin, [empRuntime]);
|
|
224
|
+
} else if (this.rt.lib === "useFrameworkLib" && !shareLib) {
|
|
225
|
+
} else {
|
|
226
|
+
injectHtml.push({ tagName: "script", pos: "head", attributes: { src: this.rt.lib } });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
setMfName() {
|
|
230
|
+
if (this.op.name) {
|
|
231
|
+
this.op.name = this.store.encodeVarName(this.op.name);
|
|
232
|
+
if (this.op.name !== this.store.empConfig.output.uniqueName) {
|
|
233
|
+
this.store.chain.output.set("uniqueName", this.op.name);
|
|
234
|
+
}
|
|
235
|
+
} else {
|
|
236
|
+
this.op.name = this.store.empConfig.output.uniqueName;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
setMF() {
|
|
240
|
+
const o = this.op;
|
|
241
|
+
const { store } = this;
|
|
242
|
+
if (o.name) {
|
|
243
|
+
const op = store.deepAssign(
|
|
244
|
+
{
|
|
245
|
+
filename: "emp.js",
|
|
246
|
+
manifest: false,
|
|
247
|
+
dts: false,
|
|
248
|
+
dev: {
|
|
249
|
+
disableDynamicRemoteTypeHints: true
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
o
|
|
253
|
+
);
|
|
254
|
+
if (o.dev === false) op.dev = false;
|
|
255
|
+
if (op.empRuntime) {
|
|
256
|
+
delete op.empRuntime;
|
|
257
|
+
}
|
|
258
|
+
store.chain.plugin("plugin-emp-share").use(ModuleFederationPlugin, [op]);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
setShareLib() {
|
|
262
|
+
if (!this.op.empRuntime) return;
|
|
263
|
+
const { shareLib } = this.op.empRuntime;
|
|
264
|
+
const { externalsLib, injectHtml } = this;
|
|
265
|
+
if (shareLib && typeof shareLib === "object") {
|
|
266
|
+
for (const [k, v] of Object.entries(shareLib)) {
|
|
267
|
+
let externalsItem = {};
|
|
268
|
+
externalsItem.module = k;
|
|
269
|
+
if (typeof v === "string") {
|
|
270
|
+
const cb = v.match(exp) || [];
|
|
271
|
+
if (cb.length > 0) {
|
|
272
|
+
externalsItem.global = cb[1];
|
|
273
|
+
externalsItem.entry = cb[2];
|
|
274
|
+
externalsItem.type = "js";
|
|
275
|
+
externalsLib.push(externalsItem);
|
|
276
|
+
externalsItem = {};
|
|
277
|
+
} else {
|
|
278
|
+
externalsItem.global = "";
|
|
279
|
+
externalsItem.entry = v;
|
|
280
|
+
externalsItem.type = "js";
|
|
281
|
+
externalsLib.push(externalsItem);
|
|
282
|
+
externalsItem = {};
|
|
283
|
+
}
|
|
284
|
+
} else if (Array.isArray(v)) {
|
|
285
|
+
v.map((vo) => {
|
|
286
|
+
if (!vo) return;
|
|
287
|
+
const isCSS = vo.split("?")[0].endsWith(".css");
|
|
288
|
+
if (isCSS) {
|
|
289
|
+
externalsItem.entry = vo;
|
|
290
|
+
externalsItem.type = "css";
|
|
291
|
+
} else {
|
|
292
|
+
const cb = vo.match(exp) || [];
|
|
293
|
+
if (cb.length > 0) {
|
|
294
|
+
externalsItem.global = cb[1];
|
|
295
|
+
externalsItem.entry = cb[2];
|
|
296
|
+
externalsItem.type = "js";
|
|
297
|
+
} else {
|
|
298
|
+
externalsItem.global = "";
|
|
299
|
+
externalsItem.entry = vo;
|
|
300
|
+
externalsItem.type = "js";
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
externalsLib.push(externalsItem);
|
|
304
|
+
externalsItem = {};
|
|
305
|
+
});
|
|
306
|
+
} else if (typeof v === "object" && v.entry) {
|
|
307
|
+
externalsItem.entry = v.entry;
|
|
308
|
+
externalsItem.global = v.global;
|
|
309
|
+
externalsItem.type = v.type;
|
|
310
|
+
externalsLib.push(externalsItem);
|
|
311
|
+
externalsItem = {};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
externalsLib.map((v) => {
|
|
315
|
+
if (v.type === "js") {
|
|
316
|
+
injectHtml.push({
|
|
317
|
+
attributes: {
|
|
318
|
+
src: v.entry
|
|
319
|
+
},
|
|
320
|
+
tagName: "script"
|
|
321
|
+
});
|
|
322
|
+
} else if (v.type === "css") {
|
|
323
|
+
injectHtml.push({
|
|
324
|
+
attributes: {
|
|
325
|
+
href: v.entry,
|
|
326
|
+
rel: "stylesheet"
|
|
327
|
+
},
|
|
328
|
+
tagName: "link"
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
// src/framework/react/config.ts
|
|
337
|
+
var externalReact = (o, globalVal) => {
|
|
338
|
+
o = Object.assign(o, {
|
|
339
|
+
react: `${globalVal}.React`,
|
|
340
|
+
"react-dom": `${globalVal}.ReactDOM`,
|
|
341
|
+
"react-dom/client": globalVal,
|
|
342
|
+
"react/jsx-runtime": globalVal,
|
|
343
|
+
"react/jsx-dev-runtime": globalVal,
|
|
344
|
+
"react-router-dom": `${globalVal}.ReactRouterDOM`
|
|
345
|
+
});
|
|
346
|
+
return o;
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
// src/framework/vue/config.ts
|
|
350
|
+
var externalVue = (o, globalVal) => {
|
|
351
|
+
o = Object.assign(o, {
|
|
352
|
+
vue: `${globalVal}.Vue`,
|
|
353
|
+
"vue-router": `${globalVal}.VueRouter`
|
|
354
|
+
});
|
|
355
|
+
return o;
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
// src/plugins/rspack/index.ts
|
|
359
|
+
var pluginRspackEmpShare = (o = {}) => {
|
|
360
|
+
return {
|
|
361
|
+
name: "@empjs/share",
|
|
362
|
+
async rsConfig(store) {
|
|
363
|
+
if (o.manifest === true) {
|
|
364
|
+
o.manifest = {
|
|
365
|
+
fileName: "emp.json"
|
|
366
|
+
};
|
|
367
|
+
} else if (typeof o.manifest === "object") {
|
|
368
|
+
o.manifest = store.deepAssign({ fileName: "emp.json" }, o.manifest);
|
|
369
|
+
}
|
|
370
|
+
const empShare = new EmpShare(o, store);
|
|
371
|
+
empShare.setup();
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
};
|
|
375
|
+
var rspack_default = pluginRspackEmpShare;
|
|
376
|
+
export {
|
|
377
|
+
rspack_default as default,
|
|
378
|
+
externalReact,
|
|
379
|
+
externalVue,
|
|
380
|
+
pluginRspackEmpShare
|
|
381
|
+
};
|
|
3
382
|
//# sourceMappingURL=rspack.js.map
|
package/dist/rspack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helper/index.ts","../src/helper/config.ts","../src/helper/rspack.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/utils.ts","../src/plugins/rspack/share.ts","../src/framework/react/config.ts","../src/framework/vue/config.ts","../src/plugins/rspack/index.ts"],"sourcesContent":["export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","export {ModuleFederationPlugin} from '@empjs/module-federation-enhanced/rspack'\n","import {Compiler} from '@empjs/cli'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\n\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\n// 当没有设置 runtimeLib 时候需要内置\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string, entry = 'runtime') {\n if (typeof host === 'string') {\n if (entry === 'runtime') {\n return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n } else {\n return `${host}/${entry}.${mode}.umd.js`\n }\n } else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {deepAssign} from 'src/helper'\nimport {shareGlobalName} from 'src/helper/config'\nimport {ModuleFederationPlugin} from 'src/helper/rspack'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport type {\n EMPPluginShareType,\n ExternalsItemType,\n frameworkOptions,\n ModuleFederationPluginOptions,\n runtimeLibType,\n} from './types'\nimport {getRuntimeLib} from './utils'\n\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.resetRuntime()\n this.resetFramework()\n this.setMfName() //设置 mfName 默认为 uniqueName\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (this.fk && this.fk.libs.length > 0) {\n return this.injectFkLibs(this.fk.libs)\n }\n if (!this.op.empRuntime || !this.fk.lib) return\n const {store, injectHtml} = this\n if (this.fk.lib) {\n const url = getRuntimeLib(this.fk.lib, store.mode, this.fk.entry)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectFkLibs(libs: string[]) {\n libs.map(url => {\n if (url.endsWith('.css')) {\n return this.injectHtml.push({\n attributes: {\n href: url,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n this.injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n })\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n const frameworkGlobal = this.fk.global || (empRuntime.shareLib ? 'window' : '')\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false || !this.rt.lib ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n const injectData: any = {frameworkLib: frameworkGlobal, runtimeLib: this.rt.global}\n if (this.fk.name && this.fk.name !== 'none') injectData.framework = this.fk.name\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `EMPShareGlobalVal=${JSON.stringify(injectData)}`,\n })\n }\n }\n public fk!: Required<frameworkOptions>\n private resetFramework() {\n if (!this.op.empRuntime) return\n const {framework, frameworkGlobal, frameworkLib} = this.op.empRuntime\n //\n this.fk = {\n name: 'none',\n version: 0,\n entry: '',\n global: frameworkGlobal || '',\n lib: frameworkLib || '',\n libs: [],\n }\n //\n if (typeof framework === 'string') {\n this.fk.name = framework as any\n }\n // TODO 通用 CDN 的适配方案\n else if (typeof framework === 'object' && Object.keys(framework).length > 0) {\n // 默认 框架名 为入口\n framework.entry = framework.entry ? framework.entry : framework.name\n this.fk = deepAssign(this.fk, framework)\n }\n }\n public rt!: Required<runtimeLibType>\n private resetRuntime() {\n const {empRuntime} = this.op\n if (!empRuntime) return\n const global = empRuntime.runtimeGlobal || shareGlobalName\n const lib = empRuntime.runtimeLib ? empRuntime.runtimeLib : empRuntime.runtime?.lib ? empRuntime.runtime.lib : ''\n this.rt = {\n lib,\n global,\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {shareLib} = empRuntime\n //\n const externalRuntime = this.rt.lib\n ? {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n : {}\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${this.rt.global}.${value}`\n }\n /**\n * TODO\n * 框架相关内容需要移除 share 由外部简化配置实现\n */\n if (this.fk.name === 'react' && !shareLib && this.fk.global) {\n const version = this.fk.version\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n if (this.fk.entry === 'reactRouter') {\n externalReact['react-router-dom'] = 'ReactRouterDOM'\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${this.fk.global}.${value}`\n }\n if ([17, 18, 19].includes(version)) {\n externals['react-dom/client'] = this.fk.global\n externals['react/jsx-runtime'] = this.fk.global\n externals['react/jsx-dev-runtime'] = this.fk.global\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${this.fk.global}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals, this.fk.global, this.rt.global)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!this.rt.lib) {\n // 内置 this.rt.lib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (this.rt.lib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: this.rt.lib}})\n }\n }\n private setMfName() {\n if (this.op.name) {\n this.op.name = this.store.encodeVarName(this.op.name)\n if (this.op.name !== this.store.empConfig.output.uniqueName) {\n this.store.chain.output.set('uniqueName', this.op.name)\n }\n } else {\n this.op.name = this.store.empConfig.output.uniqueName\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n manifest: false,\n dts: false,\n dev: {\n disableDynamicRemoteTypeHints: true,\n },\n },\n o,\n )\n //\n if (o.dev === false) op.dev = false\n //\n if (op.empRuntime) {\n delete op.empRuntime\n }\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n } else if (Array.isArray(v)) {\n v.map(vo => {\n if (!vo) return\n const isCSS = vo.split('?')[0].endsWith('.css')\n if (isCSS) {\n externalsItem.entry = vo\n externalsItem.type = 'css'\n } else {\n const cb: any = vo.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n } else {\n externalsItem.global = ''\n externalsItem.entry = vo\n externalsItem.type = 'js'\n }\n }\n externalsLib.push(externalsItem)\n externalsItem = {}\n })\n } else if (typeof v === 'object' && v.entry) {\n externalsItem.entry = v.entry\n externalsItem.global = v.global\n externalsItem.type = v.type\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const externalReact = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n react: `${globalVal}.React`,\n 'react-dom': `${globalVal}.ReactDOM`,\n 'react-dom/client': globalVal,\n 'react/jsx-runtime': globalVal,\n 'react/jsx-dev-runtime': globalVal,\n 'react-router-dom': `${globalVal}.ReactRouterDOM`,\n })\n return o\n}\n","export const externalVue = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n vue: `${globalVal}.Vue`,\n 'vue-router': `${globalVal}.VueRouter`,\n })\n return o\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\n\n//\nexport * from 'src/framework/react/config'\nexport * from 'src/framework/vue/config'\n//\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n"],"mappings":"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","names":["importJsVm","content","deepAssign","target","sources","source","k","vs","vt","isDev","log","shareGlobalName","ModuleFederationPlugin","getShareRuntimeEntry","url","content","importJsVm","EmpShareRemoteLibPlugin","op","compiler","webpack","entry","getRuntimeLib","host","mode","entry","exp","EmpShare","op","store","injectHtml","url","getRuntimeLib","libs","empRuntime","frameworkGlobal","injectData","framework","frameworkLib","deepAssign","global","shareGlobalName","lib","externalsLib","shareLib","externalRuntime","externals","key","value","version","externalReact","v","EmpShareRemoteLibPlugin","o","ModuleFederationPlugin","k","externalsItem","cb","vo","externalReact","o","globalVal","externalVue","o","globalVal","pluginRspackEmpShare","o","store","EmpShare","rspack_default"]}
|
|
1
|
+
{"version":3,"sources":["../src/helper/index.ts","../src/helper/config.ts","../src/helper/rspack.ts","../src/plugins/rspack/plugin.ts","../src/plugins/rspack/utils.ts","../src/plugins/rspack/share.ts","../src/framework/react/config.ts","../src/framework/vue/config.ts","../src/plugins/rspack/index.ts"],"sourcesContent":["export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n","export {ModuleFederationPlugin} from '@module-federation/rspack'\n","import {Compiler} from '@empjs/cli'\nimport {importJsVm} from 'src/helper'\nimport type {EMPSHARERuntimeOptions} from './types'\n\nconst getShareRuntimeEntry = url => {\n const content = [`import '${url}'`].join('\\n')\n return importJsVm(content)\n}\n// 当没有设置 runtimeLib 时候需要内置\nexport class EmpShareRemoteLibPlugin {\n options: EMPSHARERuntimeOptions\n constructor(op: EMPSHARERuntimeOptions) {\n this.options = op\n }\n apply(compiler: Compiler) {\n const {webpack} = compiler\n const entry = getShareRuntimeEntry('@empjs/share/library')\n new webpack.EntryPlugin(compiler.context, entry, {\n name: undefined,\n }).apply(compiler)\n }\n}\n","import type {EMPSHARERuntimeOptions} from './types'\nexport function getRuntimeLib(host: EMPSHARERuntimeOptions['frameworkLib'], mode: string, entry = 'runtime') {\n if (typeof host === 'string') {\n if (entry === 'runtime') {\n return `${host}/runtime${mode === 'development' ? '.development' : ''}.umd.js`\n } else {\n return `${host}/${entry}.${mode}.umd.js`\n }\n } else if (typeof host === 'object') {\n if (mode === 'development') return host.dev\n else return host.prod\n }\n return ''\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {deepAssign} from 'src/helper'\nimport {shareGlobalName} from 'src/helper/config'\nimport {ModuleFederationPlugin} from 'src/helper/rspack'\nimport {EmpShareRemoteLibPlugin} from './plugin'\nimport type {\n EMPPluginShareType,\n ExternalsItemType,\n frameworkOptions,\n ModuleFederationPluginOptions,\n runtimeLibType,\n} from './types'\nimport {getRuntimeLib} from './utils'\n\nconst exp = /^([0-9a-zA-Z_\\s]+)@(.*)/\nexport class EmpShare {\n private op: EMPPluginShareType\n private store: GlobalStore\n /**\n * 注入资源\n */\n private injectHtml: any[] = []\n /**\n * 兼容 shareLib\n */\n private externalsLib: ExternalsItemType[] = []\n constructor(op: EMPPluginShareType, store: GlobalStore) {\n this.op = op || {}\n this.store = store\n }\n setup() {\n this.resetRuntime()\n this.resetFramework()\n this.setMfName() //设置 mfName 默认为 uniqueName\n this.setMF() // 设置 MF 配置\n this.injectGlobalVal() // 插入全局变量 方便emp外的项目调用\n this.injectFramework() // 插入ui框架库\n this.setShareLib() //兼容 emp Sharelib的共享模型设置\n this.setRuntimeLib() // 设置 MF SDK\n this.injectToHtml() //触发插入动作\n this.setExternal() // 设置 external 降低包体\n }\n private injectToHtml() {\n const {store, injectHtml} = this\n if (injectHtml.length > 0) {\n store.injectTags(injectHtml, 'EMPShare')\n }\n }\n private injectFramework() {\n if (this.fk && this.fk.libs.length > 0) {\n return this.injectFkLibs(this.fk.libs)\n }\n if (!this.op.empRuntime || !this.fk.lib) return\n const {store, injectHtml} = this\n if (this.fk.lib) {\n const url = getRuntimeLib(this.fk.lib, store.mode, this.fk.entry)\n injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n }\n }\n private injectFkLibs(libs: string[]) {\n libs.map(url => {\n if (url.endsWith('.css')) {\n return this.injectHtml.push({\n attributes: {\n href: url,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n this.injectHtml.push({\n attributes: {\n src: url,\n },\n tagName: 'script',\n })\n })\n }\n private injectGlobalVal() {\n if (!this.op.empRuntime) return\n const {empRuntime} = this.op\n const {injectHtml} = this\n const frameworkGlobal = this.fk.global || (empRuntime.shareLib ? 'window' : '')\n const injectGlobalValToHtml = empRuntime.injectGlobalValToHtml === false || !this.rt.lib ? false : true\n // 插入全局引用变量 让 empRuntime 可以提前实例化 不需要在页面重复实例化\n if (injectGlobalValToHtml) {\n const injectData: any = {frameworkLib: frameworkGlobal, runtimeLib: this.rt.global}\n if (this.fk.name && this.fk.name !== 'none') injectData.framework = this.fk.name\n injectHtml.push({\n // type: 'js',\n tagName: 'script',\n innerHTML: `EMPShareGlobalVal=${JSON.stringify(injectData)}`,\n })\n }\n }\n public fk!: Required<frameworkOptions>\n private resetFramework() {\n if (!this.op.empRuntime) return\n const {framework, frameworkGlobal, frameworkLib} = this.op.empRuntime\n //\n this.fk = {\n name: 'none',\n version: 0,\n entry: '',\n global: frameworkGlobal || '',\n lib: frameworkLib || '',\n libs: [],\n }\n //\n if (typeof framework === 'string') {\n this.fk.name = framework as any\n }\n // TODO 通用 CDN 的适配方案\n else if (typeof framework === 'object' && Object.keys(framework).length > 0) {\n // 默认 框架名 为入口\n framework.entry = framework.entry ? framework.entry : framework.name\n this.fk = deepAssign(this.fk, framework)\n }\n }\n public rt!: Required<runtimeLibType>\n private resetRuntime() {\n const {empRuntime} = this.op\n if (!empRuntime) return\n const global = empRuntime.runtimeGlobal || shareGlobalName\n const lib = empRuntime.runtimeLib ? empRuntime.runtimeLib : empRuntime.runtime?.lib ? empRuntime.runtime.lib : ''\n this.rt = {\n lib,\n global,\n }\n }\n private setExternal() {\n if (!this.op.empRuntime) return\n const {store, externalsLib} = this\n const {empRuntime} = this.op\n const {shareLib} = empRuntime\n //\n const externalRuntime = this.rt.lib\n ? {\n '@module-federation/runtime': `MFRuntime`,\n '@module-federation/sdk': `MFSDK`,\n }\n : {}\n const externals = {}\n for (const [key, value] of Object.entries(externalRuntime)) {\n externals[key] = `${this.rt.global}.${value}`\n }\n /**\n * TODO\n * 框架相关内容需要移除 share 由外部简化配置实现\n */\n if (this.fk.name === 'react' && !shareLib && this.fk.global) {\n const version = this.fk.version\n const externalReact = {\n react: `React`,\n 'react-dom': `ReactDOM`,\n }\n if (this.fk.entry === 'reactRouter') {\n externalReact['react-router-dom'] = 'ReactRouterDOM'\n }\n for (const [key, value] of Object.entries(externalReact)) {\n externals[key] = `${this.fk.global}.${value}`\n }\n if ([17, 18, 19].includes(version)) {\n externals['react-dom/client'] = this.fk.global\n externals['react/jsx-runtime'] = this.fk.global\n externals['react/jsx-dev-runtime'] = this.fk.global\n }\n }\n if (shareLib) {\n externalsLib.map(v => {\n if (v.type === 'js' && v.module && v.global) {\n externals[v.module] = `${this.fk.global}.${v.global}`\n }\n })\n }\n if (empRuntime.setExternals) empRuntime.setExternals(externals, this.fk.global, this.rt.global)\n //\n // console.log('externals in plugin', externals)\n store.chain.merge({externals})\n }\n private setRuntimeLib() {\n if (!this.op.empRuntime) return\n\n const {shareLib} = this.op.empRuntime\n const {store, injectHtml} = this\n const {empRuntime} = this.op\n if (!this.rt.lib) {\n // 内置 this.rt.lib\n store.chain.plugin('plugin-emp-share-framework').use(EmpShareRemoteLibPlugin, [empRuntime])\n }\n // 统一封装到 frameworkLib\n else if (this.rt.lib === 'useFrameworkLib' && !shareLib) {\n } else {\n // 插入 runtime\n injectHtml.push({tagName: 'script', pos: 'head', attributes: {src: this.rt.lib}})\n }\n }\n private setMfName() {\n if (this.op.name) {\n this.op.name = this.store.encodeVarName(this.op.name)\n if (this.op.name !== this.store.empConfig.output.uniqueName) {\n this.store.chain.output.set('uniqueName', this.op.name)\n }\n } else {\n this.op.name = this.store.empConfig.output.uniqueName\n }\n }\n private setMF() {\n const o = this.op\n const {store} = this\n if (o.name) {\n const op = store.deepAssign<ModuleFederationPluginOptions & {empRuntime: any}>(\n {\n filename: 'emp.js',\n manifest: false,\n dts: false,\n dev: {\n disableDynamicRemoteTypeHints: true,\n },\n },\n o,\n )\n //\n if (o.dev === false) op.dev = false\n //\n if (op.empRuntime) {\n delete op.empRuntime\n }\n store.chain.plugin('plugin-emp-share').use(ModuleFederationPlugin, [op])\n }\n }\n private setShareLib() {\n if (!this.op.empRuntime) return\n const {shareLib} = this.op.empRuntime\n const {externalsLib, injectHtml} = this\n if (shareLib && typeof shareLib === 'object') {\n for (const [k, v] of Object.entries(shareLib)) {\n let externalsItem: ExternalsItemType = {}\n externalsItem.module = k\n //增加下划线 支持lodash 等特殊符号的问题 如 _@http\n\n if (typeof v === 'string') {\n const cb: any = v.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n } else {\n externalsItem.global = ''\n externalsItem.entry = v\n externalsItem.type = 'js'\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n } else if (Array.isArray(v)) {\n v.map(vo => {\n if (!vo) return\n const isCSS = vo.split('?')[0].endsWith('.css')\n if (isCSS) {\n externalsItem.entry = vo\n externalsItem.type = 'css'\n } else {\n const cb: any = vo.match(exp) || []\n if (cb.length > 0) {\n externalsItem.global = cb[1]\n externalsItem.entry = cb[2]\n externalsItem.type = 'js'\n } else {\n externalsItem.global = ''\n externalsItem.entry = vo\n externalsItem.type = 'js'\n }\n }\n externalsLib.push(externalsItem)\n externalsItem = {}\n })\n } else if (typeof v === 'object' && v.entry) {\n externalsItem.entry = v.entry\n externalsItem.global = v.global\n externalsItem.type = v.type\n externalsLib.push(externalsItem)\n externalsItem = {}\n }\n }\n // console.log(externalsLib)\n externalsLib.map(v => {\n if (v.type === 'js') {\n injectHtml.push({\n attributes: {\n src: v.entry,\n },\n tagName: 'script',\n })\n } else if (v.type === 'css') {\n injectHtml.push({\n attributes: {\n href: v.entry,\n rel: 'stylesheet',\n },\n tagName: 'link',\n })\n }\n })\n }\n }\n}\n","export const externalReact = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n react: `${globalVal}.React`,\n 'react-dom': `${globalVal}.ReactDOM`,\n 'react-dom/client': globalVal,\n 'react/jsx-runtime': globalVal,\n 'react/jsx-dev-runtime': globalVal,\n 'react-router-dom': `${globalVal}.ReactRouterDOM`,\n })\n return o\n}\n","export const externalVue = (o: any, globalVal: string) => {\n o = Object.assign(o, {\n vue: `${globalVal}.Vue`,\n 'vue-router': `${globalVal}.VueRouter`,\n })\n return o\n}\n","import type {GlobalStore} from '@empjs/cli'\nimport {EmpShare} from './share'\nimport type {EMPPluginShareType} from './types'\n\n//\nexport * from 'src/framework/react/config'\nexport * from 'src/framework/vue/config'\n//\nexport const pluginRspackEmpShare = (o: EMPPluginShareType = {}) => {\n return {\n name: '@empjs/share',\n async rsConfig(store: GlobalStore) {\n //\n if (o.manifest === true) {\n o.manifest = {\n fileName: 'emp.json',\n }\n } else if (typeof o.manifest === 'object') {\n o.manifest = store.deepAssign({fileName: 'emp.json'}, o.manifest)\n }\n const empShare = new EmpShare(o, store)\n empShare.setup()\n },\n }\n}\nexport default pluginRspackEmpShare\n"],"mappings":"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","names":["externalReact"]}
|
package/dist/runtime.cjs
CHANGED
|
@@ -1,2 +1,107 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/runtime/index.ts
|
|
21
|
+
var runtime_exports = {};
|
|
22
|
+
__export(runtime_exports, {
|
|
23
|
+
EMPRuntime: () => EMPRuntime,
|
|
24
|
+
default: () => runtime_default
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(runtime_exports);
|
|
27
|
+
|
|
28
|
+
// src/helper/index.ts
|
|
29
|
+
function deepAssign(target, ...sources) {
|
|
30
|
+
for (const source of sources) {
|
|
31
|
+
for (const k in source) {
|
|
32
|
+
const vs = source[k], vt = target[k];
|
|
33
|
+
if (Object(vs) == vs && Object(vt) === vt) {
|
|
34
|
+
target[k] = deepAssign(vt, vs);
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
target[k] = source[k];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return target;
|
|
41
|
+
}
|
|
42
|
+
var isDev = true;
|
|
43
|
+
var log = isDev ? console.log.bind(console, "[EMP Share]") : () => {
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// src/helper/config.ts
|
|
47
|
+
var shareGlobalName = "EMP_SHARE_RUNTIME";
|
|
48
|
+
|
|
49
|
+
// src/runtime/index.ts
|
|
50
|
+
var globalLib = window[shareGlobalName] || {};
|
|
51
|
+
var win = window;
|
|
52
|
+
var { EMPShareGlobalVal } = win || {};
|
|
53
|
+
if (EMPShareGlobalVal && EMPShareGlobalVal.runtimeLib) {
|
|
54
|
+
globalLib = win[EMPShareGlobalVal.runtimeLib];
|
|
55
|
+
}
|
|
56
|
+
var EMPRuntime = class {
|
|
57
|
+
libs = globalLib;
|
|
58
|
+
initOptions;
|
|
59
|
+
options = {
|
|
60
|
+
showLog: false
|
|
61
|
+
};
|
|
62
|
+
shareGlobalName = shareGlobalName;
|
|
63
|
+
constructor(op) {
|
|
64
|
+
if (op) this.setup(op);
|
|
65
|
+
}
|
|
66
|
+
mfInstance;
|
|
67
|
+
setup(o) {
|
|
68
|
+
if (o) {
|
|
69
|
+
if (typeof o === "string") o = window[o];
|
|
70
|
+
this.libs = o;
|
|
71
|
+
}
|
|
72
|
+
if (!this.libs.MFRuntime || !this.libs.MFSDK) {
|
|
73
|
+
throw new Error("MFRuntime and MFSDK Required!");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
init(options = {}) {
|
|
77
|
+
if (this.mfInstance) return this.mfInstance;
|
|
78
|
+
let op = {
|
|
79
|
+
name: "empRuntimeProject",
|
|
80
|
+
remotes: []
|
|
81
|
+
// plugins: [catchErrorNextPlugin(this.options.showLog)],
|
|
82
|
+
};
|
|
83
|
+
op = deepAssign(op, options);
|
|
84
|
+
this.mfInstance = this.libs.MFRuntime.createInstance(op);
|
|
85
|
+
}
|
|
86
|
+
load(...args) {
|
|
87
|
+
return this.mfInstance?.loadRemote(...args);
|
|
88
|
+
}
|
|
89
|
+
register(...args) {
|
|
90
|
+
return this.mfInstance?.registerRemotes(...args);
|
|
91
|
+
}
|
|
92
|
+
preload(...args) {
|
|
93
|
+
return this.mfInstance?.preloadRemote(...args);
|
|
94
|
+
}
|
|
95
|
+
loadShare(...args) {
|
|
96
|
+
return this.mfInstance?.loadShare(...args);
|
|
97
|
+
}
|
|
98
|
+
preloadRemote(...args) {
|
|
99
|
+
return this.mfInstance?.preloadRemote(...args);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
var runtime_default = new EMPRuntime();
|
|
103
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
104
|
+
0 && (module.exports = {
|
|
105
|
+
EMPRuntime
|
|
106
|
+
});
|
|
2
107
|
//# sourceMappingURL=runtime.cjs.map
|
package/dist/runtime.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/index.ts","../src/helper/index.ts","../src/helper/config.ts"],"sourcesContent":["import {deepAssign} from 'src/helper'\nimport {shareGlobalName} from 'src/helper/config'\nimport type {EMPShareRuntimeType, EmpRuntimeOptions, InitOptionsType, LoadRemoteType} from 'src/types'\n\ntype EmpInitOptionsType = Partial<InitOptionsType>\nlet globalLib = window[shareGlobalName] || {}\n// 根据 injectGlobalValToHtml 提前把库赋值到 EMPRuntime\nconst win: any = window\nconst {EMPShareGlobalVal} = win || {}\nif (EMPShareGlobalVal && EMPShareGlobalVal.runtimeLib) {\n globalLib = win[EMPShareGlobalVal.runtimeLib]\n}\n\nexport class EMPRuntime {\n public libs: EMPShareRuntimeType = globalLib\n public initOptions!: InitOptionsType\n public options: EmpRuntimeOptions = {\n showLog: false,\n }\n public shareGlobalName = shareGlobalName\n
|
|
1
|
+
{"version":3,"sources":["../src/runtime/index.ts","../src/helper/index.ts","../src/helper/config.ts"],"sourcesContent":["import type {ModuleFederation} from '@module-federation/runtime'\nimport {deepAssign} from 'src/helper'\nimport {shareGlobalName} from 'src/helper/config'\nimport type {EMPShareRuntimeType, EmpRuntimeOptions, InitOptionsType, LoadRemoteType} from 'src/types'\n\ntype EmpInitOptionsType = Partial<InitOptionsType>\nlet globalLib = window[shareGlobalName] || {}\n// 根据 injectGlobalValToHtml 提前把库赋值到 EMPRuntime\nconst win: any = window\nconst {EMPShareGlobalVal} = win || {}\nif (EMPShareGlobalVal && EMPShareGlobalVal.runtimeLib) {\n globalLib = win[EMPShareGlobalVal.runtimeLib]\n}\n\nexport class EMPRuntime {\n public libs: EMPShareRuntimeType = globalLib\n public initOptions!: InitOptionsType\n public options: EmpRuntimeOptions = {\n showLog: false,\n }\n public shareGlobalName = shareGlobalName\n constructor(op?: EMPShareRuntimeType) {\n if (op) this.setup(op)\n }\n public mfInstance?: ModuleFederation\n public setup(o?: EMPShareRuntimeType | string) {\n if (o) {\n if (typeof o === 'string') o = window[o]\n this.libs = o as any\n }\n if (!this.libs.MFRuntime || !this.libs.MFSDK) {\n throw new Error('MFRuntime and MFSDK Required!')\n }\n }\n public init(options: EmpInitOptionsType = {}) {\n if (this.mfInstance) return this.mfInstance\n let op: InitOptionsType = {\n name: 'empRuntimeProject',\n remotes: [],\n // plugins: [catchErrorNextPlugin(this.options.showLog)],\n }\n op = deepAssign<InitOptionsType>(op, options)\n this.mfInstance = this.libs.MFRuntime.createInstance(op)\n }\n public load<T = any>(...args: LoadRemoteType) {\n return this.mfInstance?.loadRemote<T>(...args) as Promise<T>\n }\n public register(...args: Parameters<NonNullable<typeof this.mfInstance>['registerRemotes']>) {\n return this.mfInstance?.registerRemotes(...args)\n }\n public preload(...args: Parameters<NonNullable<typeof this.mfInstance>['preloadRemote']>) {\n return this.mfInstance?.preloadRemote(...args)\n }\n public loadShare(...args: Parameters<NonNullable<typeof this.mfInstance>['loadShare']>) {\n return this.mfInstance?.loadShare(...args)\n }\n public preloadRemote(...args: Parameters<NonNullable<typeof this.mfInstance>['preloadRemote']>) {\n return this.mfInstance?.preloadRemote(...args)\n }\n}\n//\nexport default new EMPRuntime()\n","export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n for (const source of sources) {\n for (const k in source) {\n const vs = source[k],\n vt = target[k]\n if (Object(vs) == vs && Object(vt) === vt) {\n target[k] = deepAssign(vt, vs)\n continue\n }\n target[k] = source[k]\n }\n }\n return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","export const shareGlobalName = 'EMP_SHARE_RUNTIME'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,SAAS,WAAc,WAAgB,SAAiB;AAC7D,aAAW,UAAU,SAAS;AAC5B,eAAW,KAAK,QAAQ;AACtB,YAAM,KAAK,OAAO,CAAC,GACjB,KAAK,OAAO,CAAC;AACf,UAAI,OAAO,EAAE,KAAK,MAAM,OAAO,EAAE,MAAM,IAAI;AACzC,eAAO,CAAC,IAAI,WAAW,IAAI,EAAE;AAC7B;AAAA,MACF;AACA,aAAO,CAAC,IAAI,OAAO,CAAC;AAAA,IACtB;AAAA,EACF;AACA,SAAO;AACT;AAMO,IAAM,QAAQ;AACd,IAAM,MAAM,QAAQ,QAAQ,IAAI,KAAK,SAAS,aAAa,IAAI,MAAM;AAAC;;;ACtBtE,IAAM,kBAAkB;;;AFM/B,IAAI,YAAY,OAAO,eAAe,KAAK,CAAC;AAE5C,IAAM,MAAW;AACjB,IAAM,EAAC,kBAAiB,IAAI,OAAO,CAAC;AACpC,IAAI,qBAAqB,kBAAkB,YAAY;AACrD,cAAY,IAAI,kBAAkB,UAAU;AAC9C;AAEO,IAAM,aAAN,MAAiB;AAAA,EACf,OAA4B;AAAA,EAC5B;AAAA,EACA,UAA6B;AAAA,IAClC,SAAS;AAAA,EACX;AAAA,EACO,kBAAkB;AAAA,EACzB,YAAY,IAA0B;AACpC,QAAI,GAAI,MAAK,MAAM,EAAE;AAAA,EACvB;AAAA,EACO;AAAA,EACA,MAAM,GAAkC;AAC7C,QAAI,GAAG;AACL,UAAI,OAAO,MAAM,SAAU,KAAI,OAAO,CAAC;AACvC,WAAK,OAAO;AAAA,IACd;AACA,QAAI,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,KAAK,OAAO;AAC5C,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAAA,EACF;AAAA,EACO,KAAK,UAA8B,CAAC,GAAG;AAC5C,QAAI,KAAK,WAAY,QAAO,KAAK;AACjC,QAAI,KAAsB;AAAA,MACxB,MAAM;AAAA,MACN,SAAS,CAAC;AAAA;AAAA,IAEZ;AACA,SAAK,WAA4B,IAAI,OAAO;AAC5C,SAAK,aAAa,KAAK,KAAK,UAAU,eAAe,EAAE;AAAA,EACzD;AAAA,EACO,QAAiB,MAAsB;AAC5C,WAAO,KAAK,YAAY,WAAc,GAAG,IAAI;AAAA,EAC/C;AAAA,EACO,YAAY,MAA0E;AAC3F,WAAO,KAAK,YAAY,gBAAgB,GAAG,IAAI;AAAA,EACjD;AAAA,EACO,WAAW,MAAwE;AACxF,WAAO,KAAK,YAAY,cAAc,GAAG,IAAI;AAAA,EAC/C;AAAA,EACO,aAAa,MAAoE;AACtF,WAAO,KAAK,YAAY,UAAU,GAAG,IAAI;AAAA,EAC3C;AAAA,EACO,iBAAiB,MAAwE;AAC9F,WAAO,KAAK,YAAY,cAAc,GAAG,IAAI;AAAA,EAC/C;AACF;AAEA,IAAO,kBAAQ,IAAI,WAAW;","names":[]}
|