@modern-js/plugin-data-loader 2.4.1-beta.0 → 2.5.0-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 (33) hide show
  1. package/dist/{js/node → cjs}/cli/create-request.js +17 -26
  2. package/dist/cjs/cli/data.js +162 -0
  3. package/dist/{js/node → cjs}/cli/generate-client.js +1 -1
  4. package/dist/{js/node → cjs}/cli/loader.js +12 -34
  5. package/dist/{js/node → cjs}/common/constants.js +0 -0
  6. package/dist/cjs/runtime/index.js +159 -0
  7. package/dist/cjs/runtime/response.js +102 -0
  8. package/dist/cjs/server/index.js +64 -0
  9. package/dist/{js/treeshaking → esm}/cli/create-request.js +41 -2
  10. package/dist/esm/cli/data.js +820 -0
  11. package/dist/{js/treeshaking → esm}/cli/generate-client.js +1 -1
  12. package/dist/{js/treeshaking → esm}/cli/loader.js +0 -0
  13. package/dist/{js/treeshaking → esm}/common/constants.js +0 -0
  14. package/dist/{js/treeshaking/server → esm/runtime}/index.js +66 -222
  15. package/dist/esm/runtime/response.js +284 -0
  16. package/dist/esm/server/index.js +176 -0
  17. package/dist/{js/modern → esm-node}/cli/create-request.js +17 -26
  18. package/dist/esm-node/cli/data.js +142 -0
  19. package/dist/{js/modern → esm-node}/cli/generate-client.js +1 -1
  20. package/dist/esm-node/cli/loader.js +18 -0
  21. package/dist/{js/modern → esm-node}/common/constants.js +0 -0
  22. package/dist/esm-node/runtime/index.js +143 -0
  23. package/dist/esm-node/runtime/response.js +79 -0
  24. package/dist/esm-node/server/index.js +40 -0
  25. package/dist/types/cli/create-request.d.ts +2 -1
  26. package/dist/types/cli/data.d.ts +6 -0
  27. package/dist/types/runtime/index.d.ts +15 -0
  28. package/dist/types/runtime/response.d.ts +2 -0
  29. package/dist/types/server/index.d.ts +0 -15
  30. package/package.json +24 -14
  31. package/dist/js/modern/cli/loader.js +0 -40
  32. package/dist/js/modern/server/index.js +0 -237
  33. package/dist/js/node/server/index.js +0 -261
@@ -5,7 +5,7 @@ var generateClient = function(param) {
5
5
  var loadersMap = require(mapFile);
6
6
  var requestCode = "";
7
7
  var exportsCode = "";
8
- var requestCreatorPath = path.join(__dirname, "./create-request").replace("/node/cli/", "/treeshaking/cli/").replace(/\\/g, "/");
8
+ var requestCreatorPath = path.join(__dirname, "./create-request").replace("/cjs/cli/", "/esm/cli/").replace(/\\/g, "/");
9
9
  var importCode = "\n import { createRequest } from '".concat(requestCreatorPath, "';\n ");
10
10
  if (!loaderId) {
11
11
  requestCode = Object.keys(loadersMap).map(function(loaderId2) {
File without changes
File without changes
@@ -35,18 +35,12 @@ function _asyncToGenerator(fn) {
35
35
  });
36
36
  };
37
37
  }
38
- function _defineProperty(obj, key, value) {
39
- if (key in obj) {
40
- Object.defineProperty(obj, key, {
41
- value: value,
42
- enumerable: true,
43
- configurable: true,
44
- writable: true
45
- });
38
+ function _instanceof(left, right) {
39
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
40
+ return !!right[Symbol.hasInstance](left);
46
41
  } else {
47
- obj[key] = value;
42
+ return left instanceof right;
48
43
  }
49
- return obj;
50
44
  }
51
45
  function _iterableToArrayLimit(arr, i) {
52
46
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
@@ -75,45 +69,6 @@ function _iterableToArrayLimit(arr, i) {
75
69
  function _nonIterableRest() {
76
70
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
71
  }
78
- function _objectSpread(target) {
79
- for(var i = 1; i < arguments.length; i++){
80
- var source = arguments[i] != null ? arguments[i] : {};
81
- var ownKeys = Object.keys(source);
82
- if (typeof Object.getOwnPropertySymbols === "function") {
83
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
84
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
85
- }));
86
- }
87
- ownKeys.forEach(function(key) {
88
- _defineProperty(target, key, source[key]);
89
- });
90
- }
91
- return target;
92
- }
93
- function ownKeys(object, enumerableOnly) {
94
- var keys = Object.keys(object);
95
- if (Object.getOwnPropertySymbols) {
96
- var symbols = Object.getOwnPropertySymbols(object);
97
- if (enumerableOnly) {
98
- symbols = symbols.filter(function(sym) {
99
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
100
- });
101
- }
102
- keys.push.apply(keys, symbols);
103
- }
104
- return keys;
105
- }
106
- function _objectSpreadProps(target, source) {
107
- source = source != null ? source : {};
108
- if (Object.getOwnPropertyDescriptors) {
109
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
110
- } else {
111
- ownKeys(Object(source)).forEach(function(key) {
112
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
113
- });
114
- }
115
- return target;
116
- }
117
72
  function _slicedToArray(arr, i) {
118
73
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
119
74
  }
@@ -220,11 +175,11 @@ var __generator = this && this.__generator || function(thisArg, body) {
220
175
  };
221
176
  }
222
177
  };
223
- import path from "path";
224
178
  import { installGlobals, writeReadableStreamToWritable, Response as NodeResponse } from "@remix-run/node";
225
- import { matchRoutes } from "react-router-dom";
226
- import { MAIN_ENTRY_NAME, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
179
+ import { transformNestedRoutes } from "@modern-js/utils";
180
+ import { createStaticHandler, ErrorResponse, UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL } from "@modern-js/utils/remix-router";
227
181
  import { LOADER_ID_PARAM } from "../common/constants";
182
+ import { createDeferredReadableStream } from "./response";
228
183
  installGlobals();
229
184
  var redirectStatusCodes = /* @__PURE__ */ new Set([
230
185
  301,
@@ -233,81 +188,21 @@ var redirectStatusCodes = /* @__PURE__ */ new Set([
233
188
  307,
234
189
  308
235
190
  ]);
236
- function isRedirectResponse(response) {
237
- return redirectStatusCodes.has(response.status);
191
+ function isRedirectResponse(status) {
192
+ return redirectStatusCodes.has(status);
238
193
  }
239
194
  function isResponse(value) {
240
195
  return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
241
196
  }
242
- var json = function(data) {
243
- var init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
244
- var responseInit = typeof init === "number" ? {
245
- status: init
246
- } : init;
247
- var headers = new Headers(responseInit.headers);
248
- if (!headers.has("Content-Type")) {
249
- headers.set("Content-Type", "application/json; charset=utf-8");
250
- }
251
- return new NodeResponse(JSON.stringify(data), _objectSpreadProps(_objectSpread({}, responseInit), {
252
- headers: headers
253
- }));
254
- };
255
- var callRouteLoader = function() {
256
- var _ref = _asyncToGenerator(function(param) {
257
- var routeId, loader, params, request, loadContext, result, error;
258
- return __generator(this, function(_state) {
259
- switch(_state.label){
260
- case 0:
261
- routeId = param.routeId, loader = param.loader, params = param.params, request = param.request, loadContext = param.loadContext;
262
- if (!loader) {
263
- throw new Error("You made a ".concat(request.method, " request to ").concat(request.url, ' but did not provide a default component or `loader` for route "').concat(routeId, '", so there is no way to handle the request.'));
264
- }
265
- _state.label = 1;
266
- case 1:
267
- _state.trys.push([
268
- 1,
269
- 3,
270
- ,
271
- 4
272
- ]);
273
- return [
274
- 4,
275
- loader({
276
- request: request,
277
- params: params
278
- })
279
- ];
280
- case 2:
281
- result = _state.sent();
282
- return [
283
- 3,
284
- 4
285
- ];
286
- case 3:
287
- error = _state.sent();
288
- if (!isResponse(error)) {
289
- throw error;
290
- }
291
- result = error;
292
- return [
293
- 3,
294
- 4
295
- ];
296
- case 4:
297
- if (result === void 0) {
298
- throw new Error('You defined a loader for route "'.concat(routeId, "\" but didn't return anything from your `loader` function. Please return a value or `null`."));
299
- }
300
- return [
301
- 2,
302
- isResponse(result) ? result : json(result)
303
- ];
304
- }
305
- });
197
+ function convertModernRedirectResponse(headers) {
198
+ var newHeaders = new Headers(headers);
199
+ newHeaders.set("X-Modernjs-Redirect", headers.get("Location"));
200
+ newHeaders.delete("Location");
201
+ return new NodeResponse(null, {
202
+ status: 204,
203
+ headers: newHeaders
306
204
  });
307
- return function callRouteLoader(_) {
308
- return _ref.apply(this, arguments);
309
- };
310
- }();
205
+ }
311
206
  var createLoaderHeaders = function(requestHeaders) {
312
207
  var headers = new Headers();
313
208
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
@@ -424,12 +319,6 @@ var sendLoaderResponse = function() {
424
319
  return _ref.apply(this, arguments);
425
320
  };
426
321
  }();
427
- var getPathWithoutEntry = function(pathname, entryPath) {
428
- if (entryPath === "/") {
429
- return pathname;
430
- }
431
- return pathname.replace(entryPath, "");
432
- };
433
322
  var matchEntry = function(pathname, entries) {
434
323
  return entries.find(function(entry) {
435
324
  return pathname.startsWith(entry.urlPath);
@@ -437,93 +326,77 @@ var matchEntry = function(pathname, entries) {
437
326
  };
438
327
  var handleRequest = function() {
439
328
  var _ref = _asyncToGenerator(function(param) {
440
- var context, serverRoutes, distDir, method, query, routeId, entry, routesPath, routes, res, pathname, matches, match, request, response, headers, error, message;
329
+ var context, serverRoutes, routes, method, query, routeId, entry, dataRoutes, staticHandler, res, request, response, deferredData, body, init, headers, error, message;
441
330
  return __generator(this, function(_state) {
442
331
  switch(_state.label){
443
332
  case 0:
444
- context = param.context, serverRoutes = param.serverRoutes, distDir = param.distDir;
333
+ context = param.context, serverRoutes = param.serverRoutes, routes = param.routes;
445
334
  method = context.method, query = context.query;
446
335
  routeId = query[LOADER_ID_PARAM];
447
- if (!routeId || method.toLowerCase() !== "get") {
448
- return [
449
- 2
450
- ];
336
+ if (!routeId) {
337
+ throw new Error("Missing parameter: ".concat(LOADER_ID_PARAM));
338
+ }
339
+ if (method.toLowerCase() !== "get") {
340
+ throw new Error("Only support httpp GET method");
451
341
  }
452
342
  entry = matchEntry(context.path, serverRoutes);
453
343
  if (!entry) {
454
- return [
455
- 2
456
- ];
457
- }
458
- routesPath = path.join(distDir, SERVER_BUNDLE_DIRECTORY, "".concat(entry.entryName || MAIN_ENTRY_NAME, "-server-loaders"));
459
- return [
460
- 4,
461
- import(routesPath)
462
- ];
463
- case 1:
464
- routes = _state.sent().routes;
465
- if (!routes) {
466
- return [
467
- 2
468
- ];
344
+ throw new Error("Route is not matched");
469
345
  }
470
- res = context.res;
471
- pathname = getPathWithoutEntry(context.path, entry.urlPath);
472
- matches = matchRoutes(routes, pathname);
473
- if (!matches) {
474
- res.statusCode = 403;
475
- res.end("Route ".concat(pathname, " was not matched"));
476
- return [
477
- 2
478
- ];
479
- }
480
- match = matches === null || matches === void 0 ? void 0 : matches.find(function(match2) {
481
- return match2.route.id === routeId;
346
+ dataRoutes = transformNestedRoutes(routes);
347
+ staticHandler = createStaticHandler(dataRoutes, {
348
+ basename: entry.urlPath
482
349
  });
483
- if (!match) {
484
- res.statusCode = 403;
485
- res.end("Route ".concat(routeId, " does not match URL ").concat(context.path));
486
- return [
487
- 2
488
- ];
489
- }
350
+ res = context.res;
490
351
  request = createLoaderRequest(context);
491
- _state.label = 2;
492
- case 2:
352
+ _state.label = 1;
353
+ case 1:
493
354
  _state.trys.push([
494
- 2,
495
- 4,
355
+ 1,
356
+ 3,
496
357
  ,
497
- 5
358
+ 4
498
359
  ]);
499
360
  return [
500
361
  4,
501
- callRouteLoader({
502
- loader: match.route.loader,
503
- routeId: match.route.id,
504
- params: match.params,
505
- request: request,
506
- loadContext: {}
362
+ staticHandler.queryRoute(request, {
363
+ routeId: routeId,
364
+ requestContext: context
507
365
  })
508
366
  ];
509
- case 3:
367
+ case 2:
510
368
  response = _state.sent();
511
- if (isRedirectResponse(response)) {
512
- headers = new Headers(response.headers);
513
- headers.set("X-Modernjs-Redirect", headers.get("Location"));
514
- headers.delete("Location");
515
- response = new NodeResponse(null, {
516
- status: 204,
517
- headers: headers
369
+ if (isResponse(response) && isRedirectResponse(response.status)) {
370
+ response = convertModernRedirectResponse(response.headers);
371
+ } else if (DEFERRED_SYMBOL in response) {
372
+ deferredData = response[DEFERRED_SYMBOL];
373
+ body = createDeferredReadableStream(deferredData, request.signal);
374
+ init = deferredData.init || {};
375
+ if (init.status && isRedirectResponse(init.status)) {
376
+ if (!init.headers) {
377
+ throw new Error("redirect response includes no headers");
378
+ }
379
+ response = convertModernRedirectResponse(new Headers(init.headers));
380
+ } else {
381
+ headers = new Headers(init.headers);
382
+ headers.set("Content-Type", "text/modernjs-deferred");
383
+ init.headers = headers;
384
+ response = new NodeResponse(body, init);
385
+ }
386
+ } else {
387
+ response = isResponse(response) ? response : new NodeResponse(JSON.stringify(response), {
388
+ headers: {
389
+ "Content-Type": "application/json; charset=utf-8"
390
+ }
518
391
  });
519
392
  }
520
393
  return [
521
394
  3,
522
- 5
395
+ 4
523
396
  ];
524
- case 4:
397
+ case 3:
525
398
  error = _state.sent();
526
- message = String(error);
399
+ message = _instanceof(error, ErrorResponse) ? error.data : String(error);
527
400
  response = new NodeResponse(message, {
528
401
  status: 500,
529
402
  headers: {
@@ -532,9 +405,9 @@ var handleRequest = function() {
532
405
  });
533
406
  return [
534
407
  3,
535
- 5
408
+ 4
536
409
  ];
537
- case 5:
410
+ case 4:
538
411
  sendLoaderResponse(res, response);
539
412
  return [
540
413
  2
@@ -546,33 +419,4 @@ var handleRequest = function() {
546
419
  return _ref.apply(this, arguments);
547
420
  };
548
421
  }();
549
- var server_default = function() {
550
- return {
551
- name: "@modern-js/plugin-data-loader",
552
- setup: function() {
553
- return {
554
- preparebeforeRouteHandler: function preparebeforeRouteHandler(param) {
555
- var serverRoutes = param.serverRoutes, distDir = param.distDir;
556
- return function() {
557
- var _ref = _asyncToGenerator(function(context) {
558
- return __generator(this, function(_state) {
559
- return [
560
- 2,
561
- handleRequest({
562
- serverRoutes: serverRoutes,
563
- distDir: distDir,
564
- context: context
565
- })
566
- ];
567
- });
568
- });
569
- return function(context) {
570
- return _ref.apply(this, arguments);
571
- };
572
- }();
573
- }
574
- };
575
- }
576
- };
577
- };
578
- export { server_default as default, getPathWithoutEntry, handleRequest, isRedirectResponse, isResponse };
422
+ export { handleRequest, isRedirectResponse, isResponse, matchEntry };
@@ -0,0 +1,284 @@
1
+ function _arrayLikeToArray(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _arrayWithHoles(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
+ }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _asyncToGenerator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
+ }
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
+ }
34
+ _next(undefined);
35
+ });
36
+ };
37
+ }
38
+ function _defineProperty(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
46
+ } else {
47
+ obj[key] = value;
48
+ }
49
+ return obj;
50
+ }
51
+ function _iterableToArrayLimit(arr, i) {
52
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53
+ if (_i == null) return;
54
+ var _arr = [];
55
+ var _n = true;
56
+ var _d = false;
57
+ var _s, _e;
58
+ try {
59
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
60
+ _arr.push(_s.value);
61
+ if (i && _arr.length === i) break;
62
+ }
63
+ } catch (err) {
64
+ _d = true;
65
+ _e = err;
66
+ } finally{
67
+ try {
68
+ if (!_n && _i["return"] != null) _i["return"]();
69
+ } finally{
70
+ if (_d) throw _e;
71
+ }
72
+ }
73
+ return _arr;
74
+ }
75
+ function _nonIterableRest() {
76
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
+ }
78
+ function _slicedToArray(arr, i) {
79
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
80
+ }
81
+ function _unsupportedIterableToArray(o, minLen) {
82
+ if (!o) return;
83
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
84
+ var n = Object.prototype.toString.call(o).slice(8, -1);
85
+ if (n === "Object" && o.constructor) n = o.constructor.name;
86
+ if (n === "Map" || n === "Set") return Array.from(n);
87
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
88
+ }
89
+ var __generator = this && this.__generator || function(thisArg, body) {
90
+ var f, y, t, g, _ = {
91
+ label: 0,
92
+ sent: function() {
93
+ if (t[0] & 1) throw t[1];
94
+ return t[1];
95
+ },
96
+ trys: [],
97
+ ops: []
98
+ };
99
+ return g = {
100
+ next: verb(0),
101
+ "throw": verb(1),
102
+ "return": verb(2)
103
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
104
+ return this;
105
+ }), g;
106
+ function verb(n) {
107
+ return function(v) {
108
+ return step([
109
+ n,
110
+ v
111
+ ]);
112
+ };
113
+ }
114
+ function step(op) {
115
+ if (f) throw new TypeError("Generator is already executing.");
116
+ while(_)try {
117
+ 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;
118
+ if (y = 0, t) op = [
119
+ op[0] & 2,
120
+ t.value
121
+ ];
122
+ switch(op[0]){
123
+ case 0:
124
+ case 1:
125
+ t = op;
126
+ break;
127
+ case 4:
128
+ _.label++;
129
+ return {
130
+ value: op[1],
131
+ done: false
132
+ };
133
+ case 5:
134
+ _.label++;
135
+ y = op[1];
136
+ op = [
137
+ 0
138
+ ];
139
+ continue;
140
+ case 7:
141
+ op = _.ops.pop();
142
+ _.trys.pop();
143
+ continue;
144
+ default:
145
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
146
+ _ = 0;
147
+ continue;
148
+ }
149
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
150
+ _.label = op[1];
151
+ break;
152
+ }
153
+ if (op[0] === 6 && _.label < t[1]) {
154
+ _.label = t[1];
155
+ t = op;
156
+ break;
157
+ }
158
+ if (t && _.label < t[2]) {
159
+ _.label = t[2];
160
+ _.ops.push(op);
161
+ break;
162
+ }
163
+ if (t[2]) _.ops.pop();
164
+ _.trys.pop();
165
+ continue;
166
+ }
167
+ op = body.call(thisArg, _);
168
+ } catch (e) {
169
+ op = [
170
+ 6,
171
+ e
172
+ ];
173
+ y = 0;
174
+ } finally{
175
+ f = t = 0;
176
+ }
177
+ if (op[0] & 5) throw op[1];
178
+ return {
179
+ value: op[0] ? op[1] : void 0,
180
+ done: true
181
+ };
182
+ }
183
+ };
184
+ import { TextEncoder } from "util";
185
+ import { serializeJson } from "@modern-js/utils";
186
+ function isTrackedPromise(value) {
187
+ return value != null && typeof value.then === "function" && value._tracked === true;
188
+ }
189
+ var DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
190
+ function createDeferredReadableStream(deferredData, signal) {
191
+ var encoder = new TextEncoder();
192
+ var stream = new ReadableStream({
193
+ start: function start(controller) {
194
+ return _asyncToGenerator(function() {
195
+ var criticalData, preresolvedKeys, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _step_value, key, value, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, preresolvedKey, unsubscribe;
196
+ return __generator(this, function(_state) {
197
+ switch(_state.label){
198
+ case 0:
199
+ criticalData = {};
200
+ preresolvedKeys = [];
201
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
202
+ try {
203
+ for(_iterator = Object.entries(deferredData.data)[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
204
+ _step_value = _slicedToArray(_step.value, 2), key = _step_value[0], value = _step_value[1];
205
+ if (isTrackedPromise(value)) {
206
+ criticalData[key] = "".concat(DEFERRED_VALUE_PLACEHOLDER_PREFIX).concat(key);
207
+ if (typeof value._data !== "undefined" || typeof value._error !== "undefined") {
208
+ preresolvedKeys.push(key);
209
+ }
210
+ } else {
211
+ criticalData[key] = value;
212
+ }
213
+ }
214
+ } catch (err) {
215
+ _didIteratorError = true;
216
+ _iteratorError = err;
217
+ } finally{
218
+ try {
219
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
220
+ _iterator.return();
221
+ }
222
+ } finally{
223
+ if (_didIteratorError) {
224
+ throw _iteratorError;
225
+ }
226
+ }
227
+ }
228
+ controller.enqueue(encoder.encode("".concat(JSON.stringify(criticalData), "\n\n")));
229
+ _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
230
+ try {
231
+ for(_iterator1 = preresolvedKeys[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
232
+ preresolvedKey = _step1.value;
233
+ enqueueTrackedPromise(controller, encoder, preresolvedKey, deferredData.data[preresolvedKey]);
234
+ }
235
+ } catch (err) {
236
+ _didIteratorError1 = true;
237
+ _iteratorError1 = err;
238
+ } finally{
239
+ try {
240
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
241
+ _iterator1.return();
242
+ }
243
+ } finally{
244
+ if (_didIteratorError1) {
245
+ throw _iteratorError1;
246
+ }
247
+ }
248
+ }
249
+ unsubscribe = deferredData.subscribe(function(aborted, settledKey) {
250
+ if (settledKey) {
251
+ enqueueTrackedPromise(controller, encoder, settledKey, deferredData.data[settledKey]);
252
+ }
253
+ });
254
+ return [
255
+ 4,
256
+ deferredData.resolveData(signal)
257
+ ];
258
+ case 1:
259
+ _state.sent();
260
+ unsubscribe();
261
+ controller.close();
262
+ return [
263
+ 2
264
+ ];
265
+ }
266
+ });
267
+ })();
268
+ }
269
+ });
270
+ return stream;
271
+ }
272
+ function enqueueTrackedPromise(controller, encoder, settledKey, promise) {
273
+ if ("_error" in promise) {
274
+ var _error = promise._error;
275
+ controller.enqueue(encoder.encode("error:".concat(serializeJson(_defineProperty({}, settledKey, {
276
+ message: _error.message,
277
+ stack: _error.stack
278
+ })), "\n\n")));
279
+ } else {
280
+ var _promise__data;
281
+ controller.enqueue(encoder.encode("data:".concat(JSON.stringify(_defineProperty({}, settledKey, (_promise__data = promise._data) !== null && _promise__data !== void 0 ? _promise__data : null)), "\n\n")));
282
+ }
283
+ }
284
+ export { createDeferredReadableStream };