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