1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.printDrainHydrateMarks = exports.waitForMarks = exports.rehydrateMarks = exports.drainHydrateMarks = exports.getUsedMarks = exports.assignLoadableMark = exports.consumeMark = void 0;
|
4 | var stream_1 = require("./stream");
|
5 | var utils_1 = require("./utils");
|
6 | var LOADABLE_MARKS = new Map();
|
7 | var consumeMark = function (stream, marks) {
|
8 | if (stream === void 0) { stream = stream_1.defaultStream; }
|
9 | (0, stream_1.checkStream)(stream);
|
10 | if (marks && marks.length) {
|
11 | marks.forEach(function (a) { return (stream.marks[a] = true); });
|
12 | }
|
13 | };
|
14 | exports.consumeMark = consumeMark;
|
15 | var assignLoadableMark = function (mark, loadable) {
|
16 | LOADABLE_MARKS.set(JSON.stringify(mark), { mark: mark, loadable: loadable });
|
17 | };
|
18 | exports.assignLoadableMark = assignLoadableMark;
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | var getUsedMarks = function (stream) {
|
24 | if (stream === void 0) { stream = stream_1.defaultStream; }
|
25 | return (stream ? Object.keys(stream.marks) : []);
|
26 | };
|
27 | exports.getUsedMarks = getUsedMarks;
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | var drainHydrateMarks = function (stream) {
|
33 | if (stream === void 0) { stream = stream_1.defaultStream; }
|
34 | (0, stream_1.checkStream)(stream);
|
35 | var marks = (0, exports.getUsedMarks)(stream);
|
36 | (0, stream_1.clearStream)(stream);
|
37 | return marks;
|
38 | };
|
39 | exports.drainHydrateMarks = drainHydrateMarks;
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 | var rehydrateMarks = function (marks) {
|
47 | var rehydratedMarks = marks || global.___REACT_DEFERRED_COMPONENT_MARKS || [];
|
48 | var tasks = [];
|
49 | var usedMarks = new Set();
|
50 | LOADABLE_MARKS.forEach(function (_a) {
|
51 | var mark = _a.mark, loadable = _a.loadable;
|
52 | if ((0, utils_1.markerOverlap)(mark, rehydratedMarks)) {
|
53 | mark.forEach(function (m) { return usedMarks.add(m); });
|
54 | tasks.push(loadable.load());
|
55 | }
|
56 | });
|
57 | rehydratedMarks.forEach(function (m) {
|
58 | if (!usedMarks.has(m)) {
|
59 | throw new Error("react-imported-component: unknown mark(" + m + ") has been used. Client and Server should have the same babel configuration.");
|
60 | }
|
61 | });
|
62 | return Promise.all(tasks);
|
63 | };
|
64 | exports.rehydrateMarks = rehydrateMarks;
|
65 |
|
66 |
|
67 |
|
68 |
|
69 | var waitForMarks = function (marks) {
|
70 | var tasks = [];
|
71 | LOADABLE_MARKS.forEach(function (_a) {
|
72 | var mark = _a.mark, loadable = _a.loadable;
|
73 | if ((0, utils_1.markerOverlap)(mark, marks)) {
|
74 | tasks.push(loadable.resolution);
|
75 | }
|
76 | });
|
77 | return Promise.all(tasks);
|
78 | };
|
79 | exports.waitForMarks = waitForMarks;
|
80 |
|
81 |
|
82 |
|
83 | var printDrainHydrateMarks = function (stream) {
|
84 | (0, stream_1.checkStream)(stream);
|
85 | return "<script>window.___REACT_DEFERRED_COMPONENT_MARKS=" + JSON.stringify((0, exports.drainHydrateMarks)(stream)) + ";</script>";
|
86 | };
|
87 | exports.printDrainHydrateMarks = printDrainHydrateMarks;
|