@modern-js/prod-server 2.0.0-beta.2 → 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 +132 -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 -419
- 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 -443
- 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 -911
- 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
package/dist/js/modern/type.js
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import { IncomingMessage } from 'http';
|
package/dist/js/modern/utils.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
import { createDebugger, isProd } from "@modern-js/utils";
|
|
18
|
+
const debug = createDebugger("prod-server");
|
|
19
|
+
const mergeExtension = (users) => {
|
|
7
20
|
const output = [];
|
|
8
|
-
return {
|
|
9
|
-
middleware: output.concat(users)
|
|
10
|
-
};
|
|
21
|
+
return { middleware: output.concat(users) };
|
|
11
22
|
};
|
|
12
|
-
|
|
13
|
-
// noop
|
|
23
|
+
const noop = () => {
|
|
14
24
|
};
|
|
15
|
-
|
|
25
|
+
const createErrorDocument = (status, text) => {
|
|
16
26
|
const title = `${status}: ${text}`;
|
|
17
27
|
return `<!DOCTYPE html>
|
|
18
28
|
<html lang="en">
|
|
@@ -45,13 +55,13 @@ export const createErrorDocument = (status, text) => {
|
|
|
45
55
|
</html>
|
|
46
56
|
`;
|
|
47
57
|
};
|
|
48
|
-
|
|
58
|
+
const createMiddlewareCollecter = () => {
|
|
49
59
|
const webMiddlewares = [];
|
|
50
60
|
const apiMiddlewares = [];
|
|
51
|
-
const addWebMiddleware = input => {
|
|
61
|
+
const addWebMiddleware = (input) => {
|
|
52
62
|
webMiddlewares.push(input);
|
|
53
63
|
};
|
|
54
|
-
const addAPIMiddleware = input => {
|
|
64
|
+
const addAPIMiddleware = (input) => {
|
|
55
65
|
apiMiddlewares.push(input);
|
|
56
66
|
};
|
|
57
67
|
const getMiddlewares = () => ({
|
|
@@ -64,54 +74,63 @@ export const createMiddlewareCollecter = () => {
|
|
|
64
74
|
addAPIMiddleware
|
|
65
75
|
};
|
|
66
76
|
};
|
|
67
|
-
|
|
68
|
-
return isProd() && !url.includes(
|
|
77
|
+
const useLocalPrefix = (url) => {
|
|
78
|
+
return isProd() && !url.includes(".");
|
|
69
79
|
};
|
|
70
|
-
|
|
80
|
+
const getStaticReg = (output = {}, html = {}) => {
|
|
71
81
|
const {
|
|
72
|
-
distPath: {
|
|
73
|
-
|
|
74
|
-
js: jsPath,
|
|
75
|
-
media: mediaPath
|
|
76
|
-
} = {},
|
|
77
|
-
assetPrefix = '/'
|
|
82
|
+
distPath: { css: cssPath, js: jsPath, media: mediaPath } = {},
|
|
83
|
+
assetPrefix = "/"
|
|
78
84
|
} = output;
|
|
79
|
-
const {
|
|
80
|
-
|
|
81
|
-
faviconByEntries
|
|
82
|
-
} = html;
|
|
83
|
-
const prefix = useLocalPrefix(assetPrefix) ? assetPrefix : '';
|
|
85
|
+
const { favicon, faviconByEntries } = html;
|
|
86
|
+
const prefix = useLocalPrefix(assetPrefix) ? assetPrefix : "";
|
|
84
87
|
const favicons = prepareFavicons(favicon, faviconByEntries);
|
|
85
|
-
const staticFiles = [cssPath, jsPath, mediaPath].filter(v => Boolean(v));
|
|
86
|
-
const staticReg = [
|
|
87
|
-
const iconReg = [
|
|
88
|
-
const regPrefix = prefix.endsWith(
|
|
89
|
-
const staticPathRegExp = new RegExp(
|
|
88
|
+
const staticFiles = [cssPath, jsPath, mediaPath].filter((v) => Boolean(v));
|
|
89
|
+
const staticReg = ["static/", "upload/", ...staticFiles];
|
|
90
|
+
const iconReg = ["favicon.ico", "icon.png", ...favicons];
|
|
91
|
+
const regPrefix = prefix.endsWith("/") ? prefix : `${prefix}/`;
|
|
92
|
+
const staticPathRegExp = new RegExp(
|
|
93
|
+
`^${regPrefix}(${[...staticReg, ...iconReg].join("|")})`
|
|
94
|
+
);
|
|
90
95
|
return staticPathRegExp;
|
|
91
96
|
};
|
|
92
|
-
|
|
97
|
+
const prepareFavicons = (favicon, faviconByEntries) => {
|
|
93
98
|
const faviconNames = [];
|
|
94
99
|
if (favicon) {
|
|
95
|
-
faviconNames.push(favicon.substring(favicon.lastIndexOf(
|
|
100
|
+
faviconNames.push(favicon.substring(favicon.lastIndexOf("/") + 1));
|
|
96
101
|
}
|
|
97
102
|
if (faviconByEntries) {
|
|
98
|
-
Object.keys(faviconByEntries).forEach(f => {
|
|
103
|
+
Object.keys(faviconByEntries).forEach((f) => {
|
|
99
104
|
const curFavicon = faviconByEntries[f];
|
|
100
105
|
if (curFavicon) {
|
|
101
|
-
faviconNames.push(
|
|
106
|
+
faviconNames.push(
|
|
107
|
+
curFavicon.substring(curFavicon.lastIndexOf("/") + 1)
|
|
108
|
+
);
|
|
102
109
|
}
|
|
103
110
|
});
|
|
104
111
|
}
|
|
105
112
|
return faviconNames;
|
|
106
113
|
};
|
|
107
|
-
|
|
108
|
-
if (typeof headers.cookie !==
|
|
109
|
-
const safeHeaders =
|
|
114
|
+
const headersWithoutCookie = (headers) => {
|
|
115
|
+
if (typeof headers.cookie !== "undefined") {
|
|
116
|
+
const safeHeaders = __spreadValues({}, headers);
|
|
110
117
|
delete safeHeaders.cookie;
|
|
111
118
|
return safeHeaders;
|
|
112
119
|
}
|
|
113
120
|
return headers;
|
|
114
121
|
};
|
|
115
|
-
|
|
122
|
+
const isRedirect = (code) => {
|
|
116
123
|
return [301, 302, 307, 308].includes(code);
|
|
117
|
-
};
|
|
124
|
+
};
|
|
125
|
+
export {
|
|
126
|
+
createErrorDocument,
|
|
127
|
+
createMiddlewareCollecter,
|
|
128
|
+
debug,
|
|
129
|
+
getStaticReg,
|
|
130
|
+
headersWithoutCookie,
|
|
131
|
+
isRedirect,
|
|
132
|
+
mergeExtension,
|
|
133
|
+
noop,
|
|
134
|
+
prepareFavicons,
|
|
135
|
+
useLocalPrefix
|
|
136
|
+
};
|
|
@@ -1,25 +1,42 @@
|
|
|
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
|
+
};
|
|
1
21
|
import { RouteMatchManager } from "./libs/route";
|
|
2
|
-
|
|
22
|
+
const createHandler = (manifest) => {
|
|
3
23
|
const routeMgr = new RouteMatchManager();
|
|
4
|
-
const {
|
|
5
|
-
pages,
|
|
6
|
-
routes
|
|
7
|
-
} = manifest;
|
|
24
|
+
const { pages, routes } = manifest;
|
|
8
25
|
routeMgr.reset(routes);
|
|
9
|
-
return
|
|
10
|
-
var
|
|
26
|
+
return (ctx) => __async(void 0, null, function* () {
|
|
27
|
+
var _a, _b, _c, _d, _e, _f;
|
|
11
28
|
const pageMatch = routeMgr.match(ctx.url);
|
|
12
29
|
if (!pageMatch) {
|
|
13
|
-
ctx.body =
|
|
30
|
+
ctx.body = "404: Page not found";
|
|
14
31
|
ctx.status = 404;
|
|
15
32
|
return;
|
|
16
33
|
}
|
|
17
34
|
const page = pages[pageMatch.spec.urlPath];
|
|
18
|
-
(
|
|
19
|
-
(
|
|
20
|
-
(
|
|
35
|
+
(_b = (_a = ctx.request).query) != null ? _b : _a.query = ctx.query;
|
|
36
|
+
(_d = (_c = ctx.request).pathname) != null ? _d : _c.pathname = ctx.pathname;
|
|
37
|
+
(_f = (_e = ctx.request).params) != null ? _f : _e.params = ctx.params;
|
|
21
38
|
const params = pageMatch.parseURLParams(ctx.url);
|
|
22
|
-
ctx.body =
|
|
39
|
+
ctx.body = yield page.serverRender({
|
|
23
40
|
template: page.template,
|
|
24
41
|
query: ctx.query,
|
|
25
42
|
request: ctx.request,
|
|
@@ -30,5 +47,8 @@ export const createHandler = manifest => {
|
|
|
30
47
|
params: ctx.params || params || {}
|
|
31
48
|
});
|
|
32
49
|
ctx.status = 200;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
export {
|
|
53
|
+
createHandler
|
|
54
|
+
};
|
|
@@ -1,39 +1,54 @@
|
|
|
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
|
+
AGGRED_DIR: () => AGGRED_DIR,
|
|
21
|
+
ApiServerMode: () => ApiServerMode,
|
|
22
|
+
ERROR_DIGEST: () => ERROR_DIGEST,
|
|
23
|
+
ERROR_PAGE_TEXT: () => ERROR_PAGE_TEXT,
|
|
24
|
+
RUN_MODE: () => RUN_MODE
|
|
5
25
|
});
|
|
6
|
-
|
|
26
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
7
27
|
const AGGRED_DIR = {
|
|
8
|
-
mock:
|
|
9
|
-
server:
|
|
10
|
-
api:
|
|
11
|
-
shared:
|
|
12
|
-
lambda:
|
|
28
|
+
mock: "config/mock",
|
|
29
|
+
server: "server",
|
|
30
|
+
api: "api",
|
|
31
|
+
shared: "shared",
|
|
32
|
+
lambda: "lambda"
|
|
13
33
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
ApiServerMode["frame"] = "framework";
|
|
20
|
-
})(ApiServerMode || (exports.ApiServerMode = ApiServerMode = {}));
|
|
34
|
+
var ApiServerMode = /* @__PURE__ */ ((ApiServerMode2) => {
|
|
35
|
+
ApiServerMode2["func"] = "function";
|
|
36
|
+
ApiServerMode2["frame"] = "framework";
|
|
37
|
+
return ApiServerMode2;
|
|
38
|
+
})(ApiServerMode || {});
|
|
21
39
|
const ERROR_DIGEST = {
|
|
22
|
-
INIT:
|
|
23
|
-
ENOTF:
|
|
24
|
-
WARMUP:
|
|
25
|
-
EINTER:
|
|
26
|
-
ERENDER:
|
|
27
|
-
EMICROINJ:
|
|
40
|
+
INIT: "Server init error",
|
|
41
|
+
ENOTF: "Page could not be found",
|
|
42
|
+
WARMUP: "SSR warmup failed",
|
|
43
|
+
EINTER: "Internal server error",
|
|
44
|
+
ERENDER: "SSR render failed",
|
|
45
|
+
EMICROINJ: "Get micro-frontend info failed"
|
|
28
46
|
};
|
|
29
|
-
exports.ERROR_DIGEST = ERROR_DIGEST;
|
|
30
47
|
const ERROR_PAGE_TEXT = {
|
|
31
|
-
404:
|
|
32
|
-
500:
|
|
48
|
+
404: "This page could not be found.",
|
|
49
|
+
500: "Internal Server Error."
|
|
33
50
|
};
|
|
34
|
-
exports.ERROR_PAGE_TEXT = ERROR_PAGE_TEXT;
|
|
35
51
|
const RUN_MODE = {
|
|
36
|
-
FULL:
|
|
37
|
-
TYPE:
|
|
52
|
+
FULL: "full",
|
|
53
|
+
TYPE: "type"
|
|
38
54
|
};
|
|
39
|
-
exports.RUN_MODE = RUN_MODE;
|
package/dist/js/node/index.js
CHANGED
|
@@ -1,64 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
ModernServer: true,
|
|
9
|
-
createProxyHandler: true
|
|
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 });
|
|
10
8
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
17
|
-
Object.defineProperty(exports, "Server", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () {
|
|
20
|
-
return _server.Server;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports, "createProxyHandler", {
|
|
24
|
-
enumerable: true,
|
|
25
|
-
get: function () {
|
|
26
|
-
return _proxy.createProxyHandler;
|
|
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 });
|
|
27
14
|
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var stdin_exports = {};
|
|
20
|
+
__export(stdin_exports, {
|
|
21
|
+
ModernServer: () => import_modern_server.ModernServer,
|
|
22
|
+
Server: () => import_server.Server,
|
|
23
|
+
createProxyHandler: () => import_proxy.createProxyHandler,
|
|
24
|
+
default: () => src_default
|
|
28
25
|
});
|
|
29
|
-
exports
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
37
|
-
if (key in exports && exports[key] === _type[key]) return;
|
|
38
|
-
Object.defineProperty(exports, key, {
|
|
39
|
-
enumerable: true,
|
|
40
|
-
get: function () {
|
|
41
|
-
return _type[key];
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
var _constants = require("./constants");
|
|
46
|
-
Object.keys(_constants).forEach(function (key) {
|
|
47
|
-
if (key === "default" || key === "__esModule") return;
|
|
48
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
49
|
-
if (key in exports && exports[key] === _constants[key]) return;
|
|
50
|
-
Object.defineProperty(exports, key, {
|
|
51
|
-
enumerable: true,
|
|
52
|
-
get: function () {
|
|
53
|
-
return _constants[key];
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
var _default = options => {
|
|
26
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
27
|
+
var import_server = require("./server");
|
|
28
|
+
var import_modern_server = require("./server/modern-server");
|
|
29
|
+
var import_proxy = require("./libs/proxy");
|
|
30
|
+
__reExport(stdin_exports, require("./type"), module.exports);
|
|
31
|
+
__reExport(stdin_exports, require("./constants"), module.exports);
|
|
32
|
+
var src_default = (options) => {
|
|
58
33
|
if (options == null) {
|
|
59
|
-
throw new Error(
|
|
34
|
+
throw new Error("can not start mserver without options");
|
|
60
35
|
}
|
|
61
|
-
const server = new
|
|
36
|
+
const server = new import_server.Server(options);
|
|
62
37
|
return server.init();
|
|
63
38
|
};
|
|
64
|
-
exports.default = _default;
|
|
@@ -1,72 +1,70 @@
|
|
|
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
|
+
ModernServerContext: () => ModernServerContext
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
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; }
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_url = require("url");
|
|
30
|
+
var import_querystring = __toESM(require("querystring"));
|
|
31
|
+
var import_buffer = require("buffer");
|
|
32
|
+
var import_etag = __toESM(require("etag"));
|
|
33
|
+
var import_fresh = __toESM(require("fresh"));
|
|
34
|
+
var import_utils = require("../../utils");
|
|
15
35
|
class ModernServerContext {
|
|
16
|
-
/**
|
|
17
|
-
* http request
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* http response
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* url params
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
get logger() {
|
|
29
|
-
return this.req.logger;
|
|
30
|
-
}
|
|
31
|
-
get metrics() {
|
|
32
|
-
return this.req.metrics;
|
|
33
|
-
}
|
|
34
36
|
constructor(req, res, options) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
_defineProperty(this, "params", {});
|
|
38
|
-
_defineProperty(this, "serverData", void 0);
|
|
39
|
-
_defineProperty(this, "options", {});
|
|
37
|
+
this.params = {};
|
|
38
|
+
this.options = {};
|
|
40
39
|
this.req = req;
|
|
41
40
|
this.res = res;
|
|
42
41
|
this.options = options || {};
|
|
43
42
|
this.serverData = {};
|
|
44
43
|
this.bind();
|
|
45
44
|
}
|
|
45
|
+
get logger() {
|
|
46
|
+
return this.req.logger;
|
|
47
|
+
}
|
|
48
|
+
get metrics() {
|
|
49
|
+
return this.req.metrics;
|
|
50
|
+
}
|
|
46
51
|
bind() {
|
|
47
|
-
const {
|
|
48
|
-
|
|
49
|
-
res
|
|
50
|
-
} = this;
|
|
51
|
-
req.get = key => this.getReqHeader(key);
|
|
52
|
+
const { req, res } = this;
|
|
53
|
+
req.get = (key) => this.getReqHeader(key);
|
|
52
54
|
res.set = (key, value) => this.res.setHeader(key, value);
|
|
53
|
-
res.send = body => {
|
|
55
|
+
res.send = (body) => {
|
|
54
56
|
this.send(body);
|
|
55
57
|
};
|
|
56
58
|
}
|
|
57
|
-
|
|
58
|
-
// compat express res.send, only support etag now
|
|
59
59
|
send(body) {
|
|
60
60
|
try {
|
|
61
|
-
const generateETag = !this.res.getHeader(
|
|
62
|
-
if (body !==
|
|
63
|
-
const encoding = typeof body ===
|
|
64
|
-
const buf = !
|
|
65
|
-
const etag = (0,
|
|
66
|
-
weak: true
|
|
67
|
-
});
|
|
61
|
+
const generateETag = !this.res.getHeader("ETag") && this.options.etag;
|
|
62
|
+
if (body !== void 0 && generateETag) {
|
|
63
|
+
const encoding = typeof body === "string" ? "utf-8" : void 0;
|
|
64
|
+
const buf = !import_buffer.Buffer.isBuffer(body) ? import_buffer.Buffer.from(body, encoding) : body;
|
|
65
|
+
const etag = (0, import_etag.default)(buf, { weak: true });
|
|
68
66
|
if (etag) {
|
|
69
|
-
this.res.setHeader(
|
|
67
|
+
this.res.setHeader("ETag", etag);
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
70
|
if (this.fresh) {
|
|
@@ -84,39 +82,29 @@ class ModernServerContext {
|
|
|
84
82
|
this.serverData[key] = value;
|
|
85
83
|
}
|
|
86
84
|
getReqHeader(key) {
|
|
87
|
-
const {
|
|
88
|
-
req
|
|
89
|
-
} = this;
|
|
85
|
+
const { req } = this;
|
|
90
86
|
const field = key.toLowerCase();
|
|
91
87
|
switch (field) {
|
|
92
|
-
case
|
|
93
|
-
case
|
|
94
|
-
return req.headers.referrer || req.headers.referer ||
|
|
88
|
+
case "referer":
|
|
89
|
+
case "referrer":
|
|
90
|
+
return req.headers.referrer || req.headers.referer || "";
|
|
95
91
|
default:
|
|
96
|
-
return req.headers[field] ||
|
|
92
|
+
return req.headers[field] || "";
|
|
97
93
|
}
|
|
98
94
|
}
|
|
99
95
|
get fresh() {
|
|
100
|
-
const {
|
|
101
|
-
|
|
102
|
-
res,
|
|
103
|
-
method
|
|
104
|
-
} = this;
|
|
105
|
-
|
|
106
|
-
// GET or HEAD for weak freshness validation only
|
|
107
|
-
if ('GET' !== method && 'HEAD' !== method) {
|
|
96
|
+
const { status, res, method } = this;
|
|
97
|
+
if ("GET" !== method && "HEAD" !== method) {
|
|
108
98
|
return false;
|
|
109
99
|
}
|
|
110
100
|
if (status >= 200 && status < 300 || 304 === status) {
|
|
111
|
-
return (0,
|
|
112
|
-
etag: res.getHeader(
|
|
113
|
-
|
|
101
|
+
return (0, import_fresh.default)(this.headers, {
|
|
102
|
+
etag: res.getHeader("ETag"),
|
|
103
|
+
"last-modified": res.getHeader("Last-Modified")
|
|
114
104
|
});
|
|
115
105
|
}
|
|
116
106
|
return false;
|
|
117
107
|
}
|
|
118
|
-
|
|
119
|
-
/* request property */
|
|
120
108
|
get headers() {
|
|
121
109
|
return this.req.headers;
|
|
122
110
|
}
|
|
@@ -124,24 +112,24 @@ class ModernServerContext {
|
|
|
124
112
|
return this.req.method;
|
|
125
113
|
}
|
|
126
114
|
get url() {
|
|
127
|
-
return this.req.url ||
|
|
115
|
+
return this.req.url || "";
|
|
128
116
|
}
|
|
129
117
|
set url(val) {
|
|
130
118
|
this.req.url = val;
|
|
131
119
|
}
|
|
132
120
|
get host() {
|
|
133
|
-
let host = this.getReqHeader(
|
|
121
|
+
let host = this.getReqHeader("X-Forwarded-Host");
|
|
134
122
|
if (!host) {
|
|
135
|
-
host = this.getReqHeader(
|
|
123
|
+
host = this.getReqHeader("Host");
|
|
136
124
|
}
|
|
137
|
-
return host.split(/\s*,\s*/, 1)[0] ||
|
|
125
|
+
return host.split(/\s*,\s*/, 1)[0] || "";
|
|
138
126
|
}
|
|
139
127
|
get protocol() {
|
|
140
128
|
if (this.req.socket.encrypted) {
|
|
141
|
-
return
|
|
129
|
+
return "https";
|
|
142
130
|
}
|
|
143
|
-
const proto = this.getReqHeader(
|
|
144
|
-
return proto ? proto.split(/\s*,\s*/, 1)[0] :
|
|
131
|
+
const proto = this.getReqHeader("X-Forwarded-Proto");
|
|
132
|
+
return proto ? proto.split(/\s*,\s*/, 1)[0] : "http";
|
|
145
133
|
}
|
|
146
134
|
get origin() {
|
|
147
135
|
return `${this.protocol}://${this.host}`;
|
|
@@ -150,15 +138,14 @@ class ModernServerContext {
|
|
|
150
138
|
return this.origin + this.url;
|
|
151
139
|
}
|
|
152
140
|
get parsedURL() {
|
|
153
|
-
const url = new
|
|
141
|
+
const url = new import_url.URL(this.req.url, this.origin);
|
|
154
142
|
return url;
|
|
155
143
|
}
|
|
156
144
|
get path() {
|
|
157
145
|
return this.parsedURL.pathname;
|
|
158
146
|
}
|
|
159
147
|
set path(p) {
|
|
160
|
-
const url = new
|
|
161
|
-
// this should never happened
|
|
148
|
+
const url = new import_url.URL(this.req.url, this.origin);
|
|
162
149
|
if (!url || !p) {
|
|
163
150
|
return;
|
|
164
151
|
}
|
|
@@ -170,31 +157,29 @@ class ModernServerContext {
|
|
|
170
157
|
}
|
|
171
158
|
get querystring() {
|
|
172
159
|
if (!this.req) {
|
|
173
|
-
return
|
|
160
|
+
return "";
|
|
174
161
|
}
|
|
175
|
-
return this.parsedURL.search.replace(/^\?/,
|
|
162
|
+
return this.parsedURL.search.replace(/^\?/, "") || "";
|
|
176
163
|
}
|
|
177
164
|
get query() {
|
|
178
165
|
const str = this.querystring;
|
|
179
|
-
return
|
|
166
|
+
return import_querystring.default.parse(str);
|
|
180
167
|
}
|
|
181
|
-
|
|
182
|
-
/* response property */
|
|
183
168
|
get status() {
|
|
184
169
|
return this.res.statusCode;
|
|
185
170
|
}
|
|
186
171
|
set status(statusCode) {
|
|
187
172
|
this.res.statusCode = statusCode;
|
|
188
173
|
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* 判断链接是否已经关闭
|
|
192
|
-
*/
|
|
193
174
|
resHasHandled() {
|
|
194
175
|
return this.res.writableEnded;
|
|
195
176
|
}
|
|
196
|
-
error(dig, e =
|
|
197
|
-
this.logger.error(
|
|
177
|
+
error(dig, e = "") {
|
|
178
|
+
this.logger.error(
|
|
179
|
+
`Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`,
|
|
180
|
+
e instanceof Error ? e.stack || e.message : e,
|
|
181
|
+
this.path,
|
|
182
|
+
(0, import_utils.headersWithoutCookie)(this.headers)
|
|
183
|
+
);
|
|
198
184
|
}
|
|
199
185
|
}
|
|
200
|
-
exports.ModernServerContext = ModernServerContext;
|