@modern-js/prod-server 2.0.0-beta.3 → 2.0.0-beta.6
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 +139 -0
- package/dist/js/modern/constants.js +32 -25
- package/dist/js/modern/index.js +11 -6
- package/dist/js/modern/libs/context/context.js +52 -84
- package/dist/js/modern/libs/context/index.js +5 -2
- package/dist/js/modern/libs/hook-api/index.js +44 -35
- package/dist/js/modern/libs/hook-api/route.js +6 -7
- package/dist/js/modern/libs/hook-api/template.js +20 -34
- package/dist/js/modern/libs/loadConfig.js +45 -24
- package/dist/js/modern/libs/metrics.js +3 -4
- package/dist/js/modern/libs/proxy.js +68 -37
- package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +112 -67
- package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +246 -216
- package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +43 -49
- package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +36 -34
- package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +83 -113
- package/dist/js/modern/libs/render/cache/index.js +88 -54
- package/dist/js/modern/libs/render/cache/page-caches/index.js +31 -8
- package/dist/js/modern/libs/render/cache/page-caches/lru.js +6 -6
- package/dist/js/modern/libs/render/cache/spr.js +133 -117
- package/dist/js/modern/libs/render/cache/type.js +0 -1
- package/dist/js/modern/libs/render/cache/util.js +71 -39
- package/dist/js/modern/libs/render/index.js +76 -56
- package/dist/js/modern/libs/render/measure.js +38 -27
- package/dist/js/modern/libs/render/reader.js +65 -62
- package/dist/js/modern/libs/render/ssr.js +50 -32
- package/dist/js/modern/libs/render/static.js +50 -33
- package/dist/js/modern/libs/render/type.js +9 -6
- package/dist/js/modern/libs/route/index.js +8 -15
- package/dist/js/modern/libs/route/matcher.js +20 -34
- package/dist/js/modern/libs/route/route.js +9 -18
- package/dist/js/modern/libs/serve-file.js +33 -20
- package/dist/js/modern/server/index.js +150 -145
- package/dist/js/modern/server/modern-server-split.js +46 -12
- package/dist/js/modern/server/modern-server.js +384 -422
- package/dist/js/modern/type.js +0 -1
- package/dist/js/modern/utils.js +62 -43
- package/dist/js/modern/worker-server.js +34 -14
- package/dist/js/node/constants.js +53 -30
- package/dist/js/node/index.js +37 -57
- package/dist/js/node/libs/context/context.js +83 -94
- package/dist/js/node/libs/context/index.js +28 -13
- package/dist/js/node/libs/hook-api/index.js +76 -48
- package/dist/js/node/libs/hook-api/route.js +26 -11
- package/dist/js/node/libs/hook-api/template.js +41 -39
- package/dist/js/node/libs/loadConfig.js +73 -35
- package/dist/js/node/libs/metrics.js +25 -9
- package/dist/js/node/libs/proxy.js +89 -44
- package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +99 -56
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +147 -128
- package/dist/js/node/libs/render/cache/__tests__/cacheable.js +65 -55
- package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +58 -40
- package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +105 -119
- package/dist/js/node/libs/render/cache/index.js +110 -64
- package/dist/js/node/libs/render/cache/page-caches/index.js +54 -14
- package/dist/js/node/libs/render/cache/page-caches/lru.js +33 -12
- package/dist/js/node/libs/render/cache/spr.js +161 -129
- package/dist/js/node/libs/render/cache/type.js +15 -5
- package/dist/js/node/libs/render/cache/util.js +99 -45
- package/dist/js/node/libs/render/index.js +106 -67
- package/dist/js/node/libs/render/measure.js +58 -31
- package/dist/js/node/libs/render/reader.js +95 -70
- package/dist/js/node/libs/render/ssr.js +80 -47
- package/dist/js/node/libs/render/static.js +79 -40
- package/dist/js/node/libs/render/type.js +31 -12
- package/dist/js/node/libs/route/index.js +31 -26
- package/dist/js/node/libs/route/matcher.js +40 -41
- package/dist/js/node/libs/route/route.js +29 -22
- package/dist/js/node/libs/serve-file.js +66 -32
- package/dist/js/node/server/index.js +168 -160
- package/dist/js/node/server/modern-server-split.js +72 -22
- package/dist/js/node/server/modern-server.js +403 -445
- package/dist/js/node/type.js +15 -3
- package/dist/js/node/utils.js +85 -52
- package/dist/js/node/worker-server.js +57 -21
- package/dist/js/treeshaking/constants.js +26 -25
- package/dist/js/treeshaking/index.js +10 -10
- package/dist/js/treeshaking/libs/context/context.js +268 -237
- package/dist/js/treeshaking/libs/context/index.js +3 -3
- package/dist/js/treeshaking/libs/hook-api/index.js +267 -143
- package/dist/js/treeshaking/libs/hook-api/route.js +65 -30
- package/dist/js/treeshaking/libs/hook-api/template.js +121 -85
- package/dist/js/treeshaking/libs/loadConfig.js +80 -37
- package/dist/js/treeshaking/libs/metrics.js +4 -10
- package/dist/js/treeshaking/libs/proxy.js +240 -76
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +288 -121
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +772 -455
- package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +65 -51
- package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +45 -35
- package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +144 -118
- package/dist/js/treeshaking/libs/render/cache/index.js +337 -175
- package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +151 -27
- package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +80 -42
- package/dist/js/treeshaking/libs/render/cache/spr.js +470 -340
- package/dist/js/treeshaking/libs/render/cache/type.js +1 -1
- package/dist/js/treeshaking/libs/render/cache/util.js +271 -92
- package/dist/js/treeshaking/libs/render/index.js +228 -95
- package/dist/js/treeshaking/libs/render/measure.js +142 -57
- package/dist/js/treeshaking/libs/render/reader.js +325 -177
- package/dist/js/treeshaking/libs/render/ssr.js +220 -95
- package/dist/js/treeshaking/libs/render/static.js +210 -78
- package/dist/js/treeshaking/libs/render/type.js +7 -6
- package/dist/js/treeshaking/libs/route/index.js +125 -89
- package/dist/js/treeshaking/libs/route/matcher.js +132 -107
- package/dist/js/treeshaking/libs/route/route.js +40 -26
- package/dist/js/treeshaking/libs/serve-file.js +177 -68
- package/dist/js/treeshaking/server/index.js +493 -327
- package/dist/js/treeshaking/server/modern-server-split.js +352 -144
- package/dist/js/treeshaking/server/modern-server.js +1048 -909
- package/dist/js/treeshaking/type.js +1 -1
- package/dist/js/treeshaking/utils.js +138 -81
- package/dist/js/treeshaking/worker-server.js +176 -55
- package/dist/types/index.d.ts +2 -0
- package/dist/types/libs/context/context.d.ts +4 -1
- package/dist/types/libs/loadConfig.d.ts +1 -0
- package/dist/types/libs/render/cache/index.d.ts +2 -0
- package/dist/types/libs/render/cache/spr.d.ts +2 -0
- package/dist/types/libs/route/route.d.ts +0 -1
- package/dist/types/server/index.d.ts +3 -0
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/worker-server.d.ts +1 -2
- package/package.json +7 -14
- package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
- package/dist/js/modern/libs/render/modern/index.js +0 -37
- package/dist/js/node/libs/render/modern/browser-list.js +0 -14
- package/dist/js/node/libs/render/modern/index.js +0 -46
- package/dist/js/treeshaking/libs/render/modern/browser-list.js +0 -7
- package/dist/js/treeshaking/libs/render/modern/index.js +0 -39
- package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
- package/dist/types/libs/render/modern/index.d.ts +0 -3
|
@@ -1,50 +1,89 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var __async = (__this, __arguments, generator) => {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
var fulfilled = (value) => {
|
|
27
|
+
try {
|
|
28
|
+
step(generator.next(value));
|
|
29
|
+
} catch (e) {
|
|
30
|
+
reject(e);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var rejected = (value) => {
|
|
34
|
+
try {
|
|
35
|
+
step(generator.throw(value));
|
|
36
|
+
} catch (e) {
|
|
37
|
+
reject(e);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
41
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var static_exports = {};
|
|
45
|
+
__export(static_exports, {
|
|
46
|
+
handleDirectory: () => handleDirectory
|
|
5
47
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!content) {
|
|
28
|
-
content = await (0, _reader.readFile)(`${filepath}/index.html`);
|
|
48
|
+
module.exports = __toCommonJS(static_exports);
|
|
49
|
+
var import_path = __toESM(require("path"));
|
|
50
|
+
var import_utils = require("@modern-js/utils");
|
|
51
|
+
var import_reader = require("./reader");
|
|
52
|
+
function handleDirectory(ctx, entryPath, urlPath) {
|
|
53
|
+
return __async(this, null, function* () {
|
|
54
|
+
const { path: pathname } = ctx;
|
|
55
|
+
const filepath = import_path.default.join(entryPath, trimLeft(pathname, urlPath));
|
|
56
|
+
let content = yield (0, import_reader.readFile)(filepath);
|
|
57
|
+
let contentType = import_utils.mime.contentType(import_path.default.extname(filepath) || "");
|
|
58
|
+
if (!content) {
|
|
59
|
+
if (pathname.endsWith("/")) {
|
|
60
|
+
content = yield (0, import_reader.readFile)(`${filepath}index.html`);
|
|
61
|
+
} else if (!pathname.includes(".")) {
|
|
62
|
+
content = yield (0, import_reader.readFile)(`${filepath}.html`);
|
|
63
|
+
if (!content) {
|
|
64
|
+
content = yield (0, import_reader.readFile)(`${filepath}/index.html`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (content) {
|
|
68
|
+
contentType = import_utils.mime.contentType("html");
|
|
29
69
|
}
|
|
30
70
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (content) {
|
|
34
|
-
contentType = _utils.mime.contentType('html');
|
|
71
|
+
if (!content) {
|
|
72
|
+
return null;
|
|
35
73
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
content,
|
|
42
|
-
contentType: contentType || ''
|
|
43
|
-
};
|
|
74
|
+
return {
|
|
75
|
+
content,
|
|
76
|
+
contentType: contentType || ""
|
|
77
|
+
};
|
|
78
|
+
});
|
|
44
79
|
}
|
|
45
80
|
const trimLeft = (str, prefix) => {
|
|
46
81
|
if (str.startsWith(prefix)) {
|
|
47
82
|
return str.substring(prefix.length);
|
|
48
83
|
}
|
|
49
84
|
return str;
|
|
50
|
-
};
|
|
85
|
+
};
|
|
86
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
87
|
+
0 && (module.exports = {
|
|
88
|
+
handleDirectory
|
|
89
|
+
});
|
|
@@ -1,13 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
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 type_exports = {};
|
|
19
|
+
__export(type_exports, {
|
|
20
|
+
RenderLevel: () => RenderLevel
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(type_exports);
|
|
23
|
+
var RenderLevel = /* @__PURE__ */ ((RenderLevel2) => {
|
|
24
|
+
RenderLevel2[RenderLevel2["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
|
|
25
|
+
RenderLevel2[RenderLevel2["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
|
|
26
|
+
RenderLevel2[RenderLevel2["SERVER_RENDER"] = 2] = "SERVER_RENDER";
|
|
27
|
+
return RenderLevel2;
|
|
28
|
+
})(RenderLevel || {});
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
RenderLevel
|
|
5
32
|
});
|
|
6
|
-
exports.RenderLevel = void 0;
|
|
7
|
-
let RenderLevel;
|
|
8
|
-
exports.RenderLevel = RenderLevel;
|
|
9
|
-
(function (RenderLevel) {
|
|
10
|
-
RenderLevel[RenderLevel["CLIENT_RENDER"] = 0] = "CLIENT_RENDER";
|
|
11
|
-
RenderLevel[RenderLevel["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
|
|
12
|
-
RenderLevel[RenderLevel["SERVER_RENDER"] = 2] = "SERVER_RENDER";
|
|
13
|
-
})(RenderLevel || (exports.RenderLevel = RenderLevel = {}));
|
|
@@ -1,25 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 });
|
|
11
14
|
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var route_exports = {};
|
|
19
|
+
__export(route_exports, {
|
|
20
|
+
RouteMatchManager: () => RouteMatchManager,
|
|
21
|
+
RouteMatcher: () => import_matcher.RouteMatcher
|
|
12
22
|
});
|
|
13
|
-
|
|
14
|
-
|
|
23
|
+
module.exports = __toCommonJS(route_exports);
|
|
24
|
+
var import_matcher = require("./matcher");
|
|
15
25
|
class RouteMatchManager {
|
|
16
26
|
constructor() {
|
|
17
|
-
|
|
18
|
-
_defineProperty(this, "specs", []);
|
|
27
|
+
this.specs = [];
|
|
19
28
|
this.matchers = [];
|
|
20
29
|
}
|
|
21
|
-
|
|
22
|
-
// get all routes matches pathname
|
|
23
30
|
filter(pathname) {
|
|
24
31
|
return this.matchers.reduce((matches, matcher) => {
|
|
25
32
|
if (matcher.matchUrlPath(pathname)) {
|
|
@@ -28,8 +35,6 @@ class RouteMatchManager {
|
|
|
28
35
|
return matches;
|
|
29
36
|
}, []);
|
|
30
37
|
}
|
|
31
|
-
|
|
32
|
-
// get best match from a set of matches
|
|
33
38
|
best(pathname, matches) {
|
|
34
39
|
let best;
|
|
35
40
|
let matchedLen = 0;
|
|
@@ -45,29 +50,29 @@ class RouteMatchManager {
|
|
|
45
50
|
}
|
|
46
51
|
return best;
|
|
47
52
|
}
|
|
48
|
-
|
|
49
|
-
// reset routes matcher
|
|
50
53
|
reset(specs) {
|
|
51
54
|
this.specs = specs;
|
|
52
55
|
const matchers = specs.reduce((ms, spec) => {
|
|
53
|
-
ms.push(new
|
|
56
|
+
ms.push(new import_matcher.RouteMatcher(spec));
|
|
54
57
|
return ms;
|
|
55
58
|
}, []);
|
|
56
59
|
this.matchers = matchers;
|
|
57
60
|
}
|
|
58
|
-
|
|
59
|
-
// get best match from all matcher in manager
|
|
60
61
|
match(pathname) {
|
|
61
62
|
const matches = this.filter(pathname);
|
|
62
63
|
const best = this.best(pathname, matches);
|
|
63
64
|
return best;
|
|
64
65
|
}
|
|
65
66
|
matchEntry(entryname) {
|
|
66
|
-
return this.matchers.find(matcher => matcher.matchEntry(entryname));
|
|
67
|
+
return this.matchers.find((matcher) => matcher.matchEntry(entryname));
|
|
67
68
|
}
|
|
68
69
|
getBundles() {
|
|
69
|
-
const bundles = this.specs.filter(route => route.isSSR).map(route => route.bundle);
|
|
70
|
+
const bundles = this.specs.filter((route) => route.isSSR).map((route) => route.bundle);
|
|
70
71
|
return bundles;
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
75
|
+
0 && (module.exports = {
|
|
76
|
+
RouteMatchManager,
|
|
77
|
+
RouteMatcher
|
|
78
|
+
});
|
|
@@ -1,36 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
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 matcher_exports = {};
|
|
19
|
+
__export(matcher_exports, {
|
|
20
|
+
RouteMatcher: () => RouteMatcher
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
// avoid import @modern-js/utils
|
|
11
|
-
const removeTailSlash = s => s.replace(/\/+$/, '');
|
|
22
|
+
module.exports = __toCommonJS(matcher_exports);
|
|
23
|
+
var import_path_to_regexp = require("path-to-regexp");
|
|
24
|
+
var import_route = require("./route");
|
|
25
|
+
const removeTailSlash = (s) => s.replace(/\/+$/, "");
|
|
12
26
|
const toPath = (reg, params) => {
|
|
13
|
-
const fn = (0,
|
|
14
|
-
encode: encodeURIComponent
|
|
15
|
-
});
|
|
27
|
+
const fn = (0, import_path_to_regexp.compile)(reg, { encode: encodeURIComponent });
|
|
16
28
|
return fn(params);
|
|
17
29
|
};
|
|
18
|
-
|
|
19
|
-
// eslint-disable-next-line no-useless-escape
|
|
20
30
|
const regCharsDetector = /[^a-zA-Z\-_0-9\/\.]/;
|
|
21
31
|
class RouteMatcher {
|
|
22
32
|
constructor(spec) {
|
|
23
|
-
|
|
24
|
-
_defineProperty(this, "urlPath", '');
|
|
25
|
-
_defineProperty(this, "urlMatcher", void 0);
|
|
26
|
-
_defineProperty(this, "urlReg", void 0);
|
|
33
|
+
this.urlPath = "";
|
|
27
34
|
this.spec = spec;
|
|
28
35
|
this.setupUrlPath();
|
|
29
36
|
}
|
|
30
|
-
|
|
31
|
-
// generate modern route object
|
|
32
37
|
generate(url) {
|
|
33
|
-
const route = new
|
|
38
|
+
const route = new import_route.ModernRoute(this.spec);
|
|
34
39
|
if (this.urlPath) {
|
|
35
40
|
const params = this.parseURLParams(url);
|
|
36
41
|
route.urlPath = toPath(route.urlPath, params);
|
|
@@ -46,30 +51,25 @@ class RouteMatcher {
|
|
|
46
51
|
return matchResult.params;
|
|
47
52
|
}
|
|
48
53
|
}
|
|
49
|
-
|
|
50
|
-
// get match url length
|
|
51
54
|
matchLength(pathname) {
|
|
55
|
+
var _a;
|
|
52
56
|
if (!this.urlReg) {
|
|
53
57
|
return this.urlPath.length;
|
|
54
58
|
} else {
|
|
55
|
-
var _result$;
|
|
56
59
|
const result = this.urlReg.exec(pathname);
|
|
57
|
-
return (
|
|
60
|
+
return ((_a = result == null ? void 0 : result[0]) == null ? void 0 : _a.length) || null;
|
|
58
61
|
}
|
|
59
62
|
}
|
|
60
|
-
|
|
61
|
-
// if match url path
|
|
62
63
|
matchUrlPath(requestUrl) {
|
|
63
|
-
let urlWithoutSlash = requestUrl.endsWith(
|
|
64
|
-
if (urlWithoutSlash.endsWith(
|
|
64
|
+
let urlWithoutSlash = requestUrl.endsWith("/") && requestUrl !== "/" ? requestUrl.slice(0, -1) : requestUrl;
|
|
65
|
+
if (urlWithoutSlash.endsWith(".html")) {
|
|
65
66
|
urlWithoutSlash = urlWithoutSlash.slice(0, -5);
|
|
66
67
|
}
|
|
67
68
|
if (this.urlMatcher) {
|
|
68
69
|
return Boolean(this.urlMatcher(urlWithoutSlash));
|
|
69
70
|
} else {
|
|
70
71
|
if (urlWithoutSlash.startsWith(this.urlPath)) {
|
|
71
|
-
|
|
72
|
-
if (this.urlPath !== '/' && urlWithoutSlash.length > this.urlPath.length && !urlWithoutSlash.startsWith(`${this.urlPath}/`)) {
|
|
72
|
+
if (this.urlPath !== "/" && urlWithoutSlash.length > this.urlPath.length && !urlWithoutSlash.startsWith(`${this.urlPath}/`)) {
|
|
73
73
|
return false;
|
|
74
74
|
}
|
|
75
75
|
return true;
|
|
@@ -80,23 +80,22 @@ class RouteMatcher {
|
|
|
80
80
|
matchEntry(entryName) {
|
|
81
81
|
return this.spec.entryName === entryName;
|
|
82
82
|
}
|
|
83
|
-
|
|
84
|
-
// compiler urlPath to regexp if necessary
|
|
85
83
|
setupUrlPath() {
|
|
86
|
-
const {
|
|
87
|
-
|
|
88
|
-
} = this.spec;
|
|
89
|
-
this.urlPath = urlPath === '/' ? urlPath : removeTailSlash(urlPath);
|
|
84
|
+
const { urlPath } = this.spec;
|
|
85
|
+
this.urlPath = urlPath === "/" ? urlPath : removeTailSlash(urlPath);
|
|
90
86
|
const useReg = regCharsDetector.test(urlPath);
|
|
91
87
|
if (useReg) {
|
|
92
|
-
this.urlMatcher = (0,
|
|
88
|
+
this.urlMatcher = (0, import_path_to_regexp.match)(urlPath, {
|
|
93
89
|
end: false,
|
|
94
90
|
decode: decodeURIComponent
|
|
95
91
|
});
|
|
96
|
-
this.urlReg = (0,
|
|
92
|
+
this.urlReg = (0, import_path_to_regexp.pathToRegexp)(urlPath, [], {
|
|
97
93
|
end: false
|
|
98
94
|
});
|
|
99
95
|
}
|
|
100
96
|
}
|
|
101
97
|
}
|
|
102
|
-
|
|
98
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
99
|
+
0 && (module.exports = {
|
|
100
|
+
RouteMatcher
|
|
101
|
+
});
|
|
@@ -1,32 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
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 route_exports = {};
|
|
19
|
+
__export(route_exports, {
|
|
20
|
+
ModernRoute: () => ModernRoute
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
7
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
|
+
module.exports = __toCommonJS(route_exports);
|
|
8
23
|
class ModernRoute {
|
|
9
24
|
constructor(routeSpec) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
_defineProperty(this, "urlPath", void 0);
|
|
13
|
-
_defineProperty(this, "entryPath", void 0);
|
|
14
|
-
_defineProperty(this, "bundle", void 0);
|
|
15
|
-
_defineProperty(this, "isApi", void 0);
|
|
16
|
-
_defineProperty(this, "isSSR", void 0);
|
|
17
|
-
_defineProperty(this, "isSPA", void 0);
|
|
18
|
-
_defineProperty(this, "enableModernMode", void 0);
|
|
19
|
-
_defineProperty(this, "params", {});
|
|
20
|
-
_defineProperty(this, "responseHeaders", void 0);
|
|
21
|
-
this.entryName = routeSpec.entryName || '';
|
|
25
|
+
this.params = {};
|
|
26
|
+
this.entryName = routeSpec.entryName || "";
|
|
22
27
|
this.urlPath = routeSpec.urlPath;
|
|
23
|
-
this.entryPath = routeSpec.entryPath ||
|
|
28
|
+
this.entryPath = routeSpec.entryPath || "";
|
|
24
29
|
this.isSSR = routeSpec.isSSR || false;
|
|
25
30
|
this.isSPA = routeSpec.isSPA || false;
|
|
26
31
|
this.isApi = routeSpec.isApi || false;
|
|
27
|
-
this.bundle = routeSpec.bundle ||
|
|
28
|
-
this.enableModernMode = (_routeSpec$enableMode = routeSpec.enableModernMode) !== null && _routeSpec$enableMode !== void 0 ? _routeSpec$enableMode : false;
|
|
32
|
+
this.bundle = routeSpec.bundle || "";
|
|
29
33
|
this.responseHeaders = routeSpec.responseHeaders;
|
|
30
34
|
}
|
|
31
35
|
}
|
|
32
|
-
|
|
36
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
37
|
+
0 && (module.exports = {
|
|
38
|
+
ModernRoute
|
|
39
|
+
});
|
|
@@ -1,63 +1,97 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var __async = (__this, __arguments, generator) => {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
var fulfilled = (value) => {
|
|
27
|
+
try {
|
|
28
|
+
step(generator.next(value));
|
|
29
|
+
} catch (e) {
|
|
30
|
+
reject(e);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var rejected = (value) => {
|
|
34
|
+
try {
|
|
35
|
+
step(generator.throw(value));
|
|
36
|
+
} catch (e) {
|
|
37
|
+
reject(e);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
41
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var serve_file_exports = {};
|
|
45
|
+
__export(serve_file_exports, {
|
|
46
|
+
createStaticFileHandler: () => createStaticFileHandler,
|
|
47
|
+
faviconFallbackHandler: () => faviconFallbackHandler
|
|
5
48
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
// Todo 看看是不是能 fork 一份,即使命中也返回
|
|
12
|
-
|
|
49
|
+
module.exports = __toCommonJS(serve_file_exports);
|
|
50
|
+
var import_serve_static = __toESM(require("serve-static"));
|
|
51
|
+
var import_utils = require("@modern-js/utils");
|
|
52
|
+
var import_utils2 = require("../utils");
|
|
13
53
|
const removedPrefix = (req, prefix) => {
|
|
14
|
-
if ((0,
|
|
54
|
+
if ((0, import_utils2.useLocalPrefix)(prefix)) {
|
|
15
55
|
req.url = req.url.slice(prefix.length);
|
|
16
56
|
return () => {
|
|
17
57
|
req.url = prefix + req.url;
|
|
18
58
|
};
|
|
19
59
|
} else {
|
|
20
60
|
return () => {
|
|
21
|
-
// emptyy
|
|
22
61
|
};
|
|
23
62
|
}
|
|
24
63
|
};
|
|
25
64
|
const faviconFallbackHandler = (context, next) => {
|
|
26
|
-
if (context.url ===
|
|
65
|
+
if (context.url === "/favicon.ico") {
|
|
27
66
|
context.res.statusCode = 204;
|
|
28
67
|
context.res.end();
|
|
29
68
|
} else {
|
|
30
69
|
next();
|
|
31
70
|
}
|
|
32
71
|
};
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
url: requestUrl,
|
|
39
|
-
req,
|
|
40
|
-
res
|
|
41
|
-
} = context;
|
|
42
|
-
const {
|
|
43
|
-
assetPrefix = '/'
|
|
44
|
-
} = output;
|
|
45
|
-
const hitRule = rules.find(item => {
|
|
46
|
-
if ((0, _utils.isString)(item.path) && requestUrl.startsWith(item.path)) {
|
|
72
|
+
const createStaticFileHandler = (rules, output = {}) => (context, next) => __async(void 0, null, function* () {
|
|
73
|
+
const { url: requestUrl, req, res } = context;
|
|
74
|
+
const { assetPrefix = "/" } = output;
|
|
75
|
+
const hitRule = rules.find((item) => {
|
|
76
|
+
if ((0, import_utils.isString)(item.path) && requestUrl.startsWith(item.path)) {
|
|
47
77
|
return true;
|
|
48
|
-
} else if ((0,
|
|
78
|
+
} else if ((0, import_utils.isRegExp)(item.path) && item.path.test(requestUrl)) {
|
|
49
79
|
return true;
|
|
50
80
|
}
|
|
51
81
|
return false;
|
|
52
82
|
});
|
|
53
83
|
if (hitRule) {
|
|
54
84
|
const resume = removedPrefix(req, assetPrefix);
|
|
55
|
-
(0,
|
|
85
|
+
(0, import_serve_static.default)(hitRule.target)(req, res, () => {
|
|
56
86
|
resume();
|
|
57
87
|
next();
|
|
58
88
|
});
|
|
59
89
|
} else {
|
|
60
90
|
return next();
|
|
61
91
|
}
|
|
62
|
-
};
|
|
63
|
-
|
|
92
|
+
});
|
|
93
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
94
|
+
0 && (module.exports = {
|
|
95
|
+
createStaticFileHandler,
|
|
96
|
+
faviconFallbackHandler
|
|
97
|
+
});
|