@modern-js/prod-server 1.1.0 → 1.1.3
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/.eslintrc.js +8 -0
- package/CHANGELOG.md +47 -0
- package/dist/js/modern/libs/context/context.js +10 -17
- package/dist/js/modern/libs/loadConfig.js +1 -7
- package/dist/js/modern/libs/metrics.js +2 -2
- package/dist/js/modern/libs/render/cache/spr.js +1 -1
- package/dist/js/modern/libs/render/index.js +1 -2
- package/dist/js/modern/libs/render/measure.js +59 -0
- package/dist/js/modern/libs/render/ssr.js +6 -4
- package/dist/js/modern/libs/render/static.js +1 -1
- package/dist/js/modern/server/index.js +4 -2
- package/dist/js/modern/server/modern-server-split.js +4 -4
- package/dist/js/modern/server/modern-server.js +8 -9
- package/dist/js/modern/utils.js +0 -9
- package/dist/js/node/libs/context/context.js +10 -18
- package/dist/js/node/libs/loadConfig.js +1 -8
- package/dist/js/node/libs/metrics.js +2 -2
- package/dist/js/node/libs/render/cache/spr.js +2 -2
- package/dist/js/node/libs/render/index.js +1 -3
- package/dist/js/node/libs/render/measure.js +71 -0
- package/dist/js/node/libs/render/ssr.js +7 -5
- package/dist/js/node/libs/render/static.js +3 -3
- package/dist/js/node/server/index.js +3 -1
- package/dist/js/node/server/modern-server-split.js +4 -4
- package/dist/js/node/server/modern-server.js +9 -11
- package/dist/js/node/utils.js +1 -13
- package/dist/types/libs/context/context.d.ts +3 -8
- package/dist/types/libs/render/measure.d.ts +10 -0
- package/dist/types/server/modern-server.d.ts +1 -1
- package/dist/types/utils.d.ts +0 -1
- package/package.json +5 -9
- package/src/libs/context/context.ts +13 -18
- package/src/libs/loadConfig.ts +1 -7
- package/src/libs/metrics.ts +2 -2
- package/src/libs/render/cache/spr.ts +1 -1
- package/src/libs/render/index.ts +1 -2
- package/src/libs/render/measure.ts +66 -0
- package/src/libs/render/ssr.ts +6 -4
- package/src/libs/render/static.ts +1 -1
- package/src/server/index.ts +7 -2
- package/src/server/modern-server-split.ts +4 -4
- package/src/server/modern-server.ts +8 -9
- package/src/utils.ts +0 -9
- package/tests/.eslintrc.js +0 -6
- package/tests/context.test.ts +0 -52
- package/tests/fixtures/hosting-files/static/index.js +0 -1
- package/tests/fixtures/pure/modern.config.js +0 -5
- package/tests/fixtures/pure/package.json +0 -21
- package/tests/fixtures/pure/src/App.css +0 -119
- package/tests/fixtures/pure/src/App.tsx +0 -43
- package/tests/fixtures/pure/test-dist/bundles/main.js +0 -5
- package/tests/fixtures/pure/test-dist/html/main/index.html +0 -36
- package/tests/fixtures/pure/test-dist/route.json +0 -31
- package/tests/fixtures/pure/tsconfig.json +0 -12
- package/tests/fixtures/reader/index.ts +0 -3
- package/tests/fixtures/route-spec/dynamic.json +0 -13
- package/tests/fixtures/route-spec/index.json +0 -29
- package/tests/fixtures/ssr/bundle-error.js +0 -3
- package/tests/fixtures/ssr/bundle.js +0 -5
- package/tests/fixtures/ssr/tpl.html +0 -11
- package/tests/fixtures/static-dir/bar.html +0 -11
- package/tests/fixtures/static-dir/baz/index.html +0 -11
- package/tests/fixtures/static-dir/foo/index.html +0 -11
- package/tests/helper.ts +0 -8
- package/tests/hook.test.ts +0 -44
- package/tests/loadConfig.test.ts +0 -65
- package/tests/middleware.test.ts +0 -179
- package/tests/render.test.ts +0 -206
- package/tests/route.test.ts +0 -77
- package/tests/server.test.ts +0 -288
- package/tests/spr.test.ts +0 -38
- package/tests/tsconfig.json +0 -12
- package/tests/utils.test.ts +0 -106
package/.eslintrc.js
ADDED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
# @modern-js/prod-server
|
|
2
2
|
|
|
3
|
+
## 1.1.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a4c5fe78: fix test case
|
|
8
|
+
- 6fa74d5f: add internal metrics and logger
|
|
9
|
+
- Updated dependencies [0ee4bb4e]
|
|
10
|
+
- Updated dependencies [6fa74d5f]
|
|
11
|
+
- @modern-js/utils@1.7.0
|
|
12
|
+
- @modern-js/server-core@1.3.3
|
|
13
|
+
|
|
14
|
+
## 1.1.2
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- a0499e4f: fix: throw error in server config
|
|
19
|
+
- 592edabc: feat: prebundle url-join,mime-types,json5,fast-glob,globby,ora,inquirer
|
|
20
|
+
- 895fa0ff: chore: using "workspace:\*" in devDependencies
|
|
21
|
+
- Updated dependencies [2d155c4c]
|
|
22
|
+
- Updated dependencies [123e432d]
|
|
23
|
+
- Updated dependencies [e5a9b26d]
|
|
24
|
+
- Updated dependencies [0b26b93b]
|
|
25
|
+
- Updated dependencies [123e432d]
|
|
26
|
+
- Updated dependencies [f9f66ef9]
|
|
27
|
+
- Updated dependencies [592edabc]
|
|
28
|
+
- Updated dependencies [895fa0ff]
|
|
29
|
+
- Updated dependencies [3578913e]
|
|
30
|
+
- Updated dependencies [1c3beab3]
|
|
31
|
+
- @modern-js/utils@1.6.0
|
|
32
|
+
- @modern-js/server-core@1.3.2
|
|
33
|
+
|
|
34
|
+
## 1.1.1
|
|
35
|
+
|
|
36
|
+
### Patch Changes
|
|
37
|
+
|
|
38
|
+
- 6cffe99d: chore:
|
|
39
|
+
remove react eslint rules for `modern-js` rule set.
|
|
40
|
+
add .eslintrc for each package to speed up linting
|
|
41
|
+
- 04ae5262: chore: bump @modern-js/utils to v1.4.1 in dependencies
|
|
42
|
+
- 60f7d8bf: feat: add tests dir to npmignore
|
|
43
|
+
- Updated dependencies [b8599d09]
|
|
44
|
+
- Updated dependencies [04ae5262]
|
|
45
|
+
- Updated dependencies [60f7d8bf]
|
|
46
|
+
- Updated dependencies [3bf4f8b0]
|
|
47
|
+
- @modern-js/utils@1.5.0
|
|
48
|
+
- @modern-js/server-core@1.3.1
|
|
49
|
+
|
|
3
50
|
## 1.1.0
|
|
4
51
|
|
|
5
52
|
### Minor Changes
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { URL } from 'url';
|
|
2
2
|
import qs from 'querystring';
|
|
3
|
-
import { toMessage } from "../../utils";
|
|
4
3
|
export class ModernServerContext {
|
|
5
4
|
/**
|
|
6
5
|
* http request
|
|
@@ -13,17 +12,21 @@ export class ModernServerContext {
|
|
|
13
12
|
/**
|
|
14
13
|
* url params
|
|
15
14
|
*/
|
|
15
|
+
get logger() {
|
|
16
|
+
return this.req.logger;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get metrics() {
|
|
20
|
+
return this.req.metrics;
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
constructor(req, res) {
|
|
17
24
|
this.req = void 0;
|
|
18
25
|
this.res = void 0;
|
|
19
26
|
this.params = {};
|
|
20
|
-
this.logger = void 0;
|
|
21
|
-
this.metrics = void 0;
|
|
22
27
|
this.serverData = void 0;
|
|
23
28
|
this.req = req;
|
|
24
29
|
this.res = res;
|
|
25
|
-
this.logger = req.logger;
|
|
26
|
-
this.metrics = req.metrics;
|
|
27
30
|
this.serverData = {};
|
|
28
31
|
this.bind();
|
|
29
32
|
}
|
|
@@ -163,18 +166,8 @@ export class ModernServerContext {
|
|
|
163
166
|
return this.res.writableEnded;
|
|
164
167
|
}
|
|
165
168
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
headers: this.headers,
|
|
169
|
-
href: this.href,
|
|
170
|
-
url: this.url
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
error(dig, err = '') {
|
|
175
|
-
const message = toMessage(dig, err);
|
|
176
|
-
const reqInfo = this.logInfo();
|
|
177
|
-
this.logger.error(`${reqInfo.url} - ${message}`, reqInfo);
|
|
169
|
+
error(dig, e = '') {
|
|
170
|
+
this.logger.error(`Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, this.path, this.headers);
|
|
178
171
|
}
|
|
179
172
|
|
|
180
173
|
}
|
|
@@ -7,19 +7,13 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import { compatRequire, fs, DEFAULT_SERVER_CONFIG } from '@modern-js/utils';
|
|
9
9
|
import mergeDeep from 'merge-deep';
|
|
10
|
-
import { debug } from "../utils";
|
|
11
10
|
export const getServerConfigPath = (distDirectory, serverConfigFile = DEFAULT_SERVER_CONFIG) => {
|
|
12
11
|
const serverConfigPath = path.join(distDirectory, serverConfigFile);
|
|
13
12
|
return `${serverConfigPath}.js`;
|
|
14
13
|
};
|
|
15
14
|
export const requireConfig = serverConfigPath => {
|
|
16
15
|
if (fs.pathExistsSync(serverConfigPath)) {
|
|
17
|
-
|
|
18
|
-
return compatRequire(serverConfigPath);
|
|
19
|
-
} catch (error) {
|
|
20
|
-
debug(error);
|
|
21
|
-
return {};
|
|
22
|
-
}
|
|
16
|
+
return compatRequire(serverConfigPath);
|
|
23
17
|
}
|
|
24
18
|
|
|
25
19
|
return {};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable no-lone-blocks */
|
|
4
4
|
import crypto from 'crypto';
|
|
5
5
|
import LRUCache from 'lru-cache';
|
|
6
|
-
import mime from '
|
|
6
|
+
import { mime } from '@modern-js/utils';
|
|
7
7
|
import { cacheAddition, connectFactor, fname, maybeSync, namespaceHash, valueFactory, withCoalescedInvoke } from "./util";
|
|
8
8
|
import { createPageCaches } from "./page-caches";
|
|
9
9
|
const MAX_CACHE_EACH_REQ = Number(process.env.ROUTE_CACHE_LIMIT) || 10;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import { fs } from '@modern-js/utils';
|
|
3
|
-
import mime from 'mime-types';
|
|
2
|
+
import { fs, mime } from '@modern-js/utils';
|
|
4
3
|
import { ERROR_DIGEST } from "../../constants";
|
|
5
4
|
import { handleDirectory } from "./static";
|
|
6
5
|
import { readFile } from "./reader";
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
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; }
|
|
4
|
+
|
|
5
|
+
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; }
|
|
6
|
+
|
|
7
|
+
export const createMetrics = (context, metrics) => {
|
|
8
|
+
const {
|
|
9
|
+
entryName: entry,
|
|
10
|
+
request
|
|
11
|
+
} = context;
|
|
12
|
+
const {
|
|
13
|
+
pathname = ''
|
|
14
|
+
} = request || {};
|
|
15
|
+
|
|
16
|
+
const emitTimer = (name, cost, tags = {}) => {
|
|
17
|
+
metrics.emitTimer(name, cost, _objectSpread(_objectSpread({}, tags), {}, {
|
|
18
|
+
pathname,
|
|
19
|
+
entry
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const emitCounter = (name, counter, tags = {}) => {
|
|
24
|
+
metrics.emitCounter(name, counter, _objectSpread(_objectSpread({}, tags), {}, {
|
|
25
|
+
pathname,
|
|
26
|
+
entry
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return {
|
|
31
|
+
emitTimer,
|
|
32
|
+
emitCounter
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export const createLogger = (serverContext, logger) => {
|
|
36
|
+
const request = serverContext.request || {};
|
|
37
|
+
const {
|
|
38
|
+
headers = {},
|
|
39
|
+
pathname = ''
|
|
40
|
+
} = request;
|
|
41
|
+
|
|
42
|
+
const debug = (message, ...args) => {
|
|
43
|
+
logger.debug(`SSR Debug - ${message}, req.url = %s`, ...args, pathname);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const info = (message, ...args) => {
|
|
47
|
+
logger.info(`SSR Info - ${message}, req.url = %s`, ...args, pathname);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const error = (message, e) => {
|
|
51
|
+
logger.error(`SSR Error - ${message}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, pathname, headers);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
error,
|
|
56
|
+
info,
|
|
57
|
+
debug
|
|
58
|
+
};
|
|
59
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import { SERVER_RENDER_FUNCTION_NAME } from '@modern-js/utils';
|
|
3
|
-
import mime from 'mime-types';
|
|
2
|
+
import { mime, SERVER_RENDER_FUNCTION_NAME } from '@modern-js/utils';
|
|
4
3
|
import cookie from 'cookie';
|
|
5
4
|
import cache from "./cache";
|
|
5
|
+
import { createLogger, createMetrics } from "./measure";
|
|
6
6
|
export const render = async (ctx, renderOptions, runner) => {
|
|
7
7
|
const {
|
|
8
8
|
urlPath,
|
|
@@ -29,9 +29,11 @@ export const render = async (ctx, renderOptions, runner) => {
|
|
|
29
29
|
entryName,
|
|
30
30
|
distDir,
|
|
31
31
|
staticGenerate,
|
|
32
|
-
logger:
|
|
33
|
-
metrics:
|
|
32
|
+
logger: undefined,
|
|
33
|
+
metrics: undefined
|
|
34
34
|
};
|
|
35
|
+
context.logger = createLogger(context, ctx.logger);
|
|
36
|
+
context.metrics = createMetrics(context, ctx.metrics);
|
|
35
37
|
runner.extendSSRContext(context);
|
|
36
38
|
|
|
37
39
|
const serverRender = require(bundleJS)[SERVER_RENDER_FUNCTION_NAME];
|
|
@@ -6,7 +6,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
6
6
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import { serverManager, AppContext, ConfigContext, loadPlugins } from '@modern-js/server-core';
|
|
9
|
-
import {
|
|
9
|
+
import { Logger, SHARED_DIR, OUTPUT_CONFIG_FILE } from '@modern-js/utils';
|
|
10
10
|
import { metrics as defaultMetrics } from "../libs/metrics";
|
|
11
11
|
import { loadConfig, getServerConfigPath, requireConfig } from "../libs/loadConfig";
|
|
12
12
|
import { debug } from "../utils";
|
|
@@ -19,7 +19,9 @@ export class Server {
|
|
|
19
19
|
this.app = void 0;
|
|
20
20
|
this.runner = void 0;
|
|
21
21
|
this.serverConfig = void 0;
|
|
22
|
-
options.logger = options.logger ||
|
|
22
|
+
options.logger = options.logger || new Logger({
|
|
23
|
+
level: 'warn'
|
|
24
|
+
});
|
|
23
25
|
options.metrics = options.metrics || defaultMetrics;
|
|
24
26
|
this.options = options;
|
|
25
27
|
this.serverConfig = {};
|
|
@@ -10,9 +10,9 @@ class ModernSSRServer extends ModernServer {
|
|
|
10
10
|
return routes.filter(route => route.isSSR);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
async
|
|
13
|
+
async setupBeforeProdMiddleware() {
|
|
14
14
|
if (this.runMode === RUN_MODE.FULL) {
|
|
15
|
-
await super.
|
|
15
|
+
await super.setupBeforeProdMiddleware();
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -33,9 +33,9 @@ class ModernAPIServer extends ModernServer {
|
|
|
33
33
|
return routes.filter(route => route.isApi);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
async
|
|
36
|
+
async setupBeforeProdMiddleware() {
|
|
37
37
|
if (this.runMode === RUN_MODE.FULL) {
|
|
38
|
-
await super.
|
|
38
|
+
await super.setupBeforeProdMiddleware();
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -14,10 +14,9 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
14
14
|
import { createServer } from 'http';
|
|
15
15
|
import util from 'util';
|
|
16
16
|
import path from 'path';
|
|
17
|
-
import { fs, ROUTE_SPEC_FILE } from '@modern-js/utils';
|
|
18
|
-
import mime from 'mime-types';
|
|
17
|
+
import { fs, mime, ROUTE_SPEC_FILE } from '@modern-js/utils';
|
|
19
18
|
import axios from 'axios';
|
|
20
|
-
import clone from 'lodash
|
|
19
|
+
import { clone } from '@modern-js/utils/lodash';
|
|
21
20
|
import { RouteMatchManager } from "../libs/route";
|
|
22
21
|
import { createRenderHandler } from "../libs/render";
|
|
23
22
|
import { createStaticFileHandler } from "../libs/serve-file";
|
|
@@ -129,7 +128,7 @@ export class ModernServer {
|
|
|
129
128
|
distDir,
|
|
130
129
|
staticGenerate
|
|
131
130
|
});
|
|
132
|
-
await this.
|
|
131
|
+
await this.setupBeforeProdMiddleware();
|
|
133
132
|
this.addHandler(this.staticFileHandler);
|
|
134
133
|
this.addHandler(this.routeHandler.bind(this)); // compose middlewares to http handler
|
|
135
134
|
|
|
@@ -194,7 +193,7 @@ export class ModernServer {
|
|
|
194
193
|
|
|
195
194
|
|
|
196
195
|
render404(context) {
|
|
197
|
-
context.error(ERROR_DIGEST.ENOTF);
|
|
196
|
+
context.error(ERROR_DIGEST.ENOTF, '404 Not Found');
|
|
198
197
|
this.renderErrorPage(context, 404);
|
|
199
198
|
} // gather frame extension and get framework handler
|
|
200
199
|
|
|
@@ -277,12 +276,12 @@ export class ModernServer {
|
|
|
277
276
|
});
|
|
278
277
|
}
|
|
279
278
|
|
|
280
|
-
async
|
|
279
|
+
async setupBeforeProdMiddleware() {
|
|
281
280
|
const {
|
|
282
281
|
conf,
|
|
283
282
|
runner
|
|
284
283
|
} = this;
|
|
285
|
-
const preMiddleware = await runner.
|
|
284
|
+
const preMiddleware = await runner.beforeProdServer(conf);
|
|
286
285
|
preMiddleware.flat().forEach(mid => {
|
|
287
286
|
this.addHandler(mid);
|
|
288
287
|
});
|
|
@@ -526,8 +525,8 @@ export class ModernServer {
|
|
|
526
525
|
requestHandler(req, res, next = () => {// empty
|
|
527
526
|
}) {
|
|
528
527
|
res.statusCode = 200;
|
|
529
|
-
req.logger =
|
|
530
|
-
req.metrics =
|
|
528
|
+
req.logger = this.logger;
|
|
529
|
+
req.metrics = this.metrics;
|
|
531
530
|
const context = createContext(req, res);
|
|
532
531
|
|
|
533
532
|
try {
|
package/dist/js/modern/utils.js
CHANGED
|
@@ -7,15 +7,6 @@ export const mergeExtension = users => {
|
|
|
7
7
|
middleware: output.concat(users)
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
|
-
export const toMessage = (dig, e) => {
|
|
11
|
-
const message = e instanceof Error ? e.message : e;
|
|
12
|
-
|
|
13
|
-
if (message) {
|
|
14
|
-
return `${dig}: ${message}`;
|
|
15
|
-
} else {
|
|
16
|
-
return dig;
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
10
|
export const noop = () => {// noop
|
|
20
11
|
};
|
|
21
12
|
export const createErrorDocument = (status, text) => {
|
|
@@ -9,8 +9,6 @@ var _url = require("url");
|
|
|
9
9
|
|
|
10
10
|
var _querystring = _interopRequireDefault(require("querystring"));
|
|
11
11
|
|
|
12
|
-
var _utils = require("../../utils");
|
|
13
|
-
|
|
14
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
13
|
|
|
16
14
|
class ModernServerContext {
|
|
@@ -25,17 +23,21 @@ class ModernServerContext {
|
|
|
25
23
|
/**
|
|
26
24
|
* url params
|
|
27
25
|
*/
|
|
26
|
+
get logger() {
|
|
27
|
+
return this.req.logger;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get metrics() {
|
|
31
|
+
return this.req.metrics;
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
constructor(req, res) {
|
|
29
35
|
this.req = void 0;
|
|
30
36
|
this.res = void 0;
|
|
31
37
|
this.params = {};
|
|
32
|
-
this.logger = void 0;
|
|
33
|
-
this.metrics = void 0;
|
|
34
38
|
this.serverData = void 0;
|
|
35
39
|
this.req = req;
|
|
36
40
|
this.res = res;
|
|
37
|
-
this.logger = req.logger;
|
|
38
|
-
this.metrics = req.metrics;
|
|
39
41
|
this.serverData = {};
|
|
40
42
|
this.bind();
|
|
41
43
|
}
|
|
@@ -175,18 +177,8 @@ class ModernServerContext {
|
|
|
175
177
|
return this.res.writableEnded;
|
|
176
178
|
}
|
|
177
179
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
headers: this.headers,
|
|
181
|
-
href: this.href,
|
|
182
|
-
url: this.url
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
error(dig, err = '') {
|
|
187
|
-
const message = (0, _utils.toMessage)(dig, err);
|
|
188
|
-
const reqInfo = this.logInfo();
|
|
189
|
-
this.logger.error(`${reqInfo.url} - ${message}`, reqInfo);
|
|
180
|
+
error(dig, e = '') {
|
|
181
|
+
this.logger.error(`Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, this.path, this.headers);
|
|
190
182
|
}
|
|
191
183
|
|
|
192
184
|
}
|
|
@@ -11,8 +11,6 @@ var _utils = require("@modern-js/utils");
|
|
|
11
11
|
|
|
12
12
|
var _mergeDeep = _interopRequireDefault(require("merge-deep"));
|
|
13
13
|
|
|
14
|
-
var _utils2 = require("../utils");
|
|
15
|
-
|
|
16
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
15
|
|
|
18
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -34,12 +32,7 @@ exports.getServerConfigPath = getServerConfigPath;
|
|
|
34
32
|
|
|
35
33
|
const requireConfig = serverConfigPath => {
|
|
36
34
|
if (_utils.fs.pathExistsSync(serverConfigPath)) {
|
|
37
|
-
|
|
38
|
-
return (0, _utils.compatRequire)(serverConfigPath);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
(0, _utils2.debug)(error);
|
|
41
|
-
return {};
|
|
42
|
-
}
|
|
35
|
+
return (0, _utils.compatRequire)(serverConfigPath);
|
|
43
36
|
}
|
|
44
37
|
|
|
45
38
|
return {};
|
|
@@ -10,7 +10,7 @@ var _crypto = _interopRequireDefault(require("crypto"));
|
|
|
10
10
|
|
|
11
11
|
var _lruCache = _interopRequireDefault(require("lru-cache"));
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _utils = require("@modern-js/utils");
|
|
14
14
|
|
|
15
15
|
var _util = require("./util");
|
|
16
16
|
|
|
@@ -220,7 +220,7 @@ class CacheManager {
|
|
|
220
220
|
const isGarbage = limitTime ? Date.now() - limitTime > 0 : false;
|
|
221
221
|
return {
|
|
222
222
|
content: html || '',
|
|
223
|
-
contentType:
|
|
223
|
+
contentType: _utils.mime.contentType('html'),
|
|
224
224
|
isStale,
|
|
225
225
|
isGarbage,
|
|
226
226
|
hash: cacheHash
|
|
@@ -9,8 +9,6 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
9
9
|
|
|
10
10
|
var _utils = require("@modern-js/utils");
|
|
11
11
|
|
|
12
|
-
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
13
|
-
|
|
14
12
|
var _constants = require("../../constants");
|
|
15
13
|
|
|
16
14
|
var _static = require("./static");
|
|
@@ -84,7 +82,7 @@ const createRenderHandler = ({
|
|
|
84
82
|
|
|
85
83
|
return {
|
|
86
84
|
content,
|
|
87
|
-
contentType:
|
|
85
|
+
contentType: _utils.mime.contentType(_path.default.extname(templateHTML))
|
|
88
86
|
};
|
|
89
87
|
};
|
|
90
88
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createMetrics = exports.createLogger = void 0;
|
|
7
|
+
|
|
8
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
9
|
+
|
|
10
|
+
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; }
|
|
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
|
+
|
|
14
|
+
const createMetrics = (context, metrics) => {
|
|
15
|
+
const {
|
|
16
|
+
entryName: entry,
|
|
17
|
+
request
|
|
18
|
+
} = context;
|
|
19
|
+
const {
|
|
20
|
+
pathname = ''
|
|
21
|
+
} = request || {};
|
|
22
|
+
|
|
23
|
+
const emitTimer = (name, cost, tags = {}) => {
|
|
24
|
+
metrics.emitTimer(name, cost, _objectSpread(_objectSpread({}, tags), {}, {
|
|
25
|
+
pathname,
|
|
26
|
+
entry
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const emitCounter = (name, counter, tags = {}) => {
|
|
31
|
+
metrics.emitCounter(name, counter, _objectSpread(_objectSpread({}, tags), {}, {
|
|
32
|
+
pathname,
|
|
33
|
+
entry
|
|
34
|
+
}));
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
emitTimer,
|
|
39
|
+
emitCounter
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports.createMetrics = createMetrics;
|
|
44
|
+
|
|
45
|
+
const createLogger = (serverContext, logger) => {
|
|
46
|
+
const request = serverContext.request || {};
|
|
47
|
+
const {
|
|
48
|
+
headers = {},
|
|
49
|
+
pathname = ''
|
|
50
|
+
} = request;
|
|
51
|
+
|
|
52
|
+
const debug = (message, ...args) => {
|
|
53
|
+
logger.debug(`SSR Debug - ${message}, req.url = %s`, ...args, pathname);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const info = (message, ...args) => {
|
|
57
|
+
logger.info(`SSR Info - ${message}, req.url = %s`, ...args, pathname);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const error = (message, e) => {
|
|
61
|
+
logger.error(`SSR Error - ${message}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, pathname, headers);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
error,
|
|
66
|
+
info,
|
|
67
|
+
debug
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
exports.createLogger = createLogger;
|
|
@@ -9,12 +9,12 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
9
9
|
|
|
10
10
|
var _utils = require("@modern-js/utils");
|
|
11
11
|
|
|
12
|
-
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
13
|
-
|
|
14
12
|
var _cookie = _interopRequireDefault(require("cookie"));
|
|
15
13
|
|
|
16
14
|
var _cache = _interopRequireDefault(require("./cache"));
|
|
17
15
|
|
|
16
|
+
var _measure = require("./measure");
|
|
17
|
+
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
20
|
const render = async (ctx, renderOptions, runner) => {
|
|
@@ -45,9 +45,11 @@ const render = async (ctx, renderOptions, runner) => {
|
|
|
45
45
|
entryName,
|
|
46
46
|
distDir,
|
|
47
47
|
staticGenerate,
|
|
48
|
-
logger:
|
|
49
|
-
metrics:
|
|
48
|
+
logger: undefined,
|
|
49
|
+
metrics: undefined
|
|
50
50
|
};
|
|
51
|
+
context.logger = (0, _measure.createLogger)(context, ctx.logger);
|
|
52
|
+
context.metrics = (0, _measure.createMetrics)(context, ctx.metrics);
|
|
51
53
|
runner.extendSSRContext(context);
|
|
52
54
|
|
|
53
55
|
const serverRender = require(bundleJS)[_utils.SERVER_RENDER_FUNCTION_NAME];
|
|
@@ -69,7 +71,7 @@ const render = async (ctx, renderOptions, runner) => {
|
|
|
69
71
|
|
|
70
72
|
return {
|
|
71
73
|
content: html,
|
|
72
|
-
contentType:
|
|
74
|
+
contentType: _utils.mime.contentType('html')
|
|
73
75
|
};
|
|
74
76
|
};
|
|
75
77
|
|
|
@@ -7,7 +7,7 @@ exports.handleDirectory = handleDirectory;
|
|
|
7
7
|
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _utils = require("@modern-js/utils");
|
|
11
11
|
|
|
12
12
|
var _reader = require("./reader");
|
|
13
13
|
|
|
@@ -23,7 +23,7 @@ async function handleDirectory(ctx, entryPath, urlPath) {
|
|
|
23
23
|
|
|
24
24
|
let content = await (0, _reader.readFile)(filepath);
|
|
25
25
|
|
|
26
|
-
let contentType =
|
|
26
|
+
let contentType = _utils.mime.contentType(_path.default.extname(filepath) || ''); // automatic addressing
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
if (!content) {
|
|
@@ -39,7 +39,7 @@ async function handleDirectory(ctx, entryPath, urlPath) {
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
if (content) {
|
|
42
|
-
contentType =
|
|
42
|
+
contentType = _utils.mime.contentType('html');
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -35,7 +35,9 @@ class Server {
|
|
|
35
35
|
this.app = void 0;
|
|
36
36
|
this.runner = void 0;
|
|
37
37
|
this.serverConfig = void 0;
|
|
38
|
-
options.logger = options.logger || _utils.
|
|
38
|
+
options.logger = options.logger || new _utils.Logger({
|
|
39
|
+
level: 'warn'
|
|
40
|
+
});
|
|
39
41
|
options.metrics = options.metrics || _metrics.metrics;
|
|
40
42
|
this.options = options;
|
|
41
43
|
this.serverConfig = {};
|