@modern-js/plugin-data-loader 0.0.0-next-20221207142334 → 0.0.0-next-20221207163013
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -5
- package/dist/js/modern/cli/create-request.js +38 -24
- 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 +101 -64
- package/dist/js/node/cli/create-request.js +56 -32
- 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 +129 -76
- package/dist/js/treeshaking/cli/create-request.js +195 -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 +554 -294
- package/dist/types/server/index.d.ts +2 -0
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @modern-js/plugin-data-loader
|
|
2
2
|
|
|
3
|
-
## 0.0.0-next-
|
|
3
|
+
## 0.0.0-next-20221207163013
|
|
4
4
|
|
|
5
5
|
### Major Changes
|
|
6
6
|
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
|
|
16
16
|
### Patch Changes
|
|
17
17
|
|
|
18
|
-
- 6604f1b8b: feat: support router basename
|
|
19
|
-
feat: router 插件支持设置 basename
|
|
20
18
|
- 2e6031955: fix: some optimizations for router and loader
|
|
21
19
|
fix: 一些 router 和 loader 的优化
|
|
22
20
|
q
|
|
@@ -37,5 +35,5 @@
|
|
|
37
35
|
- Updated dependencies [abf3421a7]
|
|
38
36
|
- Updated dependencies [543be9558]
|
|
39
37
|
- Updated dependencies [14b712da8]
|
|
40
|
-
- @modern-js/utils@0.0.0-next-
|
|
41
|
-
- @modern-js/babel-compiler@0.0.0-next-
|
|
38
|
+
- @modern-js/utils@0.0.0-next-20221207163013
|
|
39
|
+
- @modern-js/babel-compiler@0.0.0-next-20221207163013
|
|
@@ -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,31 +31,25 @@ 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
|
-
params,
|
|
38
|
-
request,
|
|
39
|
-
routeId
|
|
40
|
-
});
|
|
49
|
+
}) {
|
|
50
|
+
const url = getRequestUrl({ params, request, routeId });
|
|
41
51
|
try {
|
|
42
|
-
const res =
|
|
52
|
+
const res = yield fetch(url, {
|
|
43
53
|
method,
|
|
44
54
|
signal: request.signal
|
|
45
55
|
});
|
|
@@ -48,5 +58,9 @@ export const createRequest = (routeId, method = 'get') => {
|
|
|
48
58
|
console.error(error);
|
|
49
59
|
throw error;
|
|
50
60
|
}
|
|
51
|
-
};
|
|
52
|
-
};
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
export {
|
|
64
|
+
createRequest,
|
|
65
|
+
getRequestUrl
|
|
66
|
+
};
|
|
@@ -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", "treeshaking").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,49 +1,85 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 {
|
|
41
|
+
installGlobals,
|
|
42
|
+
writeReadableStreamToWritable,
|
|
43
|
+
Response as NodeResponse
|
|
44
|
+
} from "@remix-run/node";
|
|
45
|
+
import {
|
|
46
|
+
matchRoutes
|
|
47
|
+
} from "react-router-dom";
|
|
48
|
+
import { LOADER_ROUTES_DIR } from "@modern-js/utils";
|
|
10
49
|
installGlobals();
|
|
11
|
-
const LOADER_SEARCH_PARAM =
|
|
12
|
-
const redirectStatusCodes = new Set([301, 302, 303, 307, 308]);
|
|
13
|
-
|
|
50
|
+
const LOADER_SEARCH_PARAM = "_loader";
|
|
51
|
+
const redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
|
52
|
+
function isRedirectResponse(response) {
|
|
14
53
|
return redirectStatusCodes.has(response.status);
|
|
15
54
|
}
|
|
16
|
-
|
|
17
|
-
return value != null && typeof value.status ===
|
|
55
|
+
function isResponse(value) {
|
|
56
|
+
return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
|
|
18
57
|
}
|
|
19
58
|
const json = (data, init = {}) => {
|
|
20
|
-
const responseInit = typeof init ===
|
|
21
|
-
status: init
|
|
22
|
-
} : init;
|
|
59
|
+
const responseInit = typeof init === "number" ? { status: init } : init;
|
|
23
60
|
const headers = new Headers(responseInit.headers);
|
|
24
|
-
if (!headers.has(
|
|
25
|
-
headers.set(
|
|
61
|
+
if (!headers.has("Content-Type")) {
|
|
62
|
+
headers.set("Content-Type", "application/json; charset=utf-8");
|
|
26
63
|
}
|
|
27
|
-
return new NodeResponse(JSON.stringify(data),
|
|
64
|
+
return new NodeResponse(JSON.stringify(data), __spreadProps(__spreadValues({}, responseInit), {
|
|
28
65
|
headers
|
|
29
66
|
}));
|
|
30
67
|
};
|
|
31
|
-
|
|
32
|
-
// TODO: 添加 context
|
|
33
|
-
const callRouteLoader = async ({
|
|
68
|
+
const callRouteLoader = (_0) => __async(void 0, [_0], function* ({
|
|
34
69
|
routeId,
|
|
35
70
|
loader,
|
|
36
71
|
params,
|
|
37
72
|
request,
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
39
73
|
loadContext
|
|
40
|
-
})
|
|
74
|
+
}) {
|
|
41
75
|
if (!loader) {
|
|
42
|
-
throw new Error(
|
|
76
|
+
throw new Error(
|
|
77
|
+
`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.`
|
|
78
|
+
);
|
|
43
79
|
}
|
|
44
80
|
let result;
|
|
45
81
|
try {
|
|
46
|
-
result =
|
|
82
|
+
result = yield loader({
|
|
47
83
|
request,
|
|
48
84
|
params
|
|
49
85
|
});
|
|
@@ -53,12 +89,14 @@ const callRouteLoader = async ({
|
|
|
53
89
|
}
|
|
54
90
|
result = error;
|
|
55
91
|
}
|
|
56
|
-
if (result ===
|
|
57
|
-
throw new Error(
|
|
92
|
+
if (result === void 0) {
|
|
93
|
+
throw new Error(
|
|
94
|
+
`You defined a loader for route "${routeId}" but didn't return anything from your \`loader\` function. Please return a value or \`null\`.`
|
|
95
|
+
);
|
|
58
96
|
}
|
|
59
97
|
return isResponse(result) ? result : json(result);
|
|
60
|
-
};
|
|
61
|
-
const createLoaderHeaders = requestHeaders => {
|
|
98
|
+
});
|
|
99
|
+
const createLoaderHeaders = (requestHeaders) => {
|
|
62
100
|
const headers = new Headers();
|
|
63
101
|
for (const [key, values] of Object.entries(requestHeaders)) {
|
|
64
102
|
if (values) {
|
|
@@ -73,9 +111,8 @@ const createLoaderHeaders = requestHeaders => {
|
|
|
73
111
|
}
|
|
74
112
|
return headers;
|
|
75
113
|
};
|
|
76
|
-
const createLoaderRequest = context => {
|
|
114
|
+
const createLoaderRequest = (context) => {
|
|
77
115
|
const origin = `${context.protocol}://${context.host}`;
|
|
78
|
-
// eslint-disable-next-line node/no-unsupported-features/node-builtins, node/prefer-global/url
|
|
79
116
|
const url = new URL(context.url, origin);
|
|
80
117
|
const controller = new AbortController();
|
|
81
118
|
const init = {
|
|
@@ -85,53 +122,46 @@ const createLoaderRequest = context => {
|
|
|
85
122
|
};
|
|
86
123
|
return new Request(url.href, init);
|
|
87
124
|
};
|
|
88
|
-
const sendLoaderResponse =
|
|
125
|
+
const sendLoaderResponse = (res, nodeResponse) => __async(void 0, null, function* () {
|
|
89
126
|
res.statusMessage = nodeResponse.statusText;
|
|
90
127
|
res.statusCode = nodeResponse.status;
|
|
91
128
|
for (const [key, value] of nodeResponse.headers.entries()) {
|
|
92
129
|
res.setHeader(key, value);
|
|
93
130
|
}
|
|
94
131
|
if (nodeResponse.body) {
|
|
95
|
-
|
|
132
|
+
yield writeReadableStreamToWritable(nodeResponse.body, res);
|
|
96
133
|
} else {
|
|
97
134
|
res.end();
|
|
98
135
|
}
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
if (entryPath ===
|
|
136
|
+
});
|
|
137
|
+
const getPathWithoutEntry = (pathname, entryPath) => {
|
|
138
|
+
if (entryPath === "/") {
|
|
102
139
|
return pathname;
|
|
103
140
|
}
|
|
104
|
-
return pathname.replace(entryPath,
|
|
141
|
+
return pathname.replace(entryPath, "");
|
|
105
142
|
};
|
|
106
143
|
const matchEntry = (pathname, entries) => {
|
|
107
|
-
return entries.find(entry => pathname.startsWith(entry.urlPath));
|
|
144
|
+
return entries.find((entry) => pathname.startsWith(entry.urlPath));
|
|
108
145
|
};
|
|
109
|
-
|
|
146
|
+
const handleRequest = (_0) => __async(void 0, [_0], function* ({
|
|
110
147
|
context,
|
|
111
148
|
serverRoutes,
|
|
112
149
|
distDir
|
|
113
|
-
})
|
|
114
|
-
const {
|
|
115
|
-
method,
|
|
116
|
-
query
|
|
117
|
-
} = context;
|
|
150
|
+
}) {
|
|
151
|
+
const { method, query } = context;
|
|
118
152
|
const routeId = query[LOADER_SEARCH_PARAM];
|
|
119
|
-
if (!routeId || method.toLowerCase() !==
|
|
153
|
+
if (!routeId || method.toLowerCase() !== "get") {
|
|
120
154
|
return;
|
|
121
155
|
}
|
|
122
156
|
const entry = matchEntry(context.path, serverRoutes);
|
|
123
157
|
if (!entry) {
|
|
124
158
|
return;
|
|
125
159
|
}
|
|
126
|
-
const {
|
|
127
|
-
routes
|
|
128
|
-
} = await import(`${distDir}/${LOADER_ROUTES_DIR}/${entry.entryName}`);
|
|
160
|
+
const { routes } = yield import(`${distDir}/${LOADER_ROUTES_DIR}/${entry.entryName}`);
|
|
129
161
|
if (!routes) {
|
|
130
162
|
return;
|
|
131
163
|
}
|
|
132
|
-
const {
|
|
133
|
-
res
|
|
134
|
-
} = context;
|
|
164
|
+
const { res } = context;
|
|
135
165
|
const pathname = getPathWithoutEntry(context.path, entry.urlPath);
|
|
136
166
|
const matches = matchRoutes(routes, pathname);
|
|
137
167
|
if (!matches) {
|
|
@@ -139,7 +169,7 @@ export const handleRequest = async ({
|
|
|
139
169
|
res.end(`Route ${pathname} was not matched`);
|
|
140
170
|
return;
|
|
141
171
|
}
|
|
142
|
-
const match = matches
|
|
172
|
+
const match = matches == null ? void 0 : matches.find((match2) => match2.route.id === routeId);
|
|
143
173
|
if (!match) {
|
|
144
174
|
res.statusCode = 403;
|
|
145
175
|
res.end(`Route ${routeId} does not match URL ${context.path}`);
|
|
@@ -148,7 +178,7 @@ export const handleRequest = async ({
|
|
|
148
178
|
const request = createLoaderRequest(context);
|
|
149
179
|
let response;
|
|
150
180
|
try {
|
|
151
|
-
response =
|
|
181
|
+
response = yield callRouteLoader({
|
|
152
182
|
loader: match.route.loader,
|
|
153
183
|
routeId: match.route.id,
|
|
154
184
|
params: match.params,
|
|
@@ -157,8 +187,8 @@ export const handleRequest = async ({
|
|
|
157
187
|
});
|
|
158
188
|
if (isRedirectResponse(response)) {
|
|
159
189
|
const headers = new Headers(response.headers);
|
|
160
|
-
headers.set(
|
|
161
|
-
headers.delete(
|
|
190
|
+
headers.set("X-Modernjs-Redirect", headers.get("Location"));
|
|
191
|
+
headers.delete("Location");
|
|
162
192
|
response = new NodeResponse(null, {
|
|
163
193
|
status: 204,
|
|
164
194
|
headers
|
|
@@ -169,26 +199,33 @@ export const handleRequest = async ({
|
|
|
169
199
|
response = new NodeResponse(message, {
|
|
170
200
|
status: 500,
|
|
171
201
|
headers: {
|
|
172
|
-
|
|
202
|
+
"Content-Type": "text/plain"
|
|
173
203
|
}
|
|
174
204
|
});
|
|
175
205
|
}
|
|
176
206
|
sendLoaderResponse(res, response);
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
name:
|
|
207
|
+
});
|
|
208
|
+
var server_default = () => ({
|
|
209
|
+
name: "@modern-js/plugin-data-loader",
|
|
180
210
|
setup: () => ({
|
|
181
211
|
preparebeforeRouteHandler({
|
|
182
212
|
serverRoutes,
|
|
183
213
|
distDir
|
|
184
214
|
}) {
|
|
185
|
-
return
|
|
215
|
+
return (context) => __async(this, null, function* () {
|
|
186
216
|
return handleRequest({
|
|
187
217
|
serverRoutes,
|
|
188
218
|
distDir,
|
|
189
219
|
context
|
|
190
220
|
});
|
|
191
|
-
};
|
|
221
|
+
});
|
|
192
222
|
}
|
|
193
223
|
})
|
|
194
|
-
})
|
|
224
|
+
});
|
|
225
|
+
export {
|
|
226
|
+
server_default as default,
|
|
227
|
+
getPathWithoutEntry,
|
|
228
|
+
handleRequest,
|
|
229
|
+
isRedirectResponse,
|
|
230
|
+
isResponse
|
|
231
|
+
};
|
|
@@ -1,53 +1,78 @@
|
|
|
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
|
-
params,
|
|
46
|
-
request,
|
|
47
|
-
routeId
|
|
48
|
-
});
|
|
72
|
+
}) {
|
|
73
|
+
const url = getRequestUrl({ params, request, routeId });
|
|
49
74
|
try {
|
|
50
|
-
const res =
|
|
75
|
+
const res = yield fetch(url, {
|
|
51
76
|
method,
|
|
52
77
|
signal: request.signal
|
|
53
78
|
});
|
|
@@ -56,6 +81,5 @@ const createRequest = (routeId, method = 'get') => {
|
|
|
56
81
|
console.error(error);
|
|
57
82
|
throw error;
|
|
58
83
|
}
|
|
59
|
-
};
|
|
84
|
+
});
|
|
60
85
|
};
|
|
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", "treeshaking").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;
|