@modern-js/plugin-data-loader 2.14.0 → 2.16.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/CHANGELOG.md +19 -0
- package/dist/cjs/cli/createRequest.js +31 -47
- package/dist/cjs/cli/data.js +17 -34
- package/dist/cjs/cli/generateClient.js +15 -41
- package/dist/cjs/cli/loader.js +11 -27
- package/dist/cjs/common/constants.js +13 -27
- package/dist/cjs/common/utils.js +7 -25
- package/dist/cjs/runtime/index.js +45 -60
- package/dist/cjs/runtime/response.js +24 -58
- package/dist/cjs/server/index.js +62 -50
- package/dist/esm/cli/createRequest.js +212 -205
- package/dist/esm/cli/data.js +769 -741
- package/dist/esm/cli/generateClient.js +40 -41
- package/dist/esm/cli/loader.js +219 -201
- package/dist/esm/common/constants.js +3 -4
- package/dist/esm/common/utils.js +17 -18
- package/dist/esm/runtime/index.js +400 -381
- package/dist/esm/runtime/response.js +276 -258
- package/dist/esm/server/index.js +177 -170
- package/dist/esm-node/cli/createRequest.js +11 -22
- package/dist/esm-node/cli/data.js +11 -16
- package/dist/esm-node/cli/generateClient.js +1 -7
- package/dist/esm-node/cli/loader.js +3 -6
- package/dist/esm-node/common/constants.js +3 -8
- package/dist/esm-node/common/utils.js +1 -4
- package/dist/esm-node/runtime/index.js +14 -28
- package/dist/esm-node/runtime/response.js +15 -34
- package/dist/esm-node/server/index.js +4 -17
- package/package.json +12 -8
package/dist/esm/server/index.js
CHANGED
|
@@ -1,185 +1,192 @@
|
|
|
1
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (info.done) {
|
|
10
|
+
resolve(value);
|
|
11
|
+
} else {
|
|
12
|
+
Promise.resolve(value).then(_next, _throw);
|
|
13
|
+
}
|
|
14
14
|
}
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
function _async_to_generator(fn) {
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this, args = arguments;
|
|
18
|
+
return new Promise(function(resolve, reject) {
|
|
19
|
+
var gen = fn.apply(self, args);
|
|
20
|
+
function _next(value) {
|
|
21
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
+
}
|
|
23
|
+
function _throw(err) {
|
|
24
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
+
}
|
|
26
|
+
_next(void 0);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
29
|
}
|
|
30
|
-
var __generator =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
var __generator = function(thisArg, body) {
|
|
31
|
+
var f, y, t, g, _ = {
|
|
32
|
+
label: 0,
|
|
33
|
+
sent: function() {
|
|
34
|
+
if (t[0] & 1)
|
|
35
|
+
throw t[1];
|
|
36
|
+
return t[1];
|
|
37
|
+
},
|
|
38
|
+
trys: [],
|
|
39
|
+
ops: []
|
|
40
|
+
};
|
|
41
|
+
return g = {
|
|
42
|
+
next: verb(0),
|
|
43
|
+
"throw": verb(1),
|
|
44
|
+
"return": verb(2)
|
|
45
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
46
|
+
return this;
|
|
47
|
+
}), g;
|
|
48
|
+
function verb(n) {
|
|
49
|
+
return function(v) {
|
|
50
|
+
return step([
|
|
51
|
+
n,
|
|
52
|
+
v
|
|
53
|
+
]);
|
|
39
54
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
break;
|
|
68
|
-
case 4:
|
|
69
|
-
_.label++;
|
|
70
|
-
return {
|
|
71
|
-
value: op[1],
|
|
72
|
-
done: false
|
|
73
|
-
};
|
|
74
|
-
case 5:
|
|
75
|
-
_.label++;
|
|
76
|
-
y = op[1];
|
|
77
|
-
op = [
|
|
78
|
-
0
|
|
79
|
-
];
|
|
80
|
-
continue;
|
|
81
|
-
case 7:
|
|
82
|
-
op = _.ops.pop();
|
|
83
|
-
_.trys.pop();
|
|
84
|
-
continue;
|
|
85
|
-
default:
|
|
86
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
87
|
-
_ = 0;
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
91
|
-
_.label = op[1];
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
95
|
-
_.label = t[1];
|
|
96
|
-
t = op;
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
if (t && _.label < t[2]) {
|
|
100
|
-
_.label = t[2];
|
|
101
|
-
_.ops.push(op);
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
if (t[2]) _.ops.pop();
|
|
105
|
-
_.trys.pop();
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
op = body.call(thisArg, _);
|
|
109
|
-
} catch (e) {
|
|
55
|
+
}
|
|
56
|
+
function step(op) {
|
|
57
|
+
if (f)
|
|
58
|
+
throw new TypeError("Generator is already executing.");
|
|
59
|
+
while (_)
|
|
60
|
+
try {
|
|
61
|
+
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)
|
|
62
|
+
return t;
|
|
63
|
+
if (y = 0, t)
|
|
64
|
+
op = [
|
|
65
|
+
op[0] & 2,
|
|
66
|
+
t.value
|
|
67
|
+
];
|
|
68
|
+
switch (op[0]) {
|
|
69
|
+
case 0:
|
|
70
|
+
case 1:
|
|
71
|
+
t = op;
|
|
72
|
+
break;
|
|
73
|
+
case 4:
|
|
74
|
+
_.label++;
|
|
75
|
+
return {
|
|
76
|
+
value: op[1],
|
|
77
|
+
done: false
|
|
78
|
+
};
|
|
79
|
+
case 5:
|
|
80
|
+
_.label++;
|
|
81
|
+
y = op[1];
|
|
110
82
|
op = [
|
|
111
|
-
|
|
112
|
-
e
|
|
83
|
+
0
|
|
113
84
|
];
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
85
|
+
continue;
|
|
86
|
+
case 7:
|
|
87
|
+
op = _.ops.pop();
|
|
88
|
+
_.trys.pop();
|
|
89
|
+
continue;
|
|
90
|
+
default:
|
|
91
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
92
|
+
_ = 0;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
96
|
+
_.label = op[1];
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
100
|
+
_.label = t[1];
|
|
101
|
+
t = op;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
if (t && _.label < t[2]) {
|
|
105
|
+
_.label = t[2];
|
|
106
|
+
_.ops.push(op);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
if (t[2])
|
|
110
|
+
_.ops.pop();
|
|
111
|
+
_.trys.pop();
|
|
112
|
+
continue;
|
|
117
113
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
114
|
+
op = body.call(thisArg, _);
|
|
115
|
+
} catch (e) {
|
|
116
|
+
op = [
|
|
117
|
+
6,
|
|
118
|
+
e
|
|
119
|
+
];
|
|
120
|
+
y = 0;
|
|
121
|
+
} finally {
|
|
122
|
+
f = t = 0;
|
|
123
|
+
}
|
|
124
|
+
if (op[0] & 5)
|
|
125
|
+
throw op[1];
|
|
126
|
+
return {
|
|
127
|
+
value: op[0] ? op[1] : void 0,
|
|
128
|
+
done: true
|
|
129
|
+
};
|
|
130
|
+
}
|
|
124
131
|
};
|
|
125
132
|
import path from "path";
|
|
126
133
|
import fs from "fs";
|
|
127
134
|
import { MAIN_ENTRY_NAME, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils/constants";
|
|
128
135
|
import { matchEntry } from "../common/utils";
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
return function(context) {
|
|
177
|
-
return _ref.apply(this, arguments);
|
|
178
|
-
};
|
|
179
|
-
}();
|
|
136
|
+
export default function() {
|
|
137
|
+
return {
|
|
138
|
+
name: "@modern-js/plugin-data-loader",
|
|
139
|
+
setup: function() {
|
|
140
|
+
return {
|
|
141
|
+
prepareLoaderHandler: function prepareLoaderHandler(param) {
|
|
142
|
+
var serverRoutes = param.serverRoutes, distDir = param.distDir;
|
|
143
|
+
return function() {
|
|
144
|
+
var _ref = _async_to_generator(function(context) {
|
|
145
|
+
var entry, routesPath, _ref2, routes, handleRequest;
|
|
146
|
+
return __generator(this, function(_state) {
|
|
147
|
+
switch (_state.label) {
|
|
148
|
+
case 0:
|
|
149
|
+
entry = matchEntry(context.path, serverRoutes);
|
|
150
|
+
if (!entry) {
|
|
151
|
+
return [
|
|
152
|
+
2
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
routesPath = path.join(distDir, SERVER_BUNDLE_DIRECTORY, "".concat(entry.entryName || MAIN_ENTRY_NAME, "-server-loaders.js"));
|
|
156
|
+
if (!fs.existsSync(routesPath)) {
|
|
157
|
+
return [
|
|
158
|
+
2
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
return [
|
|
162
|
+
4,
|
|
163
|
+
import(routesPath)
|
|
164
|
+
];
|
|
165
|
+
case 1:
|
|
166
|
+
_ref2 = _state.sent(), routes = _ref2.routes, handleRequest = _ref2.handleRequest;
|
|
167
|
+
if (!routes) {
|
|
168
|
+
return [
|
|
169
|
+
2
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
return [
|
|
173
|
+
2,
|
|
174
|
+
handleRequest({
|
|
175
|
+
serverRoutes,
|
|
176
|
+
context,
|
|
177
|
+
routes
|
|
178
|
+
})
|
|
179
|
+
];
|
|
180
180
|
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
return function(context) {
|
|
184
|
+
return _ref.apply(this, arguments);
|
|
181
185
|
};
|
|
186
|
+
}();
|
|
182
187
|
}
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
;
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { compile } from "path-to-regexp";
|
|
2
2
|
import { redirect } from "react-router-dom";
|
|
3
|
-
import {
|
|
4
|
-
LOADER_ID_PARAM,
|
|
5
|
-
DIRECT_PARAM,
|
|
6
|
-
CONTENT_TYPE_DEFERRED
|
|
7
|
-
} from "../common/constants";
|
|
3
|
+
import { LOADER_ID_PARAM, DIRECT_PARAM, CONTENT_TYPE_DEFERRED } from "../common/constants";
|
|
8
4
|
import { parseDeferredReadableStream } from "./data";
|
|
9
|
-
const getRequestUrl = ({
|
|
10
|
-
params,
|
|
11
|
-
request,
|
|
12
|
-
routeId
|
|
13
|
-
}) => {
|
|
5
|
+
export const getRequestUrl = ({ params, request, routeId }) => {
|
|
14
6
|
const url = new URL(request.url);
|
|
15
7
|
const toPath = compile(url.pathname, {
|
|
16
8
|
encode: encodeURIComponent
|
|
@@ -30,18 +22,19 @@ const handleRedirectResponse = (res) => {
|
|
|
30
22
|
return res;
|
|
31
23
|
};
|
|
32
24
|
const handleDeferredResponse = async (res) => {
|
|
33
|
-
var
|
|
34
|
-
if (((
|
|
25
|
+
var _res_headers_get;
|
|
26
|
+
if (((_res_headers_get = res.headers.get("Content-Type")) === null || _res_headers_get === void 0 ? void 0 : _res_headers_get.match(CONTENT_TYPE_DEFERRED)) && res.body) {
|
|
35
27
|
return await parseDeferredReadableStream(res.body);
|
|
36
28
|
}
|
|
37
29
|
return res;
|
|
38
30
|
};
|
|
39
|
-
const createRequest = (routeId, method = "get") => {
|
|
40
|
-
return async ({
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
export const createRequest = (routeId, method = "get") => {
|
|
32
|
+
return async ({ params, request }) => {
|
|
33
|
+
const url = getRequestUrl({
|
|
34
|
+
params,
|
|
35
|
+
request,
|
|
36
|
+
routeId
|
|
37
|
+
});
|
|
45
38
|
let res;
|
|
46
39
|
res = await fetch(url, {
|
|
47
40
|
method,
|
|
@@ -55,7 +48,3 @@ const createRequest = (routeId, method = "get") => {
|
|
|
55
48
|
return res;
|
|
56
49
|
};
|
|
57
50
|
};
|
|
58
|
-
export {
|
|
59
|
-
createRequest,
|
|
60
|
-
getRequestUrl
|
|
61
|
-
};
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
UNSAFE_DeferredData as DeferredData,
|
|
3
|
-
AbortedDeferredError
|
|
4
|
-
} from "@modern-js/utils/universal/remix-router";
|
|
1
|
+
import { UNSAFE_DeferredData as DeferredData, AbortedDeferredError } from "@modern-js/utils/universal/remix-router";
|
|
5
2
|
const DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
|
|
6
|
-
async function parseDeferredReadableStream(stream) {
|
|
3
|
+
export async function parseDeferredReadableStream(stream) {
|
|
7
4
|
if (!stream) {
|
|
8
5
|
throw new Error("parseDeferredReadableStream requires stream argument");
|
|
9
6
|
}
|
|
@@ -60,9 +57,7 @@ async function parseDeferredReadableStream(stream) {
|
|
|
60
57
|
}
|
|
61
58
|
}
|
|
62
59
|
for (const [key, resolver] of Object.entries(deferredResolvers)) {
|
|
63
|
-
resolver.reject(
|
|
64
|
-
new AbortedDeferredError(`Deferred ${key} will never resolved`)
|
|
65
|
-
);
|
|
60
|
+
resolver.reject(new AbortedDeferredError(`Deferred ${key} will never resolved`));
|
|
66
61
|
}
|
|
67
62
|
} catch (error) {
|
|
68
63
|
for (const resolver of Object.values(deferredResolvers)) {
|
|
@@ -70,7 +65,10 @@ async function parseDeferredReadableStream(stream) {
|
|
|
70
65
|
}
|
|
71
66
|
}
|
|
72
67
|
})();
|
|
73
|
-
return new DeferredData({
|
|
68
|
+
return new DeferredData({
|
|
69
|
+
...criticalData,
|
|
70
|
+
...deferredData
|
|
71
|
+
});
|
|
74
72
|
} catch (error) {
|
|
75
73
|
for (const resolver of Object.values(deferredResolvers)) {
|
|
76
74
|
resolver.reject(error);
|
|
@@ -101,7 +99,9 @@ async function* readStreamSections(stream) {
|
|
|
101
99
|
const splitSections = bufferedString.split("\n\n");
|
|
102
100
|
if (splitSections.length >= 2) {
|
|
103
101
|
sections.push(...splitSections.slice(0, -1));
|
|
104
|
-
buffer = [
|
|
102
|
+
buffer = [
|
|
103
|
+
encoder.encode(splitSections.slice(-1).join("\n\n"))
|
|
104
|
+
];
|
|
105
105
|
}
|
|
106
106
|
if (sections.length > 0) {
|
|
107
107
|
break;
|
|
@@ -127,9 +127,7 @@ async function* readStreamSections(stream) {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
function mergeArrays(...arrays) {
|
|
130
|
-
const out = new Uint8Array(
|
|
131
|
-
arrays.reduce((total, arr) => total + arr.length, 0)
|
|
132
|
-
);
|
|
130
|
+
const out = new Uint8Array(arrays.reduce((total, arr) => total + arr.length, 0));
|
|
133
131
|
let offset = 0;
|
|
134
132
|
for (const arr of arrays) {
|
|
135
133
|
out.set(arr, offset);
|
|
@@ -137,6 +135,3 @@ function mergeArrays(...arrays) {
|
|
|
137
135
|
}
|
|
138
136
|
return out;
|
|
139
137
|
}
|
|
140
|
-
export {
|
|
141
|
-
parseDeferredReadableStream
|
|
142
|
-
};
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
-
const generateClient = ({
|
|
3
|
-
mapFile,
|
|
4
|
-
loaderId
|
|
5
|
-
}) => {
|
|
2
|
+
export const generateClient = ({ mapFile, loaderId }) => {
|
|
6
3
|
delete require.cache[mapFile];
|
|
7
4
|
const loadersMap = require(mapFile);
|
|
8
5
|
let requestCode = ``;
|
|
@@ -37,6 +34,3 @@ const generateClient = ({
|
|
|
37
34
|
`;
|
|
38
35
|
return generatedCode;
|
|
39
36
|
};
|
|
40
|
-
export {
|
|
41
|
-
generateClient
|
|
42
|
-
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { generateClient } from "./generateClient";
|
|
2
|
-
async function loader(source) {
|
|
3
|
-
var
|
|
2
|
+
export default async function loader(source) {
|
|
3
|
+
var _this__compiler;
|
|
4
4
|
this.cacheable();
|
|
5
|
-
const target = (
|
|
5
|
+
const target = (_this__compiler = this._compiler) === null || _this__compiler === void 0 ? void 0 : _this__compiler.options.target;
|
|
6
6
|
if (target === "node") {
|
|
7
7
|
return source;
|
|
8
8
|
}
|
|
@@ -29,6 +29,3 @@ async function loader(source) {
|
|
|
29
29
|
});
|
|
30
30
|
return code;
|
|
31
31
|
}
|
|
32
|
-
export {
|
|
33
|
-
loader as default
|
|
34
|
-
};
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
const LOADER_ID_PARAM = "__loader";
|
|
2
|
-
const DIRECT_PARAM = "__ssrDirect";
|
|
3
|
-
const CONTENT_TYPE_DEFERRED = "text/modernjs-deferred";
|
|
4
|
-
export {
|
|
5
|
-
CONTENT_TYPE_DEFERRED,
|
|
6
|
-
DIRECT_PARAM,
|
|
7
|
-
LOADER_ID_PARAM
|
|
8
|
-
};
|
|
1
|
+
export const LOADER_ID_PARAM = "__loader";
|
|
2
|
+
export const DIRECT_PARAM = "__ssrDirect";
|
|
3
|
+
export const CONTENT_TYPE_DEFERRED = "text/modernjs-deferred";
|
|
@@ -12,10 +12,7 @@ function sortByUrlPath(entries) {
|
|
|
12
12
|
});
|
|
13
13
|
return entries;
|
|
14
14
|
}
|
|
15
|
-
const matchEntry = (pathname, entries) => {
|
|
15
|
+
export const matchEntry = (pathname, entries) => {
|
|
16
16
|
sortByUrlPath(entries);
|
|
17
17
|
return entries.find((entry) => pathname.startsWith(entry.urlPath));
|
|
18
18
|
};
|
|
19
|
-
export {
|
|
20
|
-
matchEntry
|
|
21
|
-
};
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
writeReadableStreamToWritable,
|
|
4
|
-
Response as NodeResponse
|
|
5
|
-
} from "@remix-run/node";
|
|
6
|
-
import {
|
|
7
|
-
createStaticHandler,
|
|
8
|
-
ErrorResponse,
|
|
9
|
-
UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL
|
|
10
|
-
} from "@modern-js/utils/universal/remix-router";
|
|
1
|
+
import { installGlobals, writeReadableStreamToWritable, Response as NodeResponse } from "@remix-run/node";
|
|
2
|
+
import { createStaticHandler, ErrorResponse, UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL } from "@modern-js/utils/universal/remix-router";
|
|
11
3
|
import { isPlainObject } from "@modern-js/utils/lodash";
|
|
12
4
|
import { transformNestedRoutes } from "@modern-js/utils/universal/nestedRoutes";
|
|
13
5
|
import { CONTENT_TYPE_DEFERRED, LOADER_ID_PARAM } from "../common/constants";
|
|
14
6
|
import { matchEntry } from "../common/utils";
|
|
15
7
|
import { createDeferredReadableStream } from "./response";
|
|
16
8
|
installGlobals();
|
|
17
|
-
const redirectStatusCodes = /* @__PURE__ */ new Set([
|
|
18
|
-
|
|
9
|
+
const redirectStatusCodes = /* @__PURE__ */ new Set([
|
|
10
|
+
301,
|
|
11
|
+
302,
|
|
12
|
+
303,
|
|
13
|
+
307,
|
|
14
|
+
308
|
|
15
|
+
]);
|
|
16
|
+
export function isRedirectResponse(status) {
|
|
19
17
|
return redirectStatusCodes.has(status);
|
|
20
18
|
}
|
|
21
|
-
function isResponse(value) {
|
|
19
|
+
export function isResponse(value) {
|
|
22
20
|
return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
|
|
23
21
|
}
|
|
24
22
|
function convertModernRedirectResponse(headers, basename) {
|
|
@@ -72,11 +70,7 @@ const sendLoaderResponse = async (res, nodeResponse) => {
|
|
|
72
70
|
res.end();
|
|
73
71
|
}
|
|
74
72
|
};
|
|
75
|
-
const handleRequest = async ({
|
|
76
|
-
context,
|
|
77
|
-
serverRoutes,
|
|
78
|
-
routes: routesConfig
|
|
79
|
-
}) => {
|
|
73
|
+
export const handleRequest = async ({ context, serverRoutes, routes: routesConfig }) => {
|
|
80
74
|
const { method, query } = context;
|
|
81
75
|
const routeId = query[LOADER_ID_PARAM];
|
|
82
76
|
const entry = matchEntry(context.path, serverRoutes);
|
|
@@ -108,10 +102,7 @@ const handleRequest = async ({
|
|
|
108
102
|
if (!init.headers) {
|
|
109
103
|
throw new Error("redirect response includes no headers");
|
|
110
104
|
}
|
|
111
|
-
response = convertModernRedirectResponse(
|
|
112
|
-
new Headers(init.headers),
|
|
113
|
-
basename
|
|
114
|
-
);
|
|
105
|
+
response = convertModernRedirectResponse(new Headers(init.headers), basename);
|
|
115
106
|
} else {
|
|
116
107
|
const headers = new Headers(init.headers);
|
|
117
108
|
headers.set("Content-Type", `${CONTENT_TYPE_DEFERRED}; charset=UTF-8`);
|
|
@@ -127,7 +118,7 @@ const handleRequest = async ({
|
|
|
127
118
|
}
|
|
128
119
|
} catch (error) {
|
|
129
120
|
const message = error instanceof ErrorResponse ? error.data : String(error);
|
|
130
|
-
logger
|
|
121
|
+
logger === null || logger === void 0 ? void 0 : logger.error(message);
|
|
131
122
|
response = new NodeResponse(message, {
|
|
132
123
|
status: 500,
|
|
133
124
|
headers: {
|
|
@@ -137,8 +128,3 @@ const handleRequest = async ({
|
|
|
137
128
|
}
|
|
138
129
|
await sendLoaderResponse(res, response);
|
|
139
130
|
};
|
|
140
|
-
export {
|
|
141
|
-
handleRequest,
|
|
142
|
-
isRedirectResponse,
|
|
143
|
-
isResponse
|
|
144
|
-
};
|