@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.
@@ -1,23 +1,58 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = loader;
7
- var _generateClient = require("./generate-client");
8
- // eslint-disable-next-line eslint-comments/disable-enable-pair
9
- /* eslint-disable @babel/no-invalid-this */
10
-
11
- async function loader(source) {
12
- var _this$_compiler;
13
- this.cacheable();
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
- const options = this.getOptions();
19
- const code = (0, _generateClient.generateClient)({
20
- mapFile: options.mapFile
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;
21
57
  });
22
- return code;
23
- }
58
+ }
@@ -1,57 +1,128 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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
- exports.handleRequest = exports.getPathWithoutEntry = exports.default = void 0;
7
- exports.isRedirectResponse = isRedirectResponse;
8
- exports.isResponse = isResponse;
9
- var _node = require("@remix-run/node");
10
- var _reactRouterDom = require("react-router-dom");
11
- var _utils = require("@modern-js/utils");
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
- // Polyfill Web Fetch API
18
- (0, _node.installGlobals)();
19
- const LOADER_SEARCH_PARAM = '_loader';
20
- const redirectStatusCodes = new Set([301, 302, 303, 307, 308]);
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]);
21
95
  function isRedirectResponse(response) {
22
96
  return redirectStatusCodes.has(response.status);
23
97
  }
24
98
  function isResponse(value) {
25
- return value != null && typeof value.status === 'number' && typeof value.statusText === 'string' && typeof value.headers === 'object' && typeof value.body !== 'undefined';
99
+ return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
26
100
  }
27
101
  const json = (data, init = {}) => {
28
- const responseInit = typeof init === 'number' ? {
29
- status: init
30
- } : init;
102
+ const responseInit = typeof init === "number" ? { status: init } : init;
31
103
  const headers = new Headers(responseInit.headers);
32
- if (!headers.has('Content-Type')) {
33
- headers.set('Content-Type', 'application/json; charset=utf-8');
104
+ if (!headers.has("Content-Type")) {
105
+ headers.set("Content-Type", "application/json; charset=utf-8");
34
106
  }
35
- return new _node.Response(JSON.stringify(data), _objectSpread(_objectSpread({}, responseInit), {}, {
107
+ return new import_node.Response(JSON.stringify(data), __spreadProps(__spreadValues({}, responseInit), {
36
108
  headers
37
109
  }));
38
110
  };
39
-
40
- // TODO: 添加 context
41
- const callRouteLoader = async ({
111
+ const callRouteLoader = (_0) => __async(void 0, [_0], function* ({
42
112
  routeId,
43
113
  loader,
44
114
  params,
45
115
  request,
46
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
47
116
  loadContext
48
- }) => {
117
+ }) {
49
118
  if (!loader) {
50
- throw new Error(`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.`);
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
+ );
51
122
  }
52
123
  let result;
53
124
  try {
54
- result = await loader({
125
+ result = yield loader({
55
126
  request,
56
127
  params
57
128
  });
@@ -61,12 +132,14 @@ const callRouteLoader = async ({
61
132
  }
62
133
  result = error;
63
134
  }
64
- if (result === undefined) {
65
- throw new Error(`You defined a loader for route "${routeId}" but didn't return ` + `anything from your \`loader\` function. Please return a value or \`null\`.`);
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
+ );
66
139
  }
67
140
  return isResponse(result) ? result : json(result);
68
- };
69
- const createLoaderHeaders = requestHeaders => {
141
+ });
142
+ const createLoaderHeaders = (requestHeaders) => {
70
143
  const headers = new Headers();
71
144
  for (const [key, values] of Object.entries(requestHeaders)) {
72
145
  if (values) {
@@ -81,9 +154,8 @@ const createLoaderHeaders = requestHeaders => {
81
154
  }
82
155
  return headers;
83
156
  };
84
- const createLoaderRequest = context => {
157
+ const createLoaderRequest = (context) => {
85
158
  const origin = `${context.protocol}://${context.host}`;
86
- // eslint-disable-next-line node/no-unsupported-features/node-builtins, node/prefer-global/url
87
159
  const url = new URL(context.url, origin);
88
160
  const controller = new AbortController();
89
161
  const init = {
@@ -93,62 +165,59 @@ const createLoaderRequest = context => {
93
165
  };
94
166
  return new Request(url.href, init);
95
167
  };
96
- const sendLoaderResponse = async (res, nodeResponse) => {
168
+ const sendLoaderResponse = (res, nodeResponse) => __async(void 0, null, function* () {
97
169
  res.statusMessage = nodeResponse.statusText;
98
170
  res.statusCode = nodeResponse.status;
99
171
  for (const [key, value] of nodeResponse.headers.entries()) {
100
172
  res.setHeader(key, value);
101
173
  }
102
174
  if (nodeResponse.body) {
103
- await (0, _node.writeReadableStreamToWritable)(nodeResponse.body, res);
175
+ yield (0, import_node.writeReadableStreamToWritable)(nodeResponse.body, res);
104
176
  } else {
105
177
  res.end();
106
178
  }
107
- };
179
+ });
108
180
  const getPathWithoutEntry = (pathname, entryPath) => {
109
- if (entryPath === '/') {
181
+ if (entryPath === "/") {
110
182
  return pathname;
111
183
  }
112
- return pathname.replace(entryPath, '');
184
+ return pathname.replace(entryPath, "");
113
185
  };
114
- exports.getPathWithoutEntry = getPathWithoutEntry;
115
186
  const matchEntry = (pathname, entries) => {
116
- return entries.find(entry => pathname.startsWith(entry.urlPath));
187
+ return entries.find((entry) => pathname.startsWith(entry.urlPath));
117
188
  };
118
- const handleRequest = async ({
189
+ const handleRequest = (_0) => __async(void 0, [_0], function* ({
119
190
  context,
120
191
  serverRoutes,
121
192
  distDir
122
- }) => {
123
- const {
124
- method,
125
- query
126
- } = context;
193
+ }) {
194
+ const { method, query } = context;
127
195
  const routeId = query[LOADER_SEARCH_PARAM];
128
- if (!routeId || method.toLowerCase() !== 'get') {
196
+ if (!routeId || method.toLowerCase() !== "get") {
129
197
  return;
130
198
  }
131
199
  const entry = matchEntry(context.path, serverRoutes);
132
200
  if (!entry) {
133
201
  return;
134
202
  }
135
- const {
136
- routes
137
- } = await Promise.resolve(`${distDir}/${_utils.LOADER_ROUTES_DIR}/${entry.entryName}`).then(s => _interopRequireWildcard(require(s)));
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)));
138
209
  if (!routes) {
139
210
  return;
140
211
  }
141
- const {
142
- res
143
- } = context;
212
+ const { res } = context;
144
213
  const pathname = getPathWithoutEntry(context.path, entry.urlPath);
145
- const matches = (0, _reactRouterDom.matchRoutes)(routes, pathname);
214
+ const matches = (0, import_react_router_dom.matchRoutes)(routes, pathname);
146
215
  if (!matches) {
147
216
  res.statusCode = 403;
148
217
  res.end(`Route ${pathname} was not matched`);
149
218
  return;
150
219
  }
151
- const match = matches === null || matches === void 0 ? void 0 : matches.find(match => match.route.id === routeId);
220
+ const match = matches == null ? void 0 : matches.find((match2) => match2.route.id === routeId);
152
221
  if (!match) {
153
222
  res.statusCode = 403;
154
223
  res.end(`Route ${routeId} does not match URL ${context.path}`);
@@ -157,7 +226,7 @@ const handleRequest = async ({
157
226
  const request = createLoaderRequest(context);
158
227
  let response;
159
228
  try {
160
- response = await callRouteLoader({
229
+ response = yield callRouteLoader({
161
230
  loader: match.route.loader,
162
231
  routeId: match.route.id,
163
232
  params: match.params,
@@ -166,40 +235,38 @@ const handleRequest = async ({
166
235
  });
167
236
  if (isRedirectResponse(response)) {
168
237
  const headers = new Headers(response.headers);
169
- headers.set('X-Modernjs-Redirect', headers.get('Location'));
170
- headers.delete('Location');
171
- response = new _node.Response(null, {
238
+ headers.set("X-Modernjs-Redirect", headers.get("Location"));
239
+ headers.delete("Location");
240
+ response = new import_node.Response(null, {
172
241
  status: 204,
173
242
  headers
174
243
  });
175
244
  }
176
245
  } catch (error) {
177
246
  const message = String(error);
178
- response = new _node.Response(message, {
247
+ response = new import_node.Response(message, {
179
248
  status: 500,
180
249
  headers: {
181
- 'Content-Type': 'text/plain'
250
+ "Content-Type": "text/plain"
182
251
  }
183
252
  });
184
253
  }
185
254
  sendLoaderResponse(res, response);
186
- };
187
- exports.handleRequest = handleRequest;
188
- var _default = () => ({
189
- name: '@modern-js/plugin-data-loader',
255
+ });
256
+ var server_default = () => ({
257
+ name: "@modern-js/plugin-data-loader",
190
258
  setup: () => ({
191
259
  preparebeforeRouteHandler({
192
260
  serverRoutes,
193
261
  distDir
194
262
  }) {
195
- return async context => {
263
+ return (context) => __async(this, null, function* () {
196
264
  return handleRequest({
197
265
  serverRoutes,
198
266
  distDir,
199
267
  context
200
268
  });
201
- };
269
+ });
202
270
  }
203
271
  })
204
272
  });
205
- exports.default = _default;
@@ -1,70 +1,184 @@
1
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- // eslint-disable-next-line eslint-comments/disable-enable-pair
4
- /* eslint-disable node/prefer-global/url */
5
- // eslint-disable-next-line eslint-comments/disable-enable-pair
6
- /* eslint-disable node/no-unsupported-features/node-builtins */
7
- import { compile } from 'path-to-regexp';
8
- import { redirect } from 'react-router-dom';
9
- export var getRequestUrl = function getRequestUrl(_ref) {
10
- var params = _ref.params,
11
- request = _ref.request,
12
- routeId = _ref.routeId;
13
- var url = new URL(request.url);
14
- var toPath = compile(url.pathname, {
15
- encode: encodeURIComponent
16
- });
17
- var newPathName = toPath(params);
18
- url.pathname = newPathName;
19
- url.searchParams.append('_loader', routeId);
20
- return url;
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
21
124
  };
22
- var handleRedirectResponse = function handleRedirectResponse(res) {
23
- var headers = res.headers;
24
- var location = headers.get('X-Modernjs-Redirect');
25
- if (location) {
26
- return redirect(location);
27
- }
28
- return res;
125
+ import { compile } from "path-to-regexp";
126
+ import { redirect } from "react-router-dom";
127
+ var getRequestUrl = function(param) {
128
+ var params = param.params, request = param.request, routeId = param.routeId;
129
+ var url = new URL(request.url);
130
+ var toPath = compile(url.pathname, {
131
+ encode: encodeURIComponent
132
+ });
133
+ var newPathName = toPath(params);
134
+ url.pathname = newPathName;
135
+ url.searchParams.append("_loader", routeId);
136
+ return url;
29
137
  };
30
- export var createRequest = function createRequest(routeId) {
31
- var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'get';
32
- return /*#__PURE__*/function () {
33
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref2) {
34
- var params, request, url, res;
35
- return _regeneratorRuntime().wrap(function _callee$(_context) {
36
- while (1) {
37
- switch (_context.prev = _context.next) {
38
- case 0:
39
- params = _ref2.params, request = _ref2.request;
40
- url = getRequestUrl({
41
- params: params,
42
- request: request,
43
- routeId: routeId
44
- });
45
- _context.prev = 2;
46
- _context.next = 5;
47
- return fetch(url, {
48
- method: method,
49
- signal: request.signal
50
- });
51
- case 5:
52
- res = _context.sent;
53
- return _context.abrupt("return", handleRedirectResponse(res));
54
- case 9:
55
- _context.prev = 9;
56
- _context.t0 = _context["catch"](2);
57
- console.error(_context.t0);
58
- throw _context.t0;
59
- case 13:
60
- case "end":
61
- return _context.stop();
62
- }
63
- }
64
- }, _callee, null, [[2, 9]]);
65
- }));
66
- return function (_x) {
67
- return _ref3.apply(this, arguments);
68
- };
69
- }();
70
- };
138
+ var handleRedirectResponse = function(res) {
139
+ var headers = res.headers;
140
+ var location = headers.get("X-Modernjs-Redirect");
141
+ if (location) {
142
+ return redirect(location);
143
+ }
144
+ return res;
145
+ };
146
+ var createRequest = function(routeId) {
147
+ var method = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "get";
148
+ return function() {
149
+ var _ref = _asyncToGenerator(function(param) {
150
+ var params, request, url, res;
151
+ return __generator(this, function(_state) {
152
+ switch(_state.label){
153
+ case 0:
154
+ params = param.params, request = param.request;
155
+ url = getRequestUrl({
156
+ params: params,
157
+ request: request,
158
+ routeId: routeId
159
+ });
160
+ return [
161
+ 4,
162
+ fetch(url, {
163
+ method: method,
164
+ signal: request.signal
165
+ })
166
+ ];
167
+ case 1:
168
+ res = _state.sent();
169
+ if (!res.ok) {
170
+ throw res;
171
+ }
172
+ return [
173
+ 2,
174
+ handleRedirectResponse(res)
175
+ ];
176
+ }
177
+ });
178
+ });
179
+ return function(_) {
180
+ return _ref.apply(this, arguments);
181
+ };
182
+ }();
183
+ };
184
+ export { createRequest, getRequestUrl };