@module-federation/data-prefetch 0.6.6 → 0.6.7

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 (81) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +1 -1
  3. package/__tests__/prefetch.spec.ts +3 -2
  4. package/__tests__/react.spec.ts +1 -1
  5. package/dist/LICENSE +21 -0
  6. package/dist/babel.cjs.d.ts +2 -0
  7. package/dist/babel.cjs.js +62 -0
  8. package/dist/babel.esm.js +56 -0
  9. package/dist/cli.cjs.d.ts +1 -0
  10. package/dist/cli.cjs.js +3579 -0
  11. package/dist/cli.esm.js +3565 -0
  12. package/dist/index.cjs.d.ts +1 -0
  13. package/dist/index.cjs.js +15 -0
  14. package/dist/index.cjs2.js +7 -0
  15. package/dist/index.esm.js +6 -0
  16. package/dist/index.esm2.js +5 -0
  17. package/dist/package.json +99 -0
  18. package/dist/plugin.cjs.d.ts +2 -0
  19. package/dist/plugin.cjs.js +362 -0
  20. package/dist/plugin.esm.js +357 -0
  21. package/dist/prefetch.cjs.js +351 -0
  22. package/dist/prefetch.esm.js +349 -0
  23. package/dist/react.cjs.d.ts +1 -0
  24. package/dist/react.cjs.js +163 -0
  25. package/dist/react.esm.js +159 -0
  26. package/dist/runtime-utils.cjs.js +31 -0
  27. package/dist/runtime-utils.esm.js +26 -0
  28. package/dist/shared.cjs.d.ts +2 -0
  29. package/dist/shared.cjs.js +26 -0
  30. package/dist/shared.esm.js +24 -0
  31. package/dist/{cli → src/cli}/babel.d.ts +2 -4
  32. package/dist/{cli → src/cli}/index.d.ts +5 -8
  33. package/dist/src/common/constant.d.ts +1 -0
  34. package/dist/src/common/index.d.ts +1 -0
  35. package/dist/src/common/node-utils.d.ts +2 -0
  36. package/dist/src/common/runtime-utils.d.ts +5 -0
  37. package/dist/src/index.d.ts +2 -0
  38. package/dist/src/logger/index.d.ts +3 -0
  39. package/dist/src/plugin.d.ts +3 -0
  40. package/dist/{prefetch-4e9646e4.d.ts → src/prefetch.d.ts} +5 -7
  41. package/dist/src/react/hooks.d.ts +11 -0
  42. package/dist/src/react/index.d.ts +1 -0
  43. package/dist/src/react/utils.d.ts +1 -0
  44. package/dist/src/shared/index.d.ts +3 -0
  45. package/dist/src/universal/index.d.ts +2 -0
  46. package/dist/universal.cjs.d.ts +1 -0
  47. package/dist/universal.cjs.js +38 -0
  48. package/dist/universal.esm.js +34 -0
  49. package/jest.config.js +2 -2
  50. package/package.json +31 -28
  51. package/project.json +46 -4
  52. package/rollup.config.js +25 -0
  53. package/src/cli/index.ts +12 -10
  54. package/src/prefetch.ts +6 -2
  55. package/tsconfig.json +1 -1
  56. package/tsconfig.lib.json +10 -0
  57. package/dist/cli/babel.js +0 -84
  58. package/dist/cli/index.js +0 -205
  59. package/dist/esm/chunk-AJPO2B2T.js +0 -30
  60. package/dist/esm/chunk-EZUCZHGV.js +0 -11
  61. package/dist/esm/chunk-ISLXMAIA.js +0 -155
  62. package/dist/esm/chunk-KI4QGPIS.js +0 -32
  63. package/dist/esm/chunk-TTJJJ2WZ.js +0 -7
  64. package/dist/esm/chunk-VVZ6XIM6.js +0 -166
  65. package/dist/esm/cli/babel.js +0 -57
  66. package/dist/esm/cli/index.js +0 -178
  67. package/dist/esm/index.js +0 -13
  68. package/dist/esm/plugin.js +0 -12
  69. package/dist/esm/react/index.js +0 -94
  70. package/dist/esm/shared/index.js +0 -27
  71. package/dist/esm/universal/index.js +0 -9
  72. package/dist/index.d.ts +0 -5
  73. package/dist/index.js +0 -350
  74. package/dist/plugin.d.ts +0 -5
  75. package/dist/plugin.js +0 -346
  76. package/dist/react/index.d.ts +0 -16
  77. package/dist/react/index.js +0 -286
  78. package/dist/shared/index.d.ts +0 -5
  79. package/dist/shared/index.js +0 -48
  80. package/dist/universal/index.d.ts +0 -8
  81. package/dist/universal/index.js +0 -204
@@ -0,0 +1,357 @@
1
+ import { getResourceUrl } from '@module-federation/sdk';
2
+ import { a as getSignalFromManifest } from './runtime-utils.esm.js';
3
+ import { M as MFDataPrefetch } from './prefetch.esm.js';
4
+ import { l as logger } from './index.esm2.js';
5
+ import '@module-federation/runtime';
6
+
7
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
8
+ try {
9
+ var info = gen[key](arg);
10
+ var value = info.value;
11
+ } catch (error) {
12
+ reject(error);
13
+ return;
14
+ }
15
+ if (info.done) {
16
+ resolve(value);
17
+ } else {
18
+ Promise.resolve(value).then(_next, _throw);
19
+ }
20
+ }
21
+ function _async_to_generator(fn) {
22
+ return function() {
23
+ var self = this, args = arguments;
24
+ return new Promise(function(resolve, reject) {
25
+ var gen = fn.apply(self, args);
26
+ function _next(value) {
27
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
28
+ }
29
+ function _throw(err) {
30
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
31
+ }
32
+ _next(undefined);
33
+ });
34
+ };
35
+ }
36
+ function _instanceof(left, right) {
37
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
38
+ return !!right[Symbol.hasInstance](left);
39
+ } else {
40
+ return left instanceof right;
41
+ }
42
+ }
43
+ function _ts_generator(thisArg, body) {
44
+ var f, y, t, g, _ = {
45
+ label: 0,
46
+ sent: function() {
47
+ if (t[0] & 1) throw t[1];
48
+ return t[1];
49
+ },
50
+ trys: [],
51
+ ops: []
52
+ };
53
+ return g = {
54
+ next: verb(0),
55
+ "throw": verb(1),
56
+ "return": verb(2)
57
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
58
+ return this;
59
+ }), g;
60
+ function verb(n) {
61
+ return function(v) {
62
+ return step([
63
+ n,
64
+ v
65
+ ]);
66
+ };
67
+ }
68
+ function step(op) {
69
+ if (f) throw new TypeError("Generator is already executing.");
70
+ while(_)try {
71
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
72
+ if (y = 0, t) op = [
73
+ op[0] & 2,
74
+ t.value
75
+ ];
76
+ switch(op[0]){
77
+ case 0:
78
+ case 1:
79
+ t = op;
80
+ break;
81
+ case 4:
82
+ _.label++;
83
+ return {
84
+ value: op[1],
85
+ done: false
86
+ };
87
+ case 5:
88
+ _.label++;
89
+ y = op[1];
90
+ op = [
91
+ 0
92
+ ];
93
+ continue;
94
+ case 7:
95
+ op = _.ops.pop();
96
+ _.trys.pop();
97
+ continue;
98
+ default:
99
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
100
+ _ = 0;
101
+ continue;
102
+ }
103
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
104
+ _.label = op[1];
105
+ break;
106
+ }
107
+ if (op[0] === 6 && _.label < t[1]) {
108
+ _.label = t[1];
109
+ t = op;
110
+ break;
111
+ }
112
+ if (t && _.label < t[2]) {
113
+ _.label = t[2];
114
+ _.ops.push(op);
115
+ break;
116
+ }
117
+ if (t[2]) _.ops.pop();
118
+ _.trys.pop();
119
+ continue;
120
+ }
121
+ op = body.call(thisArg, _);
122
+ } catch (e) {
123
+ op = [
124
+ 6,
125
+ e
126
+ ];
127
+ y = 0;
128
+ } finally{
129
+ f = t = 0;
130
+ }
131
+ if (op[0] & 5) throw op[1];
132
+ return {
133
+ value: op[0] ? op[1] : void 0,
134
+ done: true
135
+ };
136
+ }
137
+ }
138
+ var loadingArray = [];
139
+ var strategy = 'loaded-first';
140
+ var sharedFlag = strategy;
141
+ // eslint-disable-next-line max-lines-per-function
142
+ var prefetchPlugin = function() {
143
+ return {
144
+ name: 'data-prefetch-runtime-plugin',
145
+ initContainer: function initContainer(options) {
146
+ var remoteSnapshot = options.remoteSnapshot, remoteInfo = options.remoteInfo, id = options.id, origin = options.origin;
147
+ var snapshot = remoteSnapshot;
148
+ var name = remoteInfo.name;
149
+ var prefetchOptions = {
150
+ name: name,
151
+ remote: remoteInfo,
152
+ origin: origin,
153
+ remoteSnapshot: snapshot
154
+ };
155
+ var signal = getSignalFromManifest(snapshot);
156
+ if (!signal) {
157
+ return options;
158
+ }
159
+ if (sharedFlag !== strategy) {
160
+ throw new Error("[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'");
161
+ }
162
+ var instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);
163
+ var prefetchUrl;
164
+ // @ts-expect-error
165
+ if (snapshot.prefetchEntry) {
166
+ // @ts-expect-error
167
+ prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);
168
+ }
169
+ var exist = loadingArray.find(function(loading) {
170
+ return loading.id === id;
171
+ });
172
+ if (exist) {
173
+ return options;
174
+ }
175
+ var promise = instance.loadEntry(prefetchUrl).then(/*#__PURE__*/ _async_to_generator(function() {
176
+ var projectExports;
177
+ return _ts_generator(this, function(_state) {
178
+ switch(_state.label){
179
+ case 0:
180
+ projectExports = instance.getProjectExports();
181
+ if (!_instanceof(projectExports, Promise)) return [
182
+ 3,
183
+ 2
184
+ ];
185
+ return [
186
+ 4,
187
+ projectExports
188
+ ];
189
+ case 1:
190
+ _state.sent();
191
+ _state.label = 2;
192
+ case 2:
193
+ return [
194
+ 2,
195
+ Promise.resolve().then(function() {
196
+ var exports = instance.getExposeExports(id);
197
+ logger.info("1. Start Prefetch initContainer: ".concat(id, " - ").concat(performance.now()));
198
+ var result = Object.keys(exports).map(function(k) {
199
+ var value = instance.prefetch({
200
+ id: id,
201
+ functionId: k
202
+ });
203
+ var functionId = k;
204
+ return {
205
+ value: value,
206
+ functionId: functionId
207
+ };
208
+ });
209
+ return result;
210
+ })
211
+ ];
212
+ }
213
+ });
214
+ }));
215
+ loadingArray.push({
216
+ id: id,
217
+ promise: promise
218
+ });
219
+ return options;
220
+ },
221
+ afterResolve: function afterResolve(options) {
222
+ var remoteSnapshot = options.remoteSnapshot, remoteInfo = options.remoteInfo, id = options.id, origin = options.origin;
223
+ var snapshot = remoteSnapshot;
224
+ var name = remoteInfo.name;
225
+ var prefetchOptions = {
226
+ name: name,
227
+ remote: remoteInfo,
228
+ origin: origin,
229
+ remoteSnapshot: snapshot
230
+ };
231
+ var signal = getSignalFromManifest(snapshot);
232
+ if (!signal) {
233
+ return options;
234
+ }
235
+ var inited = loadingArray.some(function(info) {
236
+ return info.id === id;
237
+ });
238
+ if (!inited) {
239
+ return options;
240
+ }
241
+ if (sharedFlag !== strategy) {
242
+ throw new Error("[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'");
243
+ }
244
+ var instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);
245
+ var prefetchUrl;
246
+ // @ts-expect-error
247
+ if (snapshot.prefetchEntry) {
248
+ // @ts-expect-error
249
+ prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);
250
+ }
251
+ var index = loadingArray.findIndex(function(loading) {
252
+ return loading.id === id;
253
+ });
254
+ // clear cache
255
+ if (index !== -1) {
256
+ loadingArray.splice(index, 1);
257
+ }
258
+ var promise = instance.loadEntry(prefetchUrl).then(/*#__PURE__*/ _async_to_generator(function() {
259
+ var projectExports;
260
+ return _ts_generator(this, function(_state) {
261
+ switch(_state.label){
262
+ case 0:
263
+ projectExports = instance.getProjectExports();
264
+ if (!_instanceof(projectExports, Promise)) return [
265
+ 3,
266
+ 2
267
+ ];
268
+ return [
269
+ 4,
270
+ projectExports
271
+ ];
272
+ case 1:
273
+ _state.sent();
274
+ _state.label = 2;
275
+ case 2:
276
+ return [
277
+ 2,
278
+ Promise.resolve().then(function() {
279
+ var exports = instance.getExposeExports(id);
280
+ logger.info("1. Start Prefetch afterResolve: ".concat(id, " - ").concat(performance.now()));
281
+ var result = Object.keys(exports).map(function(k) {
282
+ var value = instance.prefetch({
283
+ id: id,
284
+ functionId: k
285
+ });
286
+ var functionId = k;
287
+ return {
288
+ value: value,
289
+ functionId: functionId
290
+ };
291
+ });
292
+ return result;
293
+ })
294
+ ];
295
+ }
296
+ });
297
+ }));
298
+ loadingArray.push({
299
+ id: id,
300
+ promise: promise
301
+ });
302
+ return options;
303
+ },
304
+ onLoad: function onLoad(options) {
305
+ return _async_to_generator(function() {
306
+ var _loadingArray_find, remote, id, name, promise, prefetch, prefetchValue, instance;
307
+ return _ts_generator(this, function(_state) {
308
+ switch(_state.label){
309
+ case 0:
310
+ remote = options.remote, id = options.id;
311
+ name = remote.name;
312
+ promise = (_loadingArray_find = loadingArray.find(function(loading) {
313
+ return loading.id === id;
314
+ })) === null || _loadingArray_find === void 0 ? void 0 : _loadingArray_find.promise;
315
+ if (!promise) return [
316
+ 3,
317
+ 3
318
+ ];
319
+ return [
320
+ 4,
321
+ promise
322
+ ];
323
+ case 1:
324
+ prefetch = _state.sent();
325
+ prefetchValue = prefetch.map(function(result) {
326
+ return result.value;
327
+ });
328
+ return [
329
+ 4,
330
+ Promise.all(prefetchValue)
331
+ ];
332
+ case 2:
333
+ _state.sent();
334
+ instance = MFDataPrefetch.getInstance(name);
335
+ prefetch.forEach(function(result) {
336
+ var value = result.value, functionId = result.functionId;
337
+ instance.memorize(id + functionId, value);
338
+ });
339
+ _state.label = 3;
340
+ case 3:
341
+ return [
342
+ 2,
343
+ options
344
+ ];
345
+ }
346
+ });
347
+ })();
348
+ },
349
+ beforeLoadShare: function beforeLoadShare(options) {
350
+ var shareInfo = options.shareInfo;
351
+ sharedFlag = (shareInfo === null || shareInfo === void 0 ? void 0 : shareInfo.strategy) || sharedFlag;
352
+ return options;
353
+ }
354
+ };
355
+ };
356
+
357
+ export { prefetchPlugin as default, prefetchPlugin };