@modern-js/plugin-data-loader 2.67.3 → 2.67.5
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/cjs/cli/createRequest.js +3 -1
- package/dist/cjs/cli/data.js +3 -3
- package/dist/cjs/runtime/index.js +18 -6
- package/dist/esm/cli/createRequest.js +4 -2
- package/dist/esm/cli/data.js +1 -1
- package/dist/esm/runtime/index.js +20 -8
- package/dist/esm-node/cli/createRequest.js +3 -1
- package/dist/esm-node/cli/data.js +1 -1
- package/dist/esm-node/runtime/index.js +19 -7
- package/dist/types/cli/createRequest.d.ts +2 -2
- package/dist/types/cli/data.d.ts +1 -1
- package/package.json +9 -9
|
@@ -75,6 +75,7 @@ const handleNetworkErrorResponse = async (res) => {
|
|
|
75
75
|
throw error;
|
|
76
76
|
};
|
|
77
77
|
const createRequest = (routeId, method = "get") => {
|
|
78
|
+
const isRouterV7 = process.env._MODERN_ROUTER_VERSION === "v7";
|
|
78
79
|
return async ({ params, request }) => {
|
|
79
80
|
const url = getRequestUrl({
|
|
80
81
|
params,
|
|
@@ -98,7 +99,8 @@ const createRequest = (routeId, method = "get") => {
|
|
|
98
99
|
throw res;
|
|
99
100
|
}
|
|
100
101
|
if (isDeferredResponse(res)) {
|
|
101
|
-
|
|
102
|
+
const deferredData = await (0, import_data.parseDeferredReadableStream)(res.body);
|
|
103
|
+
return isRouterV7 ? deferredData.data : deferredData;
|
|
102
104
|
}
|
|
103
105
|
if (isOtherErrorResponse(res)) {
|
|
104
106
|
return await handleNetworkErrorResponse(res);
|
package/dist/cjs/cli/data.js
CHANGED
|
@@ -21,7 +21,7 @@ __export(data_exports, {
|
|
|
21
21
|
parseDeferredReadableStream: () => parseDeferredReadableStream
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(data_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_browser = require("@modern-js/runtime-utils/browser");
|
|
25
25
|
const DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
|
|
26
26
|
async function parseDeferredReadableStream(stream) {
|
|
27
27
|
if (!stream) {
|
|
@@ -80,7 +80,7 @@ async function parseDeferredReadableStream(stream) {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
for (const [key, resolver] of Object.entries(deferredResolvers)) {
|
|
83
|
-
resolver.reject(new
|
|
83
|
+
resolver.reject(new import_browser.AbortedDeferredError(`Deferred ${key} will never resolved`));
|
|
84
84
|
}
|
|
85
85
|
} catch (error) {
|
|
86
86
|
for (const resolver of Object.values(deferredResolvers)) {
|
|
@@ -88,7 +88,7 @@ async function parseDeferredReadableStream(stream) {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
})();
|
|
91
|
-
return new
|
|
91
|
+
return new import_browser.DeferredData({
|
|
92
92
|
...criticalData,
|
|
93
93
|
...deferredData
|
|
94
94
|
});
|
|
@@ -72,10 +72,12 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
|
|
|
72
72
|
const end = (0, import_time.time)();
|
|
73
73
|
const { reporter, loaderContext, monitors } = context;
|
|
74
74
|
const headersData = (0, import_request.parseHeaders)(request);
|
|
75
|
+
const activeDeferreds = /* @__PURE__ */ new Map();
|
|
75
76
|
return import_node2.storage.run({
|
|
76
77
|
headers: headersData,
|
|
77
78
|
monitors,
|
|
78
|
-
request
|
|
79
|
+
request,
|
|
80
|
+
activeDeferreds
|
|
79
81
|
}, async () => {
|
|
80
82
|
const routes = (0, import_browser.transformNestedRoutes)(routesConfig);
|
|
81
83
|
const { queryRoute } = (0, import_remix_router.createStaticHandler)(routes, {
|
|
@@ -91,9 +93,18 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
|
|
|
91
93
|
});
|
|
92
94
|
if (isResponse(response) && isRedirectResponse(response.status)) {
|
|
93
95
|
response = convertModernRedirectResponse(response.headers, basename);
|
|
94
|
-
} else if ((0, import_lodash.isPlainObject)(response) && import_remix_router.UNSAFE_DEFERRED_SYMBOL in response) {
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
} else if ((0, import_lodash.isPlainObject)(response) && (import_remix_router.UNSAFE_DEFERRED_SYMBOL in response || activeDeferreds.get(routeId))) {
|
|
97
|
+
let deferredData;
|
|
98
|
+
if (import_remix_router.UNSAFE_DEFERRED_SYMBOL in response) {
|
|
99
|
+
deferredData = response[import_remix_router.UNSAFE_DEFERRED_SYMBOL];
|
|
100
|
+
} else {
|
|
101
|
+
deferredData = activeDeferreds.get(routeId);
|
|
102
|
+
}
|
|
103
|
+
const body = (0, import_response.createDeferredReadableStream)(
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
deferredData,
|
|
106
|
+
request.signal
|
|
107
|
+
);
|
|
97
108
|
const init = deferredData.init || {};
|
|
98
109
|
if (init.status && isRedirectResponse(init.status)) {
|
|
99
110
|
if (!init.headers) {
|
|
@@ -124,10 +135,11 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
|
|
|
124
135
|
response = (0, import_errors.errorResponseToJson)(error);
|
|
125
136
|
} else {
|
|
126
137
|
const errorInstance = error instanceof Error || error instanceof DOMException ? error : new Error("Unexpected Server Error");
|
|
127
|
-
response = (
|
|
138
|
+
response = new Response(JSON.stringify((0, import_errors.serializeError)(errorInstance)), {
|
|
128
139
|
status: 500,
|
|
129
140
|
headers: {
|
|
130
|
-
"X-Modernjs-Error": "yes"
|
|
141
|
+
"X-Modernjs-Error": "yes",
|
|
142
|
+
"Content-Type": "application/json"
|
|
131
143
|
}
|
|
132
144
|
});
|
|
133
145
|
}
|
|
@@ -86,9 +86,10 @@ var handleNetworkErrorResponse = function() {
|
|
|
86
86
|
}();
|
|
87
87
|
var createRequest = function(routeId) {
|
|
88
88
|
var method = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "get";
|
|
89
|
+
var isRouterV7 = process.env._MODERN_ROUTER_VERSION === "v7";
|
|
89
90
|
return function() {
|
|
90
91
|
var _ref = _async_to_generator(function(param) {
|
|
91
|
-
var params, request, url, res;
|
|
92
|
+
var params, request, url, res, deferredData;
|
|
92
93
|
return _ts_generator(this, function(_state) {
|
|
93
94
|
switch (_state.label) {
|
|
94
95
|
case 0:
|
|
@@ -143,9 +144,10 @@ var createRequest = function(routeId) {
|
|
|
143
144
|
parseDeferredReadableStream(res.body)
|
|
144
145
|
];
|
|
145
146
|
case 4:
|
|
147
|
+
deferredData = _state.sent();
|
|
146
148
|
return [
|
|
147
149
|
2,
|
|
148
|
-
|
|
150
|
+
isRouterV7 ? deferredData.data : deferredData
|
|
149
151
|
];
|
|
150
152
|
case 5:
|
|
151
153
|
if (!isOtherErrorResponse(res))
|
package/dist/esm/cli/data.js
CHANGED
|
@@ -8,7 +8,7 @@ import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
|
|
8
8
|
import { _ as _type_of } from "@swc/helpers/_/_type_of";
|
|
9
9
|
import { _ as _wrap_async_generator } from "@swc/helpers/_/_wrap_async_generator";
|
|
10
10
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
11
|
-
import { AbortedDeferredError,
|
|
11
|
+
import { AbortedDeferredError, DeferredData } from "@modern-js/runtime-utils/browser";
|
|
12
12
|
var DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
|
|
13
13
|
function parseDeferredReadableStream(stream) {
|
|
14
14
|
return _parseDeferredReadableStream.apply(this, arguments);
|
|
@@ -5,7 +5,7 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
|
5
5
|
import { transformNestedRoutes } from "@modern-js/runtime-utils/browser";
|
|
6
6
|
import { createRequestContext, reporterCtx } from "@modern-js/runtime-utils/node";
|
|
7
7
|
import { storage } from "@modern-js/runtime-utils/node";
|
|
8
|
-
import { UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL, createStaticHandler, isRouteErrorResponse
|
|
8
|
+
import { UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL, createStaticHandler, isRouteErrorResponse } from "@modern-js/runtime-utils/remix-router";
|
|
9
9
|
import { matchEntry } from "@modern-js/runtime-utils/server";
|
|
10
10
|
import { time } from "@modern-js/runtime-utils/time";
|
|
11
11
|
import { parseHeaders } from "@modern-js/runtime-utils/universal/request";
|
|
@@ -42,7 +42,7 @@ function convertModernRedirectResponse(headers, basename) {
|
|
|
42
42
|
}
|
|
43
43
|
var handleRequest = function() {
|
|
44
44
|
var _ref = _async_to_generator(function(param) {
|
|
45
|
-
var request, serverRoutes, routesConfig, context, onTiming, url, routeId, entry, basename, end, reporter, loaderContext, monitors, headersData;
|
|
45
|
+
var request, serverRoutes, routesConfig, context, onTiming, url, routeId, entry, basename, end, reporter, loaderContext, monitors, headersData, activeDeferreds;
|
|
46
46
|
return _ts_generator(this, function(_state) {
|
|
47
47
|
request = param.request, serverRoutes = param.serverRoutes, routesConfig = param.routes, context = param.context, onTiming = param.onTiming;
|
|
48
48
|
url = new URL(request.url);
|
|
@@ -57,12 +57,14 @@ var handleRequest = function() {
|
|
|
57
57
|
end = time();
|
|
58
58
|
reporter = context.reporter, loaderContext = context.loaderContext, monitors = context.monitors;
|
|
59
59
|
headersData = parseHeaders(request);
|
|
60
|
+
activeDeferreds = /* @__PURE__ */ new Map();
|
|
60
61
|
return [
|
|
61
62
|
2,
|
|
62
63
|
storage.run({
|
|
63
64
|
headers: headersData,
|
|
64
65
|
monitors,
|
|
65
|
-
request
|
|
66
|
+
request,
|
|
67
|
+
activeDeferreds
|
|
66
68
|
}, /* @__PURE__ */ _async_to_generator(function() {
|
|
67
69
|
var routes, queryRoute, requestContext, response, deferredData, body, init, headers, cost, error, errorInstance;
|
|
68
70
|
return _ts_generator(this, function(_state2) {
|
|
@@ -93,9 +95,18 @@ var handleRequest = function() {
|
|
|
93
95
|
response = _state2.sent();
|
|
94
96
|
if (isResponse(response) && isRedirectResponse(response.status)) {
|
|
95
97
|
response = convertModernRedirectResponse(response.headers, basename);
|
|
96
|
-
} else if (isPlainObject(response) && DEFERRED_SYMBOL in response) {
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
} else if (isPlainObject(response) && (DEFERRED_SYMBOL in response || activeDeferreds.get(routeId))) {
|
|
99
|
+
;
|
|
100
|
+
if (DEFERRED_SYMBOL in response) {
|
|
101
|
+
deferredData = response[DEFERRED_SYMBOL];
|
|
102
|
+
} else {
|
|
103
|
+
deferredData = activeDeferreds.get(routeId);
|
|
104
|
+
}
|
|
105
|
+
body = createDeferredReadableStream(
|
|
106
|
+
// @ts-ignore
|
|
107
|
+
deferredData,
|
|
108
|
+
request.signal
|
|
109
|
+
);
|
|
99
110
|
init = deferredData.init || {};
|
|
100
111
|
if (init.status && isRedirectResponse(init.status)) {
|
|
101
112
|
if (!init.headers) {
|
|
@@ -131,10 +142,11 @@ var handleRequest = function() {
|
|
|
131
142
|
response = errorResponseToJson(error);
|
|
132
143
|
} else {
|
|
133
144
|
errorInstance = _instanceof(error, Error) || _instanceof(error, DOMException) ? error : new Error("Unexpected Server Error");
|
|
134
|
-
response =
|
|
145
|
+
response = new Response(JSON.stringify(serializeError(errorInstance)), {
|
|
135
146
|
status: 500,
|
|
136
147
|
headers: {
|
|
137
|
-
"X-Modernjs-Error": "yes"
|
|
148
|
+
"X-Modernjs-Error": "yes",
|
|
149
|
+
"Content-Type": "application/json"
|
|
138
150
|
}
|
|
139
151
|
});
|
|
140
152
|
}
|
|
@@ -50,6 +50,7 @@ const handleNetworkErrorResponse = async (res) => {
|
|
|
50
50
|
throw error;
|
|
51
51
|
};
|
|
52
52
|
const createRequest = (routeId, method = "get") => {
|
|
53
|
+
const isRouterV7 = process.env._MODERN_ROUTER_VERSION === "v7";
|
|
53
54
|
return async ({ params, request }) => {
|
|
54
55
|
const url = getRequestUrl({
|
|
55
56
|
params,
|
|
@@ -73,7 +74,8 @@ const createRequest = (routeId, method = "get") => {
|
|
|
73
74
|
throw res;
|
|
74
75
|
}
|
|
75
76
|
if (isDeferredResponse(res)) {
|
|
76
|
-
|
|
77
|
+
const deferredData = await parseDeferredReadableStream(res.body);
|
|
78
|
+
return isRouterV7 ? deferredData.data : deferredData;
|
|
77
79
|
}
|
|
78
80
|
if (isOtherErrorResponse(res)) {
|
|
79
81
|
return await handleNetworkErrorResponse(res);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbortedDeferredError,
|
|
1
|
+
import { AbortedDeferredError, DeferredData } from "@modern-js/runtime-utils/browser";
|
|
2
2
|
const DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
|
|
3
3
|
async function parseDeferredReadableStream(stream) {
|
|
4
4
|
if (!stream) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { transformNestedRoutes } from "@modern-js/runtime-utils/browser";
|
|
2
2
|
import { createRequestContext, reporterCtx } from "@modern-js/runtime-utils/node";
|
|
3
3
|
import { storage } from "@modern-js/runtime-utils/node";
|
|
4
|
-
import { UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL, createStaticHandler, isRouteErrorResponse
|
|
4
|
+
import { UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL, createStaticHandler, isRouteErrorResponse } from "@modern-js/runtime-utils/remix-router";
|
|
5
5
|
import { matchEntry } from "@modern-js/runtime-utils/server";
|
|
6
6
|
import { time } from "@modern-js/runtime-utils/time";
|
|
7
7
|
import { parseHeaders } from "@modern-js/runtime-utils/universal/request";
|
|
@@ -47,10 +47,12 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
|
|
|
47
47
|
const end = time();
|
|
48
48
|
const { reporter, loaderContext, monitors } = context;
|
|
49
49
|
const headersData = parseHeaders(request);
|
|
50
|
+
const activeDeferreds = /* @__PURE__ */ new Map();
|
|
50
51
|
return storage.run({
|
|
51
52
|
headers: headersData,
|
|
52
53
|
monitors,
|
|
53
|
-
request
|
|
54
|
+
request,
|
|
55
|
+
activeDeferreds
|
|
54
56
|
}, async () => {
|
|
55
57
|
const routes = transformNestedRoutes(routesConfig);
|
|
56
58
|
const { queryRoute } = createStaticHandler(routes, {
|
|
@@ -66,9 +68,18 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
|
|
|
66
68
|
});
|
|
67
69
|
if (isResponse(response) && isRedirectResponse(response.status)) {
|
|
68
70
|
response = convertModernRedirectResponse(response.headers, basename);
|
|
69
|
-
} else if (isPlainObject(response) && DEFERRED_SYMBOL in response) {
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
} else if (isPlainObject(response) && (DEFERRED_SYMBOL in response || activeDeferreds.get(routeId))) {
|
|
72
|
+
let deferredData;
|
|
73
|
+
if (DEFERRED_SYMBOL in response) {
|
|
74
|
+
deferredData = response[DEFERRED_SYMBOL];
|
|
75
|
+
} else {
|
|
76
|
+
deferredData = activeDeferreds.get(routeId);
|
|
77
|
+
}
|
|
78
|
+
const body = createDeferredReadableStream(
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
deferredData,
|
|
81
|
+
request.signal
|
|
82
|
+
);
|
|
72
83
|
const init = deferredData.init || {};
|
|
73
84
|
if (init.status && isRedirectResponse(init.status)) {
|
|
74
85
|
if (!init.headers) {
|
|
@@ -99,10 +110,11 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
|
|
|
99
110
|
response = errorResponseToJson(error);
|
|
100
111
|
} else {
|
|
101
112
|
const errorInstance = error instanceof Error || error instanceof DOMException ? error : new Error("Unexpected Server Error");
|
|
102
|
-
response =
|
|
113
|
+
response = new Response(JSON.stringify(serializeError(errorInstance)), {
|
|
103
114
|
status: 500,
|
|
104
115
|
headers: {
|
|
105
|
-
"X-Modernjs-Error": "yes"
|
|
116
|
+
"X-Modernjs-Error": "yes",
|
|
117
|
+
"Content-Type": "application/json"
|
|
106
118
|
}
|
|
107
119
|
});
|
|
108
120
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DeferredData } from '@modern-js/runtime-utils/browser';
|
|
2
2
|
export declare const getRequestUrl: ({ params, request, routeId, }: {
|
|
3
3
|
params: Record<string, string>;
|
|
4
4
|
request: Request;
|
|
@@ -7,7 +7,7 @@ export declare const getRequestUrl: ({ params, request, routeId, }: {
|
|
|
7
7
|
export declare const createRequest: (routeId: string, method?: string) => ({ params, request, }: {
|
|
8
8
|
params: Record<string, string>;
|
|
9
9
|
request: Request;
|
|
10
|
-
}) => Promise<DeferredData | Response>;
|
|
10
|
+
}) => Promise<DeferredData | Record<string, unknown> | Response>;
|
|
11
11
|
export declare const createActionRequest: (routeId: string) => ({ params, request, }: {
|
|
12
12
|
params: Record<string, string>;
|
|
13
13
|
request: Request;
|
package/dist/types/cli/data.d.ts
CHANGED
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
* Copyright 2021 Remix Software Inc.
|
|
8
8
|
* https://github.com/remix-run/remix/blob/2b5e1a72fc628d0408e27cf4d72e537762f1dc5b/LICENSE.md
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { DeferredData } from '@modern-js/runtime-utils/browser';
|
|
11
11
|
export declare function parseDeferredReadableStream(stream: ReadableStream<Uint8Array>): Promise<DeferredData>;
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "2.67.
|
|
18
|
+
"version": "2.67.5",
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": ">=16.2.0"
|
|
21
21
|
},
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@babel/core": "^7.26.0",
|
|
50
|
-
"@swc/helpers": "0.5.
|
|
50
|
+
"@swc/helpers": "^0.5.17",
|
|
51
51
|
"path-to-regexp": "^6.2.0",
|
|
52
|
-
"@modern-js/runtime-utils": "2.67.
|
|
53
|
-
"@modern-js/utils": "2.67.
|
|
52
|
+
"@modern-js/runtime-utils": "2.67.5",
|
|
53
|
+
"@modern-js/utils": "2.67.5"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/babel__core": "^7.20.5",
|
|
@@ -59,17 +59,17 @@
|
|
|
59
59
|
"@types/supertest": "^2.0.11",
|
|
60
60
|
"isomorphic-fetch": "^3.0.0",
|
|
61
61
|
"jest": "^29",
|
|
62
|
-
"memfs": "^3.5.
|
|
62
|
+
"memfs": "^3.5.3",
|
|
63
63
|
"react": "^18.3.1",
|
|
64
64
|
"react-dom": "^18.3.1",
|
|
65
65
|
"supertest": "^6.1.6",
|
|
66
66
|
"ts-jest": "^29.1.0",
|
|
67
67
|
"typescript": "^5",
|
|
68
|
-
"webpack": "^5.
|
|
69
|
-
"@modern-js/core": "2.67.
|
|
70
|
-
"@modern-js/server-core": "2.67.
|
|
68
|
+
"webpack": "^5.99.8",
|
|
69
|
+
"@modern-js/core": "2.67.5",
|
|
70
|
+
"@modern-js/server-core": "2.67.5",
|
|
71
|
+
"@modern-js/types": "2.67.5",
|
|
71
72
|
"@scripts/build": "2.66.0",
|
|
72
|
-
"@modern-js/types": "2.67.3",
|
|
73
73
|
"@scripts/jest-config": "2.66.0"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|