@modern-js/prod-server 1.1.3 → 1.1.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 +34 -0
- package/dist/js/modern/libs/context/context.js +11 -5
- package/dist/js/modern/libs/hook-api/route.js +8 -3
- package/dist/js/modern/libs/hook-api/template.js +4 -1
- package/dist/js/modern/libs/proxy.js +2 -2
- package/dist/js/modern/libs/render/cache/page-caches/lru.js +6 -2
- package/dist/js/modern/libs/render/cache/spr.js +7 -4
- package/dist/js/modern/libs/render/reader.js +4 -1
- package/dist/js/modern/libs/route/index.js +6 -2
- package/dist/js/modern/libs/route/matcher.js +10 -4
- package/dist/js/modern/libs/route/route.js +20 -9
- package/dist/js/modern/server/index.js +12 -6
- package/dist/js/modern/server/modern-server.js +81 -33
- package/dist/js/node/libs/context/context.js +11 -5
- package/dist/js/node/libs/hook-api/route.js +8 -3
- package/dist/js/node/libs/hook-api/template.js +5 -1
- package/dist/js/node/libs/proxy.js +2 -2
- package/dist/js/node/libs/render/cache/page-caches/lru.js +6 -2
- package/dist/js/node/libs/render/cache/spr.js +6 -6
- package/dist/js/node/libs/render/reader.js +4 -1
- package/dist/js/node/libs/route/index.js +6 -2
- package/dist/js/node/libs/route/matcher.js +10 -4
- package/dist/js/node/libs/route/route.js +20 -9
- package/dist/js/node/server/index.js +12 -6
- package/dist/js/node/server/modern-server.js +84 -33
- package/dist/types/server/modern-server.d.ts +10 -3
- package/package.json +31 -9
- package/.eslintrc.js +0 -8
- package/dist/js/styles/tsconfig.json +0 -12
- package/jest.config.js +0 -8
- package/modern.config.js +0 -2
- package/src/constants.ts +0 -31
- package/src/index.ts +0 -19
- package/src/libs/context/context.ts +0 -178
- package/src/libs/context/index.ts +0 -7
- package/src/libs/hook-api/route.ts +0 -42
- package/src/libs/hook-api/template.ts +0 -53
- package/src/libs/loadConfig.ts +0 -59
- package/src/libs/metrics.ts +0 -15
- package/src/libs/proxy.ts +0 -44
- package/src/libs/render/cache/__tests__/cache.fun.test.ts +0 -94
- package/src/libs/render/cache/__tests__/cache.test.ts +0 -240
- package/src/libs/render/cache/__tests__/cacheable.ts +0 -44
- package/src/libs/render/cache/__tests__/error-configuration.ts +0 -34
- package/src/libs/render/cache/__tests__/matched-cache.ts +0 -88
- package/src/libs/render/cache/index.ts +0 -73
- package/src/libs/render/cache/page-caches/index.ts +0 -11
- package/src/libs/render/cache/page-caches/lru.ts +0 -38
- package/src/libs/render/cache/spr.ts +0 -300
- package/src/libs/render/cache/type.ts +0 -59
- package/src/libs/render/cache/util.ts +0 -94
- package/src/libs/render/index.ts +0 -79
- package/src/libs/render/measure.ts +0 -66
- package/src/libs/render/modern/browser-list.ts +0 -7
- package/src/libs/render/modern/index.ts +0 -41
- package/src/libs/render/modern/module.d.ts +0 -4
- package/src/libs/render/reader.ts +0 -119
- package/src/libs/render/ssr.ts +0 -69
- package/src/libs/render/static.ts +0 -52
- package/src/libs/render/type.ts +0 -38
- package/src/libs/route/index.ts +0 -76
- package/src/libs/route/matcher.ts +0 -108
- package/src/libs/route/route.ts +0 -34
- package/src/libs/serve-file.ts +0 -34
- package/src/server/index.ts +0 -232
- package/src/server/modern-server-split.ts +0 -93
- package/src/server/modern-server.ts +0 -620
- package/src/tsconfig.json +0 -12
- package/src/type.ts +0 -95
- package/src/utils.ts +0 -116
- package/tsconfig.json +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# @modern-js/prod-server
|
|
2
2
|
|
|
3
|
+
## 1.1.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 430d417e: optimize server side hot reload
|
|
8
|
+
- Updated dependencies [6451a098]
|
|
9
|
+
- Updated dependencies [d5a2cfd8]
|
|
10
|
+
- Updated dependencies [437367c6]
|
|
11
|
+
- @modern-js/utils@1.7.6
|
|
12
|
+
- @modern-js/server-core@1.3.5
|
|
13
|
+
|
|
14
|
+
## 1.1.5
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- d32f35134: chore: add modern/jest/eslint/ts config files to .npmignore
|
|
19
|
+
- 86fe5a657: support handle server context init error
|
|
20
|
+
- Updated dependencies [d32f35134]
|
|
21
|
+
- Updated dependencies [6ae4a34ae]
|
|
22
|
+
- Updated dependencies [b80229c79]
|
|
23
|
+
- Updated dependencies [948cc4436]
|
|
24
|
+
- @modern-js/server-core@1.3.5
|
|
25
|
+
- @modern-js/utils@1.7.3
|
|
26
|
+
|
|
27
|
+
## 1.1.4
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- 69a728375: fix: remove exports.jsnext:source after publish
|
|
32
|
+
- Updated dependencies [cd7346b0d]
|
|
33
|
+
- Updated dependencies [69a728375]
|
|
34
|
+
- @modern-js/utils@1.7.2
|
|
35
|
+
- @modern-js/server-core@1.3.4
|
|
36
|
+
|
|
3
37
|
## 1.1.3
|
|
4
38
|
|
|
5
39
|
### Patch Changes
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
import { URL } from 'url';
|
|
2
4
|
import qs from 'querystring';
|
|
3
5
|
export class ModernServerContext {
|
|
@@ -21,10 +23,14 @@ export class ModernServerContext {
|
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
constructor(req, res) {
|
|
24
|
-
this
|
|
25
|
-
|
|
26
|
-
this
|
|
27
|
-
|
|
26
|
+
_defineProperty(this, "req", void 0);
|
|
27
|
+
|
|
28
|
+
_defineProperty(this, "res", void 0);
|
|
29
|
+
|
|
30
|
+
_defineProperty(this, "params", {});
|
|
31
|
+
|
|
32
|
+
_defineProperty(this, "serverData", void 0);
|
|
33
|
+
|
|
28
34
|
this.req = req;
|
|
29
35
|
this.res = res;
|
|
30
36
|
this.serverData = {};
|
|
@@ -121,7 +127,7 @@ export class ModernServerContext {
|
|
|
121
127
|
}
|
|
122
128
|
|
|
123
129
|
set path(p) {
|
|
124
|
-
const url = new URL(this.req.url, this.origin); // this should never
|
|
130
|
+
const url = new URL(this.req.url, this.origin); // this should never happened
|
|
125
131
|
|
|
126
132
|
if (!url || !p) {
|
|
127
133
|
return;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
class RouteAPI {
|
|
2
4
|
constructor(matched, router, url) {
|
|
3
|
-
this
|
|
4
|
-
|
|
5
|
-
this
|
|
5
|
+
_defineProperty(this, "router", void 0);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "current", void 0);
|
|
8
|
+
|
|
9
|
+
_defineProperty(this, "url", void 0);
|
|
10
|
+
|
|
6
11
|
this.current = matched;
|
|
7
12
|
this.router = router;
|
|
8
13
|
this.url = url;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
const RegList = {
|
|
2
4
|
before: {
|
|
3
5
|
head: '<head>',
|
|
@@ -11,7 +13,8 @@ const RegList = {
|
|
|
11
13
|
|
|
12
14
|
class TemplateAPI {
|
|
13
15
|
constructor(content) {
|
|
14
|
-
this
|
|
16
|
+
_defineProperty(this, "content", void 0);
|
|
17
|
+
|
|
15
18
|
this.content = content;
|
|
16
19
|
}
|
|
17
20
|
|
|
@@ -10,8 +10,8 @@ export const createProxyHandler = proxyOptions => {
|
|
|
10
10
|
// or an object in the form of { source: ProxyDetail }
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
const
|
|
14
|
-
const middlewares =
|
|
13
|
+
const formattedProxy = formatProxyOptions(proxyOptions);
|
|
14
|
+
const middlewares = formattedProxy.map(option => {
|
|
15
15
|
const middleware = createProxyMiddleware(option.context, option); // eslint-disable-next-line consistent-return
|
|
16
16
|
|
|
17
17
|
return async (ctx, next) => {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
import LRU from 'lru-cache';
|
|
2
4
|
export class LRUCaches {
|
|
3
5
|
constructor(options) {
|
|
4
|
-
this
|
|
5
|
-
|
|
6
|
+
_defineProperty(this, "caches", void 0);
|
|
7
|
+
|
|
8
|
+
_defineProperty(this, "max", void 0);
|
|
9
|
+
|
|
6
10
|
this.max = options.max;
|
|
7
11
|
this.caches = new LRU(this.max);
|
|
8
12
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
/* eslint-disable @typescript-eslint/member-ordering */
|
|
2
4
|
|
|
3
5
|
/* eslint-disable no-lone-blocks */
|
|
@@ -15,10 +17,11 @@ const QUERY_HEADER_LEVEL = 3;
|
|
|
15
17
|
|
|
16
18
|
class CacheManager {
|
|
17
19
|
constructor(cacheOptions) {
|
|
18
|
-
this
|
|
19
|
-
|
|
20
|
+
_defineProperty(this, "cache", void 0);
|
|
21
|
+
|
|
22
|
+
_defineProperty(this, "cacheOptions", void 0);
|
|
20
23
|
|
|
21
|
-
this
|
|
24
|
+
_defineProperty(this, "find", (() => {
|
|
22
25
|
{
|
|
23
26
|
// eslint-disable-next-line consistent-this,@typescript-eslint/no-this-alias
|
|
24
27
|
const _this = this;
|
|
@@ -63,7 +66,7 @@ class CacheManager {
|
|
|
63
66
|
|
|
64
67
|
};
|
|
65
68
|
}
|
|
66
|
-
})();
|
|
69
|
+
})());
|
|
67
70
|
|
|
68
71
|
this.cacheOptions = cacheOptions;
|
|
69
72
|
this.cache = new LRUCache({
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
import { fs } from '@modern-js/utils';
|
|
2
4
|
import LRU from 'lru-cache';
|
|
3
5
|
const Byte = 1;
|
|
@@ -17,7 +19,8 @@ const createCacheItem = async (filepath, mtime) => {
|
|
|
17
19
|
export class LruReader {
|
|
18
20
|
// private timer?: NodeJS.Timeout;
|
|
19
21
|
constructor() {
|
|
20
|
-
this
|
|
22
|
+
_defineProperty(this, "cache", void 0);
|
|
23
|
+
|
|
21
24
|
this.cache = new LRU({
|
|
22
25
|
max: 256 * MB,
|
|
23
26
|
length: getContentLength,
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
import { RouteMatcher } from "./matcher";
|
|
2
4
|
export class RouteMatchManager {
|
|
3
5
|
constructor() {
|
|
4
|
-
this
|
|
5
|
-
|
|
6
|
+
_defineProperty(this, "matchers", void 0);
|
|
7
|
+
|
|
8
|
+
_defineProperty(this, "specs", []);
|
|
9
|
+
|
|
6
10
|
this.matchers = [];
|
|
7
11
|
} // get all routes matches pathname
|
|
8
12
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
import { removeTailSlash } from '@modern-js/utils';
|
|
2
4
|
import { match, pathToRegexp } from 'path-to-regexp';
|
|
3
5
|
import { toPath } from "../../utils";
|
|
@@ -6,10 +8,14 @@ import { ModernRoute } from "./route"; // eslint-disable-next-line no-useless-es
|
|
|
6
8
|
const regCharsDetector = /[^a-zA-Z\-_0-9\/\.]/;
|
|
7
9
|
export class RouteMatcher {
|
|
8
10
|
constructor(spec) {
|
|
9
|
-
this
|
|
10
|
-
|
|
11
|
-
this
|
|
12
|
-
|
|
11
|
+
_defineProperty(this, "spec", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "urlPath", '');
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "urlMatcher", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "urlReg", void 0);
|
|
18
|
+
|
|
13
19
|
this.spec = spec;
|
|
14
20
|
this.setupUrlPath();
|
|
15
21
|
} // generate modern route object
|
|
@@ -1,16 +1,27 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
1
3
|
export class ModernRoute {
|
|
2
4
|
constructor(routeSpec) {
|
|
3
5
|
var _routeSpec$enableMode;
|
|
4
6
|
|
|
5
|
-
this
|
|
6
|
-
|
|
7
|
-
this
|
|
8
|
-
|
|
9
|
-
this
|
|
10
|
-
|
|
11
|
-
this
|
|
12
|
-
|
|
13
|
-
this
|
|
7
|
+
_defineProperty(this, "entryName", void 0);
|
|
8
|
+
|
|
9
|
+
_defineProperty(this, "urlPath", void 0);
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "entryPath", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "bundle", void 0);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "isApi", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "isSSR", void 0);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "isSPA", void 0);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "enableModernMode", void 0);
|
|
22
|
+
|
|
23
|
+
_defineProperty(this, "params", {});
|
|
24
|
+
|
|
14
25
|
this.entryName = routeSpec.entryName || '';
|
|
15
26
|
this.urlPath = routeSpec.urlPath;
|
|
16
27
|
this.entryPath = routeSpec.entryPath || '';
|
|
@@ -13,12 +13,18 @@ import { debug } from "../utils";
|
|
|
13
13
|
import { createProdServer } from "./modern-server-split";
|
|
14
14
|
export class Server {
|
|
15
15
|
constructor(options) {
|
|
16
|
-
this
|
|
17
|
-
|
|
18
|
-
this
|
|
19
|
-
|
|
20
|
-
this
|
|
21
|
-
|
|
16
|
+
_defineProperty(this, "options", void 0);
|
|
17
|
+
|
|
18
|
+
_defineProperty(this, "serverImpl", createProdServer);
|
|
19
|
+
|
|
20
|
+
_defineProperty(this, "server", void 0);
|
|
21
|
+
|
|
22
|
+
_defineProperty(this, "app", void 0);
|
|
23
|
+
|
|
24
|
+
_defineProperty(this, "runner", void 0);
|
|
25
|
+
|
|
26
|
+
_defineProperty(this, "serverConfig", void 0);
|
|
27
|
+
|
|
22
28
|
options.logger = options.logger || new Logger({
|
|
23
29
|
level: 'warn'
|
|
24
30
|
});
|
|
@@ -4,12 +4,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
4
4
|
|
|
5
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
6
|
|
|
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; }
|
|
8
|
-
|
|
9
7
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
8
|
|
|
11
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
12
10
|
|
|
11
|
+
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; }
|
|
12
|
+
|
|
13
13
|
/* eslint-disable max-lines */
|
|
14
14
|
import { createServer } from 'http';
|
|
15
15
|
import util from 'util';
|
|
@@ -45,26 +45,45 @@ export class ModernServer {
|
|
|
45
45
|
}) {
|
|
46
46
|
var _config$output;
|
|
47
47
|
|
|
48
|
-
this
|
|
49
|
-
|
|
50
|
-
this
|
|
51
|
-
|
|
52
|
-
this
|
|
53
|
-
|
|
54
|
-
this
|
|
55
|
-
|
|
56
|
-
this
|
|
57
|
-
|
|
58
|
-
this
|
|
59
|
-
|
|
60
|
-
this
|
|
61
|
-
|
|
62
|
-
this
|
|
63
|
-
|
|
64
|
-
this
|
|
65
|
-
|
|
66
|
-
this
|
|
67
|
-
|
|
48
|
+
_defineProperty(this, "pwd", void 0);
|
|
49
|
+
|
|
50
|
+
_defineProperty(this, "distDir", void 0);
|
|
51
|
+
|
|
52
|
+
_defineProperty(this, "workDir", void 0);
|
|
53
|
+
|
|
54
|
+
_defineProperty(this, "router", void 0);
|
|
55
|
+
|
|
56
|
+
_defineProperty(this, "conf", void 0);
|
|
57
|
+
|
|
58
|
+
_defineProperty(this, "handlers", []);
|
|
59
|
+
|
|
60
|
+
_defineProperty(this, "presetRoutes", void 0);
|
|
61
|
+
|
|
62
|
+
_defineProperty(this, "runner", void 0);
|
|
63
|
+
|
|
64
|
+
_defineProperty(this, "logger", void 0);
|
|
65
|
+
|
|
66
|
+
_defineProperty(this, "metrics", void 0);
|
|
67
|
+
|
|
68
|
+
_defineProperty(this, "runMode", void 0);
|
|
69
|
+
|
|
70
|
+
_defineProperty(this, "reader", reader);
|
|
71
|
+
|
|
72
|
+
_defineProperty(this, "proxyTarget", void 0);
|
|
73
|
+
|
|
74
|
+
_defineProperty(this, "staticFileHandler", void 0);
|
|
75
|
+
|
|
76
|
+
_defineProperty(this, "routeRenderHandler", void 0);
|
|
77
|
+
|
|
78
|
+
_defineProperty(this, "frameWebHandler", null);
|
|
79
|
+
|
|
80
|
+
_defineProperty(this, "frameAPIHandler", null);
|
|
81
|
+
|
|
82
|
+
_defineProperty(this, "proxyHandler", null);
|
|
83
|
+
|
|
84
|
+
_defineProperty(this, "_handler", void 0);
|
|
85
|
+
|
|
86
|
+
_defineProperty(this, "staticGenerate", void 0);
|
|
68
87
|
|
|
69
88
|
require('ignore-styles');
|
|
70
89
|
|
|
@@ -148,8 +167,24 @@ export class ModernServer {
|
|
|
148
167
|
onListening(_) {// empty
|
|
149
168
|
}
|
|
150
169
|
|
|
151
|
-
onServerChange(
|
|
152
|
-
|
|
170
|
+
onServerChange({
|
|
171
|
+
filepath
|
|
172
|
+
}) {
|
|
173
|
+
const {
|
|
174
|
+
pwd
|
|
175
|
+
} = this;
|
|
176
|
+
const {
|
|
177
|
+
api,
|
|
178
|
+
server
|
|
179
|
+
} = AGGRED_DIR;
|
|
180
|
+
const apiPath = path.normalize(path.join(pwd, api));
|
|
181
|
+
const serverPath = path.normalize(path.join(pwd, server));
|
|
182
|
+
const onlyApi = filepath.startsWith(apiPath);
|
|
183
|
+
const onlyWeb = filepath.startsWith(serverPath);
|
|
184
|
+
this.prepareFrameHandler({
|
|
185
|
+
onlyWeb,
|
|
186
|
+
onlyApi
|
|
187
|
+
});
|
|
153
188
|
} // exposed requestHandler
|
|
154
189
|
|
|
155
190
|
|
|
@@ -198,11 +233,15 @@ export class ModernServer {
|
|
|
198
233
|
} // gather frame extension and get framework handler
|
|
199
234
|
|
|
200
235
|
|
|
201
|
-
async prepareFrameHandler() {
|
|
236
|
+
async prepareFrameHandler(options) {
|
|
202
237
|
const {
|
|
203
238
|
workDir,
|
|
204
239
|
runner
|
|
205
|
-
} = this;
|
|
240
|
+
} = this;
|
|
241
|
+
const {
|
|
242
|
+
onlyApi,
|
|
243
|
+
onlyWeb
|
|
244
|
+
} = options || {}; // server hook, gather plugin inject
|
|
206
245
|
|
|
207
246
|
const _createMiddlewareColl = createMiddlewareCollecter(),
|
|
208
247
|
{
|
|
@@ -218,12 +257,12 @@ export class ModernServer {
|
|
|
218
257
|
const apiDir = path.join(workDir, API_DIR);
|
|
219
258
|
const serverDir = path.join(workDir, SERVER_DIR); // get api or web server handler from server-framework plugin
|
|
220
259
|
|
|
221
|
-
if (await fs.pathExists(path.join(serverDir))) {
|
|
260
|
+
if ((await fs.pathExists(path.join(serverDir))) && !onlyApi) {
|
|
222
261
|
const webExtension = mergeExtension(pluginWebExt);
|
|
223
262
|
this.frameWebHandler = await this.prepareWebHandler(webExtension);
|
|
224
263
|
}
|
|
225
264
|
|
|
226
|
-
if (fs.existsSync(apiDir)) {
|
|
265
|
+
if (fs.existsSync(apiDir) && !onlyWeb) {
|
|
227
266
|
const mode = fs.existsSync(path.join(apiDir, AGGRED_DIR.lambda)) ? ApiServerMode.frame : ApiServerMode.func;
|
|
228
267
|
debug('exists api dir', mode); // if use lambda/, mean framework style of writing, then discard user extension
|
|
229
268
|
|
|
@@ -294,7 +333,7 @@ export class ModernServer {
|
|
|
294
333
|
} = context;
|
|
295
334
|
|
|
296
335
|
if (!this.frameAPIHandler) {
|
|
297
|
-
throw new Error('can not found api
|
|
336
|
+
throw new Error('can not found api handler');
|
|
298
337
|
}
|
|
299
338
|
|
|
300
339
|
await this.frameAPIHandler(req, res);
|
|
@@ -527,12 +566,21 @@ export class ModernServer {
|
|
|
527
566
|
res.statusCode = 200;
|
|
528
567
|
req.logger = this.logger;
|
|
529
568
|
req.metrics = this.metrics;
|
|
530
|
-
|
|
569
|
+
let context;
|
|
570
|
+
|
|
571
|
+
try {
|
|
572
|
+
context = createContext(req, res);
|
|
573
|
+
} catch (e) {
|
|
574
|
+
this.logger.error(e);
|
|
575
|
+
res.statusCode = 500;
|
|
576
|
+
res.setHeader('content-type', mime.contentType('html'));
|
|
577
|
+
return res.end(createErrorDocument(500, ERROR_PAGE_TEXT[500]));
|
|
578
|
+
}
|
|
531
579
|
|
|
532
580
|
try {
|
|
533
|
-
this._handler(context, next);
|
|
581
|
+
return this._handler(context, next);
|
|
534
582
|
} catch (err) {
|
|
535
|
-
this.onError(context, err);
|
|
583
|
+
return this.onError(context, err);
|
|
536
584
|
}
|
|
537
585
|
}
|
|
538
586
|
|
|
@@ -555,7 +603,7 @@ export class ModernServer {
|
|
|
555
603
|
const route = matched.generate(context.url);
|
|
556
604
|
const {
|
|
557
605
|
entryName
|
|
558
|
-
} = route; // check entryName,
|
|
606
|
+
} = route; // check entryName, avoid matched '/' route
|
|
559
607
|
|
|
560
608
|
if (entryName === status.toString() || entryName === '_error') {
|
|
561
609
|
try {
|
|
@@ -11,6 +11,8 @@ var _querystring = _interopRequireDefault(require("querystring"));
|
|
|
11
11
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
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; }
|
|
15
|
+
|
|
14
16
|
class ModernServerContext {
|
|
15
17
|
/**
|
|
16
18
|
* http request
|
|
@@ -32,10 +34,14 @@ class ModernServerContext {
|
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
constructor(req, res) {
|
|
35
|
-
this
|
|
36
|
-
|
|
37
|
-
this
|
|
38
|
-
|
|
37
|
+
_defineProperty(this, "req", void 0);
|
|
38
|
+
|
|
39
|
+
_defineProperty(this, "res", void 0);
|
|
40
|
+
|
|
41
|
+
_defineProperty(this, "params", {});
|
|
42
|
+
|
|
43
|
+
_defineProperty(this, "serverData", void 0);
|
|
44
|
+
|
|
39
45
|
this.req = req;
|
|
40
46
|
this.res = res;
|
|
41
47
|
this.serverData = {};
|
|
@@ -132,7 +138,7 @@ class ModernServerContext {
|
|
|
132
138
|
}
|
|
133
139
|
|
|
134
140
|
set path(p) {
|
|
135
|
-
const url = new _url.URL(this.req.url, this.origin); // this should never
|
|
141
|
+
const url = new _url.URL(this.req.url, this.origin); // this should never happened
|
|
136
142
|
|
|
137
143
|
if (!url || !p) {
|
|
138
144
|
return;
|
|
@@ -5,11 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createRouteAPI = void 0;
|
|
7
7
|
|
|
8
|
+
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; }
|
|
9
|
+
|
|
8
10
|
class RouteAPI {
|
|
9
11
|
constructor(matched, router, url) {
|
|
10
|
-
this
|
|
11
|
-
|
|
12
|
-
this
|
|
12
|
+
_defineProperty(this, "router", void 0);
|
|
13
|
+
|
|
14
|
+
_defineProperty(this, "current", void 0);
|
|
15
|
+
|
|
16
|
+
_defineProperty(this, "url", void 0);
|
|
17
|
+
|
|
13
18
|
this.current = matched;
|
|
14
19
|
this.router = router;
|
|
15
20
|
this.url = url;
|
|
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createTemplateAPI = void 0;
|
|
7
|
+
|
|
8
|
+
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; }
|
|
9
|
+
|
|
7
10
|
const RegList = {
|
|
8
11
|
before: {
|
|
9
12
|
head: '<head>',
|
|
@@ -17,7 +20,8 @@ const RegList = {
|
|
|
17
20
|
|
|
18
21
|
class TemplateAPI {
|
|
19
22
|
constructor(content) {
|
|
20
|
-
this
|
|
23
|
+
_defineProperty(this, "content", void 0);
|
|
24
|
+
|
|
21
25
|
this.content = content;
|
|
22
26
|
}
|
|
23
27
|
|
|
@@ -20,8 +20,8 @@ const createProxyHandler = proxyOptions => {
|
|
|
20
20
|
// or an object in the form of { source: ProxyDetail }
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
const
|
|
24
|
-
const middlewares =
|
|
23
|
+
const formattedProxy = (0, _utils.formatProxyOptions)(proxyOptions);
|
|
24
|
+
const middlewares = formattedProxy.map(option => {
|
|
25
25
|
const middleware = (0, _httpProxyMiddleware.createProxyMiddleware)(option.context, option); // eslint-disable-next-line consistent-return
|
|
26
26
|
|
|
27
27
|
return async (ctx, next) => {
|
|
@@ -9,10 +9,14 @@ var _lruCache = _interopRequireDefault(require("lru-cache"));
|
|
|
9
9
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
|
12
|
+
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; }
|
|
13
|
+
|
|
12
14
|
class LRUCaches {
|
|
13
15
|
constructor(options) {
|
|
14
|
-
this
|
|
15
|
-
|
|
16
|
+
_defineProperty(this, "caches", void 0);
|
|
17
|
+
|
|
18
|
+
_defineProperty(this, "max", void 0);
|
|
19
|
+
|
|
16
20
|
this.max = options.max;
|
|
17
21
|
this.caches = new _lruCache.default(this.max);
|
|
18
22
|
}
|
|
@@ -18,9 +18,8 @@ var _pageCaches = require("./page-caches");
|
|
|
18
18
|
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
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
22
|
|
|
23
|
-
/* eslint-disable no-lone-blocks */
|
|
24
23
|
const MAX_CACHE_EACH_REQ = Number(process.env.ROUTE_CACHE_LIMIT) || 10;
|
|
25
24
|
const MAX_SIZE_EACH_CLUSTER = Number(process.env.CLUSTER_CACHE_LIMIT) || 100;
|
|
26
25
|
const BASE_LEVEL = 0;
|
|
@@ -30,10 +29,11 @@ const QUERY_HEADER_LEVEL = 3;
|
|
|
30
29
|
|
|
31
30
|
class CacheManager {
|
|
32
31
|
constructor(cacheOptions) {
|
|
33
|
-
this
|
|
34
|
-
this.cacheOptions = void 0;
|
|
32
|
+
_defineProperty(this, "cache", void 0);
|
|
35
33
|
|
|
36
|
-
this
|
|
34
|
+
_defineProperty(this, "cacheOptions", void 0);
|
|
35
|
+
|
|
36
|
+
_defineProperty(this, "find", (() => {
|
|
37
37
|
{
|
|
38
38
|
// eslint-disable-next-line consistent-this,@typescript-eslint/no-this-alias
|
|
39
39
|
const _this = this;
|
|
@@ -78,7 +78,7 @@ class CacheManager {
|
|
|
78
78
|
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
-
})();
|
|
81
|
+
})());
|
|
82
82
|
|
|
83
83
|
this.cacheOptions = cacheOptions;
|
|
84
84
|
this.cache = new _lruCache.default({
|
|
@@ -11,6 +11,8 @@ var _lruCache = _interopRequireDefault(require("lru-cache"));
|
|
|
11
11
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
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; }
|
|
15
|
+
|
|
14
16
|
const Byte = 1;
|
|
15
17
|
const KB = 1024 * Byte;
|
|
16
18
|
const MB = 1024 * KB;
|
|
@@ -28,7 +30,8 @@ const createCacheItem = async (filepath, mtime) => {
|
|
|
28
30
|
class LruReader {
|
|
29
31
|
// private timer?: NodeJS.Timeout;
|
|
30
32
|
constructor() {
|
|
31
|
-
this
|
|
33
|
+
_defineProperty(this, "cache", void 0);
|
|
34
|
+
|
|
32
35
|
this.cache = new _lruCache.default({
|
|
33
36
|
max: 256 * MB,
|
|
34
37
|
length: getContentLength,
|
|
@@ -13,10 +13,14 @@ Object.defineProperty(exports, "RouteMatcher", {
|
|
|
13
13
|
|
|
14
14
|
var _matcher = require("./matcher");
|
|
15
15
|
|
|
16
|
+
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; }
|
|
17
|
+
|
|
16
18
|
class RouteMatchManager {
|
|
17
19
|
constructor() {
|
|
18
|
-
this
|
|
19
|
-
|
|
20
|
+
_defineProperty(this, "matchers", void 0);
|
|
21
|
+
|
|
22
|
+
_defineProperty(this, "specs", []);
|
|
23
|
+
|
|
20
24
|
this.matchers = [];
|
|
21
25
|
} // get all routes matches pathname
|
|
22
26
|
|