@modern-js/plugin-data-loader 2.63.5 → 2.63.7

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.
@@ -46,24 +46,33 @@ const handleRedirectResponse = (res) => {
46
46
  }
47
47
  return res;
48
48
  };
49
- const handleDeferredResponse = async (res) => {
49
+ const isDeferredResponse = (res) => {
50
50
  var _res_headers_get;
51
- if (((_res_headers_get = res.headers.get("Content-Type")) === null || _res_headers_get === void 0 ? void 0 : _res_headers_get.match(import_constants.CONTENT_TYPE_DEFERRED)) && res.body) {
52
- return await (0, import_data.parseDeferredReadableStream)(res.body);
53
- }
54
- return res;
51
+ return ((_res_headers_get = res.headers.get("Content-Type")) === null || _res_headers_get === void 0 ? void 0 : _res_headers_get.match(import_constants.CONTENT_TYPE_DEFERRED)) && res.body;
52
+ };
53
+ const isRedirectResponse = (res) => {
54
+ return res.headers.get("X-Modernjs-Redirect") != null;
55
55
  };
56
56
  const isErrorResponse = (res) => {
57
57
  return res.headers.get("X-Modernjs-Error") != null;
58
58
  };
59
+ function isOtherErrorResponse(res) {
60
+ return res.status >= 400 && res.headers.get("X-Modernjs-Error") == null && res.headers.get("X-Modernjs-Catch") == null && res.headers.get("X-Modernjs-Response") == null;
61
+ }
62
+ const isCatchResponse = (res) => {
63
+ return res.headers.get("X-Modernjs-Catch") != null;
64
+ };
59
65
  const handleErrorResponse = async (res) => {
60
- if (isErrorResponse(res)) {
61
- const data = await res.json();
62
- const error = new Error(data.message);
63
- error.stack = data.stack;
64
- throw error;
65
- }
66
- return res;
66
+ const data = await res.json();
67
+ const error = new Error(data.message);
68
+ error.stack = data.stack;
69
+ throw error;
70
+ };
71
+ const handleNetworkErrorResponse = async (res) => {
72
+ const text = await res.text();
73
+ const error = new Error(text);
74
+ error.stack = void 0;
75
+ throw error;
67
76
  };
68
77
  const createRequest = (routeId, method = "get") => {
69
78
  return async ({ params, request }) => {
@@ -76,10 +85,24 @@ const createRequest = (routeId, method = "get") => {
76
85
  res = await fetch(url, {
77
86
  method,
78
87
  signal: request.signal
88
+ }).catch((error) => {
89
+ throw error;
79
90
  });
80
- res = handleRedirectResponse(res);
81
- res = await handleErrorResponse(res);
82
- res = await handleDeferredResponse(res);
91
+ if (isRedirectResponse(res)) {
92
+ return handleRedirectResponse(res);
93
+ }
94
+ if (isErrorResponse(res)) {
95
+ return await handleErrorResponse(res);
96
+ }
97
+ if (isCatchResponse(res)) {
98
+ throw res;
99
+ }
100
+ if (isDeferredResponse(res)) {
101
+ return await (0, import_data.parseDeferredReadableStream)(res.body);
102
+ }
103
+ if (isOtherErrorResponse(res)) {
104
+ return await handleNetworkErrorResponse(res);
105
+ }
83
106
  return res;
84
107
  };
85
108
  };
@@ -28,7 +28,7 @@ module.exports = __toCommonJS(errors_exports);
28
28
  var import_remix_router = require("@modern-js/runtime-utils/remix-router");
29
29
  function sanitizeError(error) {
30
30
  if (error instanceof Error && process.env.NODE_ENV !== "development" && process.env.NODE_ENV !== "test") {
31
- const sanitized = new Error("Unexpected Server Error");
31
+ const sanitized = new Error(error.message || "Unexpected Server Error");
32
32
  sanitized.stack = void 0;
33
33
  return sanitized;
34
34
  }
@@ -106,6 +106,7 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
106
106
  });
107
107
  }
108
108
  const cost = end();
109
+ response.headers.set("X-Modernjs-Response", "yes");
109
110
  onTiming === null || onTiming === void 0 ? void 0 : onTiming(`${import_constants.LOADER_REPORTER_NAME}-navigation`, cost);
110
111
  } catch (error) {
111
112
  if (isResponse(error)) {
@@ -24,70 +24,63 @@ var handleRedirectResponse = function(res) {
24
24
  }
25
25
  return res;
26
26
  };
27
- var handleDeferredResponse = function() {
27
+ var isDeferredResponse = function(res) {
28
+ var _res_headers_get;
29
+ return ((_res_headers_get = res.headers.get("Content-Type")) === null || _res_headers_get === void 0 ? void 0 : _res_headers_get.match(CONTENT_TYPE_DEFERRED)) && res.body;
30
+ };
31
+ var isRedirectResponse = function(res) {
32
+ return res.headers.get("X-Modernjs-Redirect") != null;
33
+ };
34
+ var isErrorResponse = function(res) {
35
+ return res.headers.get("X-Modernjs-Error") != null;
36
+ };
37
+ function isOtherErrorResponse(res) {
38
+ return res.status >= 400 && res.headers.get("X-Modernjs-Error") == null && res.headers.get("X-Modernjs-Catch") == null && res.headers.get("X-Modernjs-Response") == null;
39
+ }
40
+ var isCatchResponse = function(res) {
41
+ return res.headers.get("X-Modernjs-Catch") != null;
42
+ };
43
+ var handleErrorResponse = function() {
28
44
  var _ref = _async_to_generator(function(res) {
29
- var _res_headers_get;
45
+ var data, error;
30
46
  return _ts_generator(this, function(_state) {
31
47
  switch (_state.label) {
32
48
  case 0:
33
- if (!(((_res_headers_get = res.headers.get("Content-Type")) === null || _res_headers_get === void 0 ? void 0 : _res_headers_get.match(CONTENT_TYPE_DEFERRED)) && res.body))
34
- return [
35
- 3,
36
- 2
37
- ];
38
49
  return [
39
50
  4,
40
- parseDeferredReadableStream(res.body)
51
+ res.json()
41
52
  ];
42
53
  case 1:
43
- return [
44
- 2,
45
- _state.sent()
46
- ];
47
- case 2:
48
- return [
49
- 2,
50
- res
51
- ];
54
+ data = _state.sent();
55
+ error = new Error(data.message);
56
+ error.stack = data.stack;
57
+ throw error;
52
58
  }
53
59
  });
54
60
  });
55
- return function handleDeferredResponse2(res) {
61
+ return function handleErrorResponse2(res) {
56
62
  return _ref.apply(this, arguments);
57
63
  };
58
64
  }();
59
- var isErrorResponse = function(res) {
60
- return res.headers.get("X-Modernjs-Error") != null;
61
- };
62
- var handleErrorResponse = function() {
65
+ var handleNetworkErrorResponse = function() {
63
66
  var _ref = _async_to_generator(function(res) {
64
- var data, error;
67
+ var text, error;
65
68
  return _ts_generator(this, function(_state) {
66
69
  switch (_state.label) {
67
70
  case 0:
68
- if (!isErrorResponse(res))
69
- return [
70
- 3,
71
- 2
72
- ];
73
71
  return [
74
72
  4,
75
- res.json()
73
+ res.text()
76
74
  ];
77
75
  case 1:
78
- data = _state.sent();
79
- error = new Error(data.message);
80
- error.stack = data.stack;
76
+ text = _state.sent();
77
+ error = new Error(text);
78
+ error.stack = void 0;
81
79
  throw error;
82
- case 2:
83
- return [
84
- 2,
85
- res
86
- ];
87
80
  }
88
81
  });
89
82
  });
90
- return function handleErrorResponse2(res) {
83
+ return function handleNetworkErrorResponse2(res) {
91
84
  return _ref.apply(this, arguments);
92
85
  };
93
86
  }();
@@ -110,23 +103,66 @@ var createRequest = function(routeId) {
110
103
  fetch(url, {
111
104
  method,
112
105
  signal: request.signal
106
+ }).catch(function(error) {
107
+ throw error;
113
108
  })
114
109
  ];
115
110
  case 1:
116
111
  res = _state.sent();
117
- res = handleRedirectResponse(res);
112
+ if (isRedirectResponse(res)) {
113
+ return [
114
+ 2,
115
+ handleRedirectResponse(res)
116
+ ];
117
+ }
118
+ if (!isErrorResponse(res))
119
+ return [
120
+ 3,
121
+ 3
122
+ ];
118
123
  return [
119
124
  4,
120
125
  handleErrorResponse(res)
121
126
  ];
122
127
  case 2:
123
- res = _state.sent();
124
128
  return [
125
- 4,
126
- handleDeferredResponse(res)
129
+ 2,
130
+ _state.sent()
127
131
  ];
128
132
  case 3:
129
- res = _state.sent();
133
+ if (isCatchResponse(res)) {
134
+ throw res;
135
+ }
136
+ if (!isDeferredResponse(res))
137
+ return [
138
+ 3,
139
+ 5
140
+ ];
141
+ return [
142
+ 4,
143
+ parseDeferredReadableStream(res.body)
144
+ ];
145
+ case 4:
146
+ return [
147
+ 2,
148
+ _state.sent()
149
+ ];
150
+ case 5:
151
+ if (!isOtherErrorResponse(res))
152
+ return [
153
+ 3,
154
+ 7
155
+ ];
156
+ return [
157
+ 4,
158
+ handleNetworkErrorResponse(res)
159
+ ];
160
+ case 6:
161
+ return [
162
+ 2,
163
+ _state.sent()
164
+ ];
165
+ case 7:
130
166
  return [
131
167
  2,
132
168
  res
@@ -6,7 +6,7 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
6
  import { isRouteErrorResponse, json } from "@modern-js/runtime-utils/remix-router";
7
7
  function sanitizeError(error) {
8
8
  if (_instanceof(error, Error) && process.env.NODE_ENV !== "development" && process.env.NODE_ENV !== "test") {
9
- var sanitized = new Error("Unexpected Server Error");
9
+ var sanitized = new Error(error.message || "Unexpected Server Error");
10
10
  sanitized.stack = void 0;
11
11
  return sanitized;
12
12
  }
@@ -104,6 +104,7 @@ var handleRequest = function() {
104
104
  });
105
105
  }
106
106
  cost = end();
107
+ response.headers.set("X-Modernjs-Response", "yes");
107
108
  onTiming === null || onTiming === void 0 ? void 0 : onTiming("".concat(LOADER_REPORTER_NAME, "-navigation"), cost);
108
109
  return [
109
110
  3,
@@ -21,24 +21,33 @@ const handleRedirectResponse = (res) => {
21
21
  }
22
22
  return res;
23
23
  };
24
- const handleDeferredResponse = async (res) => {
24
+ const isDeferredResponse = (res) => {
25
25
  var _res_headers_get;
26
- if (((_res_headers_get = res.headers.get("Content-Type")) === null || _res_headers_get === void 0 ? void 0 : _res_headers_get.match(CONTENT_TYPE_DEFERRED)) && res.body) {
27
- return await parseDeferredReadableStream(res.body);
28
- }
29
- return res;
26
+ return ((_res_headers_get = res.headers.get("Content-Type")) === null || _res_headers_get === void 0 ? void 0 : _res_headers_get.match(CONTENT_TYPE_DEFERRED)) && res.body;
27
+ };
28
+ const isRedirectResponse = (res) => {
29
+ return res.headers.get("X-Modernjs-Redirect") != null;
30
30
  };
31
31
  const isErrorResponse = (res) => {
32
32
  return res.headers.get("X-Modernjs-Error") != null;
33
33
  };
34
+ function isOtherErrorResponse(res) {
35
+ return res.status >= 400 && res.headers.get("X-Modernjs-Error") == null && res.headers.get("X-Modernjs-Catch") == null && res.headers.get("X-Modernjs-Response") == null;
36
+ }
37
+ const isCatchResponse = (res) => {
38
+ return res.headers.get("X-Modernjs-Catch") != null;
39
+ };
34
40
  const handleErrorResponse = async (res) => {
35
- if (isErrorResponse(res)) {
36
- const data = await res.json();
37
- const error = new Error(data.message);
38
- error.stack = data.stack;
39
- throw error;
40
- }
41
- return res;
41
+ const data = await res.json();
42
+ const error = new Error(data.message);
43
+ error.stack = data.stack;
44
+ throw error;
45
+ };
46
+ const handleNetworkErrorResponse = async (res) => {
47
+ const text = await res.text();
48
+ const error = new Error(text);
49
+ error.stack = void 0;
50
+ throw error;
42
51
  };
43
52
  const createRequest = (routeId, method = "get") => {
44
53
  return async ({ params, request }) => {
@@ -51,10 +60,24 @@ const createRequest = (routeId, method = "get") => {
51
60
  res = await fetch(url, {
52
61
  method,
53
62
  signal: request.signal
63
+ }).catch((error) => {
64
+ throw error;
54
65
  });
55
- res = handleRedirectResponse(res);
56
- res = await handleErrorResponse(res);
57
- res = await handleDeferredResponse(res);
66
+ if (isRedirectResponse(res)) {
67
+ return handleRedirectResponse(res);
68
+ }
69
+ if (isErrorResponse(res)) {
70
+ return await handleErrorResponse(res);
71
+ }
72
+ if (isCatchResponse(res)) {
73
+ throw res;
74
+ }
75
+ if (isDeferredResponse(res)) {
76
+ return await parseDeferredReadableStream(res.body);
77
+ }
78
+ if (isOtherErrorResponse(res)) {
79
+ return await handleNetworkErrorResponse(res);
80
+ }
58
81
  return res;
59
82
  };
60
83
  };
@@ -1,7 +1,7 @@
1
1
  import { isRouteErrorResponse, json } from "@modern-js/runtime-utils/remix-router";
2
2
  function sanitizeError(error) {
3
3
  if (error instanceof Error && process.env.NODE_ENV !== "development" && process.env.NODE_ENV !== "test") {
4
- const sanitized = new Error("Unexpected Server Error");
4
+ const sanitized = new Error(error.message || "Unexpected Server Error");
5
5
  sanitized.stack = void 0;
6
6
  return sanitized;
7
7
  }
@@ -81,6 +81,7 @@ const handleRequest = async ({ request, serverRoutes, routes: routesConfig, cont
81
81
  });
82
82
  }
83
83
  const cost = end();
84
+ response.headers.set("X-Modernjs-Response", "yes");
84
85
  onTiming === null || onTiming === void 0 ? void 0 : onTiming(`${LOADER_REPORTER_NAME}-navigation`, cost);
85
86
  } catch (error) {
86
87
  if (isResponse(error)) {
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.63.5",
18
+ "version": "2.63.7",
19
19
  "engines": {
20
20
  "node": ">=16.2.0"
21
21
  },
@@ -49,8 +49,8 @@
49
49
  "@babel/core": "^7.26.0",
50
50
  "@swc/helpers": "0.5.13",
51
51
  "path-to-regexp": "^6.2.0",
52
- "@modern-js/runtime-utils": "2.63.5",
53
- "@modern-js/utils": "2.63.5"
52
+ "@modern-js/runtime-utils": "2.63.7",
53
+ "@modern-js/utils": "2.63.7"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/babel__core": "^7.20.5",
@@ -66,11 +66,11 @@
66
66
  "ts-jest": "^29.1.0",
67
67
  "typescript": "^5",
68
68
  "webpack": "^5.97.1",
69
- "@modern-js/core": "2.63.5",
70
- "@modern-js/server-core": "2.63.5",
71
- "@modern-js/types": "2.63.5",
72
- "@scripts/build": "2.63.5",
73
- "@scripts/jest-config": "2.63.5"
69
+ "@modern-js/server-core": "2.63.7",
70
+ "@modern-js/core": "2.63.7",
71
+ "@modern-js/types": "2.63.7",
72
+ "@scripts/build": "2.63.7",
73
+ "@scripts/jest-config": "2.63.7"
74
74
  },
75
75
  "peerDependencies": {
76
76
  "react": ">=17.0.0"