@modern-js/plugin-data-loader 2.48.6 → 2.49.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/cjs/cli/loader.js +2 -2
- package/dist/cjs/runtime/index.js +15 -63
- package/dist/esm/cli/loader.js +2 -2
- package/dist/esm/runtime/index.js +14 -147
- package/dist/esm-node/cli/loader.js +2 -2
- package/dist/esm-node/runtime/index.js +12 -60
- package/dist/types/runtime/index.d.ts +9 -7
- package/package.json +9 -18
- package/dist/cjs/server/index.js +0 -63
- package/dist/esm/server/index.js +0 -66
- package/dist/esm-node/server/index.js +0 -33
- package/dist/types/server/index.d.ts +0 -3
package/dist/cjs/cli/loader.js
CHANGED
|
@@ -28,10 +28,10 @@ async function loader(source) {
|
|
|
28
28
|
var _this__compiler;
|
|
29
29
|
this.cacheable();
|
|
30
30
|
const target = (_this__compiler = this._compiler) === null || _this__compiler === void 0 ? void 0 : _this__compiler.options.target;
|
|
31
|
-
if (target === "node") {
|
|
31
|
+
if (target === "node" || Array.isArray(target) && target.includes("node")) {
|
|
32
32
|
return source;
|
|
33
33
|
}
|
|
34
|
-
if (target === "webworker") {
|
|
34
|
+
if (target === "webworker" || Array.isArray(target) && target.includes("webworker")) {
|
|
35
35
|
return source;
|
|
36
36
|
}
|
|
37
37
|
const { resourceQuery } = this;
|
|
@@ -23,16 +23,14 @@ __export(runtime_exports, {
|
|
|
23
23
|
isResponse: () => isResponse
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(runtime_exports);
|
|
26
|
-
var import_node = require("@remix-run/node");
|
|
27
26
|
var import_remix_router = require("@modern-js/runtime-utils/remix-router");
|
|
28
27
|
var import_browser = require("@modern-js/runtime-utils/browser");
|
|
29
28
|
var import_lodash = require("@modern-js/utils/lodash");
|
|
30
|
-
var
|
|
29
|
+
var import_node = require("@modern-js/runtime-utils/node");
|
|
31
30
|
var import_time = require("@modern-js/runtime-utils/time");
|
|
32
31
|
var import_constants = require("@modern-js/utils/universal/constants");
|
|
33
32
|
var import_constants2 = require("../common/constants");
|
|
34
33
|
var import_response = require("./response");
|
|
35
|
-
(0, import_node.installGlobals)();
|
|
36
34
|
const redirectStatusCodes = /* @__PURE__ */ new Set([
|
|
37
35
|
301,
|
|
38
36
|
302,
|
|
@@ -54,73 +52,27 @@ function convertModernRedirectResponse(headers, basename) {
|
|
|
54
52
|
}
|
|
55
53
|
newHeaders.set("X-Modernjs-Redirect", redirectUrl);
|
|
56
54
|
newHeaders.delete("Location");
|
|
57
|
-
return new
|
|
55
|
+
return new Response(null, {
|
|
58
56
|
status: 204,
|
|
59
57
|
headers: newHeaders
|
|
60
58
|
});
|
|
61
59
|
}
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (Array.isArray(values)) {
|
|
67
|
-
for (const value of values) {
|
|
68
|
-
headers.append(key, value);
|
|
69
|
-
}
|
|
70
|
-
} else {
|
|
71
|
-
headers.set(key, values);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return headers;
|
|
76
|
-
};
|
|
77
|
-
const createRequest = (context) => {
|
|
78
|
-
const origin = `${context.protocol}://${context.host}`;
|
|
79
|
-
const url = new URL(context.url, origin);
|
|
80
|
-
const controller = new AbortController();
|
|
81
|
-
const init = {
|
|
82
|
-
method: context.method,
|
|
83
|
-
headers: createLoaderHeaders(context.headers),
|
|
84
|
-
signal: controller.signal
|
|
85
|
-
};
|
|
86
|
-
if (![
|
|
87
|
-
"GET",
|
|
88
|
-
"HEAD"
|
|
89
|
-
].includes(context.method.toUpperCase())) {
|
|
90
|
-
init.body = context.req;
|
|
91
|
-
}
|
|
92
|
-
const request = new Request(url.href, init);
|
|
93
|
-
return request;
|
|
94
|
-
};
|
|
95
|
-
const sendLoaderResponse = async (res, nodeResponse) => {
|
|
96
|
-
res.statusMessage = nodeResponse.statusText;
|
|
97
|
-
res.statusCode = nodeResponse.status;
|
|
98
|
-
for (const [key, value] of nodeResponse.headers.entries()) {
|
|
99
|
-
res.setHeader(key, value);
|
|
100
|
-
}
|
|
101
|
-
if (nodeResponse.body) {
|
|
102
|
-
await (0, import_node.writeReadableStreamToWritable)(nodeResponse.body, res);
|
|
103
|
-
} else {
|
|
104
|
-
res.end();
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
const handleRequest = async ({ context, serverRoutes, routes: routesConfig }) => {
|
|
108
|
-
const { query } = context;
|
|
109
|
-
const routeId = query[import_constants2.LOADER_ID_PARAM];
|
|
110
|
-
const entry = (0, import_node2.matchEntry)(context.path, serverRoutes);
|
|
60
|
+
const handleRequest = async ({ request, serverRoutes, routes: routesConfig, context }) => {
|
|
61
|
+
const url = new URL(request.url);
|
|
62
|
+
const routeId = url.searchParams.get(import_constants2.LOADER_ID_PARAM);
|
|
63
|
+
const entry = (0, import_node.matchEntry)(url.pathname, serverRoutes);
|
|
111
64
|
if (!routeId || !entry) {
|
|
112
65
|
return;
|
|
113
66
|
}
|
|
114
67
|
const basename = entry.urlPath;
|
|
115
68
|
const end = (0, import_time.time)();
|
|
116
|
-
const {
|
|
69
|
+
const { logger, reporter } = context;
|
|
117
70
|
const routes = (0, import_browser.transformNestedRoutes)(routesConfig, reporter);
|
|
118
71
|
const { queryRoute } = (0, import_remix_router.createStaticHandler)(routes, {
|
|
119
72
|
basename
|
|
120
73
|
});
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
requestContext.set(import_node2.reporterCtx, reporter);
|
|
74
|
+
const requestContext = (0, import_node.createRequestContext)();
|
|
75
|
+
requestContext.set(import_node.reporterCtx, reporter);
|
|
124
76
|
let response;
|
|
125
77
|
try {
|
|
126
78
|
response = await queryRoute(request, {
|
|
@@ -142,15 +94,17 @@ const handleRequest = async ({ context, serverRoutes, routes: routesConfig }) =>
|
|
|
142
94
|
const headers = new Headers(init.headers);
|
|
143
95
|
headers.set("Content-Type", `${import_constants2.CONTENT_TYPE_DEFERRED}; charset=UTF-8`);
|
|
144
96
|
init.headers = headers;
|
|
145
|
-
response = new
|
|
97
|
+
response = new Response(body, init);
|
|
146
98
|
}
|
|
147
99
|
} else {
|
|
148
|
-
response = isResponse(response) ? response : new
|
|
100
|
+
response = isResponse(response) ? response : new Response(JSON.stringify(response), {
|
|
149
101
|
headers: {
|
|
150
102
|
"Content-Type": "application/json; charset=utf-8"
|
|
151
103
|
}
|
|
152
104
|
});
|
|
153
105
|
}
|
|
106
|
+
const cost = end();
|
|
107
|
+
reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(`${import_constants.LOADER_REPORTER_NAME}-navigation`, cost);
|
|
154
108
|
} catch (error) {
|
|
155
109
|
const message = (0, import_remix_router.isRouteErrorResponse)(error) ? error.data : String(error);
|
|
156
110
|
if (error instanceof Error) {
|
|
@@ -158,16 +112,14 @@ const handleRequest = async ({ context, serverRoutes, routes: routesConfig }) =>
|
|
|
158
112
|
} else {
|
|
159
113
|
logger === null || logger === void 0 ? void 0 : logger.error(message);
|
|
160
114
|
}
|
|
161
|
-
response = new
|
|
115
|
+
response = new Response(message, {
|
|
162
116
|
status: 500,
|
|
163
117
|
headers: {
|
|
164
118
|
"Content-Type": "text/plain"
|
|
165
119
|
}
|
|
166
120
|
});
|
|
167
121
|
}
|
|
168
|
-
|
|
169
|
-
reporter.reportTiming(`${import_constants.LOADER_REPORTER_NAME}-navigation`, cost);
|
|
170
|
-
await sendLoaderResponse(res, response);
|
|
122
|
+
return response;
|
|
171
123
|
};
|
|
172
124
|
// Annotate the CommonJS export names for ESM import in node:
|
|
173
125
|
0 && (module.exports = {
|
package/dist/esm/cli/loader.js
CHANGED
|
@@ -15,13 +15,13 @@ function _loader() {
|
|
|
15
15
|
case 0:
|
|
16
16
|
this.cacheable();
|
|
17
17
|
target = (_this__compiler = this._compiler) === null || _this__compiler === void 0 ? void 0 : _this__compiler.options.target;
|
|
18
|
-
if (target === "node") {
|
|
18
|
+
if (target === "node" || Array.isArray(target) && target.includes("node")) {
|
|
19
19
|
return [
|
|
20
20
|
2,
|
|
21
21
|
source
|
|
22
22
|
];
|
|
23
23
|
}
|
|
24
|
-
if (target === "webworker") {
|
|
24
|
+
if (target === "webworker" || Array.isArray(target) && target.includes("webworker")) {
|
|
25
25
|
return [
|
|
26
26
|
2,
|
|
27
27
|
source
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
2
|
import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
3
|
-
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
4
3
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
5
|
-
import { installGlobals, writeReadableStreamToWritable, Response as NodeResponse } from "@remix-run/node";
|
|
6
4
|
import { createStaticHandler, UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL, isRouteErrorResponse } from "@modern-js/runtime-utils/remix-router";
|
|
7
5
|
import { transformNestedRoutes } from "@modern-js/runtime-utils/browser";
|
|
8
6
|
import { isPlainObject } from "@modern-js/utils/lodash";
|
|
@@ -11,7 +9,6 @@ import { time } from "@modern-js/runtime-utils/time";
|
|
|
11
9
|
import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
|
|
12
10
|
import { CONTENT_TYPE_DEFERRED, LOADER_ID_PARAM } from "../common/constants";
|
|
13
11
|
import { createDeferredReadableStream } from "./response";
|
|
14
|
-
installGlobals();
|
|
15
12
|
var redirectStatusCodes = /* @__PURE__ */ new Set([
|
|
16
13
|
301,
|
|
17
14
|
302,
|
|
@@ -33,145 +30,21 @@ function convertModernRedirectResponse(headers, basename) {
|
|
|
33
30
|
}
|
|
34
31
|
newHeaders.set("X-Modernjs-Redirect", redirectUrl);
|
|
35
32
|
newHeaders.delete("Location");
|
|
36
|
-
return new
|
|
33
|
+
return new Response(null, {
|
|
37
34
|
status: 204,
|
|
38
35
|
headers: newHeaders
|
|
39
36
|
});
|
|
40
37
|
}
|
|
41
|
-
var createLoaderHeaders = function(requestHeaders) {
|
|
42
|
-
var headers = new Headers();
|
|
43
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
44
|
-
try {
|
|
45
|
-
for (var _iterator = Object.entries(requestHeaders)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
46
|
-
var _step_value = _sliced_to_array(_step.value, 2), key = _step_value[0], values = _step_value[1];
|
|
47
|
-
if (values) {
|
|
48
|
-
if (Array.isArray(values)) {
|
|
49
|
-
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
|
|
50
|
-
try {
|
|
51
|
-
for (var _iterator1 = values[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
52
|
-
var value = _step1.value;
|
|
53
|
-
headers.append(key, value);
|
|
54
|
-
}
|
|
55
|
-
} catch (err) {
|
|
56
|
-
_didIteratorError1 = true;
|
|
57
|
-
_iteratorError1 = err;
|
|
58
|
-
} finally {
|
|
59
|
-
try {
|
|
60
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
61
|
-
_iterator1.return();
|
|
62
|
-
}
|
|
63
|
-
} finally {
|
|
64
|
-
if (_didIteratorError1) {
|
|
65
|
-
throw _iteratorError1;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
headers.set(key, values);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
} catch (err) {
|
|
75
|
-
_didIteratorError = true;
|
|
76
|
-
_iteratorError = err;
|
|
77
|
-
} finally {
|
|
78
|
-
try {
|
|
79
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
80
|
-
_iterator.return();
|
|
81
|
-
}
|
|
82
|
-
} finally {
|
|
83
|
-
if (_didIteratorError) {
|
|
84
|
-
throw _iteratorError;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return headers;
|
|
89
|
-
};
|
|
90
|
-
var createRequest = function(context) {
|
|
91
|
-
var origin = "".concat(context.protocol, "://").concat(context.host);
|
|
92
|
-
var url = new URL(context.url, origin);
|
|
93
|
-
var controller = new AbortController();
|
|
94
|
-
var init = {
|
|
95
|
-
method: context.method,
|
|
96
|
-
headers: createLoaderHeaders(context.headers),
|
|
97
|
-
signal: controller.signal
|
|
98
|
-
};
|
|
99
|
-
if (![
|
|
100
|
-
"GET",
|
|
101
|
-
"HEAD"
|
|
102
|
-
].includes(context.method.toUpperCase())) {
|
|
103
|
-
init.body = context.req;
|
|
104
|
-
}
|
|
105
|
-
var request = new Request(url.href, init);
|
|
106
|
-
return request;
|
|
107
|
-
};
|
|
108
|
-
var sendLoaderResponse = function() {
|
|
109
|
-
var _ref = _async_to_generator(function(res, nodeResponse) {
|
|
110
|
-
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _step_value, key, value;
|
|
111
|
-
return _ts_generator(this, function(_state) {
|
|
112
|
-
switch (_state.label) {
|
|
113
|
-
case 0:
|
|
114
|
-
res.statusMessage = nodeResponse.statusText;
|
|
115
|
-
res.statusCode = nodeResponse.status;
|
|
116
|
-
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
117
|
-
try {
|
|
118
|
-
for (_iterator = nodeResponse.headers.entries()[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
119
|
-
_step_value = _sliced_to_array(_step.value, 2), key = _step_value[0], value = _step_value[1];
|
|
120
|
-
res.setHeader(key, value);
|
|
121
|
-
}
|
|
122
|
-
} catch (err) {
|
|
123
|
-
_didIteratorError = true;
|
|
124
|
-
_iteratorError = err;
|
|
125
|
-
} finally {
|
|
126
|
-
try {
|
|
127
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
128
|
-
_iterator.return();
|
|
129
|
-
}
|
|
130
|
-
} finally {
|
|
131
|
-
if (_didIteratorError) {
|
|
132
|
-
throw _iteratorError;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (!nodeResponse.body)
|
|
137
|
-
return [
|
|
138
|
-
3,
|
|
139
|
-
2
|
|
140
|
-
];
|
|
141
|
-
return [
|
|
142
|
-
4,
|
|
143
|
-
writeReadableStreamToWritable(nodeResponse.body, res)
|
|
144
|
-
];
|
|
145
|
-
case 1:
|
|
146
|
-
_state.sent();
|
|
147
|
-
return [
|
|
148
|
-
3,
|
|
149
|
-
3
|
|
150
|
-
];
|
|
151
|
-
case 2:
|
|
152
|
-
res.end();
|
|
153
|
-
_state.label = 3;
|
|
154
|
-
case 3:
|
|
155
|
-
return [
|
|
156
|
-
2
|
|
157
|
-
];
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
return function sendLoaderResponse2(res, nodeResponse) {
|
|
162
|
-
return _ref.apply(this, arguments);
|
|
163
|
-
};
|
|
164
|
-
}();
|
|
165
38
|
var handleRequest = function() {
|
|
166
39
|
var _ref = _async_to_generator(function(param) {
|
|
167
|
-
var
|
|
40
|
+
var request, serverRoutes, routesConfig, context, url, routeId, entry, basename, end, logger, reporter, routes, queryRoute, requestContext, response, deferredData, body, init, headers, cost, error, message;
|
|
168
41
|
return _ts_generator(this, function(_state) {
|
|
169
42
|
switch (_state.label) {
|
|
170
43
|
case 0:
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
routeId =
|
|
174
|
-
entry = matchEntry(
|
|
44
|
+
request = param.request, serverRoutes = param.serverRoutes, routesConfig = param.routes, context = param.context;
|
|
45
|
+
url = new URL(request.url);
|
|
46
|
+
routeId = url.searchParams.get(LOADER_ID_PARAM);
|
|
47
|
+
entry = matchEntry(url.pathname, serverRoutes);
|
|
175
48
|
if (!routeId || !entry) {
|
|
176
49
|
return [
|
|
177
50
|
2
|
|
@@ -179,12 +52,11 @@ var handleRequest = function() {
|
|
|
179
52
|
}
|
|
180
53
|
basename = entry.urlPath;
|
|
181
54
|
end = time();
|
|
182
|
-
|
|
55
|
+
logger = context.logger, reporter = context.reporter;
|
|
183
56
|
routes = transformNestedRoutes(routesConfig, reporter);
|
|
184
57
|
queryRoute = createStaticHandler(routes, {
|
|
185
58
|
basename
|
|
186
59
|
}).queryRoute;
|
|
187
|
-
request = createRequest(context);
|
|
188
60
|
requestContext = createRequestContext();
|
|
189
61
|
requestContext.set(reporterCtx, reporter);
|
|
190
62
|
_state.label = 1;
|
|
@@ -219,15 +91,17 @@ var handleRequest = function() {
|
|
|
219
91
|
headers = new Headers(init.headers);
|
|
220
92
|
headers.set("Content-Type", "".concat(CONTENT_TYPE_DEFERRED, "; charset=UTF-8"));
|
|
221
93
|
init.headers = headers;
|
|
222
|
-
response = new
|
|
94
|
+
response = new Response(body, init);
|
|
223
95
|
}
|
|
224
96
|
} else {
|
|
225
|
-
response = isResponse(response) ? response : new
|
|
97
|
+
response = isResponse(response) ? response : new Response(JSON.stringify(response), {
|
|
226
98
|
headers: {
|
|
227
99
|
"Content-Type": "application/json; charset=utf-8"
|
|
228
100
|
}
|
|
229
101
|
});
|
|
230
102
|
}
|
|
103
|
+
cost = end();
|
|
104
|
+
reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming("".concat(LOADER_REPORTER_NAME, "-navigation"), cost);
|
|
231
105
|
return [
|
|
232
106
|
3,
|
|
233
107
|
4
|
|
@@ -240,7 +114,7 @@ var handleRequest = function() {
|
|
|
240
114
|
} else {
|
|
241
115
|
logger === null || logger === void 0 ? void 0 : logger.error(message);
|
|
242
116
|
}
|
|
243
|
-
response = new
|
|
117
|
+
response = new Response(message, {
|
|
244
118
|
status: 500,
|
|
245
119
|
headers: {
|
|
246
120
|
"Content-Type": "text/plain"
|
|
@@ -251,16 +125,9 @@ var handleRequest = function() {
|
|
|
251
125
|
4
|
|
252
126
|
];
|
|
253
127
|
case 4:
|
|
254
|
-
cost = end();
|
|
255
|
-
reporter.reportTiming("".concat(LOADER_REPORTER_NAME, "-navigation"), cost);
|
|
256
|
-
return [
|
|
257
|
-
4,
|
|
258
|
-
sendLoaderResponse(res, response)
|
|
259
|
-
];
|
|
260
|
-
case 5:
|
|
261
|
-
_state.sent();
|
|
262
128
|
return [
|
|
263
|
-
2
|
|
129
|
+
2,
|
|
130
|
+
response
|
|
264
131
|
];
|
|
265
132
|
}
|
|
266
133
|
});
|
|
@@ -5,10 +5,10 @@ async function loader(source) {
|
|
|
5
5
|
var _this__compiler;
|
|
6
6
|
this.cacheable();
|
|
7
7
|
const target = (_this__compiler = this._compiler) === null || _this__compiler === void 0 ? void 0 : _this__compiler.options.target;
|
|
8
|
-
if (target === "node") {
|
|
8
|
+
if (target === "node" || Array.isArray(target) && target.includes("node")) {
|
|
9
9
|
return source;
|
|
10
10
|
}
|
|
11
|
-
if (target === "webworker") {
|
|
11
|
+
if (target === "webworker" || Array.isArray(target) && target.includes("webworker")) {
|
|
12
12
|
return source;
|
|
13
13
|
}
|
|
14
14
|
const { resourceQuery } = this;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { installGlobals, writeReadableStreamToWritable, Response as NodeResponse } from "@remix-run/node";
|
|
2
1
|
import { createStaticHandler, UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL, isRouteErrorResponse } from "@modern-js/runtime-utils/remix-router";
|
|
3
2
|
import { transformNestedRoutes } from "@modern-js/runtime-utils/browser";
|
|
4
3
|
import { isPlainObject } from "@modern-js/utils/lodash";
|
|
@@ -7,7 +6,6 @@ import { time } from "@modern-js/runtime-utils/time";
|
|
|
7
6
|
import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
|
|
8
7
|
import { CONTENT_TYPE_DEFERRED, LOADER_ID_PARAM } from "../common/constants";
|
|
9
8
|
import { createDeferredReadableStream } from "./response";
|
|
10
|
-
installGlobals();
|
|
11
9
|
const redirectStatusCodes = /* @__PURE__ */ new Set([
|
|
12
10
|
301,
|
|
13
11
|
302,
|
|
@@ -29,71 +27,25 @@ function convertModernRedirectResponse(headers, basename) {
|
|
|
29
27
|
}
|
|
30
28
|
newHeaders.set("X-Modernjs-Redirect", redirectUrl);
|
|
31
29
|
newHeaders.delete("Location");
|
|
32
|
-
return new
|
|
30
|
+
return new Response(null, {
|
|
33
31
|
status: 204,
|
|
34
32
|
headers: newHeaders
|
|
35
33
|
});
|
|
36
34
|
}
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (Array.isArray(values)) {
|
|
42
|
-
for (const value of values) {
|
|
43
|
-
headers.append(key, value);
|
|
44
|
-
}
|
|
45
|
-
} else {
|
|
46
|
-
headers.set(key, values);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return headers;
|
|
51
|
-
};
|
|
52
|
-
const createRequest = (context) => {
|
|
53
|
-
const origin = `${context.protocol}://${context.host}`;
|
|
54
|
-
const url = new URL(context.url, origin);
|
|
55
|
-
const controller = new AbortController();
|
|
56
|
-
const init = {
|
|
57
|
-
method: context.method,
|
|
58
|
-
headers: createLoaderHeaders(context.headers),
|
|
59
|
-
signal: controller.signal
|
|
60
|
-
};
|
|
61
|
-
if (![
|
|
62
|
-
"GET",
|
|
63
|
-
"HEAD"
|
|
64
|
-
].includes(context.method.toUpperCase())) {
|
|
65
|
-
init.body = context.req;
|
|
66
|
-
}
|
|
67
|
-
const request = new Request(url.href, init);
|
|
68
|
-
return request;
|
|
69
|
-
};
|
|
70
|
-
const sendLoaderResponse = async (res, nodeResponse) => {
|
|
71
|
-
res.statusMessage = nodeResponse.statusText;
|
|
72
|
-
res.statusCode = nodeResponse.status;
|
|
73
|
-
for (const [key, value] of nodeResponse.headers.entries()) {
|
|
74
|
-
res.setHeader(key, value);
|
|
75
|
-
}
|
|
76
|
-
if (nodeResponse.body) {
|
|
77
|
-
await writeReadableStreamToWritable(nodeResponse.body, res);
|
|
78
|
-
} else {
|
|
79
|
-
res.end();
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
const handleRequest = async ({ context, serverRoutes, routes: routesConfig }) => {
|
|
83
|
-
const { query } = context;
|
|
84
|
-
const routeId = query[LOADER_ID_PARAM];
|
|
85
|
-
const entry = matchEntry(context.path, serverRoutes);
|
|
35
|
+
const handleRequest = async ({ request, serverRoutes, routes: routesConfig, context }) => {
|
|
36
|
+
const url = new URL(request.url);
|
|
37
|
+
const routeId = url.searchParams.get(LOADER_ID_PARAM);
|
|
38
|
+
const entry = matchEntry(url.pathname, serverRoutes);
|
|
86
39
|
if (!routeId || !entry) {
|
|
87
40
|
return;
|
|
88
41
|
}
|
|
89
42
|
const basename = entry.urlPath;
|
|
90
43
|
const end = time();
|
|
91
|
-
const {
|
|
44
|
+
const { logger, reporter } = context;
|
|
92
45
|
const routes = transformNestedRoutes(routesConfig, reporter);
|
|
93
46
|
const { queryRoute } = createStaticHandler(routes, {
|
|
94
47
|
basename
|
|
95
48
|
});
|
|
96
|
-
const request = createRequest(context);
|
|
97
49
|
const requestContext = createRequestContext();
|
|
98
50
|
requestContext.set(reporterCtx, reporter);
|
|
99
51
|
let response;
|
|
@@ -117,15 +69,17 @@ const handleRequest = async ({ context, serverRoutes, routes: routesConfig }) =>
|
|
|
117
69
|
const headers = new Headers(init.headers);
|
|
118
70
|
headers.set("Content-Type", `${CONTENT_TYPE_DEFERRED}; charset=UTF-8`);
|
|
119
71
|
init.headers = headers;
|
|
120
|
-
response = new
|
|
72
|
+
response = new Response(body, init);
|
|
121
73
|
}
|
|
122
74
|
} else {
|
|
123
|
-
response = isResponse(response) ? response : new
|
|
75
|
+
response = isResponse(response) ? response : new Response(JSON.stringify(response), {
|
|
124
76
|
headers: {
|
|
125
77
|
"Content-Type": "application/json; charset=utf-8"
|
|
126
78
|
}
|
|
127
79
|
});
|
|
128
80
|
}
|
|
81
|
+
const cost = end();
|
|
82
|
+
reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(`${LOADER_REPORTER_NAME}-navigation`, cost);
|
|
129
83
|
} catch (error) {
|
|
130
84
|
const message = isRouteErrorResponse(error) ? error.data : String(error);
|
|
131
85
|
if (error instanceof Error) {
|
|
@@ -133,16 +87,14 @@ const handleRequest = async ({ context, serverRoutes, routes: routesConfig }) =>
|
|
|
133
87
|
} else {
|
|
134
88
|
logger === null || logger === void 0 ? void 0 : logger.error(message);
|
|
135
89
|
}
|
|
136
|
-
response = new
|
|
90
|
+
response = new Response(message, {
|
|
137
91
|
status: 500,
|
|
138
92
|
headers: {
|
|
139
93
|
"Content-Type": "text/plain"
|
|
140
94
|
}
|
|
141
95
|
});
|
|
142
96
|
}
|
|
143
|
-
|
|
144
|
-
reporter.reportTiming(`${LOADER_REPORTER_NAME}-navigation`, cost);
|
|
145
|
-
await sendLoaderResponse(res, response);
|
|
97
|
+
return response;
|
|
146
98
|
};
|
|
147
99
|
export {
|
|
148
100
|
handleRequest,
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { NestedRoute, ServerRoute } from '@modern-js/types';
|
|
2
|
-
import { Response as NodeResponse } from '@remix-run/node';
|
|
3
|
-
import { ServerContext } from '@modern-js/runtime-utils/node';
|
|
1
|
+
import type { Logger, NestedRoute, Reporter, ServerRoute } from '@modern-js/types';
|
|
4
2
|
export declare function isRedirectResponse(status: number): boolean;
|
|
5
|
-
export declare function isResponse(value: any): value is
|
|
6
|
-
export declare const handleRequest: ({
|
|
7
|
-
|
|
3
|
+
export declare function isResponse(value: any): value is Response;
|
|
4
|
+
export declare const handleRequest: ({ request, serverRoutes, routes: routesConfig, context, }: {
|
|
5
|
+
request: Request;
|
|
8
6
|
serverRoutes: ServerRoute[];
|
|
9
7
|
routes: NestedRoute[];
|
|
10
|
-
|
|
8
|
+
context: {
|
|
9
|
+
logger: Logger;
|
|
10
|
+
reporter?: Reporter;
|
|
11
|
+
};
|
|
12
|
+
}) => Promise<Response | void>;
|
package/package.json
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "2.
|
|
18
|
+
"version": "2.49.0",
|
|
19
19
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
20
|
+
"node": ">=16.2.0"
|
|
21
21
|
},
|
|
22
22
|
"jsnext:source": "./src/runtime/index.ts",
|
|
23
23
|
"types": "./dist/types/runtime/index.d.ts",
|
|
@@ -29,11 +29,6 @@
|
|
|
29
29
|
"jsnext:source": "./src/cli/loader.ts",
|
|
30
30
|
"default": "./dist/cjs/cli/loader.js"
|
|
31
31
|
},
|
|
32
|
-
"./server": {
|
|
33
|
-
"types": "./dist/types/server/index.d.ts",
|
|
34
|
-
"jsnext:source": "./src/server/index.ts",
|
|
35
|
-
"default": "./dist/cjs/server/index.js"
|
|
36
|
-
},
|
|
37
32
|
"./runtime": {
|
|
38
33
|
"types": "./dist/types/runtime/index.d.ts",
|
|
39
34
|
"jsnext:source": "./src/runtime/index.ts",
|
|
@@ -45,9 +40,6 @@
|
|
|
45
40
|
"loader": [
|
|
46
41
|
"./dist/types/cli/loader.d.ts"
|
|
47
42
|
],
|
|
48
|
-
"server": [
|
|
49
|
-
"./dist/types/server/index.d.ts"
|
|
50
|
-
],
|
|
51
43
|
"runtime": [
|
|
52
44
|
"./dist/types/runtime/index.d.ts"
|
|
53
45
|
]
|
|
@@ -55,11 +47,10 @@
|
|
|
55
47
|
},
|
|
56
48
|
"dependencies": {
|
|
57
49
|
"@babel/core": "^7.23.2",
|
|
58
|
-
"@remix-run/node": "^1.12.0",
|
|
59
50
|
"path-to-regexp": "^6.2.0",
|
|
60
51
|
"@swc/helpers": "0.5.3",
|
|
61
|
-
"@modern-js/utils": "2.
|
|
62
|
-
"@modern-js/runtime-utils": "2.
|
|
52
|
+
"@modern-js/utils": "2.49.0",
|
|
53
|
+
"@modern-js/runtime-utils": "2.49.0"
|
|
63
54
|
},
|
|
64
55
|
"devDependencies": {
|
|
65
56
|
"@types/babel__core": "^7.20.1",
|
|
@@ -75,11 +66,11 @@
|
|
|
75
66
|
"webpack": "^5.91.0",
|
|
76
67
|
"react": "^18",
|
|
77
68
|
"react-dom": "^18",
|
|
78
|
-
"@modern-js/core": "2.
|
|
79
|
-
"@modern-js/server-core": "2.
|
|
80
|
-
"@scripts/build": "2.
|
|
81
|
-
"@
|
|
82
|
-
"@
|
|
69
|
+
"@modern-js/core": "2.49.0",
|
|
70
|
+
"@modern-js/server-core": "2.49.0",
|
|
71
|
+
"@scripts/build": "2.49.0",
|
|
72
|
+
"@scripts/jest-config": "2.49.0",
|
|
73
|
+
"@modern-js/types": "2.49.0"
|
|
83
74
|
},
|
|
84
75
|
"peerDependencies": {
|
|
85
76
|
"react": ">=17.0.0"
|
package/dist/cjs/server/index.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var server_exports = {};
|
|
30
|
-
__export(server_exports, {
|
|
31
|
-
default: () => server_default
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(server_exports);
|
|
34
|
-
var import_path = __toESM(require("path"));
|
|
35
|
-
var import_fs = __toESM(require("fs"));
|
|
36
|
-
var import_utils = require("@modern-js/utils");
|
|
37
|
-
var import_node = require("@modern-js/runtime-utils/node");
|
|
38
|
-
var server_default = () => ({
|
|
39
|
-
name: "@modern-js/plugin-data-loader",
|
|
40
|
-
setup: () => ({
|
|
41
|
-
prepareLoaderHandler({ serverRoutes, distDir }) {
|
|
42
|
-
return async (context) => {
|
|
43
|
-
const entry = (0, import_node.matchEntry)(context.path, serverRoutes);
|
|
44
|
-
if (!entry) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const routesPath = import_path.default.join(distDir, import_utils.SERVER_BUNDLE_DIRECTORY, `${entry.entryName || import_utils.MAIN_ENTRY_NAME}-server-loaders.js`);
|
|
48
|
-
if (!import_fs.default.existsSync(routesPath)) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const { routes, handleRequest } = await Promise.resolve().then(() => __toESM(require(routesPath)));
|
|
52
|
-
if (!routes) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
return handleRequest({
|
|
56
|
-
serverRoutes,
|
|
57
|
-
context,
|
|
58
|
-
routes
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
})
|
|
63
|
-
});
|
package/dist/esm/server/index.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
|
-
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import fs from "fs";
|
|
5
|
-
import { MAIN_ENTRY_NAME, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
|
|
6
|
-
import { matchEntry } from "@modern-js/runtime-utils/node";
|
|
7
|
-
function server_default() {
|
|
8
|
-
return {
|
|
9
|
-
name: "@modern-js/plugin-data-loader",
|
|
10
|
-
setup: function() {
|
|
11
|
-
return {
|
|
12
|
-
prepareLoaderHandler: function prepareLoaderHandler(param) {
|
|
13
|
-
var serverRoutes = param.serverRoutes, distDir = param.distDir;
|
|
14
|
-
return function() {
|
|
15
|
-
var _ref = _async_to_generator(function(context) {
|
|
16
|
-
var entry, routesPath, _ref2, routes, handleRequest;
|
|
17
|
-
return _ts_generator(this, function(_state) {
|
|
18
|
-
switch (_state.label) {
|
|
19
|
-
case 0:
|
|
20
|
-
entry = matchEntry(context.path, serverRoutes);
|
|
21
|
-
if (!entry) {
|
|
22
|
-
return [
|
|
23
|
-
2
|
|
24
|
-
];
|
|
25
|
-
}
|
|
26
|
-
routesPath = path.join(distDir, SERVER_BUNDLE_DIRECTORY, "".concat(entry.entryName || MAIN_ENTRY_NAME, "-server-loaders.js"));
|
|
27
|
-
if (!fs.existsSync(routesPath)) {
|
|
28
|
-
return [
|
|
29
|
-
2
|
|
30
|
-
];
|
|
31
|
-
}
|
|
32
|
-
return [
|
|
33
|
-
4,
|
|
34
|
-
import(routesPath)
|
|
35
|
-
];
|
|
36
|
-
case 1:
|
|
37
|
-
_ref2 = _state.sent(), routes = _ref2.routes, handleRequest = _ref2.handleRequest;
|
|
38
|
-
if (!routes) {
|
|
39
|
-
return [
|
|
40
|
-
2
|
|
41
|
-
];
|
|
42
|
-
}
|
|
43
|
-
return [
|
|
44
|
-
2,
|
|
45
|
-
handleRequest({
|
|
46
|
-
serverRoutes,
|
|
47
|
-
context,
|
|
48
|
-
routes
|
|
49
|
-
})
|
|
50
|
-
];
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
return function(context) {
|
|
55
|
-
return _ref.apply(this, arguments);
|
|
56
|
-
};
|
|
57
|
-
}();
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
;
|
|
64
|
-
export {
|
|
65
|
-
server_default as default
|
|
66
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import { MAIN_ENTRY_NAME, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
|
|
4
|
-
import { matchEntry } from "@modern-js/runtime-utils/node";
|
|
5
|
-
var server_default = () => ({
|
|
6
|
-
name: "@modern-js/plugin-data-loader",
|
|
7
|
-
setup: () => ({
|
|
8
|
-
prepareLoaderHandler({ serverRoutes, distDir }) {
|
|
9
|
-
return async (context) => {
|
|
10
|
-
const entry = matchEntry(context.path, serverRoutes);
|
|
11
|
-
if (!entry) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const routesPath = path.join(distDir, SERVER_BUNDLE_DIRECTORY, `${entry.entryName || MAIN_ENTRY_NAME}-server-loaders.js`);
|
|
15
|
-
if (!fs.existsSync(routesPath)) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
const { routes, handleRequest } = await import(routesPath);
|
|
19
|
-
if (!routes) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
return handleRequest({
|
|
23
|
-
serverRoutes,
|
|
24
|
-
context,
|
|
25
|
-
routes
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
})
|
|
30
|
-
});
|
|
31
|
-
export {
|
|
32
|
-
server_default as default
|
|
33
|
-
};
|