@modern-js/prod-server 1.1.1 → 1.1.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/js/modern/libs/context/context.js +11 -18
  3. package/dist/js/modern/libs/loadConfig.js +1 -7
  4. package/dist/js/modern/libs/metrics.js +2 -2
  5. package/dist/js/modern/libs/proxy.js +2 -2
  6. package/dist/js/modern/libs/render/cache/spr.js +1 -1
  7. package/dist/js/modern/libs/render/index.js +1 -2
  8. package/dist/js/modern/libs/render/measure.js +59 -0
  9. package/dist/js/modern/libs/render/ssr.js +6 -4
  10. package/dist/js/modern/libs/render/static.js +1 -1
  11. package/dist/js/modern/server/index.js +4 -2
  12. package/dist/js/modern/server/modern-server-split.js +4 -4
  13. package/dist/js/modern/server/modern-server.js +10 -11
  14. package/dist/js/modern/utils.js +0 -9
  15. package/dist/js/node/libs/context/context.js +11 -19
  16. package/dist/js/node/libs/loadConfig.js +1 -8
  17. package/dist/js/node/libs/metrics.js +2 -2
  18. package/dist/js/node/libs/proxy.js +2 -2
  19. package/dist/js/node/libs/render/cache/spr.js +2 -2
  20. package/dist/js/node/libs/render/index.js +1 -3
  21. package/dist/js/node/libs/render/measure.js +71 -0
  22. package/dist/js/node/libs/render/ssr.js +7 -5
  23. package/dist/js/node/libs/render/static.js +3 -3
  24. package/dist/js/node/server/index.js +3 -1
  25. package/dist/js/node/server/modern-server-split.js +4 -4
  26. package/dist/js/node/server/modern-server.js +11 -13
  27. package/dist/js/node/utils.js +1 -13
  28. package/dist/types/libs/context/context.d.ts +3 -8
  29. package/dist/types/libs/render/measure.d.ts +10 -0
  30. package/dist/types/server/modern-server.d.ts +1 -1
  31. package/dist/types/utils.d.ts +0 -1
  32. package/package.json +5 -10
  33. package/src/libs/context/context.ts +14 -19
  34. package/src/libs/loadConfig.ts +1 -7
  35. package/src/libs/metrics.ts +2 -2
  36. package/src/libs/proxy.ts +2 -2
  37. package/src/libs/render/cache/spr.ts +1 -1
  38. package/src/libs/render/index.ts +1 -2
  39. package/src/libs/render/measure.ts +66 -0
  40. package/src/libs/render/ssr.ts +6 -4
  41. package/src/libs/render/static.ts +1 -1
  42. package/src/server/index.ts +7 -2
  43. package/src/server/modern-server-split.ts +4 -4
  44. package/src/server/modern-server.ts +10 -11
  45. package/src/utils.ts +0 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # @modern-js/prod-server
2
2
 
3
+ ## 1.1.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 69a728375: fix: remove exports.jsnext:source after publish
8
+ - Updated dependencies [cd7346b0d]
9
+ - Updated dependencies [69a728375]
10
+ - @modern-js/utils@1.7.2
11
+ - @modern-js/server-core@1.3.4
12
+
13
+ ## 1.1.3
14
+
15
+ ### Patch Changes
16
+
17
+ - a4c5fe78: fix test case
18
+ - 6fa74d5f: add internal metrics and logger
19
+ - Updated dependencies [0ee4bb4e]
20
+ - Updated dependencies [6fa74d5f]
21
+ - @modern-js/utils@1.7.0
22
+ - @modern-js/server-core@1.3.3
23
+
24
+ ## 1.1.2
25
+
26
+ ### Patch Changes
27
+
28
+ - a0499e4f: fix: throw error in server config
29
+ - 592edabc: feat: prebundle url-join,mime-types,json5,fast-glob,globby,ora,inquirer
30
+ - 895fa0ff: chore: using "workspace:\*" in devDependencies
31
+ - Updated dependencies [2d155c4c]
32
+ - Updated dependencies [123e432d]
33
+ - Updated dependencies [e5a9b26d]
34
+ - Updated dependencies [0b26b93b]
35
+ - Updated dependencies [123e432d]
36
+ - Updated dependencies [f9f66ef9]
37
+ - Updated dependencies [592edabc]
38
+ - Updated dependencies [895fa0ff]
39
+ - Updated dependencies [3578913e]
40
+ - Updated dependencies [1c3beab3]
41
+ - @modern-js/utils@1.6.0
42
+ - @modern-js/server-core@1.3.2
43
+
3
44
  ## 1.1.1
4
45
 
5
46
  ### Patch 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
  }
@@ -118,7 +121,7 @@ export class ModernServerContext {
118
121
  }
119
122
 
120
123
  set path(p) {
121
- const url = new URL(this.req.url, this.origin); // this should never happend
124
+ const url = new URL(this.req.url, this.origin); // this should never happened
122
125
 
123
126
  if (!url || !p) {
124
127
  return;
@@ -163,18 +166,8 @@ export class ModernServerContext {
163
166
  return this.res.writableEnded;
164
167
  }
165
168
 
166
- logInfo() {
167
- return {
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
- try {
18
- return compatRequire(serverConfigPath);
19
- } catch (error) {
20
- debug(error);
21
- return {};
22
- }
16
+ return compatRequire(serverConfigPath);
23
17
  }
24
18
 
25
19
  return {};
@@ -2,10 +2,10 @@ const metrics = {
2
2
  gauges() {// no impl
3
3
  },
4
4
 
5
- counter() {// no impl
5
+ emitCounter() {// no impl
6
6
  },
7
7
 
8
- timer() {// no impl
8
+ emitTimer() {// no impl
9
9
  }
10
10
 
11
11
  };
@@ -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 formatedProxy = formatProxyOptions(proxyOptions);
14
- const middlewares = formatedProxy.map(option => {
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) => {
@@ -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 'mime-types';
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: ctx.logger,
33
- metrics: ctx.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];
@@ -1,5 +1,5 @@
1
1
  import path from 'path';
2
- import mime from 'mime-types';
2
+ import { mime } from '@modern-js/utils';
3
3
  import { readFile } from "./reader";
4
4
  export async function handleDirectory(ctx, entryPath, urlPath) {
5
5
  const {
@@ -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 { logger as defaultLogger, SHARED_DIR, OUTPUT_CONFIG_FILE } from '@modern-js/utils';
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 || defaultLogger;
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 preServerInit() {
13
+ async setupBeforeProdMiddleware() {
14
14
  if (this.runMode === RUN_MODE.FULL) {
15
- await super.preServerInit();
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 preServerInit() {
36
+ async setupBeforeProdMiddleware() {
37
37
  if (this.runMode === RUN_MODE.FULL) {
38
- await super.preServerInit();
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.clone';
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.preServerInit();
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 preServerInit() {
279
+ async setupBeforeProdMiddleware() {
281
280
  const {
282
281
  conf,
283
282
  runner
284
283
  } = this;
285
- const preMiddleware = await runner.preServerInit(conf);
284
+ const preMiddleware = await runner.beforeProdServer(conf);
286
285
  preMiddleware.flat().forEach(mid => {
287
286
  this.addHandler(mid);
288
287
  });
@@ -295,7 +294,7 @@ export class ModernServer {
295
294
  } = context;
296
295
 
297
296
  if (!this.frameAPIHandler) {
298
- throw new Error('can not found api hanlder');
297
+ throw new Error('can not found api handler');
299
298
  }
300
299
 
301
300
  await this.frameAPIHandler(req, res);
@@ -526,8 +525,8 @@ export class ModernServer {
526
525
  requestHandler(req, res, next = () => {// empty
527
526
  }) {
528
527
  res.statusCode = 200;
529
- req.logger = req.logger || this.logger;
530
- req.metrics = req.metrics || this.metrics;
528
+ req.logger = this.logger;
529
+ req.metrics = this.metrics;
531
530
  const context = createContext(req, res);
532
531
 
533
532
  try {
@@ -556,7 +555,7 @@ export class ModernServer {
556
555
  const route = matched.generate(context.url);
557
556
  const {
558
557
  entryName
559
- } = route; // check entryName, aviod matched '/' route
558
+ } = route; // check entryName, avoid matched '/' route
560
559
 
561
560
  if (entryName === status.toString() || entryName === '_error') {
562
561
  try {
@@ -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
  }
@@ -130,7 +132,7 @@ class ModernServerContext {
130
132
  }
131
133
 
132
134
  set path(p) {
133
- const url = new _url.URL(this.req.url, this.origin); // this should never happend
135
+ const url = new _url.URL(this.req.url, this.origin); // this should never happened
134
136
 
135
137
  if (!url || !p) {
136
138
  return;
@@ -175,18 +177,8 @@ class ModernServerContext {
175
177
  return this.res.writableEnded;
176
178
  }
177
179
 
178
- logInfo() {
179
- return {
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
- try {
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 {};
@@ -8,10 +8,10 @@ const metrics = {
8
8
  gauges() {// no impl
9
9
  },
10
10
 
11
- counter() {// no impl
11
+ emitCounter() {// no impl
12
12
  },
13
13
 
14
- timer() {// no impl
14
+ emitTimer() {// no impl
15
15
  }
16
16
 
17
17
  };
@@ -20,8 +20,8 @@ const createProxyHandler = proxyOptions => {
20
20
  // or an object in the form of { source: ProxyDetail }
21
21
 
22
22
 
23
- const formatedProxy = (0, _utils.formatProxyOptions)(proxyOptions);
24
- const middlewares = formatedProxy.map(option => {
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) => {
@@ -10,7 +10,7 @@ var _crypto = _interopRequireDefault(require("crypto"));
10
10
 
11
11
  var _lruCache = _interopRequireDefault(require("lru-cache"));
12
12
 
13
- var _mimeTypes = _interopRequireDefault(require("mime-types"));
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: _mimeTypes.default.contentType('html'),
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: _mimeTypes.default.contentType(_path.default.extname(templateHTML))
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: ctx.logger,
49
- metrics: ctx.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: _mimeTypes.default.contentType('html')
74
+ contentType: _utils.mime.contentType('html')
73
75
  };
74
76
  };
75
77