@modern-js/prod-server 2.0.0-beta.3 → 2.0.0-beta.4
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 +69 -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 +42 -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 +144 -145
- package/dist/js/modern/server/modern-server-split.js +46 -12
- package/dist/js/modern/server/modern-server.js +377 -417
- 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 +45 -30
- package/dist/js/node/index.js +31 -57
- package/dist/js/node/libs/context/context.js +79 -94
- package/dist/js/node/libs/context/index.js +23 -13
- package/dist/js/node/libs/hook-api/index.js +69 -48
- package/dist/js/node/libs/hook-api/route.js +22 -11
- package/dist/js/node/libs/hook-api/template.js +36 -39
- package/dist/js/node/libs/loadConfig.js +69 -35
- package/dist/js/node/libs/metrics.js +21 -9
- package/dist/js/node/libs/proxy.js +86 -44
- package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +132 -70
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +268 -218
- package/dist/js/node/libs/render/cache/__tests__/cacheable.js +61 -55
- package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +54 -40
- package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +101 -119
- package/dist/js/node/libs/render/cache/index.js +110 -64
- package/dist/js/node/libs/render/cache/page-caches/index.js +50 -14
- package/dist/js/node/libs/render/cache/page-caches/lru.js +29 -12
- package/dist/js/node/libs/render/cache/spr.js +156 -129
- package/dist/js/node/libs/render/cache/type.js +0 -5
- package/dist/js/node/libs/render/cache/util.js +88 -45
- package/dist/js/node/libs/render/index.js +102 -67
- package/dist/js/node/libs/render/measure.js +55 -31
- package/dist/js/node/libs/render/reader.js +87 -70
- package/dist/js/node/libs/render/ssr.js +76 -47
- package/dist/js/node/libs/render/static.js +75 -40
- package/dist/js/node/libs/render/type.js +27 -12
- package/dist/js/node/libs/route/index.js +26 -26
- package/dist/js/node/libs/route/matcher.js +36 -41
- package/dist/js/node/libs/route/route.js +25 -22
- package/dist/js/node/libs/serve-file.js +61 -32
- package/dist/js/node/server/index.js +160 -160
- package/dist/js/node/server/modern-server-split.js +68 -22
- package/dist/js/node/server/modern-server.js +395 -441
- package/dist/js/node/type.js +0 -3
- package/dist/js/node/utils.js +74 -52
- package/dist/js/node/worker-server.js +53 -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 +265 -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 +468 -327
- package/dist/js/treeshaking/server/modern-server-split.js +352 -144
- package/dist/js/treeshaking/server/modern-server.js +1046 -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,85 @@
|
|
|
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 stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
handleDirectory: () => handleDirectory
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_path = __toESM(require("path"));
|
|
30
|
+
var import_utils = require("@modern-js/utils");
|
|
31
|
+
var import_reader = require("./reader");
|
|
32
|
+
var __async = (__this, __arguments, generator) => {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
var fulfilled = (value) => {
|
|
35
|
+
try {
|
|
36
|
+
step(generator.next(value));
|
|
37
|
+
} catch (e) {
|
|
38
|
+
reject(e);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
var rejected = (value) => {
|
|
42
|
+
try {
|
|
43
|
+
step(generator.throw(value));
|
|
44
|
+
} catch (e) {
|
|
45
|
+
reject(e);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
49
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
50
|
+
});
|
|
51
|
+
};
|
|
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
|
+
};
|
|
@@ -1,13 +1,28 @@
|
|
|
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 stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
RenderLevel: () => RenderLevel
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
})(RenderLevel || (exports.RenderLevel = RenderLevel = {}));
|
|
22
|
+
module.exports = __toCommonJS(stdin_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 || {});
|
|
@@ -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 stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
RouteMatchManager: () => RouteMatchManager,
|
|
21
|
+
RouteMatcher: () => import_matcher.RouteMatcher
|
|
12
22
|
});
|
|
13
|
-
|
|
14
|
-
|
|
23
|
+
module.exports = __toCommonJS(stdin_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,24 @@ 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
|
-
exports.RouteMatchManager = RouteMatchManager;
|
|
@@ -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 stdin_exports = {};
|
|
19
|
+
__export(stdin_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(stdin_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,18 @@ 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
|
-
exports.RouteMatcher = RouteMatcher;
|
|
@@ -1,32 +1,35 @@
|
|
|
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 stdin_exports = {};
|
|
19
|
+
__export(stdin_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(stdin_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
|
-
exports.ModernRoute = ModernRoute;
|
|
@@ -1,63 +1,92 @@
|
|
|
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 stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
createStaticFileHandler: () => createStaticFileHandler,
|
|
27
|
+
faviconFallbackHandler: () => faviconFallbackHandler
|
|
5
28
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
29
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
30
|
+
var import_serve_static = __toESM(require("serve-static"));
|
|
31
|
+
var import_utils = require("@modern-js/utils");
|
|
32
|
+
var import_utils2 = require("../utils");
|
|
33
|
+
var __async = (__this, __arguments, generator) => {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
var fulfilled = (value) => {
|
|
36
|
+
try {
|
|
37
|
+
step(generator.next(value));
|
|
38
|
+
} catch (e) {
|
|
39
|
+
reject(e);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
var rejected = (value) => {
|
|
43
|
+
try {
|
|
44
|
+
step(generator.throw(value));
|
|
45
|
+
} catch (e) {
|
|
46
|
+
reject(e);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
50
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
51
|
+
});
|
|
52
|
+
};
|
|
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
|
-
exports.createStaticFileHandler = createStaticFileHandler;
|
|
92
|
+
});
|