@modern-js/plugin-data-loader 2.35.1 → 2.35.2-alpha.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.
Files changed (43) hide show
  1. package/dist/cjs/cli/createRequest.js +73 -25
  2. package/dist/cjs/cli/data.js +27 -10
  3. package/dist/cjs/cli/generateClient.js +49 -30
  4. package/dist/cjs/cli/loader.js +34 -23
  5. package/dist/cjs/common/constants.js +27 -18
  6. package/dist/cjs/runtime/index.js +68 -54
  7. package/dist/cjs/runtime/response.js +28 -11
  8. package/dist/cjs/server/index.js +39 -18
  9. package/dist/esm/cli/createRequest.js +124 -6
  10. package/dist/esm/cli/data.js +4 -1
  11. package/dist/esm/cli/generateClient.js +13 -36
  12. package/dist/esm/cli/loader.js +12 -11
  13. package/dist/esm/common/constants.js +8 -3
  14. package/dist/esm/runtime/index.js +25 -15
  15. package/dist/esm/runtime/response.js +4 -1
  16. package/dist/esm/server/index.js +7 -4
  17. package/dist/esm-node/cli/createRequest.js +43 -2
  18. package/dist/esm-node/cli/data.js +4 -1
  19. package/dist/esm-node/cli/generateClient.js +16 -20
  20. package/dist/esm-node/cli/loader.js +12 -11
  21. package/dist/esm-node/common/constants.js +8 -3
  22. package/dist/esm-node/runtime/index.js +21 -11
  23. package/dist/esm-node/runtime/response.js +4 -1
  24. package/dist/esm-node/server/index.js +4 -1
  25. package/dist/js/modern/cli/create-request.js +66 -0
  26. package/dist/js/modern/cli/generate-client.js +42 -0
  27. package/dist/js/modern/cli/loader.js +40 -0
  28. package/dist/js/modern/common/constants.js +6 -0
  29. package/dist/js/modern/server/index.js +237 -0
  30. package/dist/js/node/cli/create-request.js +90 -0
  31. package/dist/js/node/cli/generate-client.js +71 -0
  32. package/dist/js/node/cli/loader.js +61 -0
  33. package/dist/js/node/common/constants.js +30 -0
  34. package/dist/js/node/server/index.js +261 -0
  35. package/dist/js/treeshaking/cli/create-request.js +186 -0
  36. package/dist/js/treeshaking/cli/generate-client.js +45 -0
  37. package/dist/js/treeshaking/cli/loader.js +154 -0
  38. package/dist/js/treeshaking/common/constants.js +3 -0
  39. package/dist/js/treeshaking/server/index.js +578 -0
  40. package/dist/types/cli/createRequest.d.ts +8 -1
  41. package/dist/types/cli/generateClient.d.ts +6 -4
  42. package/dist/types/cli/loader.d.ts +4 -1
  43. package/package.json +5 -5
@@ -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,11 @@ 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 (context.method.toUpperCase() !== "GET" && context.method !== "HEAD") {
100
+ init.body = context.req;
101
+ }
102
+ var request = new Request(url.href, init);
103
+ return request;
100
104
  };
101
105
  var sendLoaderResponse = function() {
102
106
  var _ref = _async_to_generator(function(res, nodeResponse) {
@@ -155,14 +159,14 @@ var sendLoaderResponse = function() {
155
159
  return _ref.apply(this, arguments);
156
160
  };
157
161
  }();
158
- export var handleRequest = function() {
162
+ var handleRequest = function() {
159
163
  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;
164
+ 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
165
  return _ts_generator(this, function(_state) {
162
166
  switch (_state.label) {
163
167
  case 0:
164
168
  context = param.context, serverRoutes = param.serverRoutes, routesConfig = param.routes;
165
- method = context.method, query = context.query;
169
+ query = context.query;
166
170
  routeId = query[LOADER_ID_PARAM];
167
171
  entry = matchEntry(context.path, serverRoutes);
168
172
  if (!routeId || !entry) {
@@ -170,17 +174,14 @@ export var handleRequest = function() {
170
174
  2
171
175
  ];
172
176
  }
173
- if (method.toLowerCase() !== "get") {
174
- throw new Error("CSR data loader request only support http GET method");
175
- }
176
177
  basename = entry.urlPath;
177
178
  end = time();
178
179
  res = context.res, logger = context.logger, reporter = context.reporter;
179
180
  routes = transformNestedRoutes(routesConfig, reporter);
180
181
  queryRoute = createStaticHandler(routes, {
181
- basename: basename
182
+ basename
182
183
  }).queryRoute;
183
- request = createLoaderRequest(context);
184
+ request = createRequest(context);
184
185
  requestContext = createRequestContext();
185
186
  requestContext.set(reporterCtx, reporter);
186
187
  _state.label = 1;
@@ -194,8 +195,8 @@ export var handleRequest = function() {
194
195
  return [
195
196
  4,
196
197
  queryRoute(request, {
197
- routeId: routeId,
198
- requestContext: requestContext
198
+ routeId,
199
+ requestContext
199
200
  })
200
201
  ];
201
202
  case 2:
@@ -231,7 +232,11 @@ export var handleRequest = function() {
231
232
  case 3:
232
233
  error = _state.sent();
233
234
  message = _instanceof(error, ErrorResponse) ? error.data : String(error);
234
- logger === null || logger === void 0 ? void 0 : logger.error(message);
235
+ if (_instanceof(error, Error)) {
236
+ logger === null || logger === void 0 ? void 0 : logger.error(error);
237
+ } else {
238
+ logger === null || logger === void 0 ? void 0 : logger.error(message);
239
+ }
235
240
  response = new NodeResponse(message, {
236
241
  status: 500,
237
242
  headers: {
@@ -261,3 +266,8 @@ export var handleRequest = function() {
261
266
  return _ref.apply(this, arguments);
262
267
  };
263
268
  }();
269
+ export {
270
+ handleRequest,
271
+ isRedirectResponse,
272
+ isResponse
273
+ };
@@ -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
+ };