@modern-js/runtime 2.4.0 → 2.4.1-alpha.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 (85) hide show
  1. package/dist/js/modern/core/compatible.js +1 -0
  2. package/dist/js/modern/router/runtime/fetch.js +5 -0
  3. package/dist/js/modern/router/runtime/fetch.node.js +4 -0
  4. package/dist/js/modern/router/runtime/fetch.worker.js +5 -0
  5. package/dist/js/modern/router/runtime/plugin.node.js +50 -10
  6. package/dist/js/modern/ssr/cli/index.js +2 -2
  7. package/dist/js/modern/ssr/prefetch.worker.js +66 -0
  8. package/dist/js/modern/ssr/react/nossr/index.js +6 -2
  9. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +1 -1
  10. package/dist/js/modern/ssr/serverRender/renderToStream/index.worker.js +35 -0
  11. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.worker.js +110 -0
  12. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +5 -4
  13. package/dist/js/modern/ssr/serverRender/renderToString/index.js +1 -1
  14. package/dist/js/modern/ssr/serverRender/renderToString/index.worker.js +49 -0
  15. package/dist/js/modern/ssr/serverRender/time.js +13 -0
  16. package/dist/js/modern/ssr/serverRender/time.worker.js +28 -0
  17. package/dist/js/modern/ssr/serverRender/utils.js +1 -12
  18. package/dist/js/node/core/compatible.js +1 -0
  19. package/dist/js/node/router/runtime/fetch.js +28 -0
  20. package/dist/js/node/router/runtime/fetch.node.js +27 -0
  21. package/dist/js/node/router/runtime/fetch.worker.js +28 -0
  22. package/dist/js/node/router/runtime/plugin.node.js +46 -9
  23. package/dist/js/node/ssr/cli/index.js +2 -2
  24. package/dist/js/node/ssr/prefetch.worker.js +87 -0
  25. package/dist/js/node/ssr/react/nossr/index.js +6 -2
  26. package/dist/js/node/ssr/serverRender/renderToStream/index.js +2 -2
  27. package/dist/js/node/ssr/serverRender/renderToStream/index.worker.js +64 -0
  28. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.worker.js +129 -0
  29. package/dist/js/node/ssr/serverRender/renderToString/entry.js +7 -6
  30. package/dist/js/node/ssr/serverRender/renderToString/index.js +2 -2
  31. package/dist/js/node/ssr/serverRender/renderToString/index.worker.js +78 -0
  32. package/dist/js/node/ssr/serverRender/time.js +36 -0
  33. package/dist/js/node/ssr/serverRender/time.worker.js +51 -0
  34. package/dist/js/node/ssr/serverRender/utils.js +2 -14
  35. package/dist/js/treeshaking/core/compatible.js +8 -7
  36. package/dist/js/treeshaking/core/loader/loaderManager.js +3 -3
  37. package/dist/js/treeshaking/core/loader/useLoader.js +15 -15
  38. package/dist/js/treeshaking/document/Head.js +1 -1
  39. package/dist/js/treeshaking/document/Html.js +2 -2
  40. package/dist/js/treeshaking/document/Root.js +2 -2
  41. package/dist/js/treeshaking/document/cli/index.js +4 -4
  42. package/dist/js/treeshaking/router/cli/index.js +2 -2
  43. package/dist/js/treeshaking/router/runtime/fetch.js +2 -0
  44. package/dist/js/treeshaking/router/runtime/fetch.node.js +2 -0
  45. package/dist/js/treeshaking/router/runtime/fetch.worker.js +2 -0
  46. package/dist/js/treeshaking/router/runtime/plugin.js +3 -3
  47. package/dist/js/treeshaking/router/runtime/plugin.node.js +70 -13
  48. package/dist/js/treeshaking/router/runtime/utils.js +3 -3
  49. package/dist/js/treeshaking/ssr/cli/index.js +5 -5
  50. package/dist/js/treeshaking/ssr/index.js +6 -6
  51. package/dist/js/treeshaking/ssr/index.node.js +1 -1
  52. package/dist/js/treeshaking/ssr/prefetch.js +2 -2
  53. package/dist/js/treeshaking/ssr/prefetch.worker.js +191 -0
  54. package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -3
  55. package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -2
  56. package/dist/js/treeshaking/ssr/react/prerender/util.js +2 -2
  57. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +2 -2
  58. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +1 -1
  59. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.worker.js +32 -0
  60. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +1 -1
  61. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +8 -8
  62. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.worker.js +280 -0
  63. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +1 -1
  64. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +5 -5
  65. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +1 -1
  66. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.worker.js +167 -0
  67. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +1 -1
  68. package/dist/js/treeshaking/ssr/serverRender/time.js +57 -0
  69. package/dist/js/treeshaking/ssr/serverRender/time.worker.js +75 -0
  70. package/dist/js/treeshaking/ssr/serverRender/utils.js +1 -57
  71. package/dist/js/treeshaking/ssr/utils.js +5 -5
  72. package/dist/js/treeshaking/state/cli/index.js +2 -2
  73. package/dist/js/treeshaking/state/runtime/plugin.js +3 -3
  74. package/dist/types/router/runtime/fetch.d.ts +2 -0
  75. package/dist/types/router/runtime/fetch.node.d.ts +2 -0
  76. package/dist/types/router/runtime/fetch.worker.d.ts +2 -0
  77. package/dist/types/ssr/prefetch.worker.d.ts +13 -0
  78. package/dist/types/ssr/react/nossr/index.d.ts +4 -2
  79. package/dist/types/ssr/serverRender/renderToStream/index.worker.d.ts +6 -0
  80. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +8 -0
  81. package/dist/types/ssr/serverRender/renderToString/index.worker.d.ts +6 -0
  82. package/dist/types/ssr/serverRender/time.d.ts +1 -0
  83. package/dist/types/ssr/serverRender/time.worker.d.ts +1 -0
  84. package/dist/types/ssr/serverRender/utils.d.ts +2 -3
  85. package/package.json +36 -23
@@ -0,0 +1,191 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ 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;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import { jsx } from "react/jsx-runtime";
126
+ import { renderToStaticMarkup } from "react-dom/server";
127
+ import { ChunkExtractor } from "@loadable/server";
128
+ var prefetch = function() {
129
+ var _ref = _asyncToGenerator(function(App, context) {
130
+ var _context_store, ssrContext, loadableStats, extractor, loadersData;
131
+ return __generator(this, function(_state) {
132
+ switch(_state.label){
133
+ case 0:
134
+ ssrContext = context.ssrContext;
135
+ loadableStats = ssrContext.loadableStats;
136
+ if (loadableStats) {
137
+ extractor = new ChunkExtractor({
138
+ stats: loadableStats,
139
+ entrypoints: [
140
+ ssrContext.entryName
141
+ ].filter(Boolean)
142
+ });
143
+ renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ jsx(App, {
144
+ context: context
145
+ })));
146
+ } else {
147
+ renderToStaticMarkup(/* @__PURE__ */ jsx(App, {
148
+ context: context
149
+ }));
150
+ }
151
+ if (!context.loaderManager.hasPendingLoaders()) {
152
+ return [
153
+ 2,
154
+ {
155
+ initialData: context.initialData,
156
+ i18nData: context.__i18nData__
157
+ }
158
+ ];
159
+ }
160
+ return [
161
+ 4,
162
+ context.loaderManager.awaitPendingLoaders()
163
+ ];
164
+ case 1:
165
+ loadersData = _state.sent();
166
+ Object.keys(loadersData).forEach(function(id) {
167
+ var data = loadersData[id];
168
+ if (data._error) {
169
+ ssrContext.logger.error("App Prefetch Loader", data._error);
170
+ ssrContext.metrics.emitCounter("app.prefetch.loader.error", 1);
171
+ delete data._error;
172
+ }
173
+ });
174
+ return [
175
+ 2,
176
+ {
177
+ loadersData: loadersData,
178
+ initialData: context.initialData,
179
+ i18nData: context.__i18nData__,
180
+ storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
181
+ }
182
+ ];
183
+ }
184
+ });
185
+ });
186
+ return function prefetch(App, context) {
187
+ return _ref.apply(this, arguments);
188
+ };
189
+ }();
190
+ var prefetch_worker_default = prefetch;
191
+ export { prefetch_worker_default as default };
@@ -47,12 +47,12 @@ function _unsupportedIterableToArray(o, minLen) {
47
47
  import React, { useEffect, useState } from "react";
48
48
  var csr = false;
49
49
  var NoSSR = function(props) {
50
- var ref = _slicedToArray(useState(csr), 2), isMounted = ref[0], setMounted = ref[1];
50
+ var _useState = _slicedToArray(useState(csr), 2), isMounted = _useState[0], setMounted = _useState[1];
51
51
  useEffect(function() {
52
52
  csr = true;
53
53
  setMounted(true);
54
54
  });
55
- var children = props.children;
56
- return React.createElement(React.Fragment, null, isMounted ? children : null);
55
+ var children = props.children, _props_fallback = props.fallback, fallback = _props_fallback === void 0 ? null : _props_fallback;
56
+ return React.createElement(React.Fragment, null, isMounted ? children : fallback);
57
57
  };
58
58
  export { NoSSR };
@@ -181,7 +181,7 @@ var reducePropsToState = function(propsList) {
181
181
  return reduceProps;
182
182
  };
183
183
  function factory(Component) {
184
- var _Component;
184
+ var _React_Component;
185
185
  var Spr = /*#__PURE__*/ function(_superClass) {
186
186
  "use strict";
187
187
  _inherits(Spr, _superClass);
@@ -220,7 +220,7 @@ function factory(Component) {
220
220
  }
221
221
  ]);
222
222
  return Spr;
223
- }(_Component = React.Component);
223
+ }(_React_Component = React.Component);
224
224
  _defineProperty(Spr, "peek", Component.peek);
225
225
  _defineProperty(Spr, "rewind", Component.rewind);
226
226
  _defineProperty(Spr, "config", function() {
@@ -54,9 +54,9 @@ var aggKeysFromPropsList = function aggKeysFromPropsList2(propsList, propName) {
54
54
  return result;
55
55
  }, initResult);
56
56
  return REQUEST_META.reduce(function(result, next) {
57
- var ref;
57
+ var _result_key;
58
58
  var key = next;
59
- if (result[key] && ((ref = result[key]) === null || ref === void 0 ? void 0 : ref.length) === 0) {
59
+ if (result[key] && ((_result_key = result[key]) === null || _result_key === void 0 ? void 0 : _result_key.length) === 0) {
60
60
  delete result[key];
61
61
  }
62
62
  return result;
@@ -81,7 +81,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
81
81
  var routeManifest2 = routeAssets[routeId];
82
82
  if (routeManifest2) {
83
83
  var _cssChunks;
84
- var _assets = routeManifest2.assets, assets = _assets === void 0 ? [] : _assets;
84
+ var _routeManifest2_assets = routeManifest2.assets, assets = _routeManifest2_assets === void 0 ? [] : _routeManifest2_assets;
85
85
  var _cssChunks1 = assets.filter(function(asset) {
86
86
  return asset === null || asset === void 0 ? void 0 : asset.endsWith(".css");
87
87
  });
@@ -102,7 +102,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
102
102
  },
103
103
  injectCss
104
104
  ];
105
- var ref = _slicedToArray(beforeEntryTemplate.match(HEAD_REG_EXP) || [], 1), tmp = ref[0], headTemplate = tmp === void 0 ? "" : tmp;
105
+ var _ref = _slicedToArray(beforeEntryTemplate.match(HEAD_REG_EXP) || [], 1), tmp = _ref[0], headTemplate = tmp === void 0 ? "" : tmp;
106
106
  if (!headTemplate.length) {
107
107
  return "";
108
108
  }
@@ -125,7 +125,7 @@ var __generator = this && this.__generator || function(thisArg, body) {
125
125
  import { createElement } from "react";
126
126
  import { run } from "@modern-js/utils/ssr";
127
127
  import { PreRender } from "../../react/prerender";
128
- import { time } from "../utils";
128
+ import { time } from "../time";
129
129
  import renderToPipe from "./renderToPipe";
130
130
  var render = function(param) {
131
131
  var App = param.App, context = param.context;
@@ -0,0 +1,32 @@
1
+ import { createElement } from "react";
2
+ import { PreRender } from "../../react/prerender";
3
+ import { time } from "../time";
4
+ import renderToPipe from "./renderToPipe";
5
+ var render = function(param) {
6
+ var App = param.App, context = param.context;
7
+ var ssrContext = context.ssrContext;
8
+ if (!ssrContext) {
9
+ throw new Error('The "ssrContext" must not be undefined, but received undefined');
10
+ }
11
+ var end = time();
12
+ var rootElement = createElement(App, {
13
+ context: Object.assign(context || {}, {
14
+ ssr: true
15
+ })
16
+ });
17
+ var pipe = renderToPipe(rootElement, context, {
18
+ onShellReady: function onShellReady() {
19
+ var cacheConfig = PreRender.config();
20
+ if (cacheConfig) {
21
+ ssrContext.cacheConfig = cacheConfig;
22
+ }
23
+ },
24
+ onAllReady: function onAllReady() {
25
+ var cost = end();
26
+ ssrContext.logger.debug("App Render To HTML cost = %d ms", cost);
27
+ ssrContext.metrics.emitTimer("app.render.html.cost", cost);
28
+ }
29
+ });
30
+ return pipe;
31
+ };
32
+ export { render };
@@ -1,7 +1,7 @@
1
1
  import { ChunkExtractor } from "@loadable/server";
2
2
  function getLoadableChunks(param) {
3
3
  var context = param.context, jsx = param.jsx;
4
- var _ssrContext = context.ssrContext, loadableStats = _ssrContext.loadableStats, entryName = _ssrContext.entryName;
4
+ var _context_ssrContext = context.ssrContext, loadableStats = _context_ssrContext.loadableStats, entryName = _context_ssrContext.entryName;
5
5
  if (!loadableStats) {
6
6
  return {
7
7
  jsx: jsx
@@ -75,9 +75,9 @@ function renderToPipe(rootElement, context, options) {
75
75
  } catch (e) {}
76
76
  var pipe = renderToPipeableStream(rootElement, _objectSpreadProps(_objectSpread({}, options), {
77
77
  onShellReady: function onShellReady() {
78
- var ref;
79
- var ref1 = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = ref1.shellAfter, shellBefore = ref1.shellBefore;
80
- options === null || options === void 0 ? void 0 : (ref = options.onShellReady) === null || ref === void 0 ? void 0 : ref.call(options);
78
+ var _options_onShellReady;
79
+ var _getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
80
+ options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
81
81
  var injectableTransform = new Transform({
82
82
  transform: function transform(chunk, _encoding, callback) {
83
83
  try {
@@ -100,18 +100,18 @@ function renderToPipe(rootElement, context, options) {
100
100
  resolve(pipe(injectableTransform).pipe(stream));
101
101
  },
102
102
  onShellError: function onShellError(error) {
103
- var ref;
103
+ var _options_onShellError;
104
104
  ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
105
- var ref1 = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter = ref1.shellAfter, shellBefore = ref1.shellBefore;
105
+ var _getTemplates = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
106
106
  var fallbackHtml = "".concat(shellBefore).concat(shellAfter);
107
107
  resolve(fallbackHtml);
108
- options === null || options === void 0 ? void 0 : (ref = options.onShellError) === null || ref === void 0 ? void 0 : ref.call(options, error);
108
+ options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
109
109
  },
110
110
  onError: function onError(error) {
111
- var ref;
111
+ var _options_onError;
112
112
  ssrContext.logger.error("An error occurs during streaming SSR", error);
113
113
  ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
114
- options === null || options === void 0 ? void 0 : (ref = options.onError) === null || ref === void 0 ? void 0 : ref.call(options, error);
114
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
115
115
  }
116
116
  })).pipe;
117
117
  });
@@ -0,0 +1,280 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ function _defineProperty(obj, key, value) {
31
+ if (key in obj) {
32
+ Object.defineProperty(obj, key, {
33
+ value: value,
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true
37
+ });
38
+ } else {
39
+ obj[key] = value;
40
+ }
41
+ return obj;
42
+ }
43
+ function _objectSpread(target) {
44
+ for(var i = 1; i < arguments.length; i++){
45
+ var source = arguments[i] != null ? arguments[i] : {};
46
+ var ownKeys = Object.keys(source);
47
+ if (typeof Object.getOwnPropertySymbols === "function") {
48
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
49
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
50
+ }));
51
+ }
52
+ ownKeys.forEach(function(key) {
53
+ _defineProperty(target, key, source[key]);
54
+ });
55
+ }
56
+ return target;
57
+ }
58
+ function ownKeys(object, enumerableOnly) {
59
+ var keys = Object.keys(object);
60
+ if (Object.getOwnPropertySymbols) {
61
+ var symbols = Object.getOwnPropertySymbols(object);
62
+ if (enumerableOnly) {
63
+ symbols = symbols.filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
65
+ });
66
+ }
67
+ keys.push.apply(keys, symbols);
68
+ }
69
+ return keys;
70
+ }
71
+ function _objectSpreadProps(target, source) {
72
+ source = source != null ? source : {};
73
+ if (Object.getOwnPropertyDescriptors) {
74
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
75
+ } else {
76
+ ownKeys(Object(source)).forEach(function(key) {
77
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
78
+ });
79
+ }
80
+ return target;
81
+ }
82
+ var __generator = this && this.__generator || function(thisArg, body) {
83
+ var f, y, t, g, _ = {
84
+ label: 0,
85
+ sent: function() {
86
+ if (t[0] & 1) throw t[1];
87
+ return t[1];
88
+ },
89
+ trys: [],
90
+ ops: []
91
+ };
92
+ return(g = {
93
+ next: verb(0),
94
+ "throw": verb(1),
95
+ "return": verb(2)
96
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
97
+ return this;
98
+ }), g);
99
+ function verb(n) {
100
+ return function(v) {
101
+ return step([
102
+ n,
103
+ v
104
+ ]);
105
+ };
106
+ }
107
+ function step(op) {
108
+ if (f) throw new TypeError("Generator is already executing.");
109
+ while(_)try {
110
+ 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;
111
+ if (y = 0, t) op = [
112
+ op[0] & 2,
113
+ t.value
114
+ ];
115
+ switch(op[0]){
116
+ case 0:
117
+ case 1:
118
+ t = op;
119
+ break;
120
+ case 4:
121
+ _.label++;
122
+ return {
123
+ value: op[1],
124
+ done: false
125
+ };
126
+ case 5:
127
+ _.label++;
128
+ y = op[1];
129
+ op = [
130
+ 0
131
+ ];
132
+ continue;
133
+ case 7:
134
+ op = _.ops.pop();
135
+ _.trys.pop();
136
+ continue;
137
+ default:
138
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
139
+ _ = 0;
140
+ continue;
141
+ }
142
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
143
+ _.label = op[1];
144
+ break;
145
+ }
146
+ if (op[0] === 6 && _.label < t[1]) {
147
+ _.label = t[1];
148
+ t = op;
149
+ break;
150
+ }
151
+ if (t && _.label < t[2]) {
152
+ _.label = t[2];
153
+ _.ops.push(op);
154
+ break;
155
+ }
156
+ if (t[2]) _.ops.pop();
157
+ _.trys.pop();
158
+ continue;
159
+ }
160
+ op = body.call(thisArg, _);
161
+ } catch (e) {
162
+ op = [
163
+ 6,
164
+ e
165
+ ];
166
+ y = 0;
167
+ } finally{
168
+ f = t = 0;
169
+ }
170
+ if (op[0] & 5) throw op[1];
171
+ return {
172
+ value: op[0] ? op[1] : void 0,
173
+ done: true
174
+ };
175
+ }
176
+ };
177
+ import { RenderLevel } from "../types";
178
+ import { getTemplates } from "./template";
179
+ function renderToPipe(rootElement, context, options) {
180
+ var isShellStream = true;
181
+ var ssrContext = context.ssrContext;
182
+ var forUserPipe = function() {
183
+ var _ref = _asyncToGenerator(function(stream) {
184
+ var renderToReadableStream, _getTemplates, shellAfter, shellBefore, readableOriginal, reader, injectableStream, err, _getTemplates1, shellAfter2, shellBefore2, fallbackHtml;
185
+ return __generator(this, function(_state) {
186
+ switch(_state.label){
187
+ case 0:
188
+ try {
189
+ renderToReadableStream = require("react-dom/server").renderToReadableStream;
190
+ } catch (e) {}
191
+ _getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
192
+ _state.label = 1;
193
+ case 1:
194
+ _state.trys.push([
195
+ 1,
196
+ 3,
197
+ ,
198
+ 4
199
+ ]);
200
+ return [
201
+ 4,
202
+ renderToReadableStream(rootElement, _objectSpreadProps(_objectSpread({}, options), {
203
+ onError: function onError(error) {
204
+ var _options_onError;
205
+ ssrContext.logger.error("An error occurs during streaming SSR", error);
206
+ ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
207
+ options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
208
+ }
209
+ }))
210
+ ];
211
+ case 2:
212
+ readableOriginal = _state.sent();
213
+ reader = readableOriginal.getReader();
214
+ injectableStream = new ReadableStream({
215
+ start: function start(controller) {
216
+ return _asyncToGenerator(function() {
217
+ var value;
218
+ return __generator(this, function(_state) {
219
+ switch(_state.label){
220
+ case 0:
221
+ return [
222
+ 4,
223
+ reader.read()
224
+ ];
225
+ case 1:
226
+ value = _state.sent().value;
227
+ if (isShellStream) {
228
+ controller.enqueue(encodeForWebStream(shellBefore));
229
+ controller.enqueue(value);
230
+ controller.enqueue(encodeForWebStream(shellAfter));
231
+ isShellStream = false;
232
+ } else {
233
+ controller.enqueue(value);
234
+ }
235
+ return [
236
+ 2
237
+ ];
238
+ }
239
+ });
240
+ })();
241
+ }
242
+ });
243
+ return [
244
+ 2,
245
+ readableOriginal(injectableStream).readableOriginal(stream)
246
+ ];
247
+ case 3:
248
+ err = _state.sent();
249
+ ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
250
+ _getTemplates1 = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter2 = _getTemplates1.shellAfter, shellBefore2 = _getTemplates1.shellBefore;
251
+ fallbackHtml = "".concat(shellBefore2).concat(shellAfter2);
252
+ return [
253
+ 2,
254
+ fallbackHtml
255
+ ];
256
+ case 4:
257
+ return [
258
+ 2
259
+ ];
260
+ }
261
+ });
262
+ });
263
+ return function forUserPipe(stream) {
264
+ return _ref.apply(this, arguments);
265
+ };
266
+ }();
267
+ return forUserPipe;
268
+ }
269
+ var encoder;
270
+ function encodeForWebStream(thing) {
271
+ if (!encoder) {
272
+ encoder = new TextEncoder();
273
+ }
274
+ if (typeof thing === "string") {
275
+ return encoder.encode(thing);
276
+ }
277
+ return thing;
278
+ }
279
+ var renderToPipe_worker_default = renderToPipe;
280
+ export { renderToPipe_worker_default as default };
@@ -49,7 +49,7 @@ import { buildShellBeforeTemplate } from "./bulidTemplate.before";
49
49
  var HTML_SEPARATOR = "<!--<?- html ?>-->";
50
50
  var getTemplates = function(context, renderLevel) {
51
51
  var ssrContext = context.ssrContext;
52
- var ref = _slicedToArray(ssrContext.template.split(HTML_SEPARATOR) || [], 2), tmp = ref[0], beforeAppTemplate = tmp === void 0 ? "" : tmp, tmp1 = ref[1], afterAppHtmlTemplate = tmp1 === void 0 ? "" : tmp1;
52
+ var _ref = _slicedToArray(ssrContext.template.split(HTML_SEPARATOR) || [], 2), tmp = _ref[0], beforeAppTemplate = tmp === void 0 ? "" : tmp, tmp1 = _ref[1], afterAppHtmlTemplate = tmp1 === void 0 ? "" : tmp1;
53
53
  var builtBeforeTemplate = buildShellBeforeTemplate(beforeAppTemplate, context);
54
54
  var builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
55
55
  ssrContext: ssrContext,