@modern-js/plugin-data-loader 2.5.0-alpha.0 → 2.5.1-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 (39) hide show
  1. package/dist/cjs/cli/create-request.js +3 -14
  2. package/dist/cjs/cli/generate-client.js +4 -0
  3. package/dist/cjs/cli/loader.js +3 -0
  4. package/dist/cjs/server/index.js +200 -19
  5. package/dist/esm/cli/create-request.js +2 -41
  6. package/dist/esm/cli/loader.js +6 -0
  7. package/dist/esm/server/index.js +447 -29
  8. package/dist/esm-node/cli/create-request.js +3 -14
  9. package/dist/esm-node/cli/loader.js +3 -0
  10. package/dist/esm-node/server/index.js +196 -21
  11. package/dist/js/modern/cli/create-request.js +66 -0
  12. package/dist/js/modern/cli/generate-client.js +42 -0
  13. package/dist/js/modern/cli/loader.js +40 -0
  14. package/dist/js/modern/common/constants.js +6 -0
  15. package/dist/js/modern/server/index.js +237 -0
  16. package/dist/js/node/cli/create-request.js +90 -0
  17. package/dist/js/node/cli/generate-client.js +71 -0
  18. package/dist/js/node/cli/loader.js +61 -0
  19. package/dist/js/node/common/constants.js +30 -0
  20. package/dist/js/node/server/index.js +261 -0
  21. package/dist/js/treeshaking/cli/create-request.js +186 -0
  22. package/dist/js/treeshaking/cli/generate-client.js +45 -0
  23. package/dist/js/treeshaking/cli/loader.js +154 -0
  24. package/dist/js/treeshaking/common/constants.js +3 -0
  25. package/dist/{esm/runtime → js/treeshaking/server}/index.js +222 -66
  26. package/dist/types/cli/create-request.d.ts +1 -2
  27. package/dist/types/server/index.d.ts +15 -0
  28. package/package.json +10 -21
  29. package/dist/cjs/cli/data.js +0 -162
  30. package/dist/cjs/runtime/index.js +0 -159
  31. package/dist/cjs/runtime/response.js +0 -102
  32. package/dist/esm/cli/data.js +0 -820
  33. package/dist/esm/runtime/response.js +0 -284
  34. package/dist/esm-node/cli/data.js +0 -142
  35. package/dist/esm-node/runtime/index.js +0 -143
  36. package/dist/esm-node/runtime/response.js +0 -79
  37. package/dist/types/cli/data.d.ts +0 -6
  38. package/dist/types/runtime/index.d.ts +0 -15
  39. package/dist/types/runtime/response.d.ts +0 -2
@@ -0,0 +1,45 @@
1
+ import path from "path";
2
+ var generateClient = function(param) {
3
+ var mapFile = param.mapFile, loaderId = param.loaderId;
4
+ delete require.cache[mapFile];
5
+ var loadersMap = require(mapFile);
6
+ var requestCode = "";
7
+ var exportsCode = "";
8
+ var requestCreatorPath = path.join(__dirname, "./create-request").replace("/node/cli/", "/treeshaking/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 = undefined;
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
+ }
35
+ }
36
+ exportsCode += "}";
37
+ } else {
38
+ var loader1 = loadersMap[loaderId];
39
+ requestCode = "\n const loader = createRequest('".concat(loader1.routeId, "');\n ");
40
+ exportsCode = "export default loader;";
41
+ }
42
+ var generatedCode = "\n ".concat(importCode, "\n ").concat(requestCode, "\n ").concat(exportsCode, "\n ");
43
+ return generatedCode;
44
+ };
45
+ export { generateClient };
@@ -0,0 +1,154 @@
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
+ }
124
+ };
125
+ import { generateClient } from "./generate-client";
126
+ function loader(source) {
127
+ return _loader.apply(this, arguments);
128
+ }
129
+ function _loader() {
130
+ _loader = _asyncToGenerator(function(source) {
131
+ var _this__compiler, target, options, code;
132
+ return __generator(this, function(_state) {
133
+ this.cacheable();
134
+ target = (_this__compiler = this._compiler) === null || _this__compiler === void 0 ? void 0 : _this__compiler.options.target;
135
+ if (target === "node") {
136
+ return [
137
+ 2,
138
+ source
139
+ ];
140
+ }
141
+ options = this.getOptions();
142
+ code = generateClient({
143
+ mapFile: options.mapFile,
144
+ loaderId: options.loaderId
145
+ });
146
+ return [
147
+ 2,
148
+ code
149
+ ];
150
+ });
151
+ });
152
+ return _loader.apply(this, arguments);
153
+ }
154
+ export { loader as default };
@@ -0,0 +1,3 @@
1
+ var LOADER_ID_PARAM = "__loader";
2
+ var DIRECT_PARAM = "__ssrDirect";
3
+ export { DIRECT_PARAM, LOADER_ID_PARAM };
@@ -35,12 +35,18 @@ function _asyncToGenerator(fn) {
35
35
  });
36
36
  };
37
37
  }
38
- function _instanceof(left, right) {
39
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
40
- return !!right[Symbol.hasInstance](left);
38
+ function _defineProperty(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
41
46
  } else {
42
- return left instanceof right;
47
+ obj[key] = value;
43
48
  }
49
+ return obj;
44
50
  }
45
51
  function _iterableToArrayLimit(arr, i) {
46
52
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
@@ -69,6 +75,45 @@ function _iterableToArrayLimit(arr, i) {
69
75
  function _nonIterableRest() {
70
76
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
71
77
  }
78
+ function _objectSpread(target) {
79
+ for(var i = 1; i < arguments.length; i++){
80
+ var source = arguments[i] != null ? arguments[i] : {};
81
+ var ownKeys = Object.keys(source);
82
+ if (typeof Object.getOwnPropertySymbols === "function") {
83
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
84
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
85
+ }));
86
+ }
87
+ ownKeys.forEach(function(key) {
88
+ _defineProperty(target, key, source[key]);
89
+ });
90
+ }
91
+ return target;
92
+ }
93
+ function ownKeys(object, enumerableOnly) {
94
+ var keys = Object.keys(object);
95
+ if (Object.getOwnPropertySymbols) {
96
+ var symbols = Object.getOwnPropertySymbols(object);
97
+ if (enumerableOnly) {
98
+ symbols = symbols.filter(function(sym) {
99
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
100
+ });
101
+ }
102
+ keys.push.apply(keys, symbols);
103
+ }
104
+ return keys;
105
+ }
106
+ function _objectSpreadProps(target, source) {
107
+ source = source != null ? source : {};
108
+ if (Object.getOwnPropertyDescriptors) {
109
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
110
+ } else {
111
+ ownKeys(Object(source)).forEach(function(key) {
112
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
113
+ });
114
+ }
115
+ return target;
116
+ }
72
117
  function _slicedToArray(arr, i) {
73
118
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
74
119
  }
@@ -175,11 +220,11 @@ var __generator = this && this.__generator || function(thisArg, body) {
175
220
  };
176
221
  }
177
222
  };
223
+ import path from "path";
178
224
  import { installGlobals, writeReadableStreamToWritable, Response as NodeResponse } from "@remix-run/node";
179
- import { transformNestedRoutes } from "@modern-js/utils";
180
- import { createStaticHandler, ErrorResponse, UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL } from "@modern-js/utils/remix-router";
225
+ import { matchRoutes } from "react-router-dom";
226
+ import { MAIN_ENTRY_NAME, SERVER_BUNDLE_DIRECTORY } from "@modern-js/utils";
181
227
  import { LOADER_ID_PARAM } from "../common/constants";
182
- import { createDeferredReadableStream } from "./response";
183
228
  installGlobals();
184
229
  var redirectStatusCodes = /* @__PURE__ */ new Set([
185
230
  301,
@@ -188,21 +233,81 @@ var redirectStatusCodes = /* @__PURE__ */ new Set([
188
233
  307,
189
234
  308
190
235
  ]);
191
- function isRedirectResponse(status) {
192
- return redirectStatusCodes.has(status);
236
+ function isRedirectResponse(response) {
237
+ return redirectStatusCodes.has(response.status);
193
238
  }
194
239
  function isResponse(value) {
195
240
  return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
196
241
  }
197
- function convertModernRedirectResponse(headers) {
198
- var newHeaders = new Headers(headers);
199
- newHeaders.set("X-Modernjs-Redirect", headers.get("Location"));
200
- newHeaders.delete("Location");
201
- return new NodeResponse(null, {
202
- status: 204,
203
- headers: newHeaders
242
+ var json = function(data) {
243
+ var init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
244
+ var responseInit = typeof init === "number" ? {
245
+ status: init
246
+ } : init;
247
+ var headers = new Headers(responseInit.headers);
248
+ if (!headers.has("Content-Type")) {
249
+ headers.set("Content-Type", "application/json; charset=utf-8");
250
+ }
251
+ return new NodeResponse(JSON.stringify(data), _objectSpreadProps(_objectSpread({}, responseInit), {
252
+ headers: headers
253
+ }));
254
+ };
255
+ var callRouteLoader = function() {
256
+ var _ref = _asyncToGenerator(function(param) {
257
+ var routeId, loader, params, request, loadContext, result, error;
258
+ return __generator(this, function(_state) {
259
+ switch(_state.label){
260
+ case 0:
261
+ routeId = param.routeId, loader = param.loader, params = param.params, request = param.request, loadContext = param.loadContext;
262
+ if (!loader) {
263
+ throw new Error("You made a ".concat(request.method, " request to ").concat(request.url, ' but did not provide a default component or `loader` for route "').concat(routeId, '", so there is no way to handle the request.'));
264
+ }
265
+ _state.label = 1;
266
+ case 1:
267
+ _state.trys.push([
268
+ 1,
269
+ 3,
270
+ ,
271
+ 4
272
+ ]);
273
+ return [
274
+ 4,
275
+ loader({
276
+ request: request,
277
+ params: params
278
+ })
279
+ ];
280
+ case 2:
281
+ result = _state.sent();
282
+ return [
283
+ 3,
284
+ 4
285
+ ];
286
+ case 3:
287
+ error = _state.sent();
288
+ if (!isResponse(error)) {
289
+ throw error;
290
+ }
291
+ result = error;
292
+ return [
293
+ 3,
294
+ 4
295
+ ];
296
+ case 4:
297
+ if (result === void 0) {
298
+ throw new Error('You defined a loader for route "'.concat(routeId, "\" but didn't return anything from your `loader` function. Please return a value or `null`."));
299
+ }
300
+ return [
301
+ 2,
302
+ isResponse(result) ? result : json(result)
303
+ ];
304
+ }
305
+ });
204
306
  });
205
- }
307
+ return function callRouteLoader(_) {
308
+ return _ref.apply(this, arguments);
309
+ };
310
+ }();
206
311
  var createLoaderHeaders = function(requestHeaders) {
207
312
  var headers = new Headers();
208
313
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
@@ -319,6 +424,12 @@ var sendLoaderResponse = function() {
319
424
  return _ref.apply(this, arguments);
320
425
  };
321
426
  }();
427
+ var getPathWithoutEntry = function(pathname, entryPath) {
428
+ if (entryPath === "/") {
429
+ return pathname;
430
+ }
431
+ return pathname.replace(entryPath, "");
432
+ };
322
433
  var matchEntry = function(pathname, entries) {
323
434
  return entries.find(function(entry) {
324
435
  return pathname.startsWith(entry.urlPath);
@@ -326,77 +437,93 @@ var matchEntry = function(pathname, entries) {
326
437
  };
327
438
  var handleRequest = function() {
328
439
  var _ref = _asyncToGenerator(function(param) {
329
- var context, serverRoutes, routes, method, query, routeId, entry, dataRoutes, staticHandler, res, request, response, deferredData, body, init, headers, error, message;
440
+ var context, serverRoutes, distDir, method, query, routeId, entry, routesPath, routes, res, pathname, matches, match, request, response, headers, error, message;
330
441
  return __generator(this, function(_state) {
331
442
  switch(_state.label){
332
443
  case 0:
333
- context = param.context, serverRoutes = param.serverRoutes, routes = param.routes;
444
+ context = param.context, serverRoutes = param.serverRoutes, distDir = param.distDir;
334
445
  method = context.method, query = context.query;
335
446
  routeId = query[LOADER_ID_PARAM];
336
- if (!routeId) {
337
- throw new Error("Missing parameter: ".concat(LOADER_ID_PARAM));
338
- }
339
- if (method.toLowerCase() !== "get") {
340
- throw new Error("Only support httpp GET method");
447
+ if (!routeId || method.toLowerCase() !== "get") {
448
+ return [
449
+ 2
450
+ ];
341
451
  }
342
452
  entry = matchEntry(context.path, serverRoutes);
343
453
  if (!entry) {
344
- throw new Error("Route is not matched");
454
+ return [
455
+ 2
456
+ ];
457
+ }
458
+ routesPath = path.join(distDir, SERVER_BUNDLE_DIRECTORY, "".concat(entry.entryName || MAIN_ENTRY_NAME, "-server-loaders"));
459
+ return [
460
+ 4,
461
+ import(routesPath)
462
+ ];
463
+ case 1:
464
+ routes = _state.sent().routes;
465
+ if (!routes) {
466
+ return [
467
+ 2
468
+ ];
345
469
  }
346
- dataRoutes = transformNestedRoutes(routes);
347
- staticHandler = createStaticHandler(dataRoutes, {
348
- basename: entry.urlPath
349
- });
350
470
  res = context.res;
471
+ pathname = getPathWithoutEntry(context.path, entry.urlPath);
472
+ matches = matchRoutes(routes, pathname);
473
+ if (!matches) {
474
+ res.statusCode = 403;
475
+ res.end("Route ".concat(pathname, " was not matched"));
476
+ return [
477
+ 2
478
+ ];
479
+ }
480
+ match = matches === null || matches === void 0 ? void 0 : matches.find(function(match2) {
481
+ return match2.route.id === routeId;
482
+ });
483
+ if (!match) {
484
+ res.statusCode = 403;
485
+ res.end("Route ".concat(routeId, " does not match URL ").concat(context.path));
486
+ return [
487
+ 2
488
+ ];
489
+ }
351
490
  request = createLoaderRequest(context);
352
- _state.label = 1;
353
- case 1:
491
+ _state.label = 2;
492
+ case 2:
354
493
  _state.trys.push([
355
- 1,
356
- 3,
494
+ 2,
495
+ 4,
357
496
  ,
358
- 4
497
+ 5
359
498
  ]);
360
499
  return [
361
500
  4,
362
- staticHandler.queryRoute(request, {
363
- routeId: routeId,
364
- requestContext: context
501
+ callRouteLoader({
502
+ loader: match.route.loader,
503
+ routeId: match.route.id,
504
+ params: match.params,
505
+ request: request,
506
+ loadContext: {}
365
507
  })
366
508
  ];
367
- case 2:
509
+ case 3:
368
510
  response = _state.sent();
369
- if (isResponse(response) && isRedirectResponse(response.status)) {
370
- response = convertModernRedirectResponse(response.headers);
371
- } else if (DEFERRED_SYMBOL in response) {
372
- deferredData = response[DEFERRED_SYMBOL];
373
- body = createDeferredReadableStream(deferredData, request.signal);
374
- init = deferredData.init || {};
375
- if (init.status && isRedirectResponse(init.status)) {
376
- if (!init.headers) {
377
- throw new Error("redirect response includes no headers");
378
- }
379
- response = convertModernRedirectResponse(new Headers(init.headers));
380
- } else {
381
- headers = new Headers(init.headers);
382
- headers.set("Content-Type", "text/modernjs-deferred");
383
- init.headers = headers;
384
- response = new NodeResponse(body, init);
385
- }
386
- } else {
387
- response = isResponse(response) ? response : new NodeResponse(JSON.stringify(response), {
388
- headers: {
389
- "Content-Type": "application/json; charset=utf-8"
390
- }
511
+ if (isRedirectResponse(response)) {
512
+ headers = new Headers(response.headers);
513
+ headers.set("X-Modernjs-Redirect", headers.get("Location"));
514
+ headers.delete("Location");
515
+ response = new NodeResponse(null, {
516
+ status: 204,
517
+ headers: headers
391
518
  });
392
519
  }
393
520
  return [
394
521
  3,
395
- 4
522
+ 5
396
523
  ];
397
- case 3:
524
+ case 4:
398
525
  error = _state.sent();
399
- message = _instanceof(error, ErrorResponse) ? error.data : String(error);
526
+ message = String(error);
400
527
  response = new NodeResponse(message, {
401
528
  status: 500,
402
529
  headers: {
@@ -405,9 +532,9 @@ var handleRequest = function() {
405
532
  });
406
533
  return [
407
534
  3,
408
- 4
535
+ 5
409
536
  ];
410
- case 4:
537
+ case 5:
411
538
  sendLoaderResponse(res, response);
412
539
  return [
413
540
  2
@@ -419,4 +546,33 @@ var handleRequest = function() {
419
546
  return _ref.apply(this, arguments);
420
547
  };
421
548
  }();
422
- export { handleRequest, isRedirectResponse, isResponse, matchEntry };
549
+ var server_default = function() {
550
+ return {
551
+ name: "@modern-js/plugin-data-loader",
552
+ setup: function() {
553
+ return {
554
+ preparebeforeRouteHandler: function preparebeforeRouteHandler(param) {
555
+ var serverRoutes = param.serverRoutes, distDir = param.distDir;
556
+ return function() {
557
+ var _ref = _asyncToGenerator(function(context) {
558
+ return __generator(this, function(_state) {
559
+ return [
560
+ 2,
561
+ handleRequest({
562
+ serverRoutes: serverRoutes,
563
+ distDir: distDir,
564
+ context: context
565
+ })
566
+ ];
567
+ });
568
+ });
569
+ return function(context) {
570
+ return _ref.apply(this, arguments);
571
+ };
572
+ }();
573
+ }
574
+ };
575
+ }
576
+ };
577
+ };
578
+ export { server_default as default, getPathWithoutEntry, handleRequest, isRedirectResponse, isResponse };
@@ -1,4 +1,3 @@
1
- import { type UNSAFE_DeferredData as DeferredData } from '@modern-js/utils/remix-router';
2
1
  export declare const getRequestUrl: ({
3
2
  params,
4
3
  request,
@@ -14,4 +13,4 @@ export declare const createRequest: (routeId: string, method?: string) => ({
14
13
  }: {
15
14
  params: Record<string, string>;
16
15
  request: Request;
17
- }) => Promise<DeferredData | Response>;
16
+ }) => Promise<Response>;
@@ -1,4 +1,19 @@
1
1
  import type { ServerPlugin } from '@modern-js/server-core';
2
+ import type { ModernServerContext, ServerRoute } from '@modern-js/types';
3
+ import { Response as NodeResponse } from '@remix-run/node';
4
+ export type ServerContext = Pick<ModernServerContext, 'req' | 'res' | 'params' | 'headers' | 'method' | 'url' | 'host' | 'protocol' | 'origin' | 'href' | 'path' | 'query'>;
5
+ export declare function isRedirectResponse(response: NodeResponse): boolean;
6
+ export declare function isResponse(value: any): value is NodeResponse;
7
+ export declare const getPathWithoutEntry: (pathname: string, entryPath: string) => string;
8
+ export declare const handleRequest: ({
9
+ context,
10
+ serverRoutes,
11
+ distDir
12
+ }: {
13
+ context: ServerContext;
14
+ serverRoutes: ServerRoute[];
15
+ distDir: string;
16
+ }) => Promise<void>;
2
17
 
3
18
  declare const _default: () => ServerPlugin;
4
19
 
package/package.json CHANGED
@@ -11,10 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "2.5.0-alpha.0",
15
- "engines": {
16
- "node": ">=14.17.6"
17
- },
14
+ "version": "2.5.1-alpha.0",
18
15
  "jsnext:source": "./src/index.ts",
19
16
  "types": "./dist/types/index.d.ts",
20
17
  "main": "./dist/cjs/index.js",
@@ -27,10 +24,6 @@
27
24
  "./server": {
28
25
  "jsnext:source": "./src/server/index.ts",
29
26
  "default": "./dist/cjs/server/index.js"
30
- },
31
- "./runtime": {
32
- "jsnext:source": "./src/runtime/index.ts",
33
- "default": "./dist/esm/runtime/index.js"
34
27
  }
35
28
  },
36
29
  "typesVersions": {
@@ -40,21 +33,23 @@
40
33
  ],
41
34
  "server": [
42
35
  "./dist/types/server/index.d.ts"
43
- ],
44
- "runtime": [
45
- "./dist/types/runtime/index.d.ts"
46
36
  ]
47
37
  }
48
38
  },
49
39
  "dependencies": {
50
40
  "@babel/core": "^7.18.0",
51
41
  "@babel/runtime": "^7.18.0",
52
- "@remix-run/node": "^1.12.0",
42
+ "@modern-js/utils": "2.5.0",
43
+ "@remix-run/node": "^1.9.0",
53
44
  "path-to-regexp": "^6.2.0",
54
- "react-router-dom": "^6.8.1",
55
- "@modern-js/utils": "2.5.0-alpha.0"
45
+ "react-router-dom": "^6.6.0"
56
46
  },
57
47
  "devDependencies": {
48
+ "@modern-js/core": "2.5.0",
49
+ "@modern-js/server-core": "2.5.0",
50
+ "@modern-js/types": "2.5.0",
51
+ "@scripts/build": "2.5.0",
52
+ "@scripts/jest-config": "2.5.0",
58
53
  "@types/babel__core": "^7.1.15",
59
54
  "@types/jest": "^27",
60
55
  "@types/node": "^14",
@@ -66,13 +61,7 @@
66
61
  "ts-jest": "^27.0.5",
67
62
  "typescript": "^4",
68
63
  "webpack": "^5.75.0",
69
- "webpack-chain": "^6.5.1",
70
- "@modern-js/core": "2.5.0",
71
- "@modern-js/types": "2.5.0",
72
- "@scripts/build": "2.5.0",
73
- "@modern-js/server-core": "2.5.0",
74
- "@modern-js/plugin-module-babel": "2.5.0",
75
- "@scripts/jest-config": "2.5.0"
64
+ "webpack-chain": "^6.5.1"
76
65
  },
77
66
  "sideEffects": false,
78
67
  "publishConfig": {