@module-federation/modern-js 0.14.2 → 0.15.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.
Files changed (122) hide show
  1. package/dist/LICENSE +21 -0
  2. package/dist/cjs/cli/configPlugin.js +381 -0
  3. package/dist/cjs/cli/configPlugin.spec.js +114 -0
  4. package/dist/cjs/cli/index.js +95 -0
  5. package/dist/cjs/cli/mfRuntimePlugins/auto-fetch-data.js +98 -0
  6. package/dist/cjs/cli/mfRuntimePlugins/inject-node-fetch.js +44 -0
  7. package/dist/cjs/cli/mfRuntimePlugins/resolve-entry-ipv4.js +82 -0
  8. package/dist/cjs/cli/mfRuntimePlugins/shared-strategy.js +43 -0
  9. package/dist/cjs/cli/server/data-fetch-server-plugin.js +189 -0
  10. package/dist/cjs/cli/ssrPlugin.js +236 -0
  11. package/dist/cjs/cli/utils.js +90 -0
  12. package/dist/cjs/constant.js +78 -0
  13. package/dist/cjs/interfaces/bundler.js +16 -0
  14. package/dist/cjs/interfaces/global.js +16 -0
  15. package/dist/cjs/logger.js +27 -0
  16. package/dist/cjs/runtime/AwaitDataFetch.js +144 -0
  17. package/dist/cjs/runtime/createRemoteComponent.js +327 -0
  18. package/dist/cjs/runtime/index.js +50 -0
  19. package/dist/cjs/runtime/wrapNoSSR.js +35 -0
  20. package/dist/cjs/server/fileCache.js +84 -0
  21. package/dist/cjs/server/fileCache.spec.js +28 -0
  22. package/dist/cjs/server/index.js +58 -0
  23. package/dist/cjs/server/staticMiddleware.js +77 -0
  24. package/dist/cjs/server/staticMiddleware.spec.js +185 -0
  25. package/dist/cjs/ssr-runtime/SSRLiveReload.js +43 -0
  26. package/dist/cjs/ssr-runtime/devPlugin.js +71 -0
  27. package/dist/cjs/ssr-runtime/downgrade.js +114 -0
  28. package/dist/cjs/ssr-runtime/injectDataFetchFunctionPlugin.js +136 -0
  29. package/dist/cjs/types/index.js +16 -0
  30. package/dist/cjs/utils/dataFetch.js +211 -0
  31. package/dist/cjs/utils/index.js +54 -0
  32. package/dist/esm/cli/configPlugin.js +388 -0
  33. package/dist/esm/cli/configPlugin.spec.js +110 -0
  34. package/dist/esm/cli/index.js +90 -0
  35. package/dist/esm/cli/mfRuntimePlugins/auto-fetch-data.js +74 -0
  36. package/dist/esm/cli/mfRuntimePlugins/inject-node-fetch.js +16 -0
  37. package/dist/esm/cli/mfRuntimePlugins/resolve-entry-ipv4.js +74 -0
  38. package/dist/esm/cli/mfRuntimePlugins/shared-strategy.js +25 -0
  39. package/dist/esm/cli/server/data-fetch-server-plugin.js +237 -0
  40. package/dist/esm/cli/ssrPlugin.js +219 -0
  41. package/dist/esm/cli/utils.js +53 -0
  42. package/dist/esm/constant.js +42 -0
  43. package/dist/esm/interfaces/bundler.js +0 -0
  44. package/dist/esm/interfaces/global.js +0 -0
  45. package/dist/esm/logger.js +7 -0
  46. package/dist/esm/runtime/AwaitDataFetch.js +131 -0
  47. package/dist/esm/runtime/createRemoteComponent.js +417 -0
  48. package/dist/esm/runtime/index.js +22 -0
  49. package/dist/esm/runtime/wrapNoSSR.js +12 -0
  50. package/dist/esm/server/fileCache.js +98 -0
  51. package/dist/esm/server/fileCache.spec.js +50 -0
  52. package/dist/esm/server/index.js +36 -0
  53. package/dist/esm/server/staticMiddleware.js +81 -0
  54. package/dist/esm/server/staticMiddleware.spec.js +328 -0
  55. package/dist/esm/ssr-runtime/SSRLiveReload.js +26 -0
  56. package/dist/esm/ssr-runtime/devPlugin.js +73 -0
  57. package/dist/esm/ssr-runtime/downgrade.js +150 -0
  58. package/dist/esm/ssr-runtime/injectDataFetchFunctionPlugin.js +177 -0
  59. package/dist/esm/types/index.js +0 -0
  60. package/dist/esm/utils/dataFetch.js +237 -0
  61. package/dist/esm/utils/index.js +28 -0
  62. package/dist/esm-node/cli/configPlugin.js +340 -0
  63. package/dist/esm-node/cli/configPlugin.spec.js +91 -0
  64. package/dist/esm-node/cli/index.js +70 -0
  65. package/dist/esm-node/cli/mfRuntimePlugins/auto-fetch-data.js +68 -0
  66. package/dist/esm-node/cli/mfRuntimePlugins/inject-node-fetch.js +14 -0
  67. package/dist/esm-node/cli/mfRuntimePlugins/resolve-entry-ipv4.js +62 -0
  68. package/dist/esm-node/cli/mfRuntimePlugins/shared-strategy.js +23 -0
  69. package/dist/esm-node/cli/server/data-fetch-server-plugin.js +159 -0
  70. package/dist/esm-node/cli/ssrPlugin.js +200 -0
  71. package/dist/esm-node/cli/utils.js +53 -0
  72. package/dist/esm-node/constant.js +42 -0
  73. package/dist/esm-node/interfaces/bundler.js +0 -0
  74. package/dist/esm-node/interfaces/global.js +0 -0
  75. package/dist/esm-node/logger.js +7 -0
  76. package/dist/esm-node/runtime/AwaitDataFetch.js +109 -0
  77. package/dist/esm-node/runtime/createRemoteComponent.js +291 -0
  78. package/dist/esm-node/runtime/index.js +22 -0
  79. package/dist/esm-node/runtime/wrapNoSSR.js +11 -0
  80. package/dist/esm-node/server/fileCache.js +49 -0
  81. package/dist/esm-node/server/fileCache.spec.js +27 -0
  82. package/dist/esm-node/server/index.js +34 -0
  83. package/dist/esm-node/server/staticMiddleware.js +43 -0
  84. package/dist/esm-node/server/staticMiddleware.spec.js +162 -0
  85. package/dist/esm-node/ssr-runtime/SSRLiveReload.js +19 -0
  86. package/dist/esm-node/ssr-runtime/devPlugin.js +37 -0
  87. package/dist/esm-node/ssr-runtime/downgrade.js +88 -0
  88. package/dist/esm-node/ssr-runtime/injectDataFetchFunctionPlugin.js +101 -0
  89. package/dist/esm-node/types/index.js +0 -0
  90. package/dist/esm-node/utils/dataFetch.js +166 -0
  91. package/dist/esm-node/utils/index.js +27 -0
  92. package/dist/types/cli/configPlugin.d.ts +21 -0
  93. package/dist/types/cli/configPlugin.spec.d.ts +1 -0
  94. package/dist/types/cli/index.d.ts +6 -0
  95. package/dist/types/cli/mfRuntimePlugins/auto-fetch-data.d.ts +3 -0
  96. package/dist/types/cli/mfRuntimePlugins/inject-node-fetch.d.ts +3 -0
  97. package/dist/types/cli/mfRuntimePlugins/resolve-entry-ipv4.d.ts +3 -0
  98. package/dist/types/cli/mfRuntimePlugins/shared-strategy.d.ts +3 -0
  99. package/dist/types/cli/server/data-fetch-server-plugin.d.ts +3 -0
  100. package/dist/types/cli/ssrPlugin.d.ts +6 -0
  101. package/dist/types/cli/utils.d.ts +6 -0
  102. package/dist/types/constant.d.ts +25 -0
  103. package/dist/types/interfaces/bundler.d.ts +18 -0
  104. package/dist/types/interfaces/global.d.ts +27 -0
  105. package/dist/types/logger.d.ts +2 -0
  106. package/dist/types/runtime/AwaitDataFetch.d.ts +19 -0
  107. package/dist/types/runtime/createRemoteComponent.d.ts +26 -0
  108. package/dist/types/runtime/index.d.ts +10 -0
  109. package/dist/types/runtime/wrapNoSSR.d.ts +9 -0
  110. package/dist/types/server/fileCache.d.ts +14 -0
  111. package/dist/types/server/fileCache.spec.d.ts +1 -0
  112. package/dist/types/server/index.d.ts +4 -0
  113. package/dist/types/server/staticMiddleware.d.ts +6 -0
  114. package/dist/types/server/staticMiddleware.spec.d.ts +1 -0
  115. package/dist/types/ssr-runtime/SSRLiveReload.d.ts +1 -0
  116. package/dist/types/ssr-runtime/devPlugin.d.ts +2 -0
  117. package/dist/types/ssr-runtime/downgrade.d.ts +4 -0
  118. package/dist/types/ssr-runtime/injectDataFetchFunctionPlugin.d.ts +7 -0
  119. package/dist/types/types/index.d.ts +24 -0
  120. package/dist/types/utils/dataFetch.d.ts +26 -0
  121. package/dist/types/utils/index.d.ts +15 -0
  122. package/package.json +37 -12
@@ -0,0 +1,219 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _type_of } from "@swc/helpers/_/_type_of";
3
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
+ import path from "path";
5
+ import fs from "fs-extra";
6
+ import { ModuleFederationPlugin } from "@module-federation/enhanced/webpack";
7
+ import { ModuleFederationPlugin as RspackModuleFederationPlugin } from "@module-federation/enhanced/rspack";
8
+ import UniverseEntryChunkTrackerPlugin from "@module-federation/node/universe-entry-chunk-tracker-plugin";
9
+ import logger from "../logger";
10
+ import { isDev } from "./utils";
11
+ import { updateStatsAndManifest } from "@module-federation/rsbuild-plugin/manifest";
12
+ import { isWebTarget, skipByTarget } from "./utils";
13
+ function setEnv() {
14
+ process.env["MF_DISABLE_EMIT_STATS"] = "true";
15
+ process.env["MF_SSR_PRJ"] = "true";
16
+ }
17
+ var CHAIN_MF_PLUGIN_ID = "plugin-module-federation-server";
18
+ var mfSSRRsbuildPlugin = function(pluginOptions) {
19
+ return {
20
+ name: "@modern-js/plugin-mf-post-config",
21
+ pre: [
22
+ "@modern-js/builder-plugin-ssr"
23
+ ],
24
+ setup: function setup(api) {
25
+ if (pluginOptions.csrConfig.getPublicPath) {
26
+ return;
27
+ }
28
+ var csrOutputPath = "";
29
+ var ssrOutputPath = "";
30
+ var ssrEnv = "";
31
+ api.modifyEnvironmentConfig(function(config, param) {
32
+ var name = param.name;
33
+ var target = config.output.target;
34
+ if (skipByTarget(target)) {
35
+ return config;
36
+ }
37
+ if (isWebTarget(target)) {
38
+ csrOutputPath = config.output.distPath.root;
39
+ } else {
40
+ ssrOutputPath = config.output.distPath.root;
41
+ ssrEnv = name;
42
+ }
43
+ return config;
44
+ });
45
+ var modifySSRPublicPath = function(config, utils) {
46
+ if (ssrEnv !== utils.environment.name) {
47
+ return config;
48
+ }
49
+ var userSSRConfig = pluginOptions.userConfig.ssr ? _type_of(pluginOptions.userConfig.ssr) === "object" ? pluginOptions.userConfig.ssr : {} : {};
50
+ if (userSSRConfig.distOutputDir) {
51
+ return;
52
+ }
53
+ config.output.publicPath = "".concat(config.output.publicPath).concat(path.relative(csrOutputPath, ssrOutputPath), "/");
54
+ return config;
55
+ };
56
+ api.modifyWebpackConfig(function(config, utils) {
57
+ modifySSRPublicPath(config, utils);
58
+ return config;
59
+ });
60
+ api.modifyRspackConfig(function(config, utils) {
61
+ modifySSRPublicPath(config, utils);
62
+ return config;
63
+ });
64
+ }
65
+ };
66
+ };
67
+ var moduleFederationSSRPlugin = function(pluginOptions) {
68
+ return {
69
+ name: "@modern-js/plugin-module-federation-ssr",
70
+ pre: [
71
+ "@modern-js/plugin-module-federation-config",
72
+ "@modern-js/plugin-module-federation"
73
+ ],
74
+ setup: function() {
75
+ var _ref = _async_to_generator(function(api) {
76
+ var _pluginOptions_userConfig, _modernjsConfig_server, modernjsConfig, _pluginOptions_userConfig_ssr, enableSSR;
77
+ return _ts_generator(this, function(_state) {
78
+ modernjsConfig = api.getConfig();
79
+ enableSSR = (_pluginOptions_userConfig_ssr = (_pluginOptions_userConfig = pluginOptions.userConfig) === null || _pluginOptions_userConfig === void 0 ? void 0 : _pluginOptions_userConfig.ssr) !== null && _pluginOptions_userConfig_ssr !== void 0 ? _pluginOptions_userConfig_ssr : Boolean(modernjsConfig === null || modernjsConfig === void 0 ? void 0 : (_modernjsConfig_server = modernjsConfig.server) === null || _modernjsConfig_server === void 0 ? void 0 : _modernjsConfig_server.ssr);
80
+ if (!enableSSR) {
81
+ return [
82
+ 2
83
+ ];
84
+ }
85
+ setEnv();
86
+ api._internalRuntimePlugins(function(param) {
87
+ var entrypoint = param.entrypoint, plugins = param.plugins;
88
+ var fetchServerQuery = pluginOptions.fetchServerQuery;
89
+ plugins.push({
90
+ name: "injectDataFetchFunction",
91
+ path: "@module-federation/modern-js/ssr-inject-data-fetch-function-plugin",
92
+ config: {
93
+ fetchServerQuery
94
+ }
95
+ });
96
+ if (!isDev()) {
97
+ return {
98
+ entrypoint,
99
+ plugins
100
+ };
101
+ }
102
+ plugins.push({
103
+ name: "mfSSRDev",
104
+ path: "@module-federation/modern-js/ssr-dev-plugin",
105
+ config: {}
106
+ });
107
+ return {
108
+ entrypoint,
109
+ plugins
110
+ };
111
+ });
112
+ if (pluginOptions.ssrConfig.remotes) {
113
+ api._internalServerPlugins(function(param) {
114
+ var plugins = param.plugins;
115
+ plugins.push({
116
+ name: "@module-federation/modern-js/data-fetch-server-plugin",
117
+ options: {}
118
+ });
119
+ return {
120
+ plugins
121
+ };
122
+ });
123
+ }
124
+ api.modifyBundlerChain(function(chain) {
125
+ var target = chain.get("target");
126
+ if (skipByTarget(target)) {
127
+ return;
128
+ }
129
+ var bundlerType = api.getAppContext().bundlerType === "rspack" ? "rspack" : "webpack";
130
+ var MFPlugin = bundlerType === "webpack" ? ModuleFederationPlugin : RspackModuleFederationPlugin;
131
+ var isWeb = isWebTarget(target);
132
+ if (!isWeb) {
133
+ if (!chain.plugins.has(CHAIN_MF_PLUGIN_ID)) {
134
+ chain.plugin(CHAIN_MF_PLUGIN_ID).use(MFPlugin, [
135
+ pluginOptions.ssrConfig
136
+ ]).init(function(Plugin, args) {
137
+ pluginOptions.nodePlugin = new Plugin(args[0]);
138
+ return pluginOptions.nodePlugin;
139
+ });
140
+ }
141
+ }
142
+ if (!isWeb) {
143
+ chain.target("async-node");
144
+ if (isDev()) {
145
+ chain.plugin("UniverseEntryChunkTrackerPlugin").use(UniverseEntryChunkTrackerPlugin);
146
+ }
147
+ var userSSRConfig = pluginOptions.userConfig.ssr ? _type_of(pluginOptions.userConfig.ssr) === "object" ? pluginOptions.userConfig.ssr : {} : {};
148
+ var publicPath = chain.output.get("publicPath");
149
+ if (userSSRConfig.distOutputDir && publicPath) {
150
+ chain.output.publicPath("".concat(publicPath).concat(userSSRConfig.distOutputDir, "/"));
151
+ }
152
+ }
153
+ if (isDev() && isWeb) {
154
+ chain.externals({
155
+ "@module-federation/node/utils": "NOT_USED_IN_BROWSER"
156
+ });
157
+ }
158
+ });
159
+ api.config(function() {
160
+ return {
161
+ builderPlugins: [
162
+ mfSSRRsbuildPlugin(pluginOptions)
163
+ ],
164
+ tools: {
165
+ devServer: {
166
+ before: [
167
+ function(req, res, next) {
168
+ if (!enableSSR) {
169
+ next();
170
+ return;
171
+ }
172
+ try {
173
+ var _req_url, _req_url1;
174
+ if (((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.includes(".json")) && !((_req_url1 = req.url) === null || _req_url1 === void 0 ? void 0 : _req_url1.includes("hot-update"))) {
175
+ var filepath = path.join(process.cwd(), "dist".concat(req.url));
176
+ fs.statSync(filepath);
177
+ res.setHeader("Access-Control-Allow-Origin", "*");
178
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS");
179
+ res.setHeader("Access-Control-Allow-Headers", "*");
180
+ fs.createReadStream(filepath).pipe(res);
181
+ } else {
182
+ next();
183
+ }
184
+ } catch (err) {
185
+ logger.debug(err);
186
+ next();
187
+ }
188
+ }
189
+ ]
190
+ }
191
+ }
192
+ };
193
+ });
194
+ api.onAfterBuild(function() {
195
+ var nodePlugin = pluginOptions.nodePlugin, browserPlugin = pluginOptions.browserPlugin, distOutputDir = pluginOptions.distOutputDir;
196
+ updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
197
+ });
198
+ api.onDevCompileDone(function() {
199
+ var nodePlugin = pluginOptions.nodePlugin, browserPlugin = pluginOptions.browserPlugin, distOutputDir = pluginOptions.distOutputDir;
200
+ updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
201
+ });
202
+ return [
203
+ 2
204
+ ];
205
+ });
206
+ });
207
+ return function(api) {
208
+ return _ref.apply(this, arguments);
209
+ };
210
+ }()
211
+ };
212
+ };
213
+ var ssrPlugin_default = moduleFederationSSRPlugin;
214
+ export {
215
+ CHAIN_MF_PLUGIN_ID,
216
+ ssrPlugin_default as default,
217
+ moduleFederationSSRPlugin,
218
+ setEnv
219
+ };
@@ -0,0 +1,53 @@
1
+ import os from "os";
2
+ var localIpv4 = "127.0.0.1";
3
+ var getIpv4Interfaces = function() {
4
+ try {
5
+ var interfaces = os.networkInterfaces();
6
+ var ipv4Interfaces = [];
7
+ Object.values(interfaces).forEach(function(detail) {
8
+ detail === null || detail === void 0 ? void 0 : detail.forEach(function(detail2) {
9
+ var familyV4Value = typeof detail2.family === "string" ? "IPv4" : 4;
10
+ if (detail2.family === familyV4Value && detail2.address !== localIpv4) {
11
+ ipv4Interfaces.push(detail2);
12
+ }
13
+ });
14
+ });
15
+ return ipv4Interfaces;
16
+ } catch (_err) {
17
+ return [];
18
+ }
19
+ };
20
+ var getIPV4 = function() {
21
+ var ipv4Interfaces = getIpv4Interfaces();
22
+ var ipv4Interface = ipv4Interfaces[0] || {
23
+ address: localIpv4
24
+ };
25
+ return ipv4Interface.address;
26
+ };
27
+ var isWebTarget = function(target) {
28
+ var WEB_TARGET = "web";
29
+ if (Array.isArray(target)) {
30
+ return target.includes(WEB_TARGET);
31
+ } else if (typeof target === "string") {
32
+ return target === WEB_TARGET;
33
+ }
34
+ return false;
35
+ };
36
+ var skipByTarget = function(target) {
37
+ var IGNORE_TARGET = "webworker";
38
+ if (Array.isArray(target)) {
39
+ return target.includes(IGNORE_TARGET);
40
+ } else if (typeof target === "string") {
41
+ return target === IGNORE_TARGET;
42
+ }
43
+ return false;
44
+ };
45
+ function isDev() {
46
+ return process.env.NODE_ENV === "development";
47
+ }
48
+ export {
49
+ getIPV4,
50
+ isDev,
51
+ isWebTarget,
52
+ skipByTarget
53
+ };
@@ -0,0 +1,42 @@
1
+ var LOCALHOST = "localhost";
2
+ var PLUGIN_IDENTIFIER = "[ Modern.js Module Federation ]";
3
+ var DATA_FETCH_QUERY = "x-mf-data-fetch";
4
+ var DATA_FETCH_ERROR_PREFIX = "caught the following error during dataFetch: ";
5
+ var LOAD_REMOTE_ERROR_PREFIX = "caught the following error during loadRemote: ";
6
+ var DOWNGRADE_KEY = "_mfSSRDowngrade";
7
+ var DATA_FETCH_MAP_KEY = "__MF_DATA_FETCH_MAP__";
8
+ var DATA_FETCH_FUNCTION = "_mfDataFetch";
9
+ var FS_HREF = "_mfFSHref";
10
+ var ERROR_TYPE = {
11
+ DATA_FETCH: 1,
12
+ LOAD_REMOTE: 2,
13
+ UNKNOWN: 3
14
+ };
15
+ var WRAP_DATA_FETCH_ID_IDENTIFIER = "wrap_dfip_identifier";
16
+ var MF_DATA_FETCH_TYPE;
17
+ (function(MF_DATA_FETCH_TYPE2) {
18
+ MF_DATA_FETCH_TYPE2[MF_DATA_FETCH_TYPE2["FETCH_SERVER"] = 1] = "FETCH_SERVER";
19
+ MF_DATA_FETCH_TYPE2[MF_DATA_FETCH_TYPE2["FETCH_CLIENT"] = 2] = "FETCH_CLIENT";
20
+ })(MF_DATA_FETCH_TYPE || (MF_DATA_FETCH_TYPE = {}));
21
+ var MF_DATA_FETCH_STATUS;
22
+ (function(MF_DATA_FETCH_STATUS2) {
23
+ MF_DATA_FETCH_STATUS2[MF_DATA_FETCH_STATUS2["LOADED"] = 1] = "LOADED";
24
+ MF_DATA_FETCH_STATUS2[MF_DATA_FETCH_STATUS2["LOADING"] = 2] = "LOADING";
25
+ MF_DATA_FETCH_STATUS2[MF_DATA_FETCH_STATUS2["AWAIT"] = 0] = "AWAIT";
26
+ MF_DATA_FETCH_STATUS2[MF_DATA_FETCH_STATUS2["ERROR"] = 3] = "ERROR";
27
+ })(MF_DATA_FETCH_STATUS || (MF_DATA_FETCH_STATUS = {}));
28
+ export {
29
+ DATA_FETCH_ERROR_PREFIX,
30
+ DATA_FETCH_FUNCTION,
31
+ DATA_FETCH_MAP_KEY,
32
+ DATA_FETCH_QUERY,
33
+ DOWNGRADE_KEY,
34
+ ERROR_TYPE,
35
+ FS_HREF,
36
+ LOAD_REMOTE_ERROR_PREFIX,
37
+ LOCALHOST,
38
+ MF_DATA_FETCH_STATUS,
39
+ MF_DATA_FETCH_TYPE,
40
+ PLUGIN_IDENTIFIER,
41
+ WRAP_DATA_FETCH_ID_IDENTIFIER
42
+ };
File without changes
File without changes
@@ -0,0 +1,7 @@
1
+ import { createLogger } from "@module-federation/sdk";
2
+ import { PLUGIN_IDENTIFIER } from "./constant";
3
+ var logger = createLogger(PLUGIN_IDENTIFIER);
4
+ var logger_default = logger;
5
+ export {
6
+ logger_default as default
7
+ };
@@ -0,0 +1,131 @@
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
+ };