@module-federation/modern-js 0.0.0-next-20250526033636 → 0.0.0-next-20250526035905

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.
Files changed (82) hide show
  1. package/dist/cjs/cli/configPlugin.js +6 -8
  2. package/dist/cjs/cli/configPlugin.spec.js +1 -3
  3. package/dist/cjs/{runtime/wrapNoSSR.js → cli/constant.js} +6 -13
  4. package/dist/cjs/{logger.js → cli/logger.js} +1 -1
  5. package/dist/cjs/cli/ssrPlugin.js +11 -27
  6. package/dist/cjs/cli/utils.js +0 -5
  7. package/dist/cjs/constant.js +2 -49
  8. package/dist/cjs/runtime/createRemoteSSRComponent.js +210 -0
  9. package/dist/cjs/runtime/index.js +2 -11
  10. package/dist/cjs/{interfaces/global.js → ssr-runtime/index.js} +8 -2
  11. package/dist/cjs/ssr-runtime/{devPlugin.js → plugin.js} +6 -9
  12. package/dist/esm/cli/configPlugin.js +7 -9
  13. package/dist/esm/cli/configPlugin.spec.js +1 -3
  14. package/dist/esm/cli/constant.js +4 -0
  15. package/dist/esm/{logger.js → cli/logger.js} +1 -1
  16. package/dist/esm/cli/ssrPlugin.js +7 -24
  17. package/dist/esm/cli/utils.js +0 -4
  18. package/dist/esm/constant.js +1 -37
  19. package/dist/esm/runtime/createRemoteSSRComponent.js +263 -0
  20. package/dist/esm/runtime/index.js +2 -10
  21. package/dist/esm/ssr-runtime/index.js +1 -0
  22. package/dist/esm/ssr-runtime/{devPlugin.js → plugin.js} +2 -5
  23. package/dist/esm-node/cli/configPlugin.js +7 -9
  24. package/dist/esm-node/cli/configPlugin.spec.js +1 -3
  25. package/dist/esm-node/cli/constant.js +4 -0
  26. package/dist/esm-node/{logger.js → cli/logger.js} +1 -1
  27. package/dist/esm-node/cli/ssrPlugin.js +7 -23
  28. package/dist/esm-node/cli/utils.js +0 -4
  29. package/dist/esm-node/constant.js +1 -37
  30. package/dist/esm-node/runtime/createRemoteSSRComponent.js +175 -0
  31. package/dist/esm-node/runtime/index.js +2 -10
  32. package/dist/esm-node/ssr-runtime/index.js +1 -0
  33. package/dist/esm-node/ssr-runtime/{devPlugin.js → plugin.js} +2 -5
  34. package/dist/types/cli/constant.d.ts +1 -0
  35. package/dist/types/cli/index.d.ts +0 -1
  36. package/dist/types/cli/utils.d.ts +0 -1
  37. package/dist/types/constant.d.ts +0 -23
  38. package/dist/types/runtime/createRemoteSSRComponent.d.ts +19 -0
  39. package/dist/types/runtime/index.d.ts +2 -6
  40. package/dist/types/ssr-runtime/index.d.ts +1 -0
  41. package/dist/types/ssr-runtime/plugin.d.ts +2 -0
  42. package/package.json +17 -41
  43. package/dist/cjs/cli/mfRuntimePlugins/auto-fetch-data.js +0 -98
  44. package/dist/cjs/cli/server/data-fetch-server-plugin.js +0 -192
  45. package/dist/cjs/runtime/AwaitDataFetch.js +0 -144
  46. package/dist/cjs/runtime/createRemoteComponent.js +0 -327
  47. package/dist/cjs/ssr-runtime/downgrade.js +0 -108
  48. package/dist/cjs/ssr-runtime/injectDataFetchFunctionPlugin.js +0 -128
  49. package/dist/cjs/utils/dataFetch.js +0 -211
  50. package/dist/cjs/utils/index.js +0 -54
  51. package/dist/esm/cli/mfRuntimePlugins/auto-fetch-data.js +0 -74
  52. package/dist/esm/cli/server/data-fetch-server-plugin.js +0 -240
  53. package/dist/esm/interfaces/global.js +0 -0
  54. package/dist/esm/runtime/AwaitDataFetch.js +0 -131
  55. package/dist/esm/runtime/createRemoteComponent.js +0 -417
  56. package/dist/esm/runtime/wrapNoSSR.js +0 -12
  57. package/dist/esm/ssr-runtime/downgrade.js +0 -143
  58. package/dist/esm/ssr-runtime/injectDataFetchFunctionPlugin.js +0 -168
  59. package/dist/esm/utils/dataFetch.js +0 -237
  60. package/dist/esm/utils/index.js +0 -28
  61. package/dist/esm-node/cli/mfRuntimePlugins/auto-fetch-data.js +0 -68
  62. package/dist/esm-node/cli/server/data-fetch-server-plugin.js +0 -162
  63. package/dist/esm-node/interfaces/global.js +0 -0
  64. package/dist/esm-node/runtime/AwaitDataFetch.js +0 -109
  65. package/dist/esm-node/runtime/createRemoteComponent.js +0 -291
  66. package/dist/esm-node/runtime/wrapNoSSR.js +0 -11
  67. package/dist/esm-node/ssr-runtime/downgrade.js +0 -82
  68. package/dist/esm-node/ssr-runtime/injectDataFetchFunctionPlugin.js +0 -94
  69. package/dist/esm-node/utils/dataFetch.js +0 -166
  70. package/dist/esm-node/utils/index.js +0 -27
  71. package/dist/types/cli/mfRuntimePlugins/auto-fetch-data.d.ts +0 -3
  72. package/dist/types/cli/server/data-fetch-server-plugin.d.ts +0 -3
  73. package/dist/types/interfaces/global.d.ts +0 -27
  74. package/dist/types/runtime/AwaitDataFetch.d.ts +0 -19
  75. package/dist/types/runtime/createRemoteComponent.d.ts +0 -26
  76. package/dist/types/runtime/wrapNoSSR.d.ts +0 -9
  77. package/dist/types/ssr-runtime/devPlugin.d.ts +0 -2
  78. package/dist/types/ssr-runtime/downgrade.d.ts +0 -4
  79. package/dist/types/ssr-runtime/injectDataFetchFunctionPlugin.d.ts +0 -2
  80. package/dist/types/utils/dataFetch.d.ts +0 -26
  81. package/dist/types/utils/index.d.ts +0 -15
  82. /package/dist/types/{logger.d.ts → cli/logger.d.ts} +0 -0
@@ -1,240 +0,0 @@
1
- import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
- import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
- import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
- import { DATA_FETCH_QUERY, MF_DATA_FETCH_STATUS } from "../../constant";
6
- import logger from "../../logger";
7
- import { getDataFetchMap } from "../../utils";
8
- import { fetchData, initDataFetchMap, loadDataFetchModule } from "../../utils/dataFetch";
9
- import { SEPARATOR, MANIFEST_EXT } from "@module-federation/sdk";
10
- function wrapSetTimeout(targetPromise) {
11
- var delay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 2e4, id = arguments.length > 2 ? arguments[2] : void 0;
12
- if (targetPromise && typeof targetPromise.then === "function") {
13
- return new Promise(function(resolve, reject) {
14
- var timeoutId = setTimeout(function() {
15
- logger.warn("Data fetch for ID ".concat(id, " timed out after 20 seconds."));
16
- reject(new Error("Data fetch for ID ".concat(id, " timed out after 20 seconds")));
17
- }, delay);
18
- targetPromise.then(function(value) {
19
- clearTimeout(timeoutId);
20
- resolve(value);
21
- }).catch(function(err) {
22
- clearTimeout(timeoutId);
23
- reject(err);
24
- });
25
- });
26
- }
27
- }
28
- function addProtocol(url) {
29
- if (url.startsWith("//")) {
30
- return "https:" + url;
31
- }
32
- return url;
33
- }
34
- var getDecodeQuery = function(url, name) {
35
- var res = url.searchParams.get(name);
36
- if (!res) {
37
- return null;
38
- }
39
- return decodeURIComponent(res);
40
- };
41
- var middleware = function() {
42
- var _ref = _async_to_generator(function(ctx, next) {
43
- var _globalThis___FEDERATION__, url, dataFetchId, params, remoteInfo, remoteInfoQuery, _dataFetchMap_dataFetchId, _dataFetchMap_dataFetchId1, dataFetchMap, fetchDataPromise, targetPromise, wrappedPromise, res, hostInstance, remoteEntry, remote, _hostInstance_snapshotHandler_getGlobalRemoteInfo, hostGlobalSnapshot, remoteSnapshot, dataFetchItem, callFetchDataPromise, wrappedPromise1, res1, remoteId, hostInstance1, dataFetchFn, data, e;
44
- return _ts_generator(this, function(_state) {
45
- switch (_state.label) {
46
- case 0:
47
- try {
48
- url = new URL(ctx.req.url);
49
- dataFetchId = getDecodeQuery(url, DATA_FETCH_QUERY);
50
- params = JSON.parse(getDecodeQuery(url, "params") || "{}");
51
- remoteInfoQuery = getDecodeQuery(url, "remoteInfo");
52
- remoteInfo = remoteInfoQuery ? JSON.parse(remoteInfoQuery) : null;
53
- } catch (e2) {
54
- console.log("fetch data from server, error: ", e2);
55
- console.error(e2);
56
- return [
57
- 2,
58
- next()
59
- ];
60
- }
61
- if (!dataFetchId) {
62
- return [
63
- 2,
64
- next()
65
- ];
66
- }
67
- logger.log("fetch data from server, dataFetchId: ", dataFetchId);
68
- console.log("fetch data from server, moduleInfo: ", (_globalThis___FEDERATION__ = globalThis.__FEDERATION__) === null || _globalThis___FEDERATION__ === void 0 ? void 0 : _globalThis___FEDERATION__.moduleInfo);
69
- _state.label = 1;
70
- case 1:
71
- _state.trys.push([
72
- 1,
73
- 9,
74
- ,
75
- 10
76
- ]);
77
- dataFetchMap = getDataFetchMap();
78
- if (!dataFetchMap) {
79
- initDataFetchMap();
80
- }
81
- fetchDataPromise = (_dataFetchMap_dataFetchId = dataFetchMap[dataFetchId]) === null || _dataFetchMap_dataFetchId === void 0 ? void 0 : _dataFetchMap_dataFetchId[1];
82
- console.log("fetch data from server, fetchDataPromise: ", fetchDataPromise);
83
- if (!(fetchDataPromise && ((_dataFetchMap_dataFetchId1 = dataFetchMap[dataFetchId]) === null || _dataFetchMap_dataFetchId1 === void 0 ? void 0 : _dataFetchMap_dataFetchId1[2]) !== MF_DATA_FETCH_STATUS.ERROR))
84
- return [
85
- 3,
86
- 4
87
- ];
88
- logger.log("fetch data from server, fetchDataPromise: ", fetchDataPromise);
89
- targetPromise = fetchDataPromise[0];
90
- wrappedPromise = wrapSetTimeout(targetPromise, 2e4, dataFetchId);
91
- if (!wrappedPromise)
92
- return [
93
- 3,
94
- 3
95
- ];
96
- return [
97
- 4,
98
- wrappedPromise
99
- ];
100
- case 2:
101
- res = _state.sent();
102
- logger.log("fetch data from server, fetchDataPromise res: ", res);
103
- return [
104
- 2,
105
- ctx.json(res)
106
- ];
107
- case 3:
108
- logger.error("Expected a Promise from fetchDataPromise[0] for dataFetchId ".concat(dataFetchId, ", but received:"), targetPromise, "Will try call new dataFetch again...");
109
- _state.label = 4;
110
- case 4:
111
- if (remoteInfo) {
112
- try {
113
- hostInstance = globalThis.__FEDERATION__.__INSTANCES__[0];
114
- remoteEntry = "".concat(addProtocol(remoteInfo.ssrPublicPath) + remoteInfo.ssrRemoteEntry);
115
- if (!hostInstance) {
116
- throw new Error("host instance not found!");
117
- }
118
- remote = hostInstance.options.remotes.find(function(remote2) {
119
- return remote2.name === remoteInfo.name;
120
- });
121
- logger.debug("find remote: ", JSON.stringify(remote));
122
- if (!remote) {
123
- hostInstance.registerRemotes([
124
- {
125
- name: remoteInfo.name,
126
- entry: remoteEntry,
127
- entryGlobalName: remoteInfo.globalName
128
- }
129
- ]);
130
- } else if (!("entry" in remote) || !remote.entry.includes(MANIFEST_EXT)) {
131
- _hostInstance_snapshotHandler_getGlobalRemoteInfo = hostInstance.snapshotHandler.getGlobalRemoteInfo(remoteInfo), hostGlobalSnapshot = _hostInstance_snapshotHandler_getGlobalRemoteInfo.hostGlobalSnapshot, remoteSnapshot = _hostInstance_snapshotHandler_getGlobalRemoteInfo.remoteSnapshot;
132
- logger.debug("find hostGlobalSnapshot: ", JSON.stringify(hostGlobalSnapshot));
133
- logger.debug("find remoteSnapshot: ", JSON.stringify(remoteSnapshot));
134
- if (!hostGlobalSnapshot || !remoteSnapshot) {
135
- if ("version" in remote) {
136
- delete remote.version;
137
- }
138
- remote.entry = remoteEntry;
139
- remote.entryGlobalName = remoteInfo.globalName;
140
- }
141
- }
142
- } catch (e2) {
143
- ctx.status(500);
144
- return [
145
- 2,
146
- ctx.text("failed to fetch ".concat(remoteInfo.name, " data, error:\n ").concat(e2))
147
- ];
148
- }
149
- }
150
- dataFetchItem = dataFetchMap[dataFetchId];
151
- console.log("fetch data from server, dataFetchItem: ", dataFetchItem);
152
- if (!dataFetchItem)
153
- return [
154
- 3,
155
- 6
156
- ];
157
- logger.log("fetch data from server, dataFetchItem: ", dataFetchItem);
158
- callFetchDataPromise = fetchData(dataFetchId, _object_spread_props(_object_spread({}, params), {
159
- isDowngrade: !remoteInfo
160
- }));
161
- wrappedPromise1 = wrapSetTimeout(callFetchDataPromise, 2e4, dataFetchId);
162
- if (!wrappedPromise1)
163
- return [
164
- 3,
165
- 6
166
- ];
167
- return [
168
- 4,
169
- wrappedPromise1
170
- ];
171
- case 5:
172
- res1 = _state.sent();
173
- logger.log("fetch data from server, dataFetchItem res: ", res1);
174
- return [
175
- 2,
176
- ctx.json(res1)
177
- ];
178
- case 6:
179
- remoteId = dataFetchId.split(SEPARATOR)[0];
180
- hostInstance1 = globalThis.__FEDERATION__.__INSTANCES__[0];
181
- if (!hostInstance1) {
182
- throw new Error("host instance not found!");
183
- }
184
- return [
185
- 4,
186
- loadDataFetchModule(hostInstance1, remoteId)
187
- ];
188
- case 7:
189
- dataFetchFn = _state.sent();
190
- return [
191
- 4,
192
- dataFetchFn(_object_spread_props(_object_spread({}, params), {
193
- isDowngrade: !remoteInfo
194
- }))
195
- ];
196
- case 8:
197
- data = _state.sent();
198
- logger.log("fetch data from server, loadDataFetchModule res: ", data);
199
- return [
200
- 2,
201
- ctx.json(data)
202
- ];
203
- case 9:
204
- e = _state.sent();
205
- console.log("server plugin data fetch error: ", e);
206
- ctx.status(500);
207
- return [
208
- 2,
209
- ctx.text("failed to fetch ".concat(remoteInfo.name, " data, error:\n ").concat(e))
210
- ];
211
- case 10:
212
- return [
213
- 2
214
- ];
215
- }
216
- });
217
- });
218
- return function middleware2(ctx, next) {
219
- return _ref.apply(this, arguments);
220
- };
221
- }();
222
- var dataFetchServePlugin = function() {
223
- return {
224
- name: "mf-data-fetch-server-plugin",
225
- setup: function(api) {
226
- api.onPrepare(function() {
227
- var middlewares = api.getServerContext().middlewares;
228
- middlewares.push({
229
- name: "module-federation-serve-manifest",
230
- // @ts-ignore type error
231
- handler: middleware
232
- });
233
- });
234
- }
235
- };
236
- };
237
- var data_fetch_server_plugin_default = dataFetchServePlugin;
238
- export {
239
- data_fetch_server_plugin_default as default
240
- };
File without changes
@@ -1,131 +0,0 @@
1
- import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
2
- import { _ as _tagged_template_literal } from "@swc/helpers/_/_tagged_template_literal";
3
- import { _ as _type_of } from "@swc/helpers/_/_type_of";
4
- function _templateObject() {
5
- var data = _tagged_template_literal([
6
- "\n globalThis['",
7
- "'] = globalThis['",
8
- "'] || []\n globalThis['",
9
- "'].push([",
10
- ",",
11
- ",true]);"
12
- ]);
13
- _templateObject = function _templateObject2() {
14
- return data;
15
- };
16
- return data;
17
- }
18
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
19
- import { Suspense, useRef } from "react";
20
- import logger from "../logger";
21
- import { DATA_FETCH_ERROR_PREFIX, LOAD_REMOTE_ERROR_PREFIX, ERROR_TYPE, DATA_FETCH_FUNCTION } from "../constant";
22
- import { getDataFetchIdWithErrorMsgs, wrapDataFetchId } from "../utils";
23
- function isPromise(obj) {
24
- return !!obj && ((typeof obj === "undefined" ? "undefined" : _type_of(obj)) === "object" || typeof obj === "function") && typeof obj.then === "function";
25
- }
26
- var AWAIT_ERROR_PREFIX = "<Await /> caught the following error during render: ";
27
- var transformError = function(err) {
28
- var errMsg = _instanceof(err, Error) ? err.message : err;
29
- var originalMsg = errMsg.replace(AWAIT_ERROR_PREFIX, "");
30
- var dataFetchMapKey = getDataFetchIdWithErrorMsgs(originalMsg);
31
- if (originalMsg.indexOf(DATA_FETCH_ERROR_PREFIX) === 0) {
32
- return {
33
- error: new Error(originalMsg.replace(DATA_FETCH_ERROR_PREFIX, "").replace(wrapDataFetchId(dataFetchMapKey), "")),
34
- errorType: ERROR_TYPE.DATA_FETCH,
35
- dataFetchMapKey
36
- };
37
- }
38
- if (originalMsg.indexOf(LOAD_REMOTE_ERROR_PREFIX) === 0) {
39
- return {
40
- error: new Error(originalMsg.replace(LOAD_REMOTE_ERROR_PREFIX, "").replace(wrapDataFetchId(dataFetchMapKey), "")),
41
- errorType: ERROR_TYPE.LOAD_REMOTE,
42
- dataFetchMapKey
43
- };
44
- }
45
- return {
46
- error: new Error(originalMsg.replace(wrapDataFetchId(dataFetchMapKey), "")),
47
- errorType: ERROR_TYPE.UNKNOWN,
48
- dataFetchMapKey
49
- };
50
- };
51
- var DefaultLoading = /* @__PURE__ */ _jsx(_Fragment, {});
52
- var DefaultErrorElement = function(_data) {
53
- return /* @__PURE__ */ _jsx("div", {
54
- children: "Error"
55
- });
56
- };
57
- function AwaitDataFetch(param) {
58
- var resolve = param.resolve, _param_loading = param.loading, loading = _param_loading === void 0 ? DefaultLoading : _param_loading, _param_errorElement = param.errorElement, errorElement = _param_errorElement === void 0 ? DefaultErrorElement : _param_errorElement, children = param.children, params = param.params;
59
- var dataRef = useRef();
60
- var data = dataRef.current || resolve;
61
- var getData = isPromise(data) ? fetchData(data, dataRef) : function() {
62
- return data;
63
- };
64
- return /* @__PURE__ */ _jsx(AwaitSuspense, {
65
- params,
66
- loading,
67
- errorElement,
68
- // @ts-ignore
69
- resolve: getData,
70
- children
71
- });
72
- }
73
- function AwaitSuspense(param) {
74
- var resolve = param.resolve, children = param.children, _param_loading = param.loading, loading = _param_loading === void 0 ? DefaultLoading : _param_loading, _param_errorElement = param.errorElement, errorElement = _param_errorElement === void 0 ? DefaultErrorElement : _param_errorElement;
75
- return /* @__PURE__ */ _jsx(Suspense, {
76
- fallback: loading,
77
- children: /* @__PURE__ */ _jsx(ResolveAwait, {
78
- resolve,
79
- errorElement,
80
- children
81
- })
82
- });
83
- }
84
- function ResolveAwait(param) {
85
- var children = param.children, resolve = param.resolve, errorElement = param.errorElement, params = param.params;
86
- var data = resolve();
87
- logger.debug("resolve data: ", data);
88
- if (typeof data === "string" && data.indexOf(AWAIT_ERROR_PREFIX) === 0) {
89
- var transformedError = transformError(data);
90
- return /* @__PURE__ */ _jsx(_Fragment, {
91
- children: typeof errorElement === "function" ? /* @__PURE__ */ _jsxs(_Fragment, {
92
- children: [
93
- globalThis.FEDERATION_SSR && /* @__PURE__ */ _jsx("script", {
94
- suppressHydrationWarning: true,
95
- dangerouslySetInnerHTML: {
96
- __html: String.raw(_templateObject(), DATA_FETCH_FUNCTION, DATA_FETCH_FUNCTION, DATA_FETCH_FUNCTION, transformedError.dataFetchMapKey ? "'".concat(transformedError.dataFetchMapKey, "'") : "", params ? JSON.stringify(params) : null)
97
- }
98
- }),
99
- errorElement(transformedError)
100
- ]
101
- }) : errorElement
102
- });
103
- }
104
- var toRender = typeof children === "function" ? children(data) : children;
105
- return /* @__PURE__ */ _jsx(_Fragment, {
106
- children: toRender
107
- });
108
- }
109
- var fetchData = function(promise, ref) {
110
- var data;
111
- var status = "pending";
112
- var suspender = promise.then(function(res) {
113
- status = "success";
114
- data = res;
115
- ref.current = res;
116
- }).catch(function(e) {
117
- status = "success";
118
- console.warn(e);
119
- data = AWAIT_ERROR_PREFIX + e;
120
- });
121
- return function() {
122
- if (status === "pending") {
123
- throw suspender;
124
- }
125
- return data;
126
- };
127
- };
128
- export {
129
- AwaitDataFetch,
130
- transformError
131
- };