@modern-js/plugin-data-loader 2.0.0-beta.3 → 2.0.0-beta.4
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/modern/cli/create-request.js +43 -31
- package/dist/js/modern/cli/generate-client.js +10 -9
- package/dist/js/modern/cli/loader.js +37 -15
- package/dist/js/modern/server/index.js +107 -62
- package/dist/js/node/cli/create-request.js +61 -39
- package/dist/js/node/cli/generate-client.js +33 -15
- package/dist/js/node/cli/loader.js +56 -21
- package/dist/js/node/server/index.js +141 -74
- package/dist/js/treeshaking/cli/create-request.js +182 -68
- package/dist/js/treeshaking/cli/generate-client.js +35 -18
- package/dist/js/treeshaking/cli/loader.js +145 -31
- package/dist/js/treeshaking/server/index.js +556 -294
- package/dist/types/server/index.d.ts +2 -0
- package/package.json +8 -8
|
@@ -1,23 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const target = (_this$_compiler = this._compiler) === null || _this$_compiler === void 0 ? void 0 : _this$_compiler.options.target;
|
|
15
|
-
if (target === 'node') {
|
|
16
|
-
return source;
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
14
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
default: () => loader
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
23
|
+
var import_generate_client = require("./generate-client");
|
|
24
|
+
var __async = (__this, __arguments, generator) => {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
var fulfilled = (value) => {
|
|
27
|
+
try {
|
|
28
|
+
step(generator.next(value));
|
|
29
|
+
} catch (e) {
|
|
30
|
+
reject(e);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var rejected = (value) => {
|
|
34
|
+
try {
|
|
35
|
+
step(generator.throw(value));
|
|
36
|
+
} catch (e) {
|
|
37
|
+
reject(e);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
41
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
function loader(source) {
|
|
45
|
+
return __async(this, null, function* () {
|
|
46
|
+
var _a;
|
|
47
|
+
this.cacheable();
|
|
48
|
+
const target = (_a = this._compiler) == null ? void 0 : _a.options.target;
|
|
49
|
+
if (target === "node") {
|
|
50
|
+
return source;
|
|
51
|
+
}
|
|
52
|
+
const options = this.getOptions();
|
|
53
|
+
const code = (0, import_generate_client.generateClient)({
|
|
54
|
+
mapFile: options.mapFile
|
|
55
|
+
});
|
|
56
|
+
return code;
|
|
21
57
|
});
|
|
22
|
-
|
|
23
|
-
}
|
|
58
|
+
}
|
|
@@ -1,57 +1,128 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
default: () => server_default,
|
|
27
|
+
getPathWithoutEntry: () => getPathWithoutEntry,
|
|
28
|
+
handleRequest: () => handleRequest,
|
|
29
|
+
isRedirectResponse: () => isRedirectResponse,
|
|
30
|
+
isResponse: () => isResponse
|
|
5
31
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
32
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
33
|
+
var import_path = __toESM(require("path"));
|
|
34
|
+
var import_node = require("@remix-run/node");
|
|
35
|
+
var import_react_router_dom = require("react-router-dom");
|
|
36
|
+
var import_utils = require("@modern-js/utils");
|
|
37
|
+
var __create2 = Object.create;
|
|
38
|
+
var __defProp2 = Object.defineProperty;
|
|
39
|
+
var __defProps = Object.defineProperties;
|
|
40
|
+
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
|
41
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
42
|
+
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
43
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
44
|
+
var __getProtoOf2 = Object.getPrototypeOf;
|
|
45
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
46
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
47
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
48
|
+
var __spreadValues = (a, b) => {
|
|
49
|
+
for (var prop in b || (b = {}))
|
|
50
|
+
if (__hasOwnProp2.call(b, prop))
|
|
51
|
+
__defNormalProp(a, prop, b[prop]);
|
|
52
|
+
if (__getOwnPropSymbols)
|
|
53
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
54
|
+
if (__propIsEnum.call(b, prop))
|
|
55
|
+
__defNormalProp(a, prop, b[prop]);
|
|
56
|
+
}
|
|
57
|
+
return a;
|
|
58
|
+
};
|
|
59
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
60
|
+
var __copyProps2 = (to, from, except, desc) => {
|
|
61
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
62
|
+
for (let key of __getOwnPropNames2(from))
|
|
63
|
+
if (!__hasOwnProp2.call(to, key) && key !== except)
|
|
64
|
+
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
|
|
65
|
+
}
|
|
66
|
+
return to;
|
|
67
|
+
};
|
|
68
|
+
var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
|
|
69
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
|
|
70
|
+
mod
|
|
71
|
+
));
|
|
72
|
+
var __async = (__this, __arguments, generator) => {
|
|
73
|
+
return new Promise((resolve, reject) => {
|
|
74
|
+
var fulfilled = (value) => {
|
|
75
|
+
try {
|
|
76
|
+
step(generator.next(value));
|
|
77
|
+
} catch (e) {
|
|
78
|
+
reject(e);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
var rejected = (value) => {
|
|
82
|
+
try {
|
|
83
|
+
step(generator.throw(value));
|
|
84
|
+
} catch (e) {
|
|
85
|
+
reject(e);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
89
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
(0, import_node.installGlobals)();
|
|
93
|
+
const LOADER_SEARCH_PARAM = "_loader";
|
|
94
|
+
const redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
|
21
95
|
function isRedirectResponse(response) {
|
|
22
96
|
return redirectStatusCodes.has(response.status);
|
|
23
97
|
}
|
|
24
98
|
function isResponse(value) {
|
|
25
|
-
return value != null && typeof value.status ===
|
|
99
|
+
return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
|
|
26
100
|
}
|
|
27
101
|
const json = (data, init = {}) => {
|
|
28
|
-
const responseInit = typeof init ===
|
|
29
|
-
status: init
|
|
30
|
-
} : init;
|
|
102
|
+
const responseInit = typeof init === "number" ? { status: init } : init;
|
|
31
103
|
const headers = new Headers(responseInit.headers);
|
|
32
|
-
if (!headers.has(
|
|
33
|
-
headers.set(
|
|
104
|
+
if (!headers.has("Content-Type")) {
|
|
105
|
+
headers.set("Content-Type", "application/json; charset=utf-8");
|
|
34
106
|
}
|
|
35
|
-
return new
|
|
107
|
+
return new import_node.Response(JSON.stringify(data), __spreadProps(__spreadValues({}, responseInit), {
|
|
36
108
|
headers
|
|
37
109
|
}));
|
|
38
110
|
};
|
|
39
|
-
|
|
40
|
-
// TODO: 添加 context
|
|
41
|
-
const callRouteLoader = async ({
|
|
111
|
+
const callRouteLoader = (_0) => __async(void 0, [_0], function* ({
|
|
42
112
|
routeId,
|
|
43
113
|
loader,
|
|
44
114
|
params,
|
|
45
115
|
request,
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
47
116
|
loadContext
|
|
48
|
-
})
|
|
117
|
+
}) {
|
|
49
118
|
if (!loader) {
|
|
50
|
-
throw new Error(
|
|
119
|
+
throw new Error(
|
|
120
|
+
`You made a ${request.method} request to ${request.url} but did not provide a default component or \`loader\` for route "${routeId}", so there is no way to handle the request.`
|
|
121
|
+
);
|
|
51
122
|
}
|
|
52
123
|
let result;
|
|
53
124
|
try {
|
|
54
|
-
result =
|
|
125
|
+
result = yield loader({
|
|
55
126
|
request,
|
|
56
127
|
params
|
|
57
128
|
});
|
|
@@ -61,12 +132,14 @@ const callRouteLoader = async ({
|
|
|
61
132
|
}
|
|
62
133
|
result = error;
|
|
63
134
|
}
|
|
64
|
-
if (result ===
|
|
65
|
-
throw new Error(
|
|
135
|
+
if (result === void 0) {
|
|
136
|
+
throw new Error(
|
|
137
|
+
`You defined a loader for route "${routeId}" but didn't return anything from your \`loader\` function. Please return a value or \`null\`.`
|
|
138
|
+
);
|
|
66
139
|
}
|
|
67
140
|
return isResponse(result) ? result : json(result);
|
|
68
|
-
};
|
|
69
|
-
const createLoaderHeaders = requestHeaders => {
|
|
141
|
+
});
|
|
142
|
+
const createLoaderHeaders = (requestHeaders) => {
|
|
70
143
|
const headers = new Headers();
|
|
71
144
|
for (const [key, values] of Object.entries(requestHeaders)) {
|
|
72
145
|
if (values) {
|
|
@@ -81,9 +154,8 @@ const createLoaderHeaders = requestHeaders => {
|
|
|
81
154
|
}
|
|
82
155
|
return headers;
|
|
83
156
|
};
|
|
84
|
-
const createLoaderRequest = context => {
|
|
157
|
+
const createLoaderRequest = (context) => {
|
|
85
158
|
const origin = `${context.protocol}://${context.host}`;
|
|
86
|
-
// eslint-disable-next-line node/no-unsupported-features/node-builtins, node/prefer-global/url
|
|
87
159
|
const url = new URL(context.url, origin);
|
|
88
160
|
const controller = new AbortController();
|
|
89
161
|
const init = {
|
|
@@ -93,62 +165,59 @@ const createLoaderRequest = context => {
|
|
|
93
165
|
};
|
|
94
166
|
return new Request(url.href, init);
|
|
95
167
|
};
|
|
96
|
-
const sendLoaderResponse =
|
|
168
|
+
const sendLoaderResponse = (res, nodeResponse) => __async(void 0, null, function* () {
|
|
97
169
|
res.statusMessage = nodeResponse.statusText;
|
|
98
170
|
res.statusCode = nodeResponse.status;
|
|
99
171
|
for (const [key, value] of nodeResponse.headers.entries()) {
|
|
100
172
|
res.setHeader(key, value);
|
|
101
173
|
}
|
|
102
174
|
if (nodeResponse.body) {
|
|
103
|
-
|
|
175
|
+
yield (0, import_node.writeReadableStreamToWritable)(nodeResponse.body, res);
|
|
104
176
|
} else {
|
|
105
177
|
res.end();
|
|
106
178
|
}
|
|
107
|
-
};
|
|
179
|
+
});
|
|
108
180
|
const getPathWithoutEntry = (pathname, entryPath) => {
|
|
109
|
-
if (entryPath ===
|
|
181
|
+
if (entryPath === "/") {
|
|
110
182
|
return pathname;
|
|
111
183
|
}
|
|
112
|
-
return pathname.replace(entryPath,
|
|
184
|
+
return pathname.replace(entryPath, "");
|
|
113
185
|
};
|
|
114
|
-
exports.getPathWithoutEntry = getPathWithoutEntry;
|
|
115
186
|
const matchEntry = (pathname, entries) => {
|
|
116
|
-
return entries.find(entry => pathname.startsWith(entry.urlPath));
|
|
187
|
+
return entries.find((entry) => pathname.startsWith(entry.urlPath));
|
|
117
188
|
};
|
|
118
|
-
const handleRequest =
|
|
189
|
+
const handleRequest = (_0) => __async(void 0, [_0], function* ({
|
|
119
190
|
context,
|
|
120
191
|
serverRoutes,
|
|
121
192
|
distDir
|
|
122
|
-
})
|
|
123
|
-
const {
|
|
124
|
-
method,
|
|
125
|
-
query
|
|
126
|
-
} = context;
|
|
193
|
+
}) {
|
|
194
|
+
const { method, query } = context;
|
|
127
195
|
const routeId = query[LOADER_SEARCH_PARAM];
|
|
128
|
-
if (!routeId || method.toLowerCase() !==
|
|
196
|
+
if (!routeId || method.toLowerCase() !== "get") {
|
|
129
197
|
return;
|
|
130
198
|
}
|
|
131
199
|
const entry = matchEntry(context.path, serverRoutes);
|
|
132
200
|
if (!entry) {
|
|
133
201
|
return;
|
|
134
202
|
}
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
203
|
+
const routesPath = import_path.default.join(
|
|
204
|
+
distDir,
|
|
205
|
+
import_utils.LOADER_ROUTES_DIR,
|
|
206
|
+
entry.entryName || import_utils.MAIN_ENTRY_NAME
|
|
207
|
+
);
|
|
208
|
+
const { routes } = yield Promise.resolve().then(() => __toESM2(require(routesPath)));
|
|
138
209
|
if (!routes) {
|
|
139
210
|
return;
|
|
140
211
|
}
|
|
141
|
-
const {
|
|
142
|
-
res
|
|
143
|
-
} = context;
|
|
212
|
+
const { res } = context;
|
|
144
213
|
const pathname = getPathWithoutEntry(context.path, entry.urlPath);
|
|
145
|
-
const matches = (0,
|
|
214
|
+
const matches = (0, import_react_router_dom.matchRoutes)(routes, pathname);
|
|
146
215
|
if (!matches) {
|
|
147
216
|
res.statusCode = 403;
|
|
148
217
|
res.end(`Route ${pathname} was not matched`);
|
|
149
218
|
return;
|
|
150
219
|
}
|
|
151
|
-
const match = matches
|
|
220
|
+
const match = matches == null ? void 0 : matches.find((match2) => match2.route.id === routeId);
|
|
152
221
|
if (!match) {
|
|
153
222
|
res.statusCode = 403;
|
|
154
223
|
res.end(`Route ${routeId} does not match URL ${context.path}`);
|
|
@@ -157,7 +226,7 @@ const handleRequest = async ({
|
|
|
157
226
|
const request = createLoaderRequest(context);
|
|
158
227
|
let response;
|
|
159
228
|
try {
|
|
160
|
-
response =
|
|
229
|
+
response = yield callRouteLoader({
|
|
161
230
|
loader: match.route.loader,
|
|
162
231
|
routeId: match.route.id,
|
|
163
232
|
params: match.params,
|
|
@@ -166,40 +235,38 @@ const handleRequest = async ({
|
|
|
166
235
|
});
|
|
167
236
|
if (isRedirectResponse(response)) {
|
|
168
237
|
const headers = new Headers(response.headers);
|
|
169
|
-
headers.set(
|
|
170
|
-
headers.delete(
|
|
171
|
-
response = new
|
|
238
|
+
headers.set("X-Modernjs-Redirect", headers.get("Location"));
|
|
239
|
+
headers.delete("Location");
|
|
240
|
+
response = new import_node.Response(null, {
|
|
172
241
|
status: 204,
|
|
173
242
|
headers
|
|
174
243
|
});
|
|
175
244
|
}
|
|
176
245
|
} catch (error) {
|
|
177
246
|
const message = String(error);
|
|
178
|
-
response = new
|
|
247
|
+
response = new import_node.Response(message, {
|
|
179
248
|
status: 500,
|
|
180
249
|
headers: {
|
|
181
|
-
|
|
250
|
+
"Content-Type": "text/plain"
|
|
182
251
|
}
|
|
183
252
|
});
|
|
184
253
|
}
|
|
185
254
|
sendLoaderResponse(res, response);
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
name: '@modern-js/plugin-data-loader',
|
|
255
|
+
});
|
|
256
|
+
var server_default = () => ({
|
|
257
|
+
name: "@modern-js/plugin-data-loader",
|
|
190
258
|
setup: () => ({
|
|
191
259
|
preparebeforeRouteHandler({
|
|
192
260
|
serverRoutes,
|
|
193
261
|
distDir
|
|
194
262
|
}) {
|
|
195
|
-
return
|
|
263
|
+
return (context) => __async(this, null, function* () {
|
|
196
264
|
return handleRequest({
|
|
197
265
|
serverRoutes,
|
|
198
266
|
distDir,
|
|
199
267
|
context
|
|
200
268
|
});
|
|
201
|
-
};
|
|
269
|
+
});
|
|
202
270
|
}
|
|
203
271
|
})
|
|
204
272
|
});
|
|
205
|
-
exports.default = _default;
|
|
@@ -1,70 +1,184 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
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
|
+
}
|
|
15
|
+
function _asyncToGenerator(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(undefined);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
var __generator = this && this.__generator || function(thisArg, body) {
|
|
31
|
+
var f, y, t, g, _ = {
|
|
32
|
+
label: 0,
|
|
33
|
+
sent: function() {
|
|
34
|
+
if (t[0] & 1) throw t[1];
|
|
35
|
+
return t[1];
|
|
36
|
+
},
|
|
37
|
+
trys: [],
|
|
38
|
+
ops: []
|
|
39
|
+
};
|
|
40
|
+
return(g = {
|
|
41
|
+
next: verb(0),
|
|
42
|
+
"throw": verb(1),
|
|
43
|
+
"return": verb(2)
|
|
44
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
45
|
+
return this;
|
|
46
|
+
}), g);
|
|
47
|
+
function verb(n) {
|
|
48
|
+
return function(v) {
|
|
49
|
+
return step([
|
|
50
|
+
n,
|
|
51
|
+
v
|
|
52
|
+
]);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function step(op) {
|
|
56
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
57
|
+
while(_)try {
|
|
58
|
+
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;
|
|
59
|
+
if (y = 0, t) op = [
|
|
60
|
+
op[0] & 2,
|
|
61
|
+
t.value
|
|
62
|
+
];
|
|
63
|
+
switch(op[0]){
|
|
64
|
+
case 0:
|
|
65
|
+
case 1:
|
|
66
|
+
t = op;
|
|
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) {
|
|
110
|
+
op = [
|
|
111
|
+
6,
|
|
112
|
+
e
|
|
113
|
+
];
|
|
114
|
+
y = 0;
|
|
115
|
+
} finally{
|
|
116
|
+
f = t = 0;
|
|
117
|
+
}
|
|
118
|
+
if (op[0] & 5) throw op[1];
|
|
119
|
+
return {
|
|
120
|
+
value: op[0] ? op[1] : void 0,
|
|
121
|
+
done: true
|
|
122
|
+
};
|
|
123
|
+
}
|
|
21
124
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
125
|
+
import { compile } from "path-to-regexp";
|
|
126
|
+
import { redirect } from "react-router-dom";
|
|
127
|
+
var getRequestUrl = function(param) {
|
|
128
|
+
var params = param.params, request = param.request, routeId = param.routeId;
|
|
129
|
+
var url = new URL(request.url);
|
|
130
|
+
var toPath = compile(url.pathname, {
|
|
131
|
+
encode: encodeURIComponent
|
|
132
|
+
});
|
|
133
|
+
var newPathName = toPath(params);
|
|
134
|
+
url.pathname = newPathName;
|
|
135
|
+
url.searchParams.append("_loader", routeId);
|
|
136
|
+
return url;
|
|
29
137
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
};
|
|
138
|
+
var handleRedirectResponse = function(res) {
|
|
139
|
+
var headers = res.headers;
|
|
140
|
+
var location = headers.get("X-Modernjs-Redirect");
|
|
141
|
+
if (location) {
|
|
142
|
+
return redirect(location);
|
|
143
|
+
}
|
|
144
|
+
return res;
|
|
145
|
+
};
|
|
146
|
+
var createRequest = function(routeId) {
|
|
147
|
+
var method = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "get";
|
|
148
|
+
return function() {
|
|
149
|
+
var _ref = _asyncToGenerator(function(param) {
|
|
150
|
+
var params, request, url, res;
|
|
151
|
+
return __generator(this, function(_state) {
|
|
152
|
+
switch(_state.label){
|
|
153
|
+
case 0:
|
|
154
|
+
params = param.params, request = param.request;
|
|
155
|
+
url = getRequestUrl({
|
|
156
|
+
params: params,
|
|
157
|
+
request: request,
|
|
158
|
+
routeId: routeId
|
|
159
|
+
});
|
|
160
|
+
return [
|
|
161
|
+
4,
|
|
162
|
+
fetch(url, {
|
|
163
|
+
method: method,
|
|
164
|
+
signal: request.signal
|
|
165
|
+
})
|
|
166
|
+
];
|
|
167
|
+
case 1:
|
|
168
|
+
res = _state.sent();
|
|
169
|
+
if (!res.ok) {
|
|
170
|
+
throw res;
|
|
171
|
+
}
|
|
172
|
+
return [
|
|
173
|
+
2,
|
|
174
|
+
handleRedirectResponse(res)
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
return function(_) {
|
|
180
|
+
return _ref.apply(this, arguments);
|
|
181
|
+
};
|
|
182
|
+
}();
|
|
183
|
+
};
|
|
184
|
+
export { createRequest, getRequestUrl };
|