@modern-js/plugin-data-loader 2.0.0-beta.2 → 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 +48 -25
- package/dist/js/modern/cli/generate-client.js +20 -17
- package/dist/js/modern/cli/loader.js +37 -17
- package/dist/js/modern/server/index.js +114 -60
- package/dist/js/node/cli/create-request.js +65 -32
- package/dist/js/node/cli/generate-client.js +43 -23
- package/dist/js/node/cli/loader.js +56 -23
- package/dist/js/node/server/index.js +147 -71
- package/dist/js/treeshaking/cli/create-request.js +183 -60
- package/dist/js/treeshaking/cli/generate-client.js +35 -14
- package/dist/js/treeshaking/cli/loader.js +145 -33
- package/dist/js/treeshaking/server/index.js +557 -285
- package/dist/types/cli/generate-client.d.ts +2 -6
- package/dist/types/cli/loader.d.ts +1 -0
- package/dist/types/server/index.d.ts +2 -0
- package/package.json +10 -10
|
@@ -1,25 +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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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;
|
|
23
57
|
});
|
|
24
|
-
|
|
25
|
-
}
|
|
58
|
+
}
|
|
@@ -1,56 +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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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]);
|
|
20
95
|
function isRedirectResponse(response) {
|
|
21
96
|
return redirectStatusCodes.has(response.status);
|
|
22
97
|
}
|
|
23
98
|
function isResponse(value) {
|
|
24
|
-
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";
|
|
25
100
|
}
|
|
26
101
|
const json = (data, init = {}) => {
|
|
27
|
-
const responseInit = typeof init ===
|
|
28
|
-
status: init
|
|
29
|
-
} : init;
|
|
102
|
+
const responseInit = typeof init === "number" ? { status: init } : init;
|
|
30
103
|
const headers = new Headers(responseInit.headers);
|
|
31
|
-
if (!headers.has(
|
|
32
|
-
headers.set(
|
|
104
|
+
if (!headers.has("Content-Type")) {
|
|
105
|
+
headers.set("Content-Type", "application/json; charset=utf-8");
|
|
33
106
|
}
|
|
34
|
-
return new
|
|
107
|
+
return new import_node.Response(JSON.stringify(data), __spreadProps(__spreadValues({}, responseInit), {
|
|
35
108
|
headers
|
|
36
109
|
}));
|
|
37
110
|
};
|
|
38
|
-
|
|
39
|
-
// TODO: 添加 context
|
|
40
|
-
const callRouteLoader = async ({
|
|
111
|
+
const callRouteLoader = (_0) => __async(void 0, [_0], function* ({
|
|
41
112
|
routeId,
|
|
42
113
|
loader,
|
|
43
114
|
params,
|
|
44
115
|
request,
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
46
116
|
loadContext
|
|
47
|
-
})
|
|
117
|
+
}) {
|
|
48
118
|
if (!loader) {
|
|
49
|
-
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
|
+
);
|
|
50
122
|
}
|
|
51
123
|
let result;
|
|
52
124
|
try {
|
|
53
|
-
result =
|
|
125
|
+
result = yield loader({
|
|
54
126
|
request,
|
|
55
127
|
params
|
|
56
128
|
});
|
|
@@ -60,12 +132,14 @@ const callRouteLoader = async ({
|
|
|
60
132
|
}
|
|
61
133
|
result = error;
|
|
62
134
|
}
|
|
63
|
-
if (result ===
|
|
64
|
-
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
|
+
);
|
|
65
139
|
}
|
|
66
140
|
return isResponse(result) ? result : json(result);
|
|
67
|
-
};
|
|
68
|
-
const createLoaderHeaders = requestHeaders => {
|
|
141
|
+
});
|
|
142
|
+
const createLoaderHeaders = (requestHeaders) => {
|
|
69
143
|
const headers = new Headers();
|
|
70
144
|
for (const [key, values] of Object.entries(requestHeaders)) {
|
|
71
145
|
if (values) {
|
|
@@ -80,9 +154,8 @@ const createLoaderHeaders = requestHeaders => {
|
|
|
80
154
|
}
|
|
81
155
|
return headers;
|
|
82
156
|
};
|
|
83
|
-
const createLoaderRequest = context => {
|
|
157
|
+
const createLoaderRequest = (context) => {
|
|
84
158
|
const origin = `${context.protocol}://${context.host}`;
|
|
85
|
-
// eslint-disable-next-line node/no-unsupported-features/node-builtins, node/prefer-global/url
|
|
86
159
|
const url = new URL(context.url, origin);
|
|
87
160
|
const controller = new AbortController();
|
|
88
161
|
const init = {
|
|
@@ -92,62 +165,59 @@ const createLoaderRequest = context => {
|
|
|
92
165
|
};
|
|
93
166
|
return new Request(url.href, init);
|
|
94
167
|
};
|
|
95
|
-
const sendLoaderResponse =
|
|
168
|
+
const sendLoaderResponse = (res, nodeResponse) => __async(void 0, null, function* () {
|
|
96
169
|
res.statusMessage = nodeResponse.statusText;
|
|
97
170
|
res.statusCode = nodeResponse.status;
|
|
98
171
|
for (const [key, value] of nodeResponse.headers.entries()) {
|
|
99
172
|
res.setHeader(key, value);
|
|
100
173
|
}
|
|
101
174
|
if (nodeResponse.body) {
|
|
102
|
-
|
|
175
|
+
yield (0, import_node.writeReadableStreamToWritable)(nodeResponse.body, res);
|
|
103
176
|
} else {
|
|
104
177
|
res.end();
|
|
105
178
|
}
|
|
106
|
-
};
|
|
179
|
+
});
|
|
107
180
|
const getPathWithoutEntry = (pathname, entryPath) => {
|
|
108
|
-
if (entryPath ===
|
|
181
|
+
if (entryPath === "/") {
|
|
109
182
|
return pathname;
|
|
110
183
|
}
|
|
111
|
-
return pathname.replace(entryPath,
|
|
184
|
+
return pathname.replace(entryPath, "");
|
|
112
185
|
};
|
|
113
|
-
exports.getPathWithoutEntry = getPathWithoutEntry;
|
|
114
186
|
const matchEntry = (pathname, entries) => {
|
|
115
|
-
return entries.find(entry => pathname.startsWith(entry.urlPath));
|
|
187
|
+
return entries.find((entry) => pathname.startsWith(entry.urlPath));
|
|
116
188
|
};
|
|
117
|
-
const handleRequest =
|
|
189
|
+
const handleRequest = (_0) => __async(void 0, [_0], function* ({
|
|
118
190
|
context,
|
|
119
191
|
serverRoutes,
|
|
120
192
|
distDir
|
|
121
|
-
})
|
|
122
|
-
const {
|
|
123
|
-
method,
|
|
124
|
-
query
|
|
125
|
-
} = context;
|
|
193
|
+
}) {
|
|
194
|
+
const { method, query } = context;
|
|
126
195
|
const routeId = query[LOADER_SEARCH_PARAM];
|
|
127
|
-
if (!routeId || method.toLowerCase() !==
|
|
196
|
+
if (!routeId || method.toLowerCase() !== "get") {
|
|
128
197
|
return;
|
|
129
198
|
}
|
|
130
199
|
const entry = matchEntry(context.path, serverRoutes);
|
|
131
200
|
if (!entry) {
|
|
132
201
|
return;
|
|
133
202
|
}
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
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)));
|
|
137
209
|
if (!routes) {
|
|
138
210
|
return;
|
|
139
211
|
}
|
|
140
|
-
const {
|
|
141
|
-
res
|
|
142
|
-
} = context;
|
|
212
|
+
const { res } = context;
|
|
143
213
|
const pathname = getPathWithoutEntry(context.path, entry.urlPath);
|
|
144
|
-
const matches = (0,
|
|
214
|
+
const matches = (0, import_react_router_dom.matchRoutes)(routes, pathname);
|
|
145
215
|
if (!matches) {
|
|
146
216
|
res.statusCode = 403;
|
|
147
217
|
res.end(`Route ${pathname} was not matched`);
|
|
148
218
|
return;
|
|
149
219
|
}
|
|
150
|
-
const match = matches
|
|
220
|
+
const match = matches == null ? void 0 : matches.find((match2) => match2.route.id === routeId);
|
|
151
221
|
if (!match) {
|
|
152
222
|
res.statusCode = 403;
|
|
153
223
|
res.end(`Route ${routeId} does not match URL ${context.path}`);
|
|
@@ -156,41 +226,47 @@ const handleRequest = async ({
|
|
|
156
226
|
const request = createLoaderRequest(context);
|
|
157
227
|
let response;
|
|
158
228
|
try {
|
|
159
|
-
response =
|
|
229
|
+
response = yield callRouteLoader({
|
|
160
230
|
loader: match.route.loader,
|
|
161
231
|
routeId: match.route.id,
|
|
162
232
|
params: match.params,
|
|
163
233
|
request,
|
|
164
234
|
loadContext: {}
|
|
165
235
|
});
|
|
166
|
-
|
|
236
|
+
if (isRedirectResponse(response)) {
|
|
237
|
+
const headers = new Headers(response.headers);
|
|
238
|
+
headers.set("X-Modernjs-Redirect", headers.get("Location"));
|
|
239
|
+
headers.delete("Location");
|
|
240
|
+
response = new import_node.Response(null, {
|
|
241
|
+
status: 204,
|
|
242
|
+
headers
|
|
243
|
+
});
|
|
244
|
+
}
|
|
167
245
|
} catch (error) {
|
|
168
246
|
const message = String(error);
|
|
169
|
-
response = new
|
|
247
|
+
response = new import_node.Response(message, {
|
|
170
248
|
status: 500,
|
|
171
249
|
headers: {
|
|
172
|
-
|
|
250
|
+
"Content-Type": "text/plain"
|
|
173
251
|
}
|
|
174
252
|
});
|
|
175
253
|
}
|
|
176
254
|
sendLoaderResponse(res, response);
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
name: '@modern-js/plugin-data-loader',
|
|
255
|
+
});
|
|
256
|
+
var server_default = () => ({
|
|
257
|
+
name: "@modern-js/plugin-data-loader",
|
|
181
258
|
setup: () => ({
|
|
182
259
|
preparebeforeRouteHandler({
|
|
183
260
|
serverRoutes,
|
|
184
261
|
distDir
|
|
185
262
|
}) {
|
|
186
|
-
return
|
|
263
|
+
return (context) => __async(this, null, function* () {
|
|
187
264
|
return handleRequest({
|
|
188
265
|
serverRoutes,
|
|
189
266
|
distDir,
|
|
190
267
|
context
|
|
191
268
|
});
|
|
192
|
-
};
|
|
269
|
+
});
|
|
193
270
|
}
|
|
194
271
|
})
|
|
195
272
|
});
|
|
196
|
-
exports.default = _default;
|
|
@@ -1,61 +1,184 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
switch (_context.prev = _context.next) {
|
|
29
|
-
case 0:
|
|
30
|
-
params = _ref2.params, request = _ref2.request;
|
|
31
|
-
url = getRequestUrl({
|
|
32
|
-
params: params,
|
|
33
|
-
request: request,
|
|
34
|
-
routeId: routeId
|
|
35
|
-
});
|
|
36
|
-
_context.prev = 2;
|
|
37
|
-
_context.next = 5;
|
|
38
|
-
return fetch(url, {
|
|
39
|
-
method: method,
|
|
40
|
-
signal: request.signal
|
|
41
|
-
});
|
|
42
|
-
case 5:
|
|
43
|
-
res = _context.sent;
|
|
44
|
-
return _context.abrupt("return", res);
|
|
45
|
-
case 9:
|
|
46
|
-
_context.prev = 9;
|
|
47
|
-
_context.t0 = _context["catch"](2);
|
|
48
|
-
console.error(_context.t0);
|
|
49
|
-
throw _context.t0;
|
|
50
|
-
case 13:
|
|
51
|
-
case "end":
|
|
52
|
-
return _context.stop();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}, _callee, null, [[2, 9]]);
|
|
56
|
-
}));
|
|
57
|
-
return function (_x) {
|
|
58
|
-
return _ref3.apply(this, arguments);
|
|
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
|
+
});
|
|
59
28
|
};
|
|
60
|
-
|
|
61
|
-
|
|
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
|
+
}
|
|
124
|
+
};
|
|
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;
|
|
137
|
+
};
|
|
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 };
|