@tramvai/module-server 2.11.0 → 2.21.0

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.
@@ -2,7 +2,7 @@
2
2
  import type { EXECUTION_CONTEXT_MANAGER_TOKEN, LOGGER_TOKEN } from '@tramvai/tokens-common';
3
3
  import type { COMMAND_LINE_RUNNER_TOKEN } from '@tramvai/core';
4
4
  import type { WEB_APP_TOKEN, WEB_APP_BEFORE_INIT_TOKEN, WEB_APP_INIT_TOKEN, WEB_APP_AFTER_INIT_TOKEN, WEB_APP_LIMITER_TOKEN, SERVER_TOKEN } from '@tramvai/tokens-server';
5
- import type { WEB_FASTIFY_APP_TOKEN, WEB_FASTIFY_APP_AFTER_INIT_TOKEN, WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, WEB_FASTIFY_APP_INIT_TOKEN, WEB_FASTIFY_APP_LIMITER_TOKEN, WEB_FASTIFY_APP_BEFORE_ERROR_TOKEN, WEB_FASTIFY_APP_AFTER_ERROR_TOKEN, WEB_FASTIFY_APP_PROCESS_ERROR_TOKEN } from '@tramvai/tokens-server-private';
5
+ import type { WEB_FASTIFY_APP_TOKEN, WEB_FASTIFY_APP_AFTER_INIT_TOKEN, WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, WEB_FASTIFY_APP_INIT_TOKEN, WEB_FASTIFY_APP_LIMITER_TOKEN, WEB_FASTIFY_APP_BEFORE_ERROR_TOKEN, WEB_FASTIFY_APP_AFTER_ERROR_TOKEN, WEB_FASTIFY_APP_PROCESS_ERROR_TOKEN, WEB_FASTIFY_APP_METRICS_TOKEN } from '@tramvai/tokens-server-private';
6
6
  import type { ExtractDependencyType } from '@tinkoff/dippy';
7
7
  export declare const webAppFactory: ({ server }: {
8
8
  server: typeof SERVER_TOKEN;
@@ -10,13 +10,14 @@ export declare const webAppFactory: ({ server }: {
10
10
  export declare const webAppExpressFactory: ({ webApp }: {
11
11
  webApp: typeof WEB_FASTIFY_APP_TOKEN;
12
12
  }) => import("express-serve-static-core").Express;
13
- export declare const webAppInitCommand: ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }: {
13
+ export declare const webAppInitCommand: ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, requestMetrics, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }: {
14
14
  app: ExtractDependencyType<typeof WEB_FASTIFY_APP_TOKEN>;
15
15
  expressApp: ExtractDependencyType<typeof WEB_APP_TOKEN>;
16
16
  logger: ExtractDependencyType<typeof LOGGER_TOKEN>;
17
17
  commandLineRunner: ExtractDependencyType<typeof COMMAND_LINE_RUNNER_TOKEN>;
18
18
  executionContextManager: ExtractDependencyType<typeof EXECUTION_CONTEXT_MANAGER_TOKEN>;
19
19
  beforeInit: ExtractDependencyType<typeof WEB_FASTIFY_APP_BEFORE_INIT_TOKEN>;
20
+ requestMetrics: ExtractDependencyType<typeof WEB_FASTIFY_APP_METRICS_TOKEN>;
20
21
  limiterRequest: ExtractDependencyType<typeof WEB_FASTIFY_APP_LIMITER_TOKEN>;
21
22
  init: ExtractDependencyType<typeof WEB_FASTIFY_APP_INIT_TOKEN>;
22
23
  afterInit: ExtractDependencyType<typeof WEB_FASTIFY_APP_AFTER_INIT_TOKEN>;
package/lib/server.es.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { setDefaultResultOrder } from 'dns';
3
+ import EventEmitter$1, { EventEmitter } from 'events';
3
4
  import { Scope, APP_INFO_TOKEN, Module, provide as provide$1, DI_TOKEN, COMMAND_LINE_RUNNER_TOKEN, commandLineListTokens, createToken } from '@tramvai/core';
4
5
  import { SERVER_MODULE_PAPI_PUBLIC_ROUTE, SERVER_MODULE_PAPI_PUBLIC_URL, SERVER_MODULE_PAPI_PRIVATE_URL, WEB_APP_BEFORE_INIT_TOKEN, WEB_APP_TOKEN, SERVER_MODULE_PAPI_PRIVATE_ROUTE, SERVER_MODULE_STATICS_OPTIONS, SERVER_TOKEN, READINESS_PROBE_TOKEN, LIVENESS_PROBE_TOKEN, UTILITY_SERVER_PATHS, PROXY_CONFIG_TOKEN, DEPENDENCIES_VERSION_FILTER_TOKEN, UTILITY_SERVER_PORT_TOKEN, WEB_APP_INIT_TOKEN, WEB_APP_AFTER_INIT_TOKEN, WEB_APP_LIMITER_TOKEN } from '@tramvai/tokens-server';
5
6
  export * from '@tramvai/tokens-server';
6
- import { WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, UTILITY_WEB_FASTIFY_APP_TOKEN, UTILITY_SERVER_TOKEN, SERVER_FACTORY_TOKEN, WEB_FASTIFY_APP_TOKEN, WEB_FASTIFY_APP_FACTORY_TOKEN, WEB_FASTIFY_APP_INIT_TOKEN, WEB_FASTIFY_APP_AFTER_INIT_TOKEN, WEB_FASTIFY_APP_LIMITER_TOKEN, WEB_FASTIFY_APP_BEFORE_ERROR_TOKEN, WEB_FASTIFY_APP_PROCESS_ERROR_TOKEN, WEB_FASTIFY_APP_AFTER_ERROR_TOKEN } from '@tramvai/tokens-server-private';
7
+ import { WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, UTILITY_WEB_FASTIFY_APP_TOKEN, UTILITY_SERVER_TOKEN, SERVER_FACTORY_TOKEN, WEB_FASTIFY_APP_TOKEN, WEB_FASTIFY_APP_FACTORY_TOKEN, WEB_FASTIFY_APP_INIT_TOKEN, WEB_FASTIFY_APP_AFTER_INIT_TOKEN, WEB_FASTIFY_APP_METRICS_TOKEN, WEB_FASTIFY_APP_LIMITER_TOKEN, WEB_FASTIFY_APP_BEFORE_ERROR_TOKEN, WEB_FASTIFY_APP_PROCESS_ERROR_TOKEN, WEB_FASTIFY_APP_AFTER_ERROR_TOKEN } from '@tramvai/tokens-server-private';
7
8
  import { ROOT_EXECUTION_CONTEXT_TOKEN, REQUEST, RESPONSE, FASTIFY_REQUEST, FASTIFY_RESPONSE, RESPONSE_MANAGER_TOKEN, LOGGER_TOKEN, ENV_MANAGER_TOKEN, ENV_USED_TOKEN, EXECUTION_CONTEXT_MANAGER_TOKEN } from '@tramvai/tokens-common';
8
9
  import { MetricsModule } from '@tramvai/module-metrics';
9
10
  import { CacheWarmupModule } from '@tramvai/module-cache-warmup';
@@ -29,7 +30,6 @@ import { resolve } from 'path';
29
30
  import FastifyStatic from '@fastify/static';
30
31
  import { createTerminus } from '@tinkoff/terminus';
31
32
  import { parse } from '@tinkoff/url';
32
- import { EventEmitter } from 'events';
33
33
  import monkeypatch from '@tinkoff/monkeypatch';
34
34
  import https from 'https';
35
35
  import isArray from '@tinkoff/utils/is/array';
@@ -201,7 +201,7 @@ const webAppExpressFactory = ({ webApp }) => {
201
201
  app.disable('x-powered-by');
202
202
  return app;
203
203
  };
204
- const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }) => {
204
+ const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, requestMetrics, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }) => {
205
205
  const log = logger('server:webapp');
206
206
  const runHandlers = (instance, handlers, expressHandlers) => {
207
207
  return Promise.all([
@@ -220,6 +220,7 @@ const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executi
220
220
  await runHandlers(instance, beforeInit, expressBeforeInit);
221
221
  });
222
222
  await app.register(async (instance) => {
223
+ await runHandlers(instance, requestMetrics, []);
223
224
  await runHandlers(instance, limiterRequest, expressLimiterRequest);
224
225
  await app.register(fastifyCookie);
225
226
  await app.register(fastifyFormBody, { bodyLimit: 2097152 }); // 2mb
@@ -1028,6 +1029,9 @@ KeepAliveModule = __decorate([
1028
1029
  if (typeof setDefaultResultOrder === 'function') {
1029
1030
  setDefaultResultOrder('ipv4first');
1030
1031
  }
1032
+ // tramvai add a lot of "abort" event listeners to AbortSignal, but we can't configure only AbortSignal max listeners,
1033
+ // because AbortSignal is not instance of EventEmitter - https://github.com/southpolesteve/node-abort-controller/blob/master/index.js
1034
+ EventEmitter$1.defaultMaxListeners = 50;
1031
1035
  let ServerModule = class ServerModule {
1032
1036
  };
1033
1037
  ServerModule = __decorate([
@@ -1094,6 +1098,7 @@ ServerModule = __decorate([
1094
1098
  beforeInit: { token: WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, optional: true },
1095
1099
  init: { token: WEB_FASTIFY_APP_INIT_TOKEN, optional: true },
1096
1100
  afterInit: { token: WEB_FASTIFY_APP_AFTER_INIT_TOKEN, optional: true },
1101
+ requestMetrics: { token: WEB_FASTIFY_APP_METRICS_TOKEN, optional: true },
1097
1102
  limiterRequest: { token: WEB_FASTIFY_APP_LIMITER_TOKEN, optional: true },
1098
1103
  expressBeforeInit: { token: WEB_APP_BEFORE_INIT_TOKEN, optional: true },
1099
1104
  expressInit: { token: WEB_APP_INIT_TOKEN, optional: true },
package/lib/server.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var dns = require('dns');
7
+ var EventEmitter = require('events');
7
8
  var core = require('@tramvai/core');
8
9
  var tokensServer = require('@tramvai/tokens-server');
9
10
  var tokensServerPrivate = require('@tramvai/tokens-server-private');
@@ -32,7 +33,6 @@ var path = require('path');
32
33
  var FastifyStatic = require('@fastify/static');
33
34
  var terminus = require('@tinkoff/terminus');
34
35
  var url = require('@tinkoff/url');
35
- var events = require('events');
36
36
  var monkeypatch = require('@tinkoff/monkeypatch');
37
37
  var https = require('https');
38
38
  var isArray = require('@tinkoff/utils/is/array');
@@ -42,6 +42,7 @@ var moduleCommon = require('@tramvai/module-common');
42
42
 
43
43
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
44
44
 
45
+ var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
45
46
  var http__default = /*#__PURE__*/_interopDefaultLegacy(http);
46
47
  var fastify__default = /*#__PURE__*/_interopDefaultLegacy(fastify);
47
48
  var express__default = /*#__PURE__*/_interopDefaultLegacy(express);
@@ -226,7 +227,7 @@ const webAppExpressFactory = ({ webApp }) => {
226
227
  app.disable('x-powered-by');
227
228
  return app;
228
229
  };
229
- const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }) => {
230
+ const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, requestMetrics, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }) => {
230
231
  const log = logger('server:webapp');
231
232
  const runHandlers = (instance, handlers, expressHandlers) => {
232
233
  return Promise.all([
@@ -245,6 +246,7 @@ const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executi
245
246
  await runHandlers(instance, beforeInit, expressBeforeInit);
246
247
  });
247
248
  await app.register(async (instance) => {
249
+ await runHandlers(instance, requestMetrics, []);
248
250
  await runHandlers(instance, limiterRequest, expressLimiterRequest);
249
251
  await app.register(cookie.fastifyCookie);
250
252
  await app.register(fastifyFormBody__default["default"], { bodyLimit: 2097152 }); // 2mb
@@ -744,7 +746,7 @@ DebugHttpRequestsModule = tslib.__decorate([
744
746
  .on('response', (response) => {
745
747
  // Workaround for res._dump in Node.JS http client
746
748
  // https://github.com/nodejs/node/blob/20285ad17755187ece16b8a5effeaa87f5407da2/lib/_http_client.js#L421-L427
747
- if (!wasHandled && events.EventEmitter.listenerCount(response.req, 'response') === 0) {
749
+ if (!wasHandled && EventEmitter.EventEmitter.listenerCount(response.req, 'response') === 0) {
748
750
  response.resume();
749
751
  }
750
752
  log.debug(`${response.statusCode}
@@ -1053,6 +1055,9 @@ KeepAliveModule = tslib.__decorate([
1053
1055
  if (typeof dns.setDefaultResultOrder === 'function') {
1054
1056
  dns.setDefaultResultOrder('ipv4first');
1055
1057
  }
1058
+ // tramvai add a lot of "abort" event listeners to AbortSignal, but we can't configure only AbortSignal max listeners,
1059
+ // because AbortSignal is not instance of EventEmitter - https://github.com/southpolesteve/node-abort-controller/blob/master/index.js
1060
+ EventEmitter__default["default"].defaultMaxListeners = 50;
1056
1061
  exports.ServerModule = class ServerModule {
1057
1062
  };
1058
1063
  exports.ServerModule = tslib.__decorate([
@@ -1119,6 +1124,7 @@ exports.ServerModule = tslib.__decorate([
1119
1124
  beforeInit: { token: tokensServerPrivate.WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, optional: true },
1120
1125
  init: { token: tokensServerPrivate.WEB_FASTIFY_APP_INIT_TOKEN, optional: true },
1121
1126
  afterInit: { token: tokensServerPrivate.WEB_FASTIFY_APP_AFTER_INIT_TOKEN, optional: true },
1127
+ requestMetrics: { token: tokensServerPrivate.WEB_FASTIFY_APP_METRICS_TOKEN, optional: true },
1122
1128
  limiterRequest: { token: tokensServerPrivate.WEB_FASTIFY_APP_LIMITER_TOKEN, optional: true },
1123
1129
  expressBeforeInit: { token: tokensServer.WEB_APP_BEFORE_INIT_TOKEN, optional: true },
1124
1130
  expressInit: { token: tokensServer.WEB_APP_INIT_TOKEN, optional: true },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/module-server",
3
- "version": "2.11.0",
3
+ "version": "2.21.0",
4
4
  "description": "",
5
5
  "browser": "lib/browser.js",
6
6
  "main": "lib/server.js",
@@ -22,15 +22,15 @@
22
22
  "build-for-publish": "true"
23
23
  },
24
24
  "dependencies": {
25
- "@tinkoff/errors": "0.2.23",
26
- "@tinkoff/monkeypatch": "1.3.5",
27
- "@tinkoff/terminus": "0.0.5",
28
- "@tinkoff/url": "0.7.39",
29
- "@tramvai/module-cache-warmup": "2.11.0",
30
- "@tramvai/module-metrics": "2.11.0",
31
- "@tramvai/papi": "2.11.0",
32
- "@tramvai/tokens-server": "2.11.0",
33
- "@tramvai/tokens-server-private": "2.11.0",
25
+ "@tinkoff/errors": "0.3.2",
26
+ "@tinkoff/monkeypatch": "2.0.2",
27
+ "@tinkoff/terminus": "0.1.2",
28
+ "@tinkoff/url": "0.8.2",
29
+ "@tramvai/module-cache-warmup": "2.21.0",
30
+ "@tramvai/module-metrics": "2.21.0",
31
+ "@tramvai/papi": "2.21.0",
32
+ "@tramvai/tokens-server": "2.21.0",
33
+ "@tramvai/tokens-server-private": "2.21.0",
34
34
  "compression": "^1.7.4",
35
35
  "express": "^4.17.1",
36
36
  "fastify": "^3.29.0",
@@ -41,13 +41,13 @@
41
41
  "http-proxy-middleware": "^2.0.2"
42
42
  },
43
43
  "peerDependencies": {
44
- "@tinkoff/dippy": "0.7.45",
44
+ "@tinkoff/dippy": "0.8.2",
45
45
  "@tinkoff/utils": "^2.1.2",
46
- "@tramvai/cli": "2.11.0",
47
- "@tramvai/core": "2.11.0",
48
- "@tramvai/module-common": "2.11.0",
49
- "@tramvai/module-environment": "2.11.0",
50
- "@tramvai/tokens-common": "2.11.0",
46
+ "@tramvai/cli": "2.21.0",
47
+ "@tramvai/core": "2.21.0",
48
+ "@tramvai/module-common": "2.21.0",
49
+ "@tramvai/module-environment": "2.21.0",
50
+ "@tramvai/tokens-common": "2.21.0",
51
51
  "tslib": "^2.0.3"
52
52
  },
53
53
  "devDependencies": {