@tramvai/module-server 2.11.0 → 2.20.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.
- package/lib/server/webApp.d.ts +3 -2
- package/lib/server.es.js +8 -3
- package/lib/server.js +9 -3
- package/package.json +16 -16
package/lib/server/webApp.d.ts
CHANGED
|
@@ -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 &&
|
|
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.
|
|
3
|
+
"version": "2.20.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
|
|
26
|
-
"@tinkoff/monkeypatch": "
|
|
27
|
-
"@tinkoff/terminus": "0.
|
|
28
|
-
"@tinkoff/url": "0.
|
|
29
|
-
"@tramvai/module-cache-warmup": "2.
|
|
30
|
-
"@tramvai/module-metrics": "2.
|
|
31
|
-
"@tramvai/papi": "2.
|
|
32
|
-
"@tramvai/tokens-server": "2.
|
|
33
|
-
"@tramvai/tokens-server-private": "2.
|
|
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.20.0",
|
|
30
|
+
"@tramvai/module-metrics": "2.20.0",
|
|
31
|
+
"@tramvai/papi": "2.20.0",
|
|
32
|
+
"@tramvai/tokens-server": "2.20.0",
|
|
33
|
+
"@tramvai/tokens-server-private": "2.20.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.
|
|
44
|
+
"@tinkoff/dippy": "0.8.2",
|
|
45
45
|
"@tinkoff/utils": "^2.1.2",
|
|
46
|
-
"@tramvai/cli": "2.
|
|
47
|
-
"@tramvai/core": "2.
|
|
48
|
-
"@tramvai/module-common": "2.
|
|
49
|
-
"@tramvai/module-environment": "2.
|
|
50
|
-
"@tramvai/tokens-common": "2.
|
|
46
|
+
"@tramvai/cli": "2.20.0",
|
|
47
|
+
"@tramvai/core": "2.20.0",
|
|
48
|
+
"@tramvai/module-common": "2.20.0",
|
|
49
|
+
"@tramvai/module-environment": "2.20.0",
|
|
50
|
+
"@tramvai/tokens-common": "2.20.0",
|
|
51
51
|
"tslib": "^2.0.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|