@modern-js/plugin-data-loader 0.0.0-next-20221211182510 → 0.0.0-next-20221212043012
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 -3
- 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 +107 -66
- 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 +141 -79
- 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 -296
- package/dist/types/server/index.d.ts +2 -0
- package/package.json +8 -8
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-20221212043012
|
|
4
4
|
|
|
5
5
|
### Major Changes
|
|
6
6
|
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
- Updated dependencies [abf3421a7]
|
|
44
44
|
- Updated dependencies [543be9558]
|
|
45
45
|
- Updated dependencies [14b712da8]
|
|
46
|
-
- @modern-js/utils@0.0.0-next-
|
|
47
|
-
- @modern-js/babel-compiler@0.0.0-next-
|
|
46
|
+
- @modern-js/utils@0.0.0-next-20221212043012
|
|
47
|
+
- @modern-js/babel-compiler@0.0.0-next-20221212043012
|
|
@@ -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,30 +31,24 @@ 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
|
-
request,
|
|
39
|
-
routeId
|
|
40
|
-
});
|
|
41
|
-
const res = await fetch(url, {
|
|
49
|
+
}) {
|
|
50
|
+
const url = getRequestUrl({ params, request, routeId });
|
|
51
|
+
const res = yield fetch(url, {
|
|
42
52
|
method,
|
|
43
53
|
signal: request.signal
|
|
44
54
|
});
|
|
@@ -46,5 +56,9 @@ export const createRequest = (routeId, method = 'get') => {
|
|
|
46
56
|
throw res;
|
|
47
57
|
}
|
|
48
58
|
return handleRedirectResponse(res);
|
|
49
|
-
};
|
|
50
|
-
};
|
|
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", "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,50 +1,86 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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";
|
|
11
50
|
installGlobals();
|
|
12
|
-
const LOADER_SEARCH_PARAM =
|
|
13
|
-
const redirectStatusCodes = new Set([301, 302, 303, 307, 308]);
|
|
14
|
-
|
|
51
|
+
const LOADER_SEARCH_PARAM = "_loader";
|
|
52
|
+
const redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
|
53
|
+
function isRedirectResponse(response) {
|
|
15
54
|
return redirectStatusCodes.has(response.status);
|
|
16
55
|
}
|
|
17
|
-
|
|
18
|
-
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";
|
|
19
58
|
}
|
|
20
59
|
const json = (data, init = {}) => {
|
|
21
|
-
const responseInit = typeof init ===
|
|
22
|
-
status: init
|
|
23
|
-
} : init;
|
|
60
|
+
const responseInit = typeof init === "number" ? { status: init } : init;
|
|
24
61
|
const headers = new Headers(responseInit.headers);
|
|
25
|
-
if (!headers.has(
|
|
26
|
-
headers.set(
|
|
62
|
+
if (!headers.has("Content-Type")) {
|
|
63
|
+
headers.set("Content-Type", "application/json; charset=utf-8");
|
|
27
64
|
}
|
|
28
|
-
return new NodeResponse(JSON.stringify(data),
|
|
65
|
+
return new NodeResponse(JSON.stringify(data), __spreadProps(__spreadValues({}, responseInit), {
|
|
29
66
|
headers
|
|
30
67
|
}));
|
|
31
68
|
};
|
|
32
|
-
|
|
33
|
-
// TODO: 添加 context
|
|
34
|
-
const callRouteLoader = async ({
|
|
69
|
+
const callRouteLoader = (_0) => __async(void 0, [_0], function* ({
|
|
35
70
|
routeId,
|
|
36
71
|
loader,
|
|
37
72
|
params,
|
|
38
73
|
request,
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
40
74
|
loadContext
|
|
41
|
-
})
|
|
75
|
+
}) {
|
|
42
76
|
if (!loader) {
|
|
43
|
-
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
|
+
);
|
|
44
80
|
}
|
|
45
81
|
let result;
|
|
46
82
|
try {
|
|
47
|
-
result =
|
|
83
|
+
result = yield loader({
|
|
48
84
|
request,
|
|
49
85
|
params
|
|
50
86
|
});
|
|
@@ -54,12 +90,14 @@ const callRouteLoader = async ({
|
|
|
54
90
|
}
|
|
55
91
|
result = error;
|
|
56
92
|
}
|
|
57
|
-
if (result ===
|
|
58
|
-
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
|
+
);
|
|
59
97
|
}
|
|
60
98
|
return isResponse(result) ? result : json(result);
|
|
61
|
-
};
|
|
62
|
-
const createLoaderHeaders = requestHeaders => {
|
|
99
|
+
});
|
|
100
|
+
const createLoaderHeaders = (requestHeaders) => {
|
|
63
101
|
const headers = new Headers();
|
|
64
102
|
for (const [key, values] of Object.entries(requestHeaders)) {
|
|
65
103
|
if (values) {
|
|
@@ -74,9 +112,8 @@ const createLoaderHeaders = requestHeaders => {
|
|
|
74
112
|
}
|
|
75
113
|
return headers;
|
|
76
114
|
};
|
|
77
|
-
const createLoaderRequest = context => {
|
|
115
|
+
const createLoaderRequest = (context) => {
|
|
78
116
|
const origin = `${context.protocol}://${context.host}`;
|
|
79
|
-
// eslint-disable-next-line node/no-unsupported-features/node-builtins, node/prefer-global/url
|
|
80
117
|
const url = new URL(context.url, origin);
|
|
81
118
|
const controller = new AbortController();
|
|
82
119
|
const init = {
|
|
@@ -86,54 +123,51 @@ const createLoaderRequest = context => {
|
|
|
86
123
|
};
|
|
87
124
|
return new Request(url.href, init);
|
|
88
125
|
};
|
|
89
|
-
const sendLoaderResponse =
|
|
126
|
+
const sendLoaderResponse = (res, nodeResponse) => __async(void 0, null, function* () {
|
|
90
127
|
res.statusMessage = nodeResponse.statusText;
|
|
91
128
|
res.statusCode = nodeResponse.status;
|
|
92
129
|
for (const [key, value] of nodeResponse.headers.entries()) {
|
|
93
130
|
res.setHeader(key, value);
|
|
94
131
|
}
|
|
95
132
|
if (nodeResponse.body) {
|
|
96
|
-
|
|
133
|
+
yield writeReadableStreamToWritable(nodeResponse.body, res);
|
|
97
134
|
} else {
|
|
98
135
|
res.end();
|
|
99
136
|
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
if (entryPath ===
|
|
137
|
+
});
|
|
138
|
+
const getPathWithoutEntry = (pathname, entryPath) => {
|
|
139
|
+
if (entryPath === "/") {
|
|
103
140
|
return pathname;
|
|
104
141
|
}
|
|
105
|
-
return pathname.replace(entryPath,
|
|
142
|
+
return pathname.replace(entryPath, "");
|
|
106
143
|
};
|
|
107
144
|
const matchEntry = (pathname, entries) => {
|
|
108
|
-
return entries.find(entry => pathname.startsWith(entry.urlPath));
|
|
145
|
+
return entries.find((entry) => pathname.startsWith(entry.urlPath));
|
|
109
146
|
};
|
|
110
|
-
|
|
147
|
+
const handleRequest = (_0) => __async(void 0, [_0], function* ({
|
|
111
148
|
context,
|
|
112
149
|
serverRoutes,
|
|
113
150
|
distDir
|
|
114
|
-
})
|
|
115
|
-
const {
|
|
116
|
-
method,
|
|
117
|
-
query
|
|
118
|
-
} = context;
|
|
151
|
+
}) {
|
|
152
|
+
const { method, query } = context;
|
|
119
153
|
const routeId = query[LOADER_SEARCH_PARAM];
|
|
120
|
-
if (!routeId || method.toLowerCase() !==
|
|
154
|
+
if (!routeId || method.toLowerCase() !== "get") {
|
|
121
155
|
return;
|
|
122
156
|
}
|
|
123
157
|
const entry = matchEntry(context.path, serverRoutes);
|
|
124
158
|
if (!entry) {
|
|
125
159
|
return;
|
|
126
160
|
}
|
|
127
|
-
const routesPath = path.join(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
161
|
+
const routesPath = path.join(
|
|
162
|
+
distDir,
|
|
163
|
+
LOADER_ROUTES_DIR,
|
|
164
|
+
entry.entryName || MAIN_ENTRY_NAME
|
|
165
|
+
);
|
|
166
|
+
const { routes } = yield import(routesPath);
|
|
131
167
|
if (!routes) {
|
|
132
168
|
return;
|
|
133
169
|
}
|
|
134
|
-
const {
|
|
135
|
-
res
|
|
136
|
-
} = context;
|
|
170
|
+
const { res } = context;
|
|
137
171
|
const pathname = getPathWithoutEntry(context.path, entry.urlPath);
|
|
138
172
|
const matches = matchRoutes(routes, pathname);
|
|
139
173
|
if (!matches) {
|
|
@@ -141,7 +175,7 @@ export const handleRequest = async ({
|
|
|
141
175
|
res.end(`Route ${pathname} was not matched`);
|
|
142
176
|
return;
|
|
143
177
|
}
|
|
144
|
-
const match = matches
|
|
178
|
+
const match = matches == null ? void 0 : matches.find((match2) => match2.route.id === routeId);
|
|
145
179
|
if (!match) {
|
|
146
180
|
res.statusCode = 403;
|
|
147
181
|
res.end(`Route ${routeId} does not match URL ${context.path}`);
|
|
@@ -150,7 +184,7 @@ export const handleRequest = async ({
|
|
|
150
184
|
const request = createLoaderRequest(context);
|
|
151
185
|
let response;
|
|
152
186
|
try {
|
|
153
|
-
response =
|
|
187
|
+
response = yield callRouteLoader({
|
|
154
188
|
loader: match.route.loader,
|
|
155
189
|
routeId: match.route.id,
|
|
156
190
|
params: match.params,
|
|
@@ -159,8 +193,8 @@ export const handleRequest = async ({
|
|
|
159
193
|
});
|
|
160
194
|
if (isRedirectResponse(response)) {
|
|
161
195
|
const headers = new Headers(response.headers);
|
|
162
|
-
headers.set(
|
|
163
|
-
headers.delete(
|
|
196
|
+
headers.set("X-Modernjs-Redirect", headers.get("Location"));
|
|
197
|
+
headers.delete("Location");
|
|
164
198
|
response = new NodeResponse(null, {
|
|
165
199
|
status: 204,
|
|
166
200
|
headers
|
|
@@ -171,26 +205,33 @@ export const handleRequest = async ({
|
|
|
171
205
|
response = new NodeResponse(message, {
|
|
172
206
|
status: 500,
|
|
173
207
|
headers: {
|
|
174
|
-
|
|
208
|
+
"Content-Type": "text/plain"
|
|
175
209
|
}
|
|
176
210
|
});
|
|
177
211
|
}
|
|
178
212
|
sendLoaderResponse(res, response);
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
name:
|
|
213
|
+
});
|
|
214
|
+
var server_default = () => ({
|
|
215
|
+
name: "@modern-js/plugin-data-loader",
|
|
182
216
|
setup: () => ({
|
|
183
217
|
preparebeforeRouteHandler({
|
|
184
218
|
serverRoutes,
|
|
185
219
|
distDir
|
|
186
220
|
}) {
|
|
187
|
-
return
|
|
221
|
+
return (context) => __async(this, null, function* () {
|
|
188
222
|
return handleRequest({
|
|
189
223
|
serverRoutes,
|
|
190
224
|
distDir,
|
|
191
225
|
context
|
|
192
226
|
});
|
|
193
|
-
};
|
|
227
|
+
});
|
|
194
228
|
}
|
|
195
229
|
})
|
|
196
|
-
})
|
|
230
|
+
});
|
|
231
|
+
export {
|
|
232
|
+
server_default as default,
|
|
233
|
+
getPathWithoutEntry,
|
|
234
|
+
handleRequest,
|
|
235
|
+
isRedirectResponse,
|
|
236
|
+
isResponse
|
|
237
|
+
};
|
|
@@ -1,52 +1,77 @@
|
|
|
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
|
-
request,
|
|
47
|
-
routeId
|
|
48
|
-
});
|
|
49
|
-
const res = await fetch(url, {
|
|
72
|
+
}) {
|
|
73
|
+
const url = getRequestUrl({ params, request, routeId });
|
|
74
|
+
const res = yield fetch(url, {
|
|
50
75
|
method,
|
|
51
76
|
signal: request.signal
|
|
52
77
|
});
|
|
@@ -54,6 +79,5 @@ const createRequest = (routeId, method = 'get') => {
|
|
|
54
79
|
throw res;
|
|
55
80
|
}
|
|
56
81
|
return handleRedirectResponse(res);
|
|
57
|
-
};
|
|
82
|
+
});
|
|
58
83
|
};
|
|
59
|
-
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;
|