@modern-js/plugin-data-loader 0.0.0-next-1680077090761 → 0.0.0-next-1680093705168
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.
- package/CHANGELOG.md +15 -9
- package/dist/cjs/runtime/index.js +1 -1
- package/dist/esm/runtime/index.js +1 -1
- package/dist/esm-node/runtime/index.js +1 -1
- package/package.json +7 -7
- package/dist/cjs/runtime/nestedRoutes.js +0 -114
- package/dist/esm/runtime/nestedRoutes.js +0 -174
- package/dist/esm-node/runtime/nestedRoutes.js +0 -93
- package/dist/types/runtime/nestedRoutes.d.ts +0 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
# @modern-js/plugin-data-loader
|
|
2
2
|
|
|
3
|
-
## 0.0.0-next-
|
|
3
|
+
## 0.0.0-next-1680093705168
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- 5d624fdc1d: feat: assets and data prefetching is supported
|
|
8
|
+
feat: 支持资源和数据预加载
|
|
9
|
+
- e2466a1071: fix: remove nestedRoutes file from @modern-js/utils
|
|
8
10
|
fix: 将 nestedRoutes 从 @modern-js/utils 中移除
|
|
9
|
-
-
|
|
11
|
+
- 381a3b9f32: feat(utils): move universal utils to the universal folder
|
|
10
12
|
|
|
11
13
|
feat(utils): 将运行时使用的 utils 移动到 universal 目录
|
|
12
14
|
|
|
13
|
-
- Updated dependencies [
|
|
14
|
-
- Updated dependencies [
|
|
15
|
-
- Updated dependencies [
|
|
16
|
-
- Updated dependencies [
|
|
17
|
-
- Updated dependencies [
|
|
18
|
-
|
|
15
|
+
- Updated dependencies [cfb058fbf6]
|
|
16
|
+
- Updated dependencies [1d045b84ef]
|
|
17
|
+
- Updated dependencies [5d624fdc1d]
|
|
18
|
+
- Updated dependencies [e2466a1071]
|
|
19
|
+
- Updated dependencies [02bb383cb0]
|
|
20
|
+
- Updated dependencies [381a3b9f32]
|
|
21
|
+
- Updated dependencies [7a60f1071d]
|
|
22
|
+
- Updated dependencies [274b2e535a]
|
|
23
|
+
- Updated dependencies [b9e1c546bd]
|
|
24
|
+
- @modern-js/utils@0.0.0-next-1680093705168
|
|
19
25
|
|
|
20
26
|
## 2.10.0
|
|
21
27
|
|
|
@@ -25,9 +25,9 @@ module.exports = __toCommonJS(runtime_exports);
|
|
|
25
25
|
var import_node = require("@remix-run/node");
|
|
26
26
|
var import_remix_router = require("@modern-js/utils/universal/remix-router");
|
|
27
27
|
var import_lodash = require("@modern-js/utils/lodash");
|
|
28
|
+
var import_nestedRoutes = require("@modern-js/utils/universal/nestedRoutes");
|
|
28
29
|
var import_constants = require("../common/constants");
|
|
29
30
|
var import_utils = require("../common/utils");
|
|
30
|
-
var import_nestedRoutes = require("./nestedRoutes");
|
|
31
31
|
var import_response = require("./response");
|
|
32
32
|
(0, import_node.installGlobals)();
|
|
33
33
|
const redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
|
@@ -178,9 +178,9 @@ var __generator = this && this.__generator || function(thisArg, body) {
|
|
|
178
178
|
import { installGlobals, writeReadableStreamToWritable, Response as NodeResponse } from "@remix-run/node";
|
|
179
179
|
import { createStaticHandler, ErrorResponse, UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL } from "@modern-js/utils/universal/remix-router";
|
|
180
180
|
import { isPlainObject } from "@modern-js/utils/lodash";
|
|
181
|
+
import { transformNestedRoutes } from "@modern-js/utils/universal/nestedRoutes";
|
|
181
182
|
import { CONTENT_TYPE_DEFERRED, LOADER_ID_PARAM } from "../common/constants";
|
|
182
183
|
import { matchEntry } from "../common/utils";
|
|
183
|
-
import { transformNestedRoutes } from "./nestedRoutes";
|
|
184
184
|
import { createDeferredReadableStream } from "./response";
|
|
185
185
|
installGlobals();
|
|
186
186
|
var redirectStatusCodes = /* @__PURE__ */ new Set([
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
UNSAFE_DEFERRED_SYMBOL as DEFERRED_SYMBOL
|
|
10
10
|
} from "@modern-js/utils/universal/remix-router";
|
|
11
11
|
import { isPlainObject } from "@modern-js/utils/lodash";
|
|
12
|
+
import { transformNestedRoutes } from "@modern-js/utils/universal/nestedRoutes";
|
|
12
13
|
import { CONTENT_TYPE_DEFERRED, LOADER_ID_PARAM } from "../common/constants";
|
|
13
14
|
import { matchEntry } from "../common/utils";
|
|
14
|
-
import { transformNestedRoutes } from "./nestedRoutes";
|
|
15
15
|
import { createDeferredReadableStream } from "./response";
|
|
16
16
|
installGlobals();
|
|
17
17
|
const redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "0.0.0-next-
|
|
14
|
+
"version": "0.0.0-next-1680093705168",
|
|
15
15
|
"engines": {
|
|
16
16
|
"node": ">=14.17.6"
|
|
17
17
|
},
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@remix-run/node": "^1.12.0",
|
|
56
56
|
"path-to-regexp": "^6.2.0",
|
|
57
57
|
"react-router-dom": "^6.8.1",
|
|
58
|
-
"@modern-js/utils": "0.0.0-next-
|
|
58
|
+
"@modern-js/utils": "0.0.0-next-1680093705168"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/babel__core": "^7.1.15",
|
|
@@ -72,11 +72,11 @@
|
|
|
72
72
|
"webpack-chain": "^6.5.1",
|
|
73
73
|
"react": ">=17.0.0",
|
|
74
74
|
"react-router-dom": "^6.8.1",
|
|
75
|
-
"@modern-js/core": "0.0.0-next-
|
|
76
|
-
"@modern-js/server-core": "0.0.0-next-
|
|
77
|
-
"@modern-js/types": "0.0.0-next-
|
|
78
|
-
"@scripts/build": "0.0.0-next-
|
|
79
|
-
"@scripts/jest-config": "0.0.0-next-
|
|
75
|
+
"@modern-js/core": "0.0.0-next-1680093705168",
|
|
76
|
+
"@modern-js/server-core": "0.0.0-next-1680093705168",
|
|
77
|
+
"@modern-js/types": "0.0.0-next-1680093705168",
|
|
78
|
+
"@scripts/build": "0.0.0-next-1680093705168",
|
|
79
|
+
"@scripts/jest-config": "0.0.0-next-1680093705168"
|
|
80
80
|
},
|
|
81
81
|
"peerDependencies": {
|
|
82
82
|
"react": ">=17.0.0",
|
|
@@ -1,114 +0,0 @@
|
|
|
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 });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var nestedRoutes_exports = {};
|
|
19
|
-
__export(nestedRoutes_exports, {
|
|
20
|
-
renderNestedRoute: () => renderNestedRoute,
|
|
21
|
-
transformNestedRoutes: () => transformNestedRoutes
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(nestedRoutes_exports);
|
|
24
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
|
-
var import_react = require("react");
|
|
26
|
-
var import_react_router_dom = require("react-router-dom");
|
|
27
|
-
const transformNestedRoutes = (routes) => {
|
|
28
|
-
const routeElements = [];
|
|
29
|
-
for (const route of routes) {
|
|
30
|
-
const routeElement = renderNestedRoute(route);
|
|
31
|
-
routeElements.push(routeElement);
|
|
32
|
-
}
|
|
33
|
-
return (0, import_react_router_dom.createRoutesFromElements)(routeElements);
|
|
34
|
-
};
|
|
35
|
-
const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
36
|
-
const { children, index, id, component, isRoot, lazyImport } = nestedRoute;
|
|
37
|
-
const Component = component;
|
|
38
|
-
const { parent, DeferredDataComponent } = options;
|
|
39
|
-
const routeProps = {
|
|
40
|
-
caseSensitive: nestedRoute.caseSensitive,
|
|
41
|
-
path: nestedRoute.path,
|
|
42
|
-
id: nestedRoute.id,
|
|
43
|
-
loader: createLoader(nestedRoute),
|
|
44
|
-
action: nestedRoute.action,
|
|
45
|
-
hasErrorBoundary: nestedRoute.hasErrorBoundary,
|
|
46
|
-
shouldRevalidate: nestedRoute.shouldRevalidate,
|
|
47
|
-
handle: nestedRoute.handle,
|
|
48
|
-
index: nestedRoute.index,
|
|
49
|
-
element: nestedRoute.element,
|
|
50
|
-
errorElement: nestedRoute.errorElement
|
|
51
|
-
};
|
|
52
|
-
if (nestedRoute.error) {
|
|
53
|
-
const errorElement = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(nestedRoute.error, {});
|
|
54
|
-
routeProps.errorElement = errorElement;
|
|
55
|
-
}
|
|
56
|
-
let element;
|
|
57
|
-
if (Component) {
|
|
58
|
-
if ((parent == null ? void 0 : parent.loading) && lazyImport) {
|
|
59
|
-
const Loading = parent.loading;
|
|
60
|
-
if (isLoadableComponent(Component)) {
|
|
61
|
-
element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Loading, {}) });
|
|
62
|
-
} else {
|
|
63
|
-
element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Loading, {}), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, {}) });
|
|
64
|
-
}
|
|
65
|
-
} else if (isLoadableComponent(Component) && lazyImport) {
|
|
66
|
-
element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, {});
|
|
67
|
-
} else if (isRoot) {
|
|
68
|
-
element = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
69
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, {}),
|
|
70
|
-
typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DeferredDataComponent, {})
|
|
71
|
-
] });
|
|
72
|
-
} else if (lazyImport) {
|
|
73
|
-
element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, { fallback: null, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, {}) });
|
|
74
|
-
} else {
|
|
75
|
-
element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, {});
|
|
76
|
-
}
|
|
77
|
-
} else {
|
|
78
|
-
nestedRoute.loading = parent == null ? void 0 : parent.loading;
|
|
79
|
-
}
|
|
80
|
-
if (element) {
|
|
81
|
-
routeProps.element = element;
|
|
82
|
-
}
|
|
83
|
-
const childElements = children == null ? void 0 : children.map((childRoute) => {
|
|
84
|
-
return renderNestedRoute(childRoute, { parent: nestedRoute });
|
|
85
|
-
});
|
|
86
|
-
const routeElement = index ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_router_dom.Route, { ...routeProps, index: true }, id) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_router_dom.Route, { ...routeProps, index: false, children: childElements }, id);
|
|
87
|
-
return routeElement;
|
|
88
|
-
};
|
|
89
|
-
function createLoader(route) {
|
|
90
|
-
const { loader } = route;
|
|
91
|
-
if (loader) {
|
|
92
|
-
return (args) => {
|
|
93
|
-
if (typeof route.lazyImport === "function") {
|
|
94
|
-
route.lazyImport();
|
|
95
|
-
}
|
|
96
|
-
return loader(args);
|
|
97
|
-
};
|
|
98
|
-
} else {
|
|
99
|
-
return () => {
|
|
100
|
-
if (typeof route.lazyImport === "function") {
|
|
101
|
-
route.lazyImport();
|
|
102
|
-
}
|
|
103
|
-
return null;
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
function isLoadableComponent(component) {
|
|
108
|
-
return component && component.displayName === "Loadable" && component.preload && typeof component.preload === "function";
|
|
109
|
-
}
|
|
110
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
111
|
-
0 && (module.exports = {
|
|
112
|
-
renderNestedRoute,
|
|
113
|
-
transformNestedRoutes
|
|
114
|
-
});
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) {
|
|
2
|
-
if (key in obj) {
|
|
3
|
-
Object.defineProperty(obj, key, {
|
|
4
|
-
value: value,
|
|
5
|
-
enumerable: true,
|
|
6
|
-
configurable: true,
|
|
7
|
-
writable: true
|
|
8
|
-
});
|
|
9
|
-
} else {
|
|
10
|
-
obj[key] = value;
|
|
11
|
-
}
|
|
12
|
-
return obj;
|
|
13
|
-
}
|
|
14
|
-
function _objectSpread(target) {
|
|
15
|
-
for(var i = 1; i < arguments.length; i++){
|
|
16
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
17
|
-
var ownKeys = Object.keys(source);
|
|
18
|
-
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
19
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
20
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
ownKeys.forEach(function(key) {
|
|
24
|
-
_defineProperty(target, key, source[key]);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
return target;
|
|
28
|
-
}
|
|
29
|
-
function ownKeys(object, enumerableOnly) {
|
|
30
|
-
var keys = Object.keys(object);
|
|
31
|
-
if (Object.getOwnPropertySymbols) {
|
|
32
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
33
|
-
if (enumerableOnly) {
|
|
34
|
-
symbols = symbols.filter(function(sym) {
|
|
35
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
keys.push.apply(keys, symbols);
|
|
39
|
-
}
|
|
40
|
-
return keys;
|
|
41
|
-
}
|
|
42
|
-
function _objectSpreadProps(target, source) {
|
|
43
|
-
source = source != null ? source : {};
|
|
44
|
-
if (Object.getOwnPropertyDescriptors) {
|
|
45
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
46
|
-
} else {
|
|
47
|
-
ownKeys(Object(source)).forEach(function(key) {
|
|
48
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
return target;
|
|
52
|
-
}
|
|
53
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
54
|
-
import { Suspense } from "react";
|
|
55
|
-
import { createRoutesFromElements, Route } from "react-router-dom";
|
|
56
|
-
var transformNestedRoutes = function(routes) {
|
|
57
|
-
var routeElements = [];
|
|
58
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
59
|
-
try {
|
|
60
|
-
for(var _iterator = routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
61
|
-
var route = _step.value;
|
|
62
|
-
var routeElement = renderNestedRoute(route);
|
|
63
|
-
routeElements.push(routeElement);
|
|
64
|
-
}
|
|
65
|
-
} catch (err) {
|
|
66
|
-
_didIteratorError = true;
|
|
67
|
-
_iteratorError = err;
|
|
68
|
-
} finally{
|
|
69
|
-
try {
|
|
70
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
71
|
-
_iterator.return();
|
|
72
|
-
}
|
|
73
|
-
} finally{
|
|
74
|
-
if (_didIteratorError) {
|
|
75
|
-
throw _iteratorError;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return createRoutesFromElements(routeElements);
|
|
80
|
-
};
|
|
81
|
-
var renderNestedRoute = function(nestedRoute) {
|
|
82
|
-
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
83
|
-
var children = nestedRoute.children, index = nestedRoute.index, id = nestedRoute.id, component = nestedRoute.component, isRoot = nestedRoute.isRoot, lazyImport = nestedRoute.lazyImport;
|
|
84
|
-
var Component = component;
|
|
85
|
-
var parent = options.parent, DeferredDataComponent = options.DeferredDataComponent;
|
|
86
|
-
var routeProps = {
|
|
87
|
-
caseSensitive: nestedRoute.caseSensitive,
|
|
88
|
-
path: nestedRoute.path,
|
|
89
|
-
id: nestedRoute.id,
|
|
90
|
-
loader: createLoader(nestedRoute),
|
|
91
|
-
action: nestedRoute.action,
|
|
92
|
-
hasErrorBoundary: nestedRoute.hasErrorBoundary,
|
|
93
|
-
shouldRevalidate: nestedRoute.shouldRevalidate,
|
|
94
|
-
handle: nestedRoute.handle,
|
|
95
|
-
index: nestedRoute.index,
|
|
96
|
-
element: nestedRoute.element,
|
|
97
|
-
errorElement: nestedRoute.errorElement
|
|
98
|
-
};
|
|
99
|
-
if (nestedRoute.error) {
|
|
100
|
-
var errorElement = /* @__PURE__ */ jsx(nestedRoute.error, {});
|
|
101
|
-
routeProps.errorElement = errorElement;
|
|
102
|
-
}
|
|
103
|
-
var element;
|
|
104
|
-
if (Component) {
|
|
105
|
-
if ((parent === null || parent === void 0 ? void 0 : parent.loading) && lazyImport) {
|
|
106
|
-
var Loading = parent.loading;
|
|
107
|
-
if (isLoadableComponent(Component)) {
|
|
108
|
-
element = /* @__PURE__ */ jsx(Component, {
|
|
109
|
-
fallback: /* @__PURE__ */ jsx(Loading, {})
|
|
110
|
-
});
|
|
111
|
-
} else {
|
|
112
|
-
element = /* @__PURE__ */ jsx(Suspense, {
|
|
113
|
-
fallback: /* @__PURE__ */ jsx(Loading, {}),
|
|
114
|
-
children: /* @__PURE__ */ jsx(Component, {})
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
} else if (isLoadableComponent(Component) && lazyImport) {
|
|
118
|
-
element = /* @__PURE__ */ jsx(Component, {});
|
|
119
|
-
} else if (isRoot) {
|
|
120
|
-
element = /* @__PURE__ */ jsxs(Fragment, {
|
|
121
|
-
children: [
|
|
122
|
-
/* @__PURE__ */ jsx(Component, {}),
|
|
123
|
-
typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ jsx(DeferredDataComponent, {})
|
|
124
|
-
]
|
|
125
|
-
});
|
|
126
|
-
} else if (lazyImport) {
|
|
127
|
-
element = /* @__PURE__ */ jsx(Suspense, {
|
|
128
|
-
fallback: null,
|
|
129
|
-
children: /* @__PURE__ */ jsx(Component, {})
|
|
130
|
-
});
|
|
131
|
-
} else {
|
|
132
|
-
element = /* @__PURE__ */ jsx(Component, {});
|
|
133
|
-
}
|
|
134
|
-
} else {
|
|
135
|
-
nestedRoute.loading = parent === null || parent === void 0 ? void 0 : parent.loading;
|
|
136
|
-
}
|
|
137
|
-
if (element) {
|
|
138
|
-
routeProps.element = element;
|
|
139
|
-
}
|
|
140
|
-
var childElements = children === null || children === void 0 ? void 0 : children.map(function(childRoute) {
|
|
141
|
-
return renderNestedRoute(childRoute, {
|
|
142
|
-
parent: nestedRoute
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
var routeElement = index ? /* @__PURE__ */ jsx(Route, _objectSpreadProps(_objectSpread({}, routeProps), {
|
|
146
|
-
index: true
|
|
147
|
-
}), id) : /* @__PURE__ */ jsx(Route, _objectSpreadProps(_objectSpread({}, routeProps), {
|
|
148
|
-
index: false,
|
|
149
|
-
children: childElements
|
|
150
|
-
}), id);
|
|
151
|
-
return routeElement;
|
|
152
|
-
};
|
|
153
|
-
function createLoader(route) {
|
|
154
|
-
var loader = route.loader;
|
|
155
|
-
if (loader) {
|
|
156
|
-
return function(args) {
|
|
157
|
-
if (typeof route.lazyImport === "function") {
|
|
158
|
-
route.lazyImport();
|
|
159
|
-
}
|
|
160
|
-
return loader(args);
|
|
161
|
-
};
|
|
162
|
-
} else {
|
|
163
|
-
return function() {
|
|
164
|
-
if (typeof route.lazyImport === "function") {
|
|
165
|
-
route.lazyImport();
|
|
166
|
-
}
|
|
167
|
-
return null;
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
function isLoadableComponent(component) {
|
|
172
|
-
return component && component.displayName === "Loadable" && component.preload && typeof component.preload === "function";
|
|
173
|
-
}
|
|
174
|
-
export { renderNestedRoute, transformNestedRoutes };
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Suspense } from "react";
|
|
3
|
-
import {
|
|
4
|
-
createRoutesFromElements,
|
|
5
|
-
Route
|
|
6
|
-
} from "react-router-dom";
|
|
7
|
-
const transformNestedRoutes = (routes) => {
|
|
8
|
-
const routeElements = [];
|
|
9
|
-
for (const route of routes) {
|
|
10
|
-
const routeElement = renderNestedRoute(route);
|
|
11
|
-
routeElements.push(routeElement);
|
|
12
|
-
}
|
|
13
|
-
return createRoutesFromElements(routeElements);
|
|
14
|
-
};
|
|
15
|
-
const renderNestedRoute = (nestedRoute, options = {}) => {
|
|
16
|
-
const { children, index, id, component, isRoot, lazyImport } = nestedRoute;
|
|
17
|
-
const Component = component;
|
|
18
|
-
const { parent, DeferredDataComponent } = options;
|
|
19
|
-
const routeProps = {
|
|
20
|
-
caseSensitive: nestedRoute.caseSensitive,
|
|
21
|
-
path: nestedRoute.path,
|
|
22
|
-
id: nestedRoute.id,
|
|
23
|
-
loader: createLoader(nestedRoute),
|
|
24
|
-
action: nestedRoute.action,
|
|
25
|
-
hasErrorBoundary: nestedRoute.hasErrorBoundary,
|
|
26
|
-
shouldRevalidate: nestedRoute.shouldRevalidate,
|
|
27
|
-
handle: nestedRoute.handle,
|
|
28
|
-
index: nestedRoute.index,
|
|
29
|
-
element: nestedRoute.element,
|
|
30
|
-
errorElement: nestedRoute.errorElement
|
|
31
|
-
};
|
|
32
|
-
if (nestedRoute.error) {
|
|
33
|
-
const errorElement = /* @__PURE__ */ jsx(nestedRoute.error, {});
|
|
34
|
-
routeProps.errorElement = errorElement;
|
|
35
|
-
}
|
|
36
|
-
let element;
|
|
37
|
-
if (Component) {
|
|
38
|
-
if ((parent == null ? void 0 : parent.loading) && lazyImport) {
|
|
39
|
-
const Loading = parent.loading;
|
|
40
|
-
if (isLoadableComponent(Component)) {
|
|
41
|
-
element = /* @__PURE__ */ jsx(Component, { fallback: /* @__PURE__ */ jsx(Loading, {}) });
|
|
42
|
-
} else {
|
|
43
|
-
element = /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Loading, {}), children: /* @__PURE__ */ jsx(Component, {}) });
|
|
44
|
-
}
|
|
45
|
-
} else if (isLoadableComponent(Component) && lazyImport) {
|
|
46
|
-
element = /* @__PURE__ */ jsx(Component, {});
|
|
47
|
-
} else if (isRoot) {
|
|
48
|
-
element = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
49
|
-
/* @__PURE__ */ jsx(Component, {}),
|
|
50
|
-
typeof document === "undefined" && DeferredDataComponent && /* @__PURE__ */ jsx(DeferredDataComponent, {})
|
|
51
|
-
] });
|
|
52
|
-
} else if (lazyImport) {
|
|
53
|
-
element = /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Component, {}) });
|
|
54
|
-
} else {
|
|
55
|
-
element = /* @__PURE__ */ jsx(Component, {});
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
nestedRoute.loading = parent == null ? void 0 : parent.loading;
|
|
59
|
-
}
|
|
60
|
-
if (element) {
|
|
61
|
-
routeProps.element = element;
|
|
62
|
-
}
|
|
63
|
-
const childElements = children == null ? void 0 : children.map((childRoute) => {
|
|
64
|
-
return renderNestedRoute(childRoute, { parent: nestedRoute });
|
|
65
|
-
});
|
|
66
|
-
const routeElement = index ? /* @__PURE__ */ jsx(Route, { ...routeProps, index: true }, id) : /* @__PURE__ */ jsx(Route, { ...routeProps, index: false, children: childElements }, id);
|
|
67
|
-
return routeElement;
|
|
68
|
-
};
|
|
69
|
-
function createLoader(route) {
|
|
70
|
-
const { loader } = route;
|
|
71
|
-
if (loader) {
|
|
72
|
-
return (args) => {
|
|
73
|
-
if (typeof route.lazyImport === "function") {
|
|
74
|
-
route.lazyImport();
|
|
75
|
-
}
|
|
76
|
-
return loader(args);
|
|
77
|
-
};
|
|
78
|
-
} else {
|
|
79
|
-
return () => {
|
|
80
|
-
if (typeof route.lazyImport === "function") {
|
|
81
|
-
route.lazyImport();
|
|
82
|
-
}
|
|
83
|
-
return null;
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
function isLoadableComponent(component) {
|
|
88
|
-
return component && component.displayName === "Loadable" && component.preload && typeof component.preload === "function";
|
|
89
|
-
}
|
|
90
|
-
export {
|
|
91
|
-
renderNestedRoute,
|
|
92
|
-
transformNestedRoutes
|
|
93
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { NestedRoute } from '@modern-js/types';
|
|
2
|
-
export declare const transformNestedRoutes: (routes: NestedRoute[]) => import("react-router-dom").RouteObject[];
|
|
3
|
-
export declare const renderNestedRoute: (nestedRoute: NestedRoute, options?: {
|
|
4
|
-
parent?: NestedRoute;
|
|
5
|
-
DeferredDataComponent?: () => JSX.Element | null;
|
|
6
|
-
}) => JSX.Element;
|