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