@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.
- package/dist/{js/node → cjs}/cli/create-request.js +17 -26
- package/dist/cjs/cli/data.js +162 -0
- package/dist/{js/node → cjs}/cli/generate-client.js +1 -1
- package/dist/{js/node → cjs}/cli/loader.js +12 -34
- package/dist/{js/node → cjs}/common/constants.js +0 -0
- package/dist/cjs/runtime/index.js +159 -0
- package/dist/cjs/runtime/response.js +102 -0
- package/dist/cjs/server/index.js +64 -0
- package/dist/{js/treeshaking → esm}/cli/create-request.js +41 -2
- package/dist/esm/cli/data.js +820 -0
- package/dist/{js/treeshaking → esm}/cli/generate-client.js +1 -1
- package/dist/{js/treeshaking → esm}/cli/loader.js +0 -0
- package/dist/{js/treeshaking → esm}/common/constants.js +0 -0
- package/dist/{js/treeshaking/server → esm/runtime}/index.js +66 -222
- package/dist/esm/runtime/response.js +284 -0
- package/dist/esm/server/index.js +176 -0
- package/dist/{js/modern → esm-node}/cli/create-request.js +17 -26
- package/dist/esm-node/cli/data.js +142 -0
- package/dist/{js/modern → esm-node}/cli/generate-client.js +1 -1
- package/dist/esm-node/cli/loader.js +18 -0
- package/dist/{js/modern → esm-node}/common/constants.js +0 -0
- package/dist/esm-node/runtime/index.js +143 -0
- package/dist/esm-node/runtime/response.js +79 -0
- package/dist/esm-node/server/index.js +40 -0
- package/dist/types/cli/create-request.d.ts +2 -1
- package/dist/types/cli/data.d.ts +6 -0
- package/dist/types/runtime/index.d.ts +15 -0
- package/dist/types/runtime/response.d.ts +2 -0
- package/dist/types/server/index.d.ts +0 -15
- package/package.json +24 -14
- package/dist/js/modern/cli/loader.js +0 -40
- package/dist/js/modern/server/index.js +0 -237
- 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("/
|
|
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
|
|
39
|
-
if (
|
|
40
|
-
|
|
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
|
-
|
|
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 {
|
|
226
|
-
import {
|
|
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(
|
|
237
|
-
return redirectStatusCodes.has(
|
|
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
|
-
|
|
243
|
-
var
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
|
448
|
-
|
|
449
|
-
|
|
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
|
-
|
|
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
|
-
|
|
471
|
-
|
|
472
|
-
|
|
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
|
-
|
|
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 =
|
|
492
|
-
case
|
|
352
|
+
_state.label = 1;
|
|
353
|
+
case 1:
|
|
493
354
|
_state.trys.push([
|
|
494
|
-
|
|
495
|
-
|
|
355
|
+
1,
|
|
356
|
+
3,
|
|
496
357
|
,
|
|
497
|
-
|
|
358
|
+
4
|
|
498
359
|
]);
|
|
499
360
|
return [
|
|
500
361
|
4,
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
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
|
|
367
|
+
case 2:
|
|
510
368
|
response = _state.sent();
|
|
511
|
-
if (isRedirectResponse(response)) {
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
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
|
-
|
|
395
|
+
4
|
|
523
396
|
];
|
|
524
|
-
case
|
|
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
|
-
|
|
408
|
+
4
|
|
536
409
|
];
|
|
537
|
-
case
|
|
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
|
-
|
|
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 };
|