@modern-js/plugin-data-loader 2.35.1 → 2.36.0

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,21 +1,34 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "createDeferredReadableStream", {
6
- enumerable: true,
7
- get: function() {
8
- return createDeferredReadableStream;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
9
15
  }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var response_exports = {};
20
+ __export(response_exports, {
21
+ createDeferredReadableStream: () => createDeferredReadableStream
10
22
  });
11
- const _util = require("util");
12
- const _node = require("@modern-js/runtime-utils/node");
23
+ module.exports = __toCommonJS(response_exports);
24
+ var import_util = require("util");
25
+ var import_node = require("@modern-js/runtime-utils/node");
13
26
  function isTrackedPromise(value) {
14
27
  return value != null && typeof value.then === "function" && value._tracked === true;
15
28
  }
16
29
  const DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
17
30
  function createDeferredReadableStream(deferredData, signal) {
18
- const encoder = new _util.TextEncoder();
31
+ const encoder = new import_util.TextEncoder();
19
32
  const stream = new ReadableStream({
20
33
  async start(controller) {
21
34
  const criticalData = {};
@@ -51,7 +64,7 @@ function createDeferredReadableStream(deferredData, signal) {
51
64
  function enqueueTrackedPromise(controller, encoder, settledKey, promise) {
52
65
  if ("_error" in promise) {
53
66
  const { _error } = promise;
54
- controller.enqueue(encoder.encode(`error:${(0, _node.serializeJson)({
67
+ controller.enqueue(encoder.encode(`error:${(0, import_node.serializeJson)({
55
68
  [settledKey]: {
56
69
  message: _error.message,
57
70
  stack: _error.stack
@@ -68,3 +81,7 @@ function enqueueTrackedPromise(controller, encoder, settledKey, promise) {
68
81
  `));
69
82
  }
70
83
  }
84
+ // Annotate the CommonJS export names for ESM import in node:
85
+ 0 && (module.exports = {
86
+ createDeferredReadableStream
87
+ });
@@ -1,33 +1,54 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
9
17
  }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var server_exports = {};
30
+ __export(server_exports, {
31
+ default: () => server_default
10
32
  });
11
- const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
12
- const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
- const _path = /* @__PURE__ */ _interop_require_default._(require("path"));
14
- const _fs = /* @__PURE__ */ _interop_require_default._(require("fs"));
15
- const _utils = require("@modern-js/utils");
16
- const _node = require("@modern-js/runtime-utils/node");
17
- const _default = () => ({
33
+ module.exports = __toCommonJS(server_exports);
34
+ var import_path = __toESM(require("path"));
35
+ var import_fs = __toESM(require("fs"));
36
+ var import_utils = require("@modern-js/utils");
37
+ var import_node = require("@modern-js/runtime-utils/node");
38
+ var server_default = () => ({
18
39
  name: "@modern-js/plugin-data-loader",
19
40
  setup: () => ({
20
41
  prepareLoaderHandler({ serverRoutes, distDir }) {
21
42
  return async (context) => {
22
- const entry = (0, _node.matchEntry)(context.path, serverRoutes);
43
+ const entry = (0, import_node.matchEntry)(context.path, serverRoutes);
23
44
  if (!entry) {
24
45
  return;
25
46
  }
26
- const routesPath = _path.default.join(distDir, _utils.SERVER_BUNDLE_DIRECTORY, `${entry.entryName || _utils.MAIN_ENTRY_NAME}-server-loaders.js`);
27
- if (!_fs.default.existsSync(routesPath)) {
47
+ const routesPath = import_path.default.join(distDir, import_utils.SERVER_BUNDLE_DIRECTORY, `${entry.entryName || import_utils.MAIN_ENTRY_NAME}-server-loaders.js`);
48
+ if (!import_fs.default.existsSync(routesPath)) {
28
49
  return;
29
50
  }
30
- const { routes, handleRequest } = await Promise.resolve(routesPath).then((p) => /* @__PURE__ */ _interop_require_wildcard._(require(p)));
51
+ const { routes, handleRequest } = await Promise.resolve().then(() => __toESM(require(routesPath)));
31
52
  if (!routes) {
32
53
  return;
33
54
  }
@@ -4,7 +4,7 @@ import { compile } from "path-to-regexp";
4
4
  import { redirect } from "@modern-js/runtime-utils/router";
5
5
  import { LOADER_ID_PARAM, DIRECT_PARAM, CONTENT_TYPE_DEFERRED } from "../common/constants";
6
6
  import { parseDeferredReadableStream } from "./data";
7
- export var getRequestUrl = function(param) {
7
+ var getRequestUrl = function(param) {
8
8
  var params = param.params, request = param.request, routeId = param.routeId;
9
9
  var url = new URL(request.url);
10
10
  var toPath = compile(url.pathname, {
@@ -56,7 +56,7 @@ var handleDeferredResponse = function() {
56
56
  return _ref.apply(this, arguments);
57
57
  };
58
58
  }();
59
- export var createRequest = function(routeId) {
59
+ var createRequest = function(routeId) {
60
60
  var method = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "get";
61
61
  return function() {
62
62
  var _ref = _async_to_generator(function(param) {
@@ -66,14 +66,14 @@ export var createRequest = function(routeId) {
66
66
  case 0:
67
67
  params = param.params, request = param.request;
68
68
  url = getRequestUrl({
69
- params: params,
70
- request: request,
71
- routeId: routeId
69
+ params,
70
+ request,
71
+ routeId
72
72
  });
73
73
  return [
74
74
  4,
75
75
  fetch(url, {
76
- method: method,
76
+ method,
77
77
  signal: request.signal
78
78
  })
79
79
  ];
@@ -101,3 +101,121 @@ export var createRequest = function(routeId) {
101
101
  };
102
102
  }();
103
103
  };
104
+ var createActionRequest = function(routeId) {
105
+ return function() {
106
+ var _ref = _async_to_generator(function(param) {
107
+ var params, request, url, init, contentType, _, _1, res;
108
+ return _ts_generator(this, function(_state) {
109
+ switch (_state.label) {
110
+ case 0:
111
+ params = param.params, request = param.request;
112
+ url = getRequestUrl({
113
+ params,
114
+ request,
115
+ routeId
116
+ });
117
+ init = {
118
+ signal: request.signal
119
+ };
120
+ if (!(request.method !== "GET"))
121
+ return [
122
+ 3,
123
+ 8
124
+ ];
125
+ init.method = request.method;
126
+ contentType = request.headers.get("Content-Type");
127
+ if (!(contentType && /\bapplication\/json\b/.test(contentType)))
128
+ return [
129
+ 3,
130
+ 2
131
+ ];
132
+ init.headers = {
133
+ "Content-Type": contentType
134
+ };
135
+ _ = JSON.stringify;
136
+ return [
137
+ 4,
138
+ request.json()
139
+ ];
140
+ case 1:
141
+ init.body = _.apply(JSON, [
142
+ _state.sent()
143
+ ]);
144
+ return [
145
+ 3,
146
+ 8
147
+ ];
148
+ case 2:
149
+ if (!(contentType && /\btext\/plain\b/.test(contentType)))
150
+ return [
151
+ 3,
152
+ 4
153
+ ];
154
+ init.headers = {
155
+ "Content-Type": contentType
156
+ };
157
+ return [
158
+ 4,
159
+ request.text()
160
+ ];
161
+ case 3:
162
+ init.body = _state.sent();
163
+ return [
164
+ 3,
165
+ 8
166
+ ];
167
+ case 4:
168
+ if (!(contentType && /\bapplication\/x-www-form-urlencoded\b/.test(contentType)))
169
+ return [
170
+ 3,
171
+ 6
172
+ ];
173
+ _1 = URLSearchParams.bind;
174
+ return [
175
+ 4,
176
+ request.text()
177
+ ];
178
+ case 5:
179
+ init.body = new (_1.apply(URLSearchParams, [
180
+ void 0,
181
+ _state.sent()
182
+ ]))();
183
+ return [
184
+ 3,
185
+ 8
186
+ ];
187
+ case 6:
188
+ return [
189
+ 4,
190
+ request.formData()
191
+ ];
192
+ case 7:
193
+ init.body = _state.sent();
194
+ _state.label = 8;
195
+ case 8:
196
+ return [
197
+ 4,
198
+ fetch(url, init)
199
+ ];
200
+ case 9:
201
+ res = _state.sent();
202
+ if (!res.ok) {
203
+ throw res;
204
+ }
205
+ return [
206
+ 2,
207
+ res
208
+ ];
209
+ }
210
+ });
211
+ });
212
+ return function(_) {
213
+ return _ref.apply(this, arguments);
214
+ };
215
+ }();
216
+ };
217
+ export {
218
+ createActionRequest,
219
+ createRequest,
220
+ getRequestUrl
221
+ };
@@ -9,7 +9,7 @@ import { _ as _wrap_async_generator } from "@swc/helpers/_/_wrap_async_generator
9
9
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
10
10
  import { UNSAFE_DeferredData as DeferredData, AbortedDeferredError } from "@modern-js/runtime-utils/remix-router";
11
11
  var DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
12
- export function parseDeferredReadableStream(stream) {
12
+ function parseDeferredReadableStream(stream) {
13
13
  return _parseDeferredReadableStream.apply(this, arguments);
14
14
  }
15
15
  function _parseDeferredReadableStream() {
@@ -485,3 +485,6 @@ function mergeArrays() {
485
485
  }
486
486
  return out;
487
487
  }
488
+ export {
489
+ parseDeferredReadableStream
490
+ };
@@ -1,44 +1,21 @@
1
1
  import path from "path";
2
- export var generateClient = function(param) {
3
- var mapFile = param.mapFile, loaderId = param.loaderId;
4
- delete require.cache[mapFile];
5
- var loadersMap = require(mapFile);
2
+ var generateClient = function(param) {
3
+ var inline = param.inline, action = param.action, routeId = param.routeId;
6
4
  var requestCode = "";
7
- var exportsCode = "";
8
5
  var requestCreatorPath = path.join(__dirname, "./createRequest").replace("/cjs/cli/", "/esm/cli/").replace(/\\/g, "/");
9
- var importCode = "\n import { createRequest } from '".concat(requestCreatorPath, "';\n ");
10
- if (!loaderId) {
11
- requestCode = Object.keys(loadersMap).map(function(loaderId2) {
12
- var routeId = loadersMap[loaderId2].routeId;
13
- return "\n const ".concat(loaderId2, " = createRequest('").concat(routeId, "');\n ");
14
- }).join("");
15
- exportsCode = "export {";
16
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
17
- try {
18
- for (var _iterator = Object.keys(loadersMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
19
- var loader = _step.value;
20
- exportsCode += "".concat(loader, ",");
21
- }
22
- } catch (err) {
23
- _didIteratorError = true;
24
- _iteratorError = err;
25
- } finally {
26
- try {
27
- if (!_iteratorNormalCompletion && _iterator.return != null) {
28
- _iterator.return();
29
- }
30
- } finally {
31
- if (_didIteratorError) {
32
- throw _iteratorError;
33
- }
34
- }
6
+ var importCode = "\n import { createRequest, createActionRequest } from '".concat(requestCreatorPath, "';\n ");
7
+ if (inline) {
8
+ if (action) {
9
+ requestCode = "\n export const loader = createRequest('".concat(routeId, "');\n export const action = createActionRequest('").concat(routeId, "')\n ");
10
+ } else {
11
+ requestCode = "\n export const loader = createRequest('".concat(routeId, "');\n ");
35
12
  }
36
- exportsCode += "}";
37
13
  } else {
38
- var loader1 = loadersMap[loaderId];
39
- requestCode = "\n const loader = createRequest('".concat(loader1.routeId, "');\n ");
40
- exportsCode = "export default loader;";
14
+ requestCode = "\n export default createRequest('".concat(routeId, "');\n ");
41
15
  }
42
- var generatedCode = "\n ".concat(importCode, "\n ").concat(requestCode, "\n ").concat(exportsCode, "\n ");
16
+ var generatedCode = "\n ".concat(importCode, "\n ").concat(requestCode, "\n ");
43
17
  return generatedCode;
44
18
  };
19
+ export {
20
+ generateClient
21
+ };
@@ -4,7 +4,7 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
4
  import { promisify } from "util";
5
5
  import { logger } from "@modern-js/utils/logger";
6
6
  import { generateClient } from "./generateClient";
7
- export default function loader(source) {
7
+ function loader(source) {
8
8
  return _loader.apply(this, arguments);
9
9
  }
10
10
  function _loader() {
@@ -28,17 +28,14 @@ function _loader() {
28
28
  ];
29
29
  }
30
30
  resourceQuery = this.resourceQuery;
31
- options = resourceQuery.slice(1).split("&").map(function(item) {
32
- return item.split("=");
33
- }).reduce(function(pre, cur) {
34
- var _cur = _sliced_to_array(cur, 2), key = _cur[0], value = _cur[1];
35
- if (!key || !value) {
36
- return pre;
31
+ options = resourceQuery.slice(1).split("&").reduce(function(pre, cur) {
32
+ var _cur_split = _sliced_to_array(cur.split("="), 2), key = _cur_split[0], value = _cur_split[1];
33
+ if (key && value) {
34
+ pre[key] = value === "true" ? true : value === "false" ? false : value;
37
35
  }
38
- pre[key] = value;
39
36
  return pre;
40
37
  }, {});
41
- if (!options.mapFile) {
38
+ if (!options.loaderId) {
42
39
  return [
43
40
  2,
44
41
  source
@@ -80,8 +77,9 @@ function _loader() {
80
77
  ];
81
78
  case 4:
82
79
  code = generateClient({
83
- mapFile: options.mapFile,
84
- loaderId: options.loaderId
80
+ inline: options.inline,
81
+ action: options.action,
82
+ routeId: options.routeId
85
83
  });
86
84
  return [
87
85
  2,
@@ -92,3 +90,6 @@ function _loader() {
92
90
  });
93
91
  return _loader.apply(this, arguments);
94
92
  }
93
+ export {
94
+ loader as default
95
+ };
@@ -1,3 +1,8 @@
1
- export var LOADER_ID_PARAM = "__loader";
2
- export var DIRECT_PARAM = "__ssrDirect";
3
- export var CONTENT_TYPE_DEFERRED = "text/modernjs-deferred";
1
+ var LOADER_ID_PARAM = "__loader";
2
+ var DIRECT_PARAM = "__ssrDirect";
3
+ var CONTENT_TYPE_DEFERRED = "text/modernjs-deferred";
4
+ export {
5
+ CONTENT_TYPE_DEFERRED,
6
+ DIRECT_PARAM,
7
+ LOADER_ID_PARAM
8
+ };
@@ -19,10 +19,10 @@ var redirectStatusCodes = /* @__PURE__ */ new Set([
19
19
  307,
20
20
  308
21
21
  ]);
22
- export function isRedirectResponse(status) {
22
+ function isRedirectResponse(status) {
23
23
  return redirectStatusCodes.has(status);
24
24
  }
25
- export function isResponse(value) {
25
+ function isResponse(value) {
26
26
  return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
27
27
  }
28
28
  function convertModernRedirectResponse(headers, basename) {
@@ -87,7 +87,7 @@ var createLoaderHeaders = function(requestHeaders) {
87
87
  }
88
88
  return headers;
89
89
  };
90
- var createLoaderRequest = function(context) {
90
+ var createRequest = function(context) {
91
91
  var origin = "".concat(context.protocol, "://").concat(context.host);
92
92
  var url = new URL(context.url, origin);
93
93
  var controller = new AbortController();
@@ -96,7 +96,14 @@ var createLoaderRequest = function(context) {
96
96
  headers: createLoaderHeaders(context.headers),
97
97
  signal: controller.signal
98
98
  };
99
- return new Request(url.href, init);
99
+ if (![
100
+ "GET",
101
+ "HEAD"
102
+ ].includes(context.method.toUpperCase())) {
103
+ init.body = context.req;
104
+ }
105
+ var request = new Request(url.href, init);
106
+ return request;
100
107
  };
101
108
  var sendLoaderResponse = function() {
102
109
  var _ref = _async_to_generator(function(res, nodeResponse) {
@@ -155,14 +162,14 @@ var sendLoaderResponse = function() {
155
162
  return _ref.apply(this, arguments);
156
163
  };
157
164
  }();
158
- export var handleRequest = function() {
165
+ var handleRequest = function() {
159
166
  var _ref = _async_to_generator(function(param) {
160
- var context, serverRoutes, routesConfig, method, query, routeId, entry, basename, end, res, logger, reporter, routes, queryRoute, request, requestContext, response, deferredData, body, init, headers, error, message, cost;
167
+ var context, serverRoutes, routesConfig, query, routeId, entry, basename, end, res, logger, reporter, routes, queryRoute, request, requestContext, response, deferredData, body, init, headers, error, message, cost;
161
168
  return _ts_generator(this, function(_state) {
162
169
  switch (_state.label) {
163
170
  case 0:
164
171
  context = param.context, serverRoutes = param.serverRoutes, routesConfig = param.routes;
165
- method = context.method, query = context.query;
172
+ query = context.query;
166
173
  routeId = query[LOADER_ID_PARAM];
167
174
  entry = matchEntry(context.path, serverRoutes);
168
175
  if (!routeId || !entry) {
@@ -170,17 +177,14 @@ export var handleRequest = function() {
170
177
  2
171
178
  ];
172
179
  }
173
- if (method.toLowerCase() !== "get") {
174
- throw new Error("CSR data loader request only support http GET method");
175
- }
176
180
  basename = entry.urlPath;
177
181
  end = time();
178
182
  res = context.res, logger = context.logger, reporter = context.reporter;
179
183
  routes = transformNestedRoutes(routesConfig, reporter);
180
184
  queryRoute = createStaticHandler(routes, {
181
- basename: basename
185
+ basename
182
186
  }).queryRoute;
183
- request = createLoaderRequest(context);
187
+ request = createRequest(context);
184
188
  requestContext = createRequestContext();
185
189
  requestContext.set(reporterCtx, reporter);
186
190
  _state.label = 1;
@@ -194,8 +198,8 @@ export var handleRequest = function() {
194
198
  return [
195
199
  4,
196
200
  queryRoute(request, {
197
- routeId: routeId,
198
- requestContext: requestContext
201
+ routeId,
202
+ requestContext
199
203
  })
200
204
  ];
201
205
  case 2:
@@ -231,7 +235,11 @@ export var handleRequest = function() {
231
235
  case 3:
232
236
  error = _state.sent();
233
237
  message = _instanceof(error, ErrorResponse) ? error.data : String(error);
234
- logger === null || logger === void 0 ? void 0 : logger.error(message);
238
+ if (_instanceof(error, Error)) {
239
+ logger === null || logger === void 0 ? void 0 : logger.error(error);
240
+ } else {
241
+ logger === null || logger === void 0 ? void 0 : logger.error(message);
242
+ }
235
243
  response = new NodeResponse(message, {
236
244
  status: 500,
237
245
  headers: {
@@ -261,3 +269,8 @@ export var handleRequest = function() {
261
269
  return _ref.apply(this, arguments);
262
270
  };
263
271
  }();
272
+ export {
273
+ handleRequest,
274
+ isRedirectResponse,
275
+ isResponse
276
+ };
@@ -8,7 +8,7 @@ function isTrackedPromise(value) {
8
8
  return value != null && typeof value.then === "function" && value._tracked === true;
9
9
  }
10
10
  var DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
11
- export function createDeferredReadableStream(deferredData, signal) {
11
+ function createDeferredReadableStream(deferredData, signal) {
12
12
  var encoder = new TextEncoder();
13
13
  var stream = new ReadableStream({
14
14
  start: function start(controller) {
@@ -102,3 +102,6 @@ function enqueueTrackedPromise(controller, encoder, settledKey, promise) {
102
102
  controller.enqueue(encoder.encode("data:".concat(JSON.stringify(_define_property({}, settledKey, (_promise__data = promise._data) !== null && _promise__data !== void 0 ? _promise__data : null)), "\n\n")));
103
103
  }
104
104
  }
105
+ export {
106
+ createDeferredReadableStream
107
+ };
@@ -4,7 +4,7 @@ import path from "path";
4
4
  import fs from "fs";
5
5
  import { MAIN_ENTRY_NAME, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
6
6
  import { matchEntry } from "@modern-js/runtime-utils/node";
7
- export default function() {
7
+ function server_default() {
8
8
  return {
9
9
  name: "@modern-js/plugin-data-loader",
10
10
  setup: function() {
@@ -43,9 +43,9 @@ export default function() {
43
43
  return [
44
44
  2,
45
45
  handleRequest({
46
- serverRoutes: serverRoutes,
47
- context: context,
48
- routes: routes
46
+ serverRoutes,
47
+ context,
48
+ routes
49
49
  })
50
50
  ];
51
51
  }
@@ -61,3 +61,6 @@ export default function() {
61
61
  };
62
62
  }
63
63
  ;
64
+ export {
65
+ server_default as default
66
+ };
@@ -2,7 +2,7 @@ import { compile } from "path-to-regexp";
2
2
  import { redirect } from "@modern-js/runtime-utils/router";
3
3
  import { LOADER_ID_PARAM, DIRECT_PARAM, CONTENT_TYPE_DEFERRED } from "../common/constants";
4
4
  import { parseDeferredReadableStream } from "./data";
5
- export const getRequestUrl = ({ params, request, routeId }) => {
5
+ const getRequestUrl = ({ params, request, routeId }) => {
6
6
  const url = new URL(request.url);
7
7
  const toPath = compile(url.pathname, {
8
8
  encode: encodeURIComponent
@@ -28,7 +28,7 @@ const handleDeferredResponse = async (res) => {
28
28
  }
29
29
  return res;
30
30
  };
31
- export const createRequest = (routeId, method = "get") => {
31
+ const createRequest = (routeId, method = "get") => {
32
32
  return async ({ params, request }) => {
33
33
  const url = getRequestUrl({
34
34
  params,
@@ -48,3 +48,44 @@ export const createRequest = (routeId, method = "get") => {
48
48
  return res;
49
49
  };
50
50
  };
51
+ const createActionRequest = (routeId) => {
52
+ return async ({ params, request }) => {
53
+ const url = getRequestUrl({
54
+ params,
55
+ request,
56
+ routeId
57
+ });
58
+ const init = {
59
+ signal: request.signal
60
+ };
61
+ if (request.method !== "GET") {
62
+ init.method = request.method;
63
+ const contentType = request.headers.get("Content-Type");
64
+ if (contentType && /\bapplication\/json\b/.test(contentType)) {
65
+ init.headers = {
66
+ "Content-Type": contentType
67
+ };
68
+ init.body = JSON.stringify(await request.json());
69
+ } else if (contentType && /\btext\/plain\b/.test(contentType)) {
70
+ init.headers = {
71
+ "Content-Type": contentType
72
+ };
73
+ init.body = await request.text();
74
+ } else if (contentType && /\bapplication\/x-www-form-urlencoded\b/.test(contentType)) {
75
+ init.body = new URLSearchParams(await request.text());
76
+ } else {
77
+ init.body = await request.formData();
78
+ }
79
+ }
80
+ const res = await fetch(url, init);
81
+ if (!res.ok) {
82
+ throw res;
83
+ }
84
+ return res;
85
+ };
86
+ };
87
+ export {
88
+ createActionRequest,
89
+ createRequest,
90
+ getRequestUrl
91
+ };
@@ -1,6 +1,6 @@
1
1
  import { UNSAFE_DeferredData as DeferredData, AbortedDeferredError } from "@modern-js/runtime-utils/remix-router";
2
2
  const DEFERRED_VALUE_PLACEHOLDER_PREFIX = "__deferred_promise:";
3
- export async function parseDeferredReadableStream(stream) {
3
+ async function parseDeferredReadableStream(stream) {
4
4
  if (!stream) {
5
5
  throw new Error("parseDeferredReadableStream requires stream argument");
6
6
  }
@@ -135,3 +135,6 @@ function mergeArrays(...arrays) {
135
135
  }
136
136
  return out;
137
137
  }
138
+ export {
139
+ parseDeferredReadableStream
140
+ };