@modern-js/runtime 2.0.1 → 2.0.2

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 CHANGED
@@ -1,5 +1,16 @@
1
1
  # @modern-js/runtime
2
2
 
3
+ ## 2.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 39988b2: feat: advance the timing of static resource loading
8
+ feat: 将嵌套路由下静态资源加载时机提前
9
+ - Updated dependencies [39988b2]
10
+ - @modern-js/types@2.0.2
11
+ - @modern-js/utils@2.0.2
12
+ - @modern-js/plugin@2.0.2
13
+
3
14
  ## 2.0.1
4
15
 
5
16
  ### Patch Changes
@@ -33,14 +33,13 @@ import { jsx } from "react/jsx-runtime";
33
33
  import { Suspense } from "react";
34
34
  import { Route } from "react-router-dom";
35
35
  import { DefaultNotFound } from "./DefaultNotFound";
36
- import { RootLayout } from "./root";
37
36
  const renderNestedRoute = (nestedRoute, parent) => {
38
37
  const { children, index, id, component: Component } = nestedRoute;
39
38
  const routeProps = {
40
39
  caseSensitive: nestedRoute.caseSensitive,
41
40
  path: nestedRoute.path,
42
41
  id: nestedRoute.id,
43
- loader: nestedRoute.loader,
42
+ loader: createLoader(nestedRoute),
44
43
  action: nestedRoute.action,
45
44
  hasErrorBoundary: nestedRoute.hasErrorBoundary,
46
45
  shouldRevalidate: nestedRoute.shouldRevalidate,
@@ -71,12 +70,6 @@ const renderNestedRoute = (nestedRoute, parent) => {
71
70
  } else {
72
71
  nestedRoute.loading = parent == null ? void 0 : parent.loading;
73
72
  }
74
- if (!parent && element) {
75
- element = /* @__PURE__ */ jsx(RootLayout, {
76
- routes: [nestedRoute],
77
- children: element
78
- });
79
- }
80
73
  if (element) {
81
74
  routeProps.element = element;
82
75
  }
@@ -165,6 +158,24 @@ function standardSlash(str) {
165
158
  }
166
159
  return addr;
167
160
  }
161
+ function createLoader(route) {
162
+ const { loader } = route;
163
+ if (loader) {
164
+ return (args) => {
165
+ if (typeof route.lazyImport === "function") {
166
+ route.lazyImport();
167
+ }
168
+ return loader(args);
169
+ };
170
+ } else {
171
+ return () => {
172
+ if (typeof route.lazyImport === "function") {
173
+ route.lazyImport();
174
+ }
175
+ return null;
176
+ };
177
+ }
178
+ }
168
179
  export {
169
180
  getLocation,
170
181
  getRouteComponents,
@@ -57,14 +57,13 @@ var import_jsx_runtime = require("react/jsx-runtime");
57
57
  var import_react = require("react");
58
58
  var import_react_router_dom = require("react-router-dom");
59
59
  var import_DefaultNotFound = require("./DefaultNotFound");
60
- var import_root = require("./root");
61
60
  const renderNestedRoute = (nestedRoute, parent) => {
62
61
  const { children, index, id, component: Component } = nestedRoute;
63
62
  const routeProps = {
64
63
  caseSensitive: nestedRoute.caseSensitive,
65
64
  path: nestedRoute.path,
66
65
  id: nestedRoute.id,
67
- loader: nestedRoute.loader,
66
+ loader: createLoader(nestedRoute),
68
67
  action: nestedRoute.action,
69
68
  hasErrorBoundary: nestedRoute.hasErrorBoundary,
70
69
  shouldRevalidate: nestedRoute.shouldRevalidate,
@@ -95,12 +94,6 @@ const renderNestedRoute = (nestedRoute, parent) => {
95
94
  } else {
96
95
  nestedRoute.loading = parent == null ? void 0 : parent.loading;
97
96
  }
98
- if (!parent && element) {
99
- element = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_root.RootLayout, {
100
- routes: [nestedRoute],
101
- children: element
102
- });
103
- }
104
97
  if (element) {
105
98
  routeProps.element = element;
106
99
  }
@@ -189,6 +182,24 @@ function standardSlash(str) {
189
182
  }
190
183
  return addr;
191
184
  }
185
+ function createLoader(route) {
186
+ const { loader } = route;
187
+ if (loader) {
188
+ return (args) => {
189
+ if (typeof route.lazyImport === "function") {
190
+ route.lazyImport();
191
+ }
192
+ return loader(args);
193
+ };
194
+ } else {
195
+ return () => {
196
+ if (typeof route.lazyImport === "function") {
197
+ route.lazyImport();
198
+ }
199
+ return null;
200
+ };
201
+ }
202
+ }
192
203
  // Annotate the CommonJS export names for ESM import in node:
193
204
  0 && (module.exports = {
194
205
  getLocation,
@@ -81,14 +81,13 @@ import { jsx } from "react/jsx-runtime";
81
81
  import { Suspense } from "react";
82
82
  import { Route } from "react-router-dom";
83
83
  import { DefaultNotFound } from "./DefaultNotFound";
84
- import { RootLayout } from "./root";
85
84
  var renderNestedRoute = function(nestedRoute, parent) {
86
85
  var children = nestedRoute.children, index = nestedRoute.index, id = nestedRoute.id, Component = nestedRoute.component;
87
86
  var routeProps = {
88
87
  caseSensitive: nestedRoute.caseSensitive,
89
88
  path: nestedRoute.path,
90
89
  id: nestedRoute.id,
91
- loader: nestedRoute.loader,
90
+ loader: createLoader(nestedRoute),
92
91
  action: nestedRoute.action,
93
92
  hasErrorBoundary: nestedRoute.hasErrorBoundary,
94
93
  shouldRevalidate: nestedRoute.shouldRevalidate,
@@ -119,14 +118,6 @@ var renderNestedRoute = function(nestedRoute, parent) {
119
118
  } else {
120
119
  nestedRoute.loading = parent === null || parent === void 0 ? void 0 : parent.loading;
121
120
  }
122
- if (!parent && element) {
123
- element = /* @__PURE__ */ jsx(RootLayout, {
124
- routes: [
125
- nestedRoute
126
- ],
127
- children: element
128
- });
129
- }
130
121
  if (element) {
131
122
  routeProps.element = element;
132
123
  }
@@ -237,4 +228,22 @@ function standardSlash(str) {
237
228
  }
238
229
  return addr;
239
230
  }
231
+ function createLoader(route) {
232
+ var loader = route.loader;
233
+ if (loader) {
234
+ return function(args) {
235
+ if (typeof route.lazyImport === "function") {
236
+ route.lazyImport();
237
+ }
238
+ return loader(args);
239
+ };
240
+ } else {
241
+ return function() {
242
+ if (typeof route.lazyImport === "function") {
243
+ route.lazyImport();
244
+ }
245
+ return null;
246
+ };
247
+ }
248
+ }
240
249
  export { getLocation, getRouteComponents, renderRoutes, standardSlash, urlJoin };
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "2.0.1",
14
+ "version": "2.0.2",
15
15
  "engines": {
16
16
  "node": ">=14.17.6"
17
17
  },
@@ -155,9 +155,9 @@
155
155
  "redux-logger": "^3.0.6",
156
156
  "serialize-javascript": "^6.0.0",
157
157
  "styled-components": "^5.3.1",
158
- "@modern-js/plugin": "2.0.1",
159
- "@modern-js/types": "2.0.1",
160
- "@modern-js/utils": "2.0.1"
158
+ "@modern-js/types": "2.0.2",
159
+ "@modern-js/utils": "2.0.2",
160
+ "@modern-js/plugin": "2.0.2"
161
161
  },
162
162
  "peerDependencies": {
163
163
  "react": ">=17",
@@ -178,11 +178,11 @@
178
178
  "react-dom": "^18",
179
179
  "ts-jest": "^27.0.4",
180
180
  "typescript": "^4",
181
- "@modern-js/app-tools": "2.0.1",
182
- "@modern-js/core": "2.0.1",
183
- "@modern-js/server-core": "2.0.1",
184
- "@scripts/jest-config": "2.0.1",
185
- "@scripts/build": "2.0.1"
181
+ "@modern-js/core": "2.0.2",
182
+ "@modern-js/app-tools": "2.0.2",
183
+ "@modern-js/server-core": "2.0.2",
184
+ "@scripts/build": "2.0.2",
185
+ "@scripts/jest-config": "2.0.2"
186
186
  },
187
187
  "sideEffects": false,
188
188
  "modernConfig": {},
@@ -1,19 +0,0 @@
1
- import { Fragment, jsx } from "react/jsx-runtime";
2
- import { useContext, useEffect } from "react";
3
- import { useLocation } from "react-router-dom";
4
- import { RuntimeReactContext } from "../../../core";
5
- import { handleLoad } from "./load";
6
- function RootLayout(props) {
7
- const location = useLocation();
8
- const context = useContext(RuntimeReactContext);
9
- useEffect(() => {
10
- const { routes } = props;
11
- handleLoad(routes, location, context.routeManifest);
12
- }, [location]);
13
- return /* @__PURE__ */ jsx(Fragment, {
14
- children: props.children
15
- });
16
- }
17
- export {
18
- RootLayout
19
- };
@@ -1,82 +0,0 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
- import { matchRoutes } from "react-router-dom";
22
- class Logger {
23
- static getLogger(options) {
24
- if (this.logger) {
25
- return this.logger;
26
- }
27
- this.logger = new Logger(options);
28
- return this.logger;
29
- }
30
- constructor(options) {
31
- this.enableLogging = options.enableLogging;
32
- }
33
- log(...args) {
34
- if (this.enableLogging) {
35
- console.log(...args);
36
- }
37
- }
38
- }
39
- function handleLoad(routes, location, routeManifest) {
40
- if (!routeManifest || !routeManifest.enableFetchParallel === false) {
41
- return;
42
- }
43
- const { routeAssets } = routeManifest;
44
- Logger.getLogger({ enableLogging: routeManifest.enableLogging }).log(
45
- "handle page load"
46
- );
47
- const matches = matchClientRoutes(routes, location);
48
- matches == null ? void 0 : matches.forEach((match) => loadRouteModule(match.route, routeAssets));
49
- }
50
- function matchClientRoutes(routes, location) {
51
- const matches = matchRoutes(routes, location);
52
- return matches;
53
- }
54
- function loadRouteModule(route, routeAssets) {
55
- return __async(this, null, function* () {
56
- const routeId = route.id;
57
- if (!routeId) {
58
- return;
59
- }
60
- if (!routeAssets[routeId]) {
61
- return;
62
- }
63
- const { chunkIds } = routeAssets[routeId];
64
- if (!chunkIds) {
65
- return;
66
- }
67
- try {
68
- yield Promise.all(
69
- chunkIds.map((chunkId) => {
70
- return __webpack_chunk_load__(String(chunkId));
71
- })
72
- );
73
- } catch (error) {
74
- console.error(error);
75
- }
76
- });
77
- }
78
- export {
79
- handleLoad,
80
- loadRouteModule,
81
- matchClientRoutes
82
- };
@@ -1,42 +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 root_exports = {};
19
- __export(root_exports, {
20
- RootLayout: () => RootLayout
21
- });
22
- module.exports = __toCommonJS(root_exports);
23
- var import_jsx_runtime = require("react/jsx-runtime");
24
- var import_react = require("react");
25
- var import_react_router_dom = require("react-router-dom");
26
- var import_core = require("../../../core");
27
- var import_load = require("./load");
28
- function RootLayout(props) {
29
- const location = (0, import_react_router_dom.useLocation)();
30
- const context = (0, import_react.useContext)(import_core.RuntimeReactContext);
31
- (0, import_react.useEffect)(() => {
32
- const { routes } = props;
33
- (0, import_load.handleLoad)(routes, location, context.routeManifest);
34
- }, [location]);
35
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
36
- children: props.children
37
- });
38
- }
39
- // Annotate the CommonJS export names for ESM import in node:
40
- 0 && (module.exports = {
41
- RootLayout
42
- });
@@ -1,107 +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 __async = (__this, __arguments, generator) => {
19
- return new Promise((resolve, reject) => {
20
- var fulfilled = (value) => {
21
- try {
22
- step(generator.next(value));
23
- } catch (e) {
24
- reject(e);
25
- }
26
- };
27
- var rejected = (value) => {
28
- try {
29
- step(generator.throw(value));
30
- } catch (e) {
31
- reject(e);
32
- }
33
- };
34
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
35
- step((generator = generator.apply(__this, __arguments)).next());
36
- });
37
- };
38
- var load_exports = {};
39
- __export(load_exports, {
40
- handleLoad: () => handleLoad,
41
- loadRouteModule: () => loadRouteModule,
42
- matchClientRoutes: () => matchClientRoutes
43
- });
44
- module.exports = __toCommonJS(load_exports);
45
- var import_react_router_dom = require("react-router-dom");
46
- class Logger {
47
- static getLogger(options) {
48
- if (this.logger) {
49
- return this.logger;
50
- }
51
- this.logger = new Logger(options);
52
- return this.logger;
53
- }
54
- constructor(options) {
55
- this.enableLogging = options.enableLogging;
56
- }
57
- log(...args) {
58
- if (this.enableLogging) {
59
- console.log(...args);
60
- }
61
- }
62
- }
63
- function handleLoad(routes, location, routeManifest) {
64
- if (!routeManifest || !routeManifest.enableFetchParallel === false) {
65
- return;
66
- }
67
- const { routeAssets } = routeManifest;
68
- Logger.getLogger({ enableLogging: routeManifest.enableLogging }).log(
69
- "handle page load"
70
- );
71
- const matches = matchClientRoutes(routes, location);
72
- matches == null ? void 0 : matches.forEach((match) => loadRouteModule(match.route, routeAssets));
73
- }
74
- function matchClientRoutes(routes, location) {
75
- const matches = (0, import_react_router_dom.matchRoutes)(routes, location);
76
- return matches;
77
- }
78
- function loadRouteModule(route, routeAssets) {
79
- return __async(this, null, function* () {
80
- const routeId = route.id;
81
- if (!routeId) {
82
- return;
83
- }
84
- if (!routeAssets[routeId]) {
85
- return;
86
- }
87
- const { chunkIds } = routeAssets[routeId];
88
- if (!chunkIds) {
89
- return;
90
- }
91
- try {
92
- yield Promise.all(
93
- chunkIds.map((chunkId) => {
94
- return __webpack_chunk_load__(String(chunkId));
95
- })
96
- );
97
- } catch (error) {
98
- console.error(error);
99
- }
100
- });
101
- }
102
- // Annotate the CommonJS export names for ESM import in node:
103
- 0 && (module.exports = {
104
- handleLoad,
105
- loadRouteModule,
106
- matchClientRoutes
107
- });
@@ -1,19 +0,0 @@
1
- import { Fragment, jsx } from "react/jsx-runtime";
2
- import { useContext, useEffect } from "react";
3
- import { useLocation } from "react-router-dom";
4
- import { RuntimeReactContext } from "../../../core";
5
- import { handleLoad } from "./load";
6
- function RootLayout(props) {
7
- var location = useLocation();
8
- var context = useContext(RuntimeReactContext);
9
- useEffect(function() {
10
- var routes = props.routes;
11
- handleLoad(routes, location, context.routeManifest);
12
- }, [
13
- location
14
- ]);
15
- return /* @__PURE__ */ jsx(Fragment, {
16
- children: props.children
17
- });
18
- }
19
- export { RootLayout };
@@ -1,297 +0,0 @@
1
- function _arrayLikeToArray(arr, len) {
2
- if (len == null || len > arr.length) len = arr.length;
3
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
- return arr2;
5
- }
6
- function _arrayWithoutHoles(arr) {
7
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
8
- }
9
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
- try {
11
- var info = gen[key](arg);
12
- var value = info.value;
13
- } catch (error) {
14
- reject(error);
15
- return;
16
- }
17
- if (info.done) {
18
- resolve(value);
19
- } else {
20
- Promise.resolve(value).then(_next, _throw);
21
- }
22
- }
23
- function _asyncToGenerator(fn) {
24
- return function() {
25
- var self = this, args = arguments;
26
- return new Promise(function(resolve, reject) {
27
- var gen = fn.apply(self, args);
28
- function _next(value) {
29
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
- }
31
- function _throw(err) {
32
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
- }
34
- _next(undefined);
35
- });
36
- };
37
- }
38
- function _classCallCheck(instance, Constructor) {
39
- if (!(instance instanceof Constructor)) {
40
- throw new TypeError("Cannot call a class as a function");
41
- }
42
- }
43
- function _defineProperties(target, props) {
44
- for(var i = 0; i < props.length; i++){
45
- var descriptor = props[i];
46
- descriptor.enumerable = descriptor.enumerable || false;
47
- descriptor.configurable = true;
48
- if ("value" in descriptor) descriptor.writable = true;
49
- Object.defineProperty(target, descriptor.key, descriptor);
50
- }
51
- }
52
- function _createClass(Constructor, protoProps, staticProps) {
53
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
54
- if (staticProps) _defineProperties(Constructor, staticProps);
55
- return Constructor;
56
- }
57
- function _defineProperty(obj, key, value) {
58
- if (key in obj) {
59
- Object.defineProperty(obj, key, {
60
- value: value,
61
- enumerable: true,
62
- configurable: true,
63
- writable: true
64
- });
65
- } else {
66
- obj[key] = value;
67
- }
68
- return obj;
69
- }
70
- function _iterableToArray(iter) {
71
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
72
- }
73
- function _nonIterableSpread() {
74
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
75
- }
76
- function _toConsumableArray(arr) {
77
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
78
- }
79
- function _unsupportedIterableToArray(o, minLen) {
80
- if (!o) return;
81
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
82
- var n = Object.prototype.toString.call(o).slice(8, -1);
83
- if (n === "Object" && o.constructor) n = o.constructor.name;
84
- if (n === "Map" || n === "Set") return Array.from(n);
85
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
86
- }
87
- var __generator = this && this.__generator || function(thisArg, body) {
88
- var f, y, t, g, _ = {
89
- label: 0,
90
- sent: function() {
91
- if (t[0] & 1) throw t[1];
92
- return t[1];
93
- },
94
- trys: [],
95
- ops: []
96
- };
97
- return g = {
98
- next: verb(0),
99
- "throw": verb(1),
100
- "return": verb(2)
101
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
102
- return this;
103
- }), g;
104
- function verb(n) {
105
- return function(v) {
106
- return step([
107
- n,
108
- v
109
- ]);
110
- };
111
- }
112
- function step(op) {
113
- if (f) throw new TypeError("Generator is already executing.");
114
- while(_)try {
115
- 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;
116
- if (y = 0, t) op = [
117
- op[0] & 2,
118
- t.value
119
- ];
120
- switch(op[0]){
121
- case 0:
122
- case 1:
123
- t = op;
124
- break;
125
- case 4:
126
- _.label++;
127
- return {
128
- value: op[1],
129
- done: false
130
- };
131
- case 5:
132
- _.label++;
133
- y = op[1];
134
- op = [
135
- 0
136
- ];
137
- continue;
138
- case 7:
139
- op = _.ops.pop();
140
- _.trys.pop();
141
- continue;
142
- default:
143
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
144
- _ = 0;
145
- continue;
146
- }
147
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
148
- _.label = op[1];
149
- break;
150
- }
151
- if (op[0] === 6 && _.label < t[1]) {
152
- _.label = t[1];
153
- t = op;
154
- break;
155
- }
156
- if (t && _.label < t[2]) {
157
- _.label = t[2];
158
- _.ops.push(op);
159
- break;
160
- }
161
- if (t[2]) _.ops.pop();
162
- _.trys.pop();
163
- continue;
164
- }
165
- op = body.call(thisArg, _);
166
- } catch (e) {
167
- op = [
168
- 6,
169
- e
170
- ];
171
- y = 0;
172
- } finally{
173
- f = t = 0;
174
- }
175
- if (op[0] & 5) throw op[1];
176
- return {
177
- value: op[0] ? op[1] : void 0,
178
- done: true
179
- };
180
- }
181
- };
182
- import { matchRoutes } from "react-router-dom";
183
- var Logger = /*#__PURE__*/ function() {
184
- "use strict";
185
- function Logger(options) {
186
- _classCallCheck(this, Logger);
187
- _defineProperty(this, "enableLogging", void 0);
188
- this.enableLogging = options.enableLogging;
189
- }
190
- _createClass(Logger, [
191
- {
192
- key: "log",
193
- value: function log() {
194
- for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
195
- args[_key] = arguments[_key];
196
- }
197
- if (this.enableLogging) {
198
- var _console;
199
- (_console = console).log.apply(_console, _toConsumableArray(args));
200
- }
201
- }
202
- }
203
- ], [
204
- {
205
- key: "getLogger",
206
- value: function getLogger(options) {
207
- if (this.logger) {
208
- return this.logger;
209
- }
210
- this.logger = new Logger(options);
211
- return this.logger;
212
- }
213
- }
214
- ]);
215
- return Logger;
216
- }();
217
- _defineProperty(Logger, "logger", void 0);
218
- function handleLoad(routes, location, routeManifest) {
219
- if (!routeManifest || !routeManifest.enableFetchParallel === false) {
220
- return;
221
- }
222
- var routeAssets = routeManifest.routeAssets;
223
- Logger.getLogger({
224
- enableLogging: routeManifest.enableLogging
225
- }).log("handle page load");
226
- var matches = matchClientRoutes(routes, location);
227
- matches === null || matches === void 0 ? void 0 : matches.forEach(function(match) {
228
- return loadRouteModule(match.route, routeAssets);
229
- });
230
- }
231
- function matchClientRoutes(routes, location) {
232
- var matches = matchRoutes(routes, location);
233
- return matches;
234
- }
235
- function loadRouteModule(route, routeAssets) {
236
- return _loadRouteModule.apply(this, arguments);
237
- }
238
- function _loadRouteModule() {
239
- _loadRouteModule = _asyncToGenerator(function(route, routeAssets) {
240
- var routeId, chunkIds, error;
241
- return __generator(this, function(_state) {
242
- switch(_state.label){
243
- case 0:
244
- routeId = route.id;
245
- if (!routeId) {
246
- return [
247
- 2
248
- ];
249
- }
250
- if (!routeAssets[routeId]) {
251
- return [
252
- 2
253
- ];
254
- }
255
- chunkIds = routeAssets[routeId].chunkIds;
256
- if (!chunkIds) {
257
- return [
258
- 2
259
- ];
260
- }
261
- _state.label = 1;
262
- case 1:
263
- _state.trys.push([
264
- 1,
265
- 3,
266
- ,
267
- 4
268
- ]);
269
- return [
270
- 4,
271
- Promise.all(chunkIds.map(function(chunkId) {
272
- return __webpack_chunk_load__(String(chunkId));
273
- }))
274
- ];
275
- case 2:
276
- _state.sent();
277
- return [
278
- 3,
279
- 4
280
- ];
281
- case 3:
282
- error = _state.sent();
283
- console.error(error);
284
- return [
285
- 3,
286
- 4
287
- ];
288
- case 4:
289
- return [
290
- 2
291
- ];
292
- }
293
- });
294
- });
295
- return _loadRouteModule.apply(this, arguments);
296
- }
297
- export { handleLoad, loadRouteModule, matchClientRoutes };
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import type { NestedRoute } from '@modern-js/types';
3
- interface IProps {
4
- children: React.ReactNode;
5
- routes: NestedRoute[];
6
- }
7
- export declare function RootLayout(props: IProps): JSX.Element;
8
- export {};
@@ -1,22 +0,0 @@
1
- import { Location, Params } from 'react-router-dom';
2
- import type { NestedRoute } from '@modern-js/types';
3
- interface RouteAssets {
4
- [routeId: string]: {
5
- chunkIds?: (string | number)[];
6
- assets?: string[];
7
- };
8
- }
9
- interface RouteManifest {
10
- routeAssets: RouteAssets;
11
- enableFetchParallel?: boolean;
12
- enableLogging?: boolean;
13
- }
14
- export interface RouteMatch<Route> {
15
- params: Params;
16
- pathname: string;
17
- route: Route;
18
- }
19
- export declare function handleLoad(routes: NestedRoute[], location: Location, routeManifest: RouteManifest): void;
20
- export declare function matchClientRoutes(routes: NestedRoute[], location: Location): RouteMatch<NestedRoute>[];
21
- export declare function loadRouteModule(route: NestedRoute, routeAssets: RouteAssets): Promise<string[] | void>;
22
- export {};