@module-federation/nextjs-mf 8.8.56 → 8.8.57
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/LICENSE +21 -0
- package/dist/_virtual/_rolldown/runtime.js +29 -0
- package/dist/_virtual/_rolldown/runtime.mjs +8 -0
- package/dist/client/UrlNode.js +89 -147
- package/dist/client/UrlNode.js.map +1 -1
- package/dist/client/UrlNode.mjs +91 -0
- package/dist/client/UrlNode.mjs.map +1 -0
- package/dist/src/federation-noop.d.mts +1 -0
- package/dist/src/federation-noop.d.ts +1 -0
- package/dist/src/federation-noop.js +17 -0
- package/dist/src/federation-noop.js.map +1 -1
- package/dist/src/federation-noop.mjs +23 -0
- package/dist/src/federation-noop.mjs.map +1 -0
- package/dist/src/index.d.mts +2 -0
- package/dist/src/index.d.ts +2 -3
- package/dist/src/index.js +13 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +8 -0
- package/dist/src/index.mjs.map +1 -0
- package/dist/src/internal.js +140 -243
- package/dist/src/internal.js.map +1 -1
- package/dist/src/internal.mjs +152 -0
- package/dist/src/internal.mjs.map +1 -0
- package/dist/src/loaders/fixImageLoader.d.mts +27 -0
- package/dist/src/loaders/fixImageLoader.d.ts +8 -3
- package/dist/src/loaders/fixImageLoader.js +91 -103
- package/dist/src/loaders/fixImageLoader.js.map +1 -1
- package/dist/src/loaders/fixImageLoader.mjs +101 -0
- package/dist/src/loaders/fixImageLoader.mjs.map +1 -0
- package/dist/src/loaders/fixUrlLoader.d.mts +16 -0
- package/dist/src/loaders/fixUrlLoader.d.ts +5 -2
- package/dist/src/loaders/fixUrlLoader.js +17 -19
- package/dist/src/loaders/fixUrlLoader.js.map +1 -1
- package/dist/src/loaders/fixUrlLoader.mjs +19 -0
- package/dist/src/loaders/fixUrlLoader.mjs.map +1 -0
- package/dist/src/loaders/helpers.js +72 -124
- package/dist/src/loaders/helpers.js.map +1 -1
- package/dist/src/loaders/helpers.mjs +79 -0
- package/dist/src/loaders/helpers.mjs.map +1 -0
- package/dist/src/loaders/nextPageMapLoader.d.mts +29 -0
- package/dist/src/loaders/nextPageMapLoader.d.ts +10 -5
- package/dist/src/loaders/nextPageMapLoader.js +126 -144
- package/dist/src/loaders/nextPageMapLoader.js.map +1 -1
- package/dist/src/loaders/nextPageMapLoader.mjs +143 -0
- package/dist/src/loaders/nextPageMapLoader.mjs.map +1 -0
- package/dist/src/logger.js +7 -7
- package/dist/src/logger.js.map +1 -1
- package/dist/src/logger.mjs +8 -0
- package/dist/src/logger.mjs.map +1 -0
- package/dist/src/plugins/CopyFederationPlugin.js +64 -71
- package/dist/src/plugins/CopyFederationPlugin.js.map +1 -1
- package/dist/src/plugins/CopyFederationPlugin.mjs +65 -0
- package/dist/src/plugins/CopyFederationPlugin.mjs.map +1 -0
- package/dist/src/plugins/NextFederationPlugin/apply-client-plugins.js +36 -53
- package/dist/src/plugins/NextFederationPlugin/apply-client-plugins.js.map +1 -1
- package/dist/src/plugins/NextFederationPlugin/apply-client-plugins.mjs +40 -0
- package/dist/src/plugins/NextFederationPlugin/apply-client-plugins.mjs.map +1 -0
- package/dist/src/plugins/NextFederationPlugin/apply-server-plugins.js +103 -121
- package/dist/src/plugins/NextFederationPlugin/apply-server-plugins.js.map +1 -1
- package/dist/src/plugins/NextFederationPlugin/apply-server-plugins.mjs +111 -0
- package/dist/src/plugins/NextFederationPlugin/apply-server-plugins.mjs.map +1 -0
- package/dist/src/plugins/NextFederationPlugin/index.d.mts +31 -0
- package/dist/src/plugins/NextFederationPlugin/index.d.ts +27 -23
- package/dist/src/plugins/NextFederationPlugin/index.js +147 -181
- package/dist/src/plugins/NextFederationPlugin/index.js.map +1 -1
- package/dist/src/plugins/NextFederationPlugin/index.mjs +150 -0
- package/dist/src/plugins/NextFederationPlugin/index.mjs.map +1 -0
- package/dist/src/plugins/NextFederationPlugin/next-fragments.d.mts +18 -0
- package/dist/src/plugins/NextFederationPlugin/next-fragments.d.ts +16 -18
- package/dist/src/plugins/NextFederationPlugin/next-fragments.js +62 -92
- package/dist/src/plugins/NextFederationPlugin/next-fragments.js.map +1 -1
- package/dist/src/plugins/NextFederationPlugin/next-fragments.mjs +68 -0
- package/dist/src/plugins/NextFederationPlugin/next-fragments.mjs.map +1 -0
- package/dist/src/plugins/NextFederationPlugin/set-options.js +17 -19
- package/dist/src/plugins/NextFederationPlugin/set-options.js.map +1 -1
- package/dist/src/plugins/NextFederationPlugin/set-options.mjs +19 -0
- package/dist/src/plugins/NextFederationPlugin/set-options.mjs.map +1 -0
- package/dist/src/plugins/NextFederationPlugin/validate-options.js +30 -38
- package/dist/src/plugins/NextFederationPlugin/validate-options.js.map +1 -1
- package/dist/src/plugins/NextFederationPlugin/validate-options.mjs +35 -0
- package/dist/src/plugins/NextFederationPlugin/validate-options.mjs.map +1 -0
- package/dist/src/plugins/container/InvertedContainerPlugin.js +22 -25
- package/dist/src/plugins/container/InvertedContainerPlugin.js.map +1 -1
- package/dist/src/plugins/container/InvertedContainerPlugin.mjs +23 -0
- package/dist/src/plugins/container/InvertedContainerPlugin.mjs.map +1 -0
- package/dist/src/plugins/container/InvertedContainerRuntimeModule.js +55 -67
- package/dist/src/plugins/container/InvertedContainerRuntimeModule.js.map +1 -1
- package/dist/src/plugins/container/InvertedContainerRuntimeModule.mjs +57 -0
- package/dist/src/plugins/container/InvertedContainerRuntimeModule.mjs.map +1 -0
- package/dist/src/plugins/container/runtimePlugin.d.mts +7 -0
- package/dist/src/plugins/container/runtimePlugin.d.ts +6 -2
- package/dist/src/plugins/container/runtimePlugin.js +167 -0
- package/dist/src/plugins/container/runtimePlugin.js.map +1 -1
- package/dist/src/plugins/container/runtimePlugin.mjs +166 -0
- package/dist/src/plugins/container/runtimePlugin.mjs.map +1 -0
- package/dist/utils/flushedChunks.d.mts +29 -0
- package/dist/utils/flushedChunks.d.ts +12 -5
- package/dist/utils/flushedChunks.js +32 -72
- package/dist/utils/flushedChunks.js.map +1 -1
- package/dist/utils/flushedChunks.mjs +35 -0
- package/dist/utils/flushedChunks.mjs.map +1 -0
- package/dist/utils/index.d.mts +14 -0
- package/dist/utils/index.d.ts +8 -14
- package/dist/utils/index.js +27 -62
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +22 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +29 -9
- package/dist/client/UrlNode.d.ts +0 -17
- package/dist/node.d.ts +0 -1
- package/dist/node.js +0 -18
- package/dist/node.js.map +0 -1
- package/dist/package.json +0 -80
- package/dist/src/federation-noop.cjs +0 -15
- package/dist/src/internal.d.ts +0 -50
- package/dist/src/loaders/helpers.d.ts +0 -17
- package/dist/src/logger.d.ts +0 -2
- package/dist/src/plugins/AddRuntimeRequirementToPromiseExternalPlugin.d.ts +0 -5
- package/dist/src/plugins/AddRuntimeRequirementToPromiseExternalPlugin.js +0 -19
- package/dist/src/plugins/AddRuntimeRequirementToPromiseExternalPlugin.js.map +0 -1
- package/dist/src/plugins/CopyFederationPlugin.d.ts +0 -20
- package/dist/src/plugins/NextFederationPlugin/apply-client-plugins.d.ts +0 -23
- package/dist/src/plugins/NextFederationPlugin/apply-server-plugins.d.ts +0 -36
- package/dist/src/plugins/NextFederationPlugin/regex-equal.d.ts +0 -14
- package/dist/src/plugins/NextFederationPlugin/regex-equal.js +0 -25
- package/dist/src/plugins/NextFederationPlugin/regex-equal.js.map +0 -1
- package/dist/src/plugins/NextFederationPlugin/remove-unnecessary-shared-keys.d.ts +0 -8
- package/dist/src/plugins/NextFederationPlugin/remove-unnecessary-shared-keys.js +0 -34
- package/dist/src/plugins/NextFederationPlugin/remove-unnecessary-shared-keys.js.map +0 -1
- package/dist/src/plugins/NextFederationPlugin/set-options.d.ts +0 -16
- package/dist/src/plugins/NextFederationPlugin/validate-options.d.ts +0 -25
- package/dist/src/plugins/container/InvertedContainerPlugin.d.ts +0 -5
- package/dist/src/plugins/container/InvertedContainerRuntimeModule.d.ts +0 -11
- package/dist/src/plugins/container/RemoveEagerModulesFromRuntimePlugin.d.ts +0 -39
- package/dist/src/plugins/container/RemoveEagerModulesFromRuntimePlugin.js +0 -78
- package/dist/src/plugins/container/RemoveEagerModulesFromRuntimePlugin.js.map +0 -1
- package/dist/src/plugins/container/runtimePlugin.cjs +0 -219
- package/dist/src/plugins/container/types.d.ts +0 -2
- package/dist/src/plugins/container/types.js +0 -3
- package/dist/src/plugins/container/types.js.map +0 -1
- package/dist/src/types.d.ts +0 -28
- package/dist/src/types.js +0 -3
- package/dist/src/types.js.map +0 -1
|
@@ -1,69 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
`}`,
|
|
57
|
-
`cachedRemote = ${initRuntimeModuleGetter};`,
|
|
58
|
-
`var gs = ${RuntimeGlobals.global} || globalThis;`,
|
|
59
|
-
`gs[${nameJSON}] = cachedRemote;`,
|
|
60
|
-
])),
|
|
61
|
-
`} else if (typeof prevStartup === 'function') {`,
|
|
62
|
-
Template.indent(`prevStartup();`),
|
|
63
|
-
`}`,
|
|
64
|
-
]))};`,
|
|
65
|
-
]);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
1
|
+
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
|
|
2
|
+
let _module_federation_sdk_normalize_webpack_path = require("@module-federation/sdk/normalize-webpack-path");
|
|
3
|
+
|
|
4
|
+
//#region src/plugins/container/InvertedContainerRuntimeModule.ts
|
|
5
|
+
const { RuntimeModule, Template, RuntimeGlobals } = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack"));
|
|
6
|
+
var InvertedContainerRuntimeModule = class extends RuntimeModule {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super("inverted container startup", RuntimeModule.STAGE_TRIGGER);
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
generate() {
|
|
12
|
+
const { compilation, chunk, chunkGraph } = this;
|
|
13
|
+
if (!compilation || !chunk || !chunkGraph) return "";
|
|
14
|
+
if (chunk.runtime === "webpack-api-runtime") return "";
|
|
15
|
+
const runtimeChunk = compilation.options.optimization?.runtimeChunk;
|
|
16
|
+
if (typeof runtimeChunk === "object" && runtimeChunk !== null) compilation.getLogger("InvertedContainerRuntimeModule").info("Runtime chunk is configured. Consider adding runtime: false to your ModuleFederationPlugin configuration to prevent runtime conflicts.");
|
|
17
|
+
let containerEntryModule;
|
|
18
|
+
for (const containerDep of this.options.containers) {
|
|
19
|
+
const mod = compilation.moduleGraph.getModule(containerDep);
|
|
20
|
+
if (!mod) continue;
|
|
21
|
+
if (chunkGraph.isModuleInChunk(mod, chunk)) containerEntryModule = mod;
|
|
22
|
+
}
|
|
23
|
+
if (!containerEntryModule) return "";
|
|
24
|
+
if (compilation.chunkGraph.isEntryModuleInChunk(containerEntryModule, chunk)) return "";
|
|
25
|
+
const initRuntimeModuleGetter = compilation.runtimeTemplate.moduleRaw({
|
|
26
|
+
module: containerEntryModule,
|
|
27
|
+
chunkGraph,
|
|
28
|
+
weak: false,
|
|
29
|
+
runtimeRequirements: /* @__PURE__ */ new Set()
|
|
30
|
+
});
|
|
31
|
+
const nameJSON = JSON.stringify(containerEntryModule._name);
|
|
32
|
+
return Template.asString([
|
|
33
|
+
`var prevStartup = ${RuntimeGlobals.startup};`,
|
|
34
|
+
`var hasRun = false;`,
|
|
35
|
+
`var cachedRemote;`,
|
|
36
|
+
`${RuntimeGlobals.startup} = ${compilation.runtimeTemplate.basicFunction("", Template.asString([
|
|
37
|
+
`if (!hasRun) {`,
|
|
38
|
+
Template.indent(Template.asString([
|
|
39
|
+
`hasRun = true;`,
|
|
40
|
+
`if (typeof prevStartup === 'function') {`,
|
|
41
|
+
Template.indent(Template.asString([`prevStartup();`])),
|
|
42
|
+
`}`,
|
|
43
|
+
`cachedRemote = ${initRuntimeModuleGetter};`,
|
|
44
|
+
`var gs = ${RuntimeGlobals.global} || globalThis;`,
|
|
45
|
+
`gs[${nameJSON}] = cachedRemote;`
|
|
46
|
+
])),
|
|
47
|
+
`} else if (typeof prevStartup === 'function') {`,
|
|
48
|
+
Template.indent(`prevStartup();`),
|
|
49
|
+
`}`
|
|
50
|
+
]))};`
|
|
51
|
+
]);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
68
56
|
exports.default = InvertedContainerRuntimeModule;
|
|
69
57
|
//# sourceMappingURL=InvertedContainerRuntimeModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvertedContainerRuntimeModule.js","
|
|
1
|
+
{"version":3,"file":"InvertedContainerRuntimeModule.js","names":[],"sources":["../../../../src/plugins/container/InvertedContainerRuntimeModule.ts"],"sourcesContent":["import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport type ContainerEntryModule from '@module-federation/enhanced/src/lib/container/ContainerEntryModule';\nconst { RuntimeModule, Template, RuntimeGlobals } = require(\n normalizeWebpackPath('webpack'),\n) as typeof import('webpack');\n\ninterface InvertedContainerRuntimeModuleOptions {\n name?: string;\n containers: Set<any>; // Adjust the type as necessary\n}\n\nclass InvertedContainerRuntimeModule extends RuntimeModule {\n private options: InvertedContainerRuntimeModuleOptions;\n\n constructor(options: InvertedContainerRuntimeModuleOptions) {\n super('inverted container startup', RuntimeModule.STAGE_TRIGGER);\n this.options = options;\n }\n\n override generate(): string {\n const { compilation, chunk, chunkGraph } = this;\n if (!compilation || !chunk || !chunkGraph) {\n return '';\n }\n if (chunk.runtime === 'webpack-api-runtime') {\n return '';\n }\n\n const runtimeChunk = compilation.options.optimization?.runtimeChunk;\n if (typeof runtimeChunk === 'object' && runtimeChunk !== null) {\n const logger = compilation.getLogger('InvertedContainerRuntimeModule');\n logger.info(\n 'Runtime chunk is configured. Consider adding runtime: false to your ModuleFederationPlugin configuration to prevent runtime conflicts.',\n );\n }\n\n let containerEntryModule;\n for (const containerDep of this.options.containers) {\n const mod = compilation.moduleGraph.getModule(containerDep);\n if (!mod) continue;\n if (chunkGraph.isModuleInChunk(mod, chunk)) {\n containerEntryModule = mod as ContainerEntryModule;\n }\n }\n\n if (!containerEntryModule) return '';\n\n if (\n compilation.chunkGraph.isEntryModuleInChunk(containerEntryModule, chunk)\n ) {\n // Don't apply to the remote entry itself\n return '';\n }\n const initRuntimeModuleGetter = compilation.runtimeTemplate.moduleRaw({\n module: containerEntryModule,\n chunkGraph,\n weak: false,\n runtimeRequirements: new Set(),\n });\n\n //@ts-ignore\n const nameJSON = JSON.stringify(containerEntryModule._name);\n\n return Template.asString([\n `var prevStartup = ${RuntimeGlobals.startup};`,\n `var hasRun = false;`,\n `var cachedRemote;`,\n `${RuntimeGlobals.startup} = ${compilation.runtimeTemplate.basicFunction(\n '',\n Template.asString([\n `if (!hasRun) {`,\n Template.indent(\n Template.asString([\n `hasRun = true;`,\n `if (typeof prevStartup === 'function') {`,\n Template.indent(Template.asString([`prevStartup();`])),\n `}`,\n `cachedRemote = ${initRuntimeModuleGetter};`,\n `var gs = ${RuntimeGlobals.global} || globalThis;`,\n `gs[${nameJSON}] = cachedRemote;`,\n ]),\n ),\n `} else if (typeof prevStartup === 'function') {`,\n Template.indent(`prevStartup();`),\n `}`,\n ]),\n )};`,\n ]);\n }\n}\n\nexport default InvertedContainerRuntimeModule;\n"],"mappings":";;;;AAEA,MAAM,EAAE,eAAe,UAAU,mBAAmB,gFAC7B,UAAU,CAChC;AAOD,IAAM,iCAAN,cAA6C,cAAc;CAGzD,YAAY,SAAgD;AAC1D,QAAM,8BAA8B,cAAc,cAAc;AAChE,OAAK,UAAU;;CAGjB,AAAS,WAAmB;EAC1B,MAAM,EAAE,aAAa,OAAO,eAAe;AAC3C,MAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAC7B,QAAO;AAET,MAAI,MAAM,YAAY,sBACpB,QAAO;EAGT,MAAM,eAAe,YAAY,QAAQ,cAAc;AACvD,MAAI,OAAO,iBAAiB,YAAY,iBAAiB,KAEvD,CADe,YAAY,UAAU,iCAAiC,CAC/D,KACL,yIACD;EAGH,IAAI;AACJ,OAAK,MAAM,gBAAgB,KAAK,QAAQ,YAAY;GAClD,MAAM,MAAM,YAAY,YAAY,UAAU,aAAa;AAC3D,OAAI,CAAC,IAAK;AACV,OAAI,WAAW,gBAAgB,KAAK,MAAM,CACxC,wBAAuB;;AAI3B,MAAI,CAAC,qBAAsB,QAAO;AAElC,MACE,YAAY,WAAW,qBAAqB,sBAAsB,MAAM,CAGxE,QAAO;EAET,MAAM,0BAA0B,YAAY,gBAAgB,UAAU;GACpE,QAAQ;GACR;GACA,MAAM;GACN,qCAAqB,IAAI,KAAK;GAC/B,CAAC;EAGF,MAAM,WAAW,KAAK,UAAU,qBAAqB,MAAM;AAE3D,SAAO,SAAS,SAAS;GACvB,qBAAqB,eAAe,QAAQ;GAC5C;GACA;GACA,GAAG,eAAe,QAAQ,KAAK,YAAY,gBAAgB,cACzD,IACA,SAAS,SAAS;IAChB;IACA,SAAS,OACP,SAAS,SAAS;KAChB;KACA;KACA,SAAS,OAAO,SAAS,SAAS,CAAC,iBAAiB,CAAC,CAAC;KACtD;KACA,kBAAkB,wBAAwB;KAC1C,YAAY,eAAe,OAAO;KAClC,MAAM,SAAS;KAChB,CAAC,CACH;IACD;IACA,SAAS,OAAO,iBAAiB;IACjC;IACD,CAAC,CACH,CAAC;GACH,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { __require } from "../../../_virtual/_rolldown/runtime.mjs";
|
|
2
|
+
import { normalizeWebpackPath } from "@module-federation/sdk/normalize-webpack-path";
|
|
3
|
+
|
|
4
|
+
//#region src/plugins/container/InvertedContainerRuntimeModule.ts
|
|
5
|
+
const { RuntimeModule, Template, RuntimeGlobals } = __require(normalizeWebpackPath("webpack"));
|
|
6
|
+
var InvertedContainerRuntimeModule = class extends RuntimeModule {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super("inverted container startup", RuntimeModule.STAGE_TRIGGER);
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
generate() {
|
|
12
|
+
const { compilation, chunk, chunkGraph } = this;
|
|
13
|
+
if (!compilation || !chunk || !chunkGraph) return "";
|
|
14
|
+
if (chunk.runtime === "webpack-api-runtime") return "";
|
|
15
|
+
const runtimeChunk = compilation.options.optimization?.runtimeChunk;
|
|
16
|
+
if (typeof runtimeChunk === "object" && runtimeChunk !== null) compilation.getLogger("InvertedContainerRuntimeModule").info("Runtime chunk is configured. Consider adding runtime: false to your ModuleFederationPlugin configuration to prevent runtime conflicts.");
|
|
17
|
+
let containerEntryModule;
|
|
18
|
+
for (const containerDep of this.options.containers) {
|
|
19
|
+
const mod = compilation.moduleGraph.getModule(containerDep);
|
|
20
|
+
if (!mod) continue;
|
|
21
|
+
if (chunkGraph.isModuleInChunk(mod, chunk)) containerEntryModule = mod;
|
|
22
|
+
}
|
|
23
|
+
if (!containerEntryModule) return "";
|
|
24
|
+
if (compilation.chunkGraph.isEntryModuleInChunk(containerEntryModule, chunk)) return "";
|
|
25
|
+
const initRuntimeModuleGetter = compilation.runtimeTemplate.moduleRaw({
|
|
26
|
+
module: containerEntryModule,
|
|
27
|
+
chunkGraph,
|
|
28
|
+
weak: false,
|
|
29
|
+
runtimeRequirements: /* @__PURE__ */ new Set()
|
|
30
|
+
});
|
|
31
|
+
const nameJSON = JSON.stringify(containerEntryModule._name);
|
|
32
|
+
return Template.asString([
|
|
33
|
+
`var prevStartup = ${RuntimeGlobals.startup};`,
|
|
34
|
+
`var hasRun = false;`,
|
|
35
|
+
`var cachedRemote;`,
|
|
36
|
+
`${RuntimeGlobals.startup} = ${compilation.runtimeTemplate.basicFunction("", Template.asString([
|
|
37
|
+
`if (!hasRun) {`,
|
|
38
|
+
Template.indent(Template.asString([
|
|
39
|
+
`hasRun = true;`,
|
|
40
|
+
`if (typeof prevStartup === 'function') {`,
|
|
41
|
+
Template.indent(Template.asString([`prevStartup();`])),
|
|
42
|
+
`}`,
|
|
43
|
+
`cachedRemote = ${initRuntimeModuleGetter};`,
|
|
44
|
+
`var gs = ${RuntimeGlobals.global} || globalThis;`,
|
|
45
|
+
`gs[${nameJSON}] = cachedRemote;`
|
|
46
|
+
])),
|
|
47
|
+
`} else if (typeof prevStartup === 'function') {`,
|
|
48
|
+
Template.indent(`prevStartup();`),
|
|
49
|
+
`}`
|
|
50
|
+
]))};`
|
|
51
|
+
]);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { InvertedContainerRuntimeModule as default };
|
|
57
|
+
//# sourceMappingURL=InvertedContainerRuntimeModule.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvertedContainerRuntimeModule.mjs","names":[],"sources":["../../../../src/plugins/container/InvertedContainerRuntimeModule.ts"],"sourcesContent":["import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport type ContainerEntryModule from '@module-federation/enhanced/src/lib/container/ContainerEntryModule';\nconst { RuntimeModule, Template, RuntimeGlobals } = require(\n normalizeWebpackPath('webpack'),\n) as typeof import('webpack');\n\ninterface InvertedContainerRuntimeModuleOptions {\n name?: string;\n containers: Set<any>; // Adjust the type as necessary\n}\n\nclass InvertedContainerRuntimeModule extends RuntimeModule {\n private options: InvertedContainerRuntimeModuleOptions;\n\n constructor(options: InvertedContainerRuntimeModuleOptions) {\n super('inverted container startup', RuntimeModule.STAGE_TRIGGER);\n this.options = options;\n }\n\n override generate(): string {\n const { compilation, chunk, chunkGraph } = this;\n if (!compilation || !chunk || !chunkGraph) {\n return '';\n }\n if (chunk.runtime === 'webpack-api-runtime') {\n return '';\n }\n\n const runtimeChunk = compilation.options.optimization?.runtimeChunk;\n if (typeof runtimeChunk === 'object' && runtimeChunk !== null) {\n const logger = compilation.getLogger('InvertedContainerRuntimeModule');\n logger.info(\n 'Runtime chunk is configured. Consider adding runtime: false to your ModuleFederationPlugin configuration to prevent runtime conflicts.',\n );\n }\n\n let containerEntryModule;\n for (const containerDep of this.options.containers) {\n const mod = compilation.moduleGraph.getModule(containerDep);\n if (!mod) continue;\n if (chunkGraph.isModuleInChunk(mod, chunk)) {\n containerEntryModule = mod as ContainerEntryModule;\n }\n }\n\n if (!containerEntryModule) return '';\n\n if (\n compilation.chunkGraph.isEntryModuleInChunk(containerEntryModule, chunk)\n ) {\n // Don't apply to the remote entry itself\n return '';\n }\n const initRuntimeModuleGetter = compilation.runtimeTemplate.moduleRaw({\n module: containerEntryModule,\n chunkGraph,\n weak: false,\n runtimeRequirements: new Set(),\n });\n\n //@ts-ignore\n const nameJSON = JSON.stringify(containerEntryModule._name);\n\n return Template.asString([\n `var prevStartup = ${RuntimeGlobals.startup};`,\n `var hasRun = false;`,\n `var cachedRemote;`,\n `${RuntimeGlobals.startup} = ${compilation.runtimeTemplate.basicFunction(\n '',\n Template.asString([\n `if (!hasRun) {`,\n Template.indent(\n Template.asString([\n `hasRun = true;`,\n `if (typeof prevStartup === 'function') {`,\n Template.indent(Template.asString([`prevStartup();`])),\n `}`,\n `cachedRemote = ${initRuntimeModuleGetter};`,\n `var gs = ${RuntimeGlobals.global} || globalThis;`,\n `gs[${nameJSON}] = cachedRemote;`,\n ]),\n ),\n `} else if (typeof prevStartup === 'function') {`,\n Template.indent(`prevStartup();`),\n `}`,\n ]),\n )};`,\n ]);\n }\n}\n\nexport default InvertedContainerRuntimeModule;\n"],"mappings":";;;;AAEA,MAAM,EAAE,eAAe,UAAU,6BAC/B,qBAAqB,UAAU,CAChC;AAOD,IAAM,iCAAN,cAA6C,cAAc;CAGzD,YAAY,SAAgD;AAC1D,QAAM,8BAA8B,cAAc,cAAc;AAChE,OAAK,UAAU;;CAGjB,AAAS,WAAmB;EAC1B,MAAM,EAAE,aAAa,OAAO,eAAe;AAC3C,MAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAC7B,QAAO;AAET,MAAI,MAAM,YAAY,sBACpB,QAAO;EAGT,MAAM,eAAe,YAAY,QAAQ,cAAc;AACvD,MAAI,OAAO,iBAAiB,YAAY,iBAAiB,KAEvD,CADe,YAAY,UAAU,iCAAiC,CAC/D,KACL,yIACD;EAGH,IAAI;AACJ,OAAK,MAAM,gBAAgB,KAAK,QAAQ,YAAY;GAClD,MAAM,MAAM,YAAY,YAAY,UAAU,aAAa;AAC3D,OAAI,CAAC,IAAK;AACV,OAAI,WAAW,gBAAgB,KAAK,MAAM,CACxC,wBAAuB;;AAI3B,MAAI,CAAC,qBAAsB,QAAO;AAElC,MACE,YAAY,WAAW,qBAAqB,sBAAsB,MAAM,CAGxE,QAAO;EAET,MAAM,0BAA0B,YAAY,gBAAgB,UAAU;GACpE,QAAQ;GACR;GACA,MAAM;GACN,qCAAqB,IAAI,KAAK;GAC/B,CAAC;EAGF,MAAM,WAAW,KAAK,UAAU,qBAAqB,MAAM;AAE3D,SAAO,SAAS,SAAS;GACvB,qBAAqB,eAAe,QAAQ;GAC5C;GACA;GACA,GAAG,eAAe,QAAQ,KAAK,YAAY,gBAAgB,cACzD,IACA,SAAS,SAAS;IAChB;IACA,SAAS,OACP,SAAS,SAAS;KAChB;KACA;KACA,SAAS,OAAO,SAAS,SAAS,CAAC,iBAAiB,CAAC,CAAC;KACtD;KACA,kBAAkB,wBAAwB;KAC1C,YAAY,eAAe,OAAO;KAClC,MAAM,SAAS;KAChB,CAAC,CACH;IACD;IACA,SAAS,OAAO,iBAAiB;IACjC;IACD,CAAC,CACH,CAAC;GACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ModuleFederationRuntimePlugin } from "@module-federation/runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/container/runtimePlugin.d.ts
|
|
4
|
+
declare function export_default(): ModuleFederationRuntimePlugin;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { export_default as default };
|
|
7
|
+
//# sourceMappingURL=runtimePlugin.d.mts.map
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import { ModuleFederationRuntimePlugin } from
|
|
2
|
-
|
|
1
|
+
import { ModuleFederationRuntimePlugin } from "@module-federation/runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/container/runtimePlugin.d.ts
|
|
4
|
+
declare function export_default(): ModuleFederationRuntimePlugin;
|
|
5
|
+
export = export_default;
|
|
6
|
+
//# sourceMappingURL=runtimePlugin.d.ts.map
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/plugins/container/runtimePlugin.ts
|
|
3
|
+
function runtimePlugin_default() {
|
|
4
|
+
return {
|
|
5
|
+
name: "next-internal-plugin",
|
|
6
|
+
createScript: function(args) {
|
|
7
|
+
const url = args.url;
|
|
8
|
+
const attrs = args.attrs;
|
|
9
|
+
if (typeof window !== "undefined") {
|
|
10
|
+
const script = document.createElement("script");
|
|
11
|
+
script.src = url;
|
|
12
|
+
script.async = true;
|
|
13
|
+
delete attrs?.["crossorigin"];
|
|
14
|
+
return {
|
|
15
|
+
script,
|
|
16
|
+
timeout: 8e3
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
errorLoadRemote: function(args) {
|
|
21
|
+
const id = args.id;
|
|
22
|
+
const error = args.error;
|
|
23
|
+
const from = args.from;
|
|
24
|
+
globalThis.moduleGraphDirty = true;
|
|
25
|
+
console.error(id, "offline");
|
|
26
|
+
const pg = function() {
|
|
27
|
+
console.error(id, "offline", error);
|
|
28
|
+
return null;
|
|
29
|
+
};
|
|
30
|
+
pg.getInitialProps = function(ctx) {
|
|
31
|
+
return {};
|
|
32
|
+
};
|
|
33
|
+
let mod;
|
|
34
|
+
if (from === "build") mod = function() {
|
|
35
|
+
return {
|
|
36
|
+
__esModule: true,
|
|
37
|
+
default: pg,
|
|
38
|
+
getServerSideProps: function() {
|
|
39
|
+
return { props: {} };
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
else mod = {
|
|
44
|
+
default: pg,
|
|
45
|
+
getServerSideProps: function() {
|
|
46
|
+
return { props: {} };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
return mod;
|
|
50
|
+
},
|
|
51
|
+
beforeInit: function(args) {
|
|
52
|
+
if (!globalThis.usedChunks) globalThis.usedChunks = /* @__PURE__ */ new Set();
|
|
53
|
+
if (typeof __webpack_runtime_id__ === "string" && !__webpack_runtime_id__.startsWith("webpack")) return args;
|
|
54
|
+
const moduleCache = args.origin.moduleCache;
|
|
55
|
+
const name = args.origin.name;
|
|
56
|
+
let gs;
|
|
57
|
+
try {
|
|
58
|
+
gs = new Function("return globalThis")();
|
|
59
|
+
} catch (e) {
|
|
60
|
+
gs = globalThis;
|
|
61
|
+
}
|
|
62
|
+
const attachedRemote = gs[name];
|
|
63
|
+
if (attachedRemote) moduleCache.set(name, attachedRemote);
|
|
64
|
+
return args;
|
|
65
|
+
},
|
|
66
|
+
init: function(args) {
|
|
67
|
+
return args;
|
|
68
|
+
},
|
|
69
|
+
beforeRequest: function(args) {
|
|
70
|
+
const options = args.options;
|
|
71
|
+
const remoteName = args.id.split("/").shift();
|
|
72
|
+
const remote = options.remotes.find(function(remote) {
|
|
73
|
+
return remote.name === remoteName;
|
|
74
|
+
});
|
|
75
|
+
if (!remote) return args;
|
|
76
|
+
if (remote && remote.entry && remote.entry.includes("?t=")) return args;
|
|
77
|
+
remote.entry = remote.entry + "?t=" + Date.now();
|
|
78
|
+
return args;
|
|
79
|
+
},
|
|
80
|
+
afterResolve: function(args) {
|
|
81
|
+
return args;
|
|
82
|
+
},
|
|
83
|
+
onLoad: function(args) {
|
|
84
|
+
const exposeModuleFactory = args.exposeModuleFactory;
|
|
85
|
+
const exposeModule = args.exposeModule;
|
|
86
|
+
const id = args.id;
|
|
87
|
+
const moduleOrFactory = exposeModuleFactory || exposeModule;
|
|
88
|
+
if (!moduleOrFactory) return args;
|
|
89
|
+
if (typeof window === "undefined") {
|
|
90
|
+
let exposedModuleExports;
|
|
91
|
+
try {
|
|
92
|
+
exposedModuleExports = moduleOrFactory();
|
|
93
|
+
} catch (e) {
|
|
94
|
+
exposedModuleExports = moduleOrFactory;
|
|
95
|
+
}
|
|
96
|
+
const handler = { get: function(target, prop, receiver) {
|
|
97
|
+
if (target === exposedModuleExports && typeof exposedModuleExports[prop] === "function") return function() {
|
|
98
|
+
globalThis.usedChunks.add(id);
|
|
99
|
+
return exposedModuleExports[prop].apply(this, arguments);
|
|
100
|
+
};
|
|
101
|
+
const originalMethod = target[prop];
|
|
102
|
+
if (typeof originalMethod === "function") {
|
|
103
|
+
const proxiedFunction = function() {
|
|
104
|
+
globalThis.usedChunks.add(id);
|
|
105
|
+
return originalMethod.apply(this, arguments);
|
|
106
|
+
};
|
|
107
|
+
Object.keys(originalMethod).forEach(function(prop) {
|
|
108
|
+
Object.defineProperty(proxiedFunction, prop, {
|
|
109
|
+
value: originalMethod[prop],
|
|
110
|
+
writable: true,
|
|
111
|
+
enumerable: true,
|
|
112
|
+
configurable: true
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
return proxiedFunction;
|
|
116
|
+
}
|
|
117
|
+
return Reflect.get(target, prop, receiver);
|
|
118
|
+
} };
|
|
119
|
+
if (typeof exposedModuleExports === "function") {
|
|
120
|
+
exposedModuleExports = new Proxy(exposedModuleExports, handler);
|
|
121
|
+
Object.getOwnPropertyNames(exposedModuleExports).forEach(function(prop) {
|
|
122
|
+
if (typeof exposedModuleExports[prop] === "function") exposedModuleExports[prop] = new Proxy(exposedModuleExports[prop], handler);
|
|
123
|
+
});
|
|
124
|
+
return function() {
|
|
125
|
+
return exposedModuleExports;
|
|
126
|
+
};
|
|
127
|
+
} else exposedModuleExports = new Proxy(exposedModuleExports, handler);
|
|
128
|
+
return exposedModuleExports;
|
|
129
|
+
}
|
|
130
|
+
return args;
|
|
131
|
+
},
|
|
132
|
+
loadRemoteSnapshot(args) {
|
|
133
|
+
const { from, remoteSnapshot, manifestUrl, manifestJson, options } = args;
|
|
134
|
+
if (from !== "manifest" || !manifestUrl || !manifestJson || !("publicPath" in remoteSnapshot)) return args;
|
|
135
|
+
const { publicPath } = remoteSnapshot;
|
|
136
|
+
if (options.inBrowser && publicPath.includes("/_next/")) remoteSnapshot.publicPath = publicPath.substring(0, publicPath.lastIndexOf("/_next/") + 7);
|
|
137
|
+
else remoteSnapshot.publicPath = manifestUrl.substring(0, manifestUrl.indexOf("mf-manifest.json"));
|
|
138
|
+
if ("publicPath" in manifestJson.metaData) manifestJson.metaData.publicPath = remoteSnapshot.publicPath;
|
|
139
|
+
return args;
|
|
140
|
+
},
|
|
141
|
+
resolveShare: function(args) {
|
|
142
|
+
if (args.pkgName !== "react" && args.pkgName !== "react-dom" && !args.pkgName.startsWith("next/")) return args;
|
|
143
|
+
const shareScopeMap = args.shareScopeMap;
|
|
144
|
+
const scope = args.scope;
|
|
145
|
+
const pkgName = args.pkgName;
|
|
146
|
+
const version = args.version;
|
|
147
|
+
const host = args.GlobalFederation["__INSTANCES__"][0];
|
|
148
|
+
if (!host) return args;
|
|
149
|
+
if (!host.options.shared[pkgName]) return args;
|
|
150
|
+
args.resolver = function() {
|
|
151
|
+
shareScopeMap[scope][pkgName][version] = host.options.shared[pkgName][0];
|
|
152
|
+
return {
|
|
153
|
+
shared: shareScopeMap[scope][pkgName][version],
|
|
154
|
+
useTreesShaking: false
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
return args;
|
|
158
|
+
},
|
|
159
|
+
beforeLoadShare: async function(args) {
|
|
160
|
+
return args;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
//#endregion
|
|
166
|
+
module.exports = runtimePlugin_default;
|
|
167
|
+
//# sourceMappingURL=runtimePlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimePlugin.js","sourceRoot":"","sources":["../../../../src/plugins/container/runtimePlugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtimePlugin.js","names":[],"sources":["../../../../src/plugins/container/runtimePlugin.ts"],"sourcesContent":["import { ModuleFederationRuntimePlugin } from '@module-federation/runtime';\n\nexport default function (): ModuleFederationRuntimePlugin {\n return {\n name: 'next-internal-plugin',\n createScript: function (args: {\n url: string;\n attrs?: Record<string, any>;\n }) {\n const url = args.url;\n const attrs = args.attrs;\n if (typeof window !== 'undefined') {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n delete attrs?.['crossorigin'];\n\n return { script: script, timeout: 8000 };\n }\n return undefined;\n },\n errorLoadRemote: function (args: {\n id: string;\n error: any;\n from: string;\n origin: any;\n }) {\n const id = args.id;\n const error = args.error;\n const from = args.from;\n //@ts-ignore\n globalThis.moduleGraphDirty = true;\n console.error(id, 'offline');\n const pg = function () {\n console.error(id, 'offline', error);\n return null;\n };\n\n (pg as any).getInitialProps = function (ctx: any) {\n return {};\n };\n let mod;\n if (from === 'build') {\n mod = function () {\n return {\n __esModule: true,\n default: pg,\n getServerSideProps: function () {\n return { props: {} };\n },\n };\n };\n } else {\n mod = {\n default: pg,\n getServerSideProps: function () {\n return { props: {} };\n },\n };\n }\n\n return mod;\n },\n beforeInit: function (args) {\n if (!globalThis.usedChunks) globalThis.usedChunks = new Set();\n if (\n typeof __webpack_runtime_id__ === 'string' &&\n !__webpack_runtime_id__.startsWith('webpack')\n ) {\n return args;\n }\n\n const moduleCache = args.origin.moduleCache;\n const name = args.origin.name;\n let gs;\n try {\n gs = new Function('return globalThis')();\n } catch (e) {\n gs = globalThis; // fallback for browsers without 'unsafe-eval' CSP policy enabled\n }\n //@ts-ignore\n const attachedRemote = gs[name];\n if (attachedRemote) {\n moduleCache.set(name, attachedRemote);\n }\n\n return args;\n },\n init: function (args: any) {\n return args;\n },\n beforeRequest: function (args: any) {\n const options = args.options;\n const id = args.id;\n const remoteName = id.split('/').shift();\n const remote = options.remotes.find(function (remote: any) {\n return remote.name === remoteName;\n });\n if (!remote) return args;\n if (remote && remote.entry && remote.entry.includes('?t=')) {\n return args;\n }\n remote.entry = remote.entry + '?t=' + Date.now();\n return args;\n },\n afterResolve: function (args: any) {\n return args;\n },\n onLoad: function (args: any) {\n const exposeModuleFactory = args.exposeModuleFactory;\n const exposeModule = args.exposeModule;\n const id = args.id;\n const moduleOrFactory = exposeModuleFactory || exposeModule;\n if (!moduleOrFactory) return args;\n\n if (typeof window === 'undefined') {\n let exposedModuleExports: any;\n try {\n exposedModuleExports = moduleOrFactory();\n } catch (e) {\n exposedModuleExports = moduleOrFactory;\n }\n\n const handler: ProxyHandler<any> = {\n get: function (target, prop, receiver) {\n if (\n target === exposedModuleExports &&\n typeof exposedModuleExports[prop] === 'function'\n ) {\n return function (this: unknown) {\n globalThis.usedChunks.add(id);\n //eslint-disable-next-line\n return exposedModuleExports[prop].apply(this, arguments);\n };\n }\n\n const originalMethod = target[prop];\n if (typeof originalMethod === 'function') {\n const proxiedFunction = function (this: unknown) {\n globalThis.usedChunks.add(id);\n //eslint-disable-next-line\n return originalMethod.apply(this, arguments);\n };\n\n Object.keys(originalMethod).forEach(function (prop) {\n Object.defineProperty(proxiedFunction, prop, {\n value: originalMethod[prop],\n writable: true,\n enumerable: true,\n configurable: true,\n });\n });\n\n return proxiedFunction;\n }\n\n return Reflect.get(target, prop, receiver);\n },\n };\n\n if (typeof exposedModuleExports === 'function') {\n exposedModuleExports = new Proxy(exposedModuleExports, handler);\n\n const staticProps = Object.getOwnPropertyNames(exposedModuleExports);\n staticProps.forEach(function (prop) {\n if (typeof exposedModuleExports[prop] === 'function') {\n exposedModuleExports[prop] = new Proxy(\n exposedModuleExports[prop],\n handler,\n );\n }\n });\n return function () {\n return exposedModuleExports;\n };\n } else {\n exposedModuleExports = new Proxy(exposedModuleExports, handler);\n }\n\n return exposedModuleExports;\n }\n\n return args;\n },\n loadRemoteSnapshot(args) {\n const { from, remoteSnapshot, manifestUrl, manifestJson, options } = args;\n\n // ensure snapshot is loaded from manifest\n if (\n from !== 'manifest' ||\n !manifestUrl ||\n !manifestJson ||\n !('publicPath' in remoteSnapshot)\n ) {\n return args;\n }\n\n // re-assign publicPath based on remoteEntry location if in browser nextjs remote\n const { publicPath } = remoteSnapshot;\n if (options.inBrowser && publicPath.includes('/_next/')) {\n remoteSnapshot.publicPath = publicPath.substring(\n 0,\n publicPath.lastIndexOf('/_next/') + 7,\n );\n } else {\n const serverPublicPath = manifestUrl.substring(\n 0,\n manifestUrl.indexOf('mf-manifest.json'),\n );\n remoteSnapshot.publicPath = serverPublicPath;\n }\n\n if ('publicPath' in manifestJson.metaData) {\n manifestJson.metaData.publicPath = remoteSnapshot.publicPath;\n }\n\n return args;\n },\n resolveShare: function (args: any) {\n if (\n args.pkgName !== 'react' &&\n args.pkgName !== 'react-dom' &&\n !args.pkgName.startsWith('next/')\n ) {\n return args;\n }\n const shareScopeMap = args.shareScopeMap;\n const scope = args.scope;\n const pkgName = args.pkgName;\n const version = args.version;\n const GlobalFederation = args.GlobalFederation;\n const host = GlobalFederation['__INSTANCES__'][0];\n if (!host) {\n return args;\n }\n\n if (!host.options.shared[pkgName]) {\n return args;\n }\n args.resolver = function () {\n shareScopeMap[scope][pkgName][version] =\n host.options.shared[pkgName][0];\n return {\n shared: shareScopeMap[scope][pkgName][version],\n useTreesShaking: false,\n };\n };\n return args;\n },\n beforeLoadShare: async function (args: any) {\n return args;\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
//#region src/plugins/container/runtimePlugin.ts
|
|
2
|
+
function runtimePlugin_default() {
|
|
3
|
+
return {
|
|
4
|
+
name: "next-internal-plugin",
|
|
5
|
+
createScript: function(args) {
|
|
6
|
+
const url = args.url;
|
|
7
|
+
const attrs = args.attrs;
|
|
8
|
+
if (typeof window !== "undefined") {
|
|
9
|
+
const script = document.createElement("script");
|
|
10
|
+
script.src = url;
|
|
11
|
+
script.async = true;
|
|
12
|
+
delete attrs?.["crossorigin"];
|
|
13
|
+
return {
|
|
14
|
+
script,
|
|
15
|
+
timeout: 8e3
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
errorLoadRemote: function(args) {
|
|
20
|
+
const id = args.id;
|
|
21
|
+
const error = args.error;
|
|
22
|
+
const from = args.from;
|
|
23
|
+
globalThis.moduleGraphDirty = true;
|
|
24
|
+
console.error(id, "offline");
|
|
25
|
+
const pg = function() {
|
|
26
|
+
console.error(id, "offline", error);
|
|
27
|
+
return null;
|
|
28
|
+
};
|
|
29
|
+
pg.getInitialProps = function(ctx) {
|
|
30
|
+
return {};
|
|
31
|
+
};
|
|
32
|
+
let mod;
|
|
33
|
+
if (from === "build") mod = function() {
|
|
34
|
+
return {
|
|
35
|
+
__esModule: true,
|
|
36
|
+
default: pg,
|
|
37
|
+
getServerSideProps: function() {
|
|
38
|
+
return { props: {} };
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
else mod = {
|
|
43
|
+
default: pg,
|
|
44
|
+
getServerSideProps: function() {
|
|
45
|
+
return { props: {} };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
return mod;
|
|
49
|
+
},
|
|
50
|
+
beforeInit: function(args) {
|
|
51
|
+
if (!globalThis.usedChunks) globalThis.usedChunks = /* @__PURE__ */ new Set();
|
|
52
|
+
if (typeof __webpack_runtime_id__ === "string" && !__webpack_runtime_id__.startsWith("webpack")) return args;
|
|
53
|
+
const moduleCache = args.origin.moduleCache;
|
|
54
|
+
const name = args.origin.name;
|
|
55
|
+
let gs;
|
|
56
|
+
try {
|
|
57
|
+
gs = new Function("return globalThis")();
|
|
58
|
+
} catch (e) {
|
|
59
|
+
gs = globalThis;
|
|
60
|
+
}
|
|
61
|
+
const attachedRemote = gs[name];
|
|
62
|
+
if (attachedRemote) moduleCache.set(name, attachedRemote);
|
|
63
|
+
return args;
|
|
64
|
+
},
|
|
65
|
+
init: function(args) {
|
|
66
|
+
return args;
|
|
67
|
+
},
|
|
68
|
+
beforeRequest: function(args) {
|
|
69
|
+
const options = args.options;
|
|
70
|
+
const remoteName = args.id.split("/").shift();
|
|
71
|
+
const remote = options.remotes.find(function(remote) {
|
|
72
|
+
return remote.name === remoteName;
|
|
73
|
+
});
|
|
74
|
+
if (!remote) return args;
|
|
75
|
+
if (remote && remote.entry && remote.entry.includes("?t=")) return args;
|
|
76
|
+
remote.entry = remote.entry + "?t=" + Date.now();
|
|
77
|
+
return args;
|
|
78
|
+
},
|
|
79
|
+
afterResolve: function(args) {
|
|
80
|
+
return args;
|
|
81
|
+
},
|
|
82
|
+
onLoad: function(args) {
|
|
83
|
+
const exposeModuleFactory = args.exposeModuleFactory;
|
|
84
|
+
const exposeModule = args.exposeModule;
|
|
85
|
+
const id = args.id;
|
|
86
|
+
const moduleOrFactory = exposeModuleFactory || exposeModule;
|
|
87
|
+
if (!moduleOrFactory) return args;
|
|
88
|
+
if (typeof window === "undefined") {
|
|
89
|
+
let exposedModuleExports;
|
|
90
|
+
try {
|
|
91
|
+
exposedModuleExports = moduleOrFactory();
|
|
92
|
+
} catch (e) {
|
|
93
|
+
exposedModuleExports = moduleOrFactory;
|
|
94
|
+
}
|
|
95
|
+
const handler = { get: function(target, prop, receiver) {
|
|
96
|
+
if (target === exposedModuleExports && typeof exposedModuleExports[prop] === "function") return function() {
|
|
97
|
+
globalThis.usedChunks.add(id);
|
|
98
|
+
return exposedModuleExports[prop].apply(this, arguments);
|
|
99
|
+
};
|
|
100
|
+
const originalMethod = target[prop];
|
|
101
|
+
if (typeof originalMethod === "function") {
|
|
102
|
+
const proxiedFunction = function() {
|
|
103
|
+
globalThis.usedChunks.add(id);
|
|
104
|
+
return originalMethod.apply(this, arguments);
|
|
105
|
+
};
|
|
106
|
+
Object.keys(originalMethod).forEach(function(prop) {
|
|
107
|
+
Object.defineProperty(proxiedFunction, prop, {
|
|
108
|
+
value: originalMethod[prop],
|
|
109
|
+
writable: true,
|
|
110
|
+
enumerable: true,
|
|
111
|
+
configurable: true
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
return proxiedFunction;
|
|
115
|
+
}
|
|
116
|
+
return Reflect.get(target, prop, receiver);
|
|
117
|
+
} };
|
|
118
|
+
if (typeof exposedModuleExports === "function") {
|
|
119
|
+
exposedModuleExports = new Proxy(exposedModuleExports, handler);
|
|
120
|
+
Object.getOwnPropertyNames(exposedModuleExports).forEach(function(prop) {
|
|
121
|
+
if (typeof exposedModuleExports[prop] === "function") exposedModuleExports[prop] = new Proxy(exposedModuleExports[prop], handler);
|
|
122
|
+
});
|
|
123
|
+
return function() {
|
|
124
|
+
return exposedModuleExports;
|
|
125
|
+
};
|
|
126
|
+
} else exposedModuleExports = new Proxy(exposedModuleExports, handler);
|
|
127
|
+
return exposedModuleExports;
|
|
128
|
+
}
|
|
129
|
+
return args;
|
|
130
|
+
},
|
|
131
|
+
loadRemoteSnapshot(args) {
|
|
132
|
+
const { from, remoteSnapshot, manifestUrl, manifestJson, options } = args;
|
|
133
|
+
if (from !== "manifest" || !manifestUrl || !manifestJson || !("publicPath" in remoteSnapshot)) return args;
|
|
134
|
+
const { publicPath } = remoteSnapshot;
|
|
135
|
+
if (options.inBrowser && publicPath.includes("/_next/")) remoteSnapshot.publicPath = publicPath.substring(0, publicPath.lastIndexOf("/_next/") + 7);
|
|
136
|
+
else remoteSnapshot.publicPath = manifestUrl.substring(0, manifestUrl.indexOf("mf-manifest.json"));
|
|
137
|
+
if ("publicPath" in manifestJson.metaData) manifestJson.metaData.publicPath = remoteSnapshot.publicPath;
|
|
138
|
+
return args;
|
|
139
|
+
},
|
|
140
|
+
resolveShare: function(args) {
|
|
141
|
+
if (args.pkgName !== "react" && args.pkgName !== "react-dom" && !args.pkgName.startsWith("next/")) return args;
|
|
142
|
+
const shareScopeMap = args.shareScopeMap;
|
|
143
|
+
const scope = args.scope;
|
|
144
|
+
const pkgName = args.pkgName;
|
|
145
|
+
const version = args.version;
|
|
146
|
+
const host = args.GlobalFederation["__INSTANCES__"][0];
|
|
147
|
+
if (!host) return args;
|
|
148
|
+
if (!host.options.shared[pkgName]) return args;
|
|
149
|
+
args.resolver = function() {
|
|
150
|
+
shareScopeMap[scope][pkgName][version] = host.options.shared[pkgName][0];
|
|
151
|
+
return {
|
|
152
|
+
shared: shareScopeMap[scope][pkgName][version],
|
|
153
|
+
useTreesShaking: false
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
return args;
|
|
157
|
+
},
|
|
158
|
+
beforeLoadShare: async function(args) {
|
|
159
|
+
return args;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
//#endregion
|
|
165
|
+
export { runtimePlugin_default as default };
|
|
166
|
+
//# sourceMappingURL=runtimePlugin.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimePlugin.mjs","names":[],"sources":["../../../../src/plugins/container/runtimePlugin.ts"],"sourcesContent":["import { ModuleFederationRuntimePlugin } from '@module-federation/runtime';\n\nexport default function (): ModuleFederationRuntimePlugin {\n return {\n name: 'next-internal-plugin',\n createScript: function (args: {\n url: string;\n attrs?: Record<string, any>;\n }) {\n const url = args.url;\n const attrs = args.attrs;\n if (typeof window !== 'undefined') {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n delete attrs?.['crossorigin'];\n\n return { script: script, timeout: 8000 };\n }\n return undefined;\n },\n errorLoadRemote: function (args: {\n id: string;\n error: any;\n from: string;\n origin: any;\n }) {\n const id = args.id;\n const error = args.error;\n const from = args.from;\n //@ts-ignore\n globalThis.moduleGraphDirty = true;\n console.error(id, 'offline');\n const pg = function () {\n console.error(id, 'offline', error);\n return null;\n };\n\n (pg as any).getInitialProps = function (ctx: any) {\n return {};\n };\n let mod;\n if (from === 'build') {\n mod = function () {\n return {\n __esModule: true,\n default: pg,\n getServerSideProps: function () {\n return { props: {} };\n },\n };\n };\n } else {\n mod = {\n default: pg,\n getServerSideProps: function () {\n return { props: {} };\n },\n };\n }\n\n return mod;\n },\n beforeInit: function (args) {\n if (!globalThis.usedChunks) globalThis.usedChunks = new Set();\n if (\n typeof __webpack_runtime_id__ === 'string' &&\n !__webpack_runtime_id__.startsWith('webpack')\n ) {\n return args;\n }\n\n const moduleCache = args.origin.moduleCache;\n const name = args.origin.name;\n let gs;\n try {\n gs = new Function('return globalThis')();\n } catch (e) {\n gs = globalThis; // fallback for browsers without 'unsafe-eval' CSP policy enabled\n }\n //@ts-ignore\n const attachedRemote = gs[name];\n if (attachedRemote) {\n moduleCache.set(name, attachedRemote);\n }\n\n return args;\n },\n init: function (args: any) {\n return args;\n },\n beforeRequest: function (args: any) {\n const options = args.options;\n const id = args.id;\n const remoteName = id.split('/').shift();\n const remote = options.remotes.find(function (remote: any) {\n return remote.name === remoteName;\n });\n if (!remote) return args;\n if (remote && remote.entry && remote.entry.includes('?t=')) {\n return args;\n }\n remote.entry = remote.entry + '?t=' + Date.now();\n return args;\n },\n afterResolve: function (args: any) {\n return args;\n },\n onLoad: function (args: any) {\n const exposeModuleFactory = args.exposeModuleFactory;\n const exposeModule = args.exposeModule;\n const id = args.id;\n const moduleOrFactory = exposeModuleFactory || exposeModule;\n if (!moduleOrFactory) return args;\n\n if (typeof window === 'undefined') {\n let exposedModuleExports: any;\n try {\n exposedModuleExports = moduleOrFactory();\n } catch (e) {\n exposedModuleExports = moduleOrFactory;\n }\n\n const handler: ProxyHandler<any> = {\n get: function (target, prop, receiver) {\n if (\n target === exposedModuleExports &&\n typeof exposedModuleExports[prop] === 'function'\n ) {\n return function (this: unknown) {\n globalThis.usedChunks.add(id);\n //eslint-disable-next-line\n return exposedModuleExports[prop].apply(this, arguments);\n };\n }\n\n const originalMethod = target[prop];\n if (typeof originalMethod === 'function') {\n const proxiedFunction = function (this: unknown) {\n globalThis.usedChunks.add(id);\n //eslint-disable-next-line\n return originalMethod.apply(this, arguments);\n };\n\n Object.keys(originalMethod).forEach(function (prop) {\n Object.defineProperty(proxiedFunction, prop, {\n value: originalMethod[prop],\n writable: true,\n enumerable: true,\n configurable: true,\n });\n });\n\n return proxiedFunction;\n }\n\n return Reflect.get(target, prop, receiver);\n },\n };\n\n if (typeof exposedModuleExports === 'function') {\n exposedModuleExports = new Proxy(exposedModuleExports, handler);\n\n const staticProps = Object.getOwnPropertyNames(exposedModuleExports);\n staticProps.forEach(function (prop) {\n if (typeof exposedModuleExports[prop] === 'function') {\n exposedModuleExports[prop] = new Proxy(\n exposedModuleExports[prop],\n handler,\n );\n }\n });\n return function () {\n return exposedModuleExports;\n };\n } else {\n exposedModuleExports = new Proxy(exposedModuleExports, handler);\n }\n\n return exposedModuleExports;\n }\n\n return args;\n },\n loadRemoteSnapshot(args) {\n const { from, remoteSnapshot, manifestUrl, manifestJson, options } = args;\n\n // ensure snapshot is loaded from manifest\n if (\n from !== 'manifest' ||\n !manifestUrl ||\n !manifestJson ||\n !('publicPath' in remoteSnapshot)\n ) {\n return args;\n }\n\n // re-assign publicPath based on remoteEntry location if in browser nextjs remote\n const { publicPath } = remoteSnapshot;\n if (options.inBrowser && publicPath.includes('/_next/')) {\n remoteSnapshot.publicPath = publicPath.substring(\n 0,\n publicPath.lastIndexOf('/_next/') + 7,\n );\n } else {\n const serverPublicPath = manifestUrl.substring(\n 0,\n manifestUrl.indexOf('mf-manifest.json'),\n );\n remoteSnapshot.publicPath = serverPublicPath;\n }\n\n if ('publicPath' in manifestJson.metaData) {\n manifestJson.metaData.publicPath = remoteSnapshot.publicPath;\n }\n\n return args;\n },\n resolveShare: function (args: any) {\n if (\n args.pkgName !== 'react' &&\n args.pkgName !== 'react-dom' &&\n !args.pkgName.startsWith('next/')\n ) {\n return args;\n }\n const shareScopeMap = args.shareScopeMap;\n const scope = args.scope;\n const pkgName = args.pkgName;\n const version = args.version;\n const GlobalFederation = args.GlobalFederation;\n const host = GlobalFederation['__INSTANCES__'][0];\n if (!host) {\n return args;\n }\n\n if (!host.options.shared[pkgName]) {\n return args;\n }\n args.resolver = function () {\n shareScopeMap[scope][pkgName][version] =\n host.options.shared[pkgName][0];\n return {\n shared: shareScopeMap[scope][pkgName][version],\n useTreesShaking: false,\n };\n };\n return args;\n },\n beforeLoadShare: async function (args: any) {\n return args;\n },\n };\n}\n"],"mappings":"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"}
|