@tramvai/module-server 2.7.1 → 2.10.2
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/modules/papi/shared.d.ts +2 -2
- package/lib/server/webApp.d.ts +3 -2
- package/lib/server.es.js +67 -60
- package/lib/server.js +48 -41
- package/package.json +13 -13
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export declare const sharedProviders: {
|
|
2
|
-
provide: import("@tinkoff/dippy
|
|
2
|
+
provide: import("@tinkoff/dippy").BaseTokenInterface<string>;
|
|
3
3
|
useFactory: ({ appInfo }: {
|
|
4
4
|
appInfo: any;
|
|
5
5
|
}) => string;
|
|
6
6
|
deps: {
|
|
7
|
-
appInfo: import("@tinkoff/dippy
|
|
7
|
+
appInfo: import("@tinkoff/dippy").BaseTokenInterface<{
|
|
8
8
|
[key: string]: string;
|
|
9
9
|
appName: string;
|
|
10
10
|
}>;
|
package/lib/server/webApp.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import type { LOGGER_TOKEN } from '@tramvai/tokens-common';
|
|
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
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';
|
|
@@ -10,11 +10,12 @@ 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, beforeInit, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }: {
|
|
13
|
+
export declare const webAppInitCommand: ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, 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
|
+
executionContextManager: ExtractDependencyType<typeof EXECUTION_CONTEXT_MANAGER_TOKEN>;
|
|
18
19
|
beforeInit: ExtractDependencyType<typeof WEB_FASTIFY_APP_BEFORE_INIT_TOKEN>;
|
|
19
20
|
limiterRequest: ExtractDependencyType<typeof WEB_FASTIFY_APP_LIMITER_TOKEN>;
|
|
20
21
|
init: ExtractDependencyType<typeof WEB_FASTIFY_APP_INIT_TOKEN>;
|
package/lib/server.es.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
2
|
import { setDefaultResultOrder } from 'dns';
|
|
3
|
-
import { Scope, APP_INFO_TOKEN, Module, provide, DI_TOKEN, COMMAND_LINE_RUNNER_TOKEN, commandLineListTokens, createToken } from '@tramvai/core';
|
|
3
|
+
import { Scope, APP_INFO_TOKEN, Module, provide as provide$1, DI_TOKEN, COMMAND_LINE_RUNNER_TOKEN, commandLineListTokens, createToken } from '@tramvai/core';
|
|
4
4
|
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
5
|
export * from '@tramvai/tokens-server';
|
|
6
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 { REQUEST, RESPONSE, FASTIFY_REQUEST, FASTIFY_RESPONSE, RESPONSE_MANAGER_TOKEN, LOGGER_TOKEN, ENV_MANAGER_TOKEN, ENV_USED_TOKEN } from '@tramvai/tokens-common';
|
|
7
|
+
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
8
|
import { MetricsModule } from '@tramvai/module-metrics';
|
|
9
9
|
import { CacheWarmupModule } from '@tramvai/module-cache-warmup';
|
|
10
10
|
import http from 'http';
|
|
@@ -12,6 +12,7 @@ import fastify from 'fastify';
|
|
|
12
12
|
import express from 'express';
|
|
13
13
|
import { fastifyCookie } from '@fastify/cookie';
|
|
14
14
|
import fastifyFormBody from '@fastify/formbody';
|
|
15
|
+
import { provide, createChildContainer } from '@tinkoff/dippy';
|
|
15
16
|
import fp from 'fastify-plugin';
|
|
16
17
|
import symbols from 'fastify/lib/symbols';
|
|
17
18
|
import isNil from '@tinkoff/utils/is/nil';
|
|
@@ -23,7 +24,6 @@ import filterObj from '@tinkoff/utils/object/filter';
|
|
|
23
24
|
import flatten from '@tinkoff/utils/array/flatten';
|
|
24
25
|
import toArray from '@tinkoff/utils/array/toArray';
|
|
25
26
|
import { create, middlewares, getPapiParameters, createPapiMethod } from '@tramvai/papi';
|
|
26
|
-
import { createChildContainer } from '@tinkoff/dippy';
|
|
27
27
|
import eachObj from '@tinkoff/utils/object/each';
|
|
28
28
|
import { resolve } from 'path';
|
|
29
29
|
import FastifyStatic from '@fastify/static';
|
|
@@ -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, beforeInit, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }) => {
|
|
204
|
+
const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, 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([
|
|
@@ -235,45 +235,51 @@ const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, beforeI
|
|
|
235
235
|
message: 'Клиент зашел на страницу',
|
|
236
236
|
url: request.url,
|
|
237
237
|
});
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
provide
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
238
|
+
await executionContextManager.withContext(null, 'root', async (rootExecutionContext) => {
|
|
239
|
+
const di = await commandLineRunner.run('server', 'customer', [
|
|
240
|
+
provide({
|
|
241
|
+
provide: ROOT_EXECUTION_CONTEXT_TOKEN,
|
|
242
|
+
useValue: rootExecutionContext,
|
|
243
|
+
}),
|
|
244
|
+
{
|
|
245
|
+
provide: REQUEST,
|
|
246
|
+
scope: Scope.REQUEST,
|
|
247
|
+
useValue: request.raw,
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
provide: RESPONSE,
|
|
251
|
+
scope: Scope.REQUEST,
|
|
252
|
+
useValue: reply.raw,
|
|
253
|
+
},
|
|
254
|
+
// TODO: перевести использование на новые
|
|
255
|
+
// TODO: добавить для papi
|
|
256
|
+
{
|
|
257
|
+
provide: FASTIFY_REQUEST,
|
|
258
|
+
scope: Scope.REQUEST,
|
|
259
|
+
useValue: request,
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
provide: FASTIFY_RESPONSE,
|
|
263
|
+
scope: Scope.REQUEST,
|
|
264
|
+
useValue: reply,
|
|
265
|
+
},
|
|
266
|
+
]);
|
|
267
|
+
const responseManager = di.get(RESPONSE_MANAGER_TOKEN);
|
|
268
|
+
if (reply.sent) {
|
|
269
|
+
log.debug({
|
|
270
|
+
event: 'response-ended',
|
|
271
|
+
message: 'Response was already ended.',
|
|
272
|
+
url: request.url,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
reply
|
|
277
|
+
.header('content-type', 'text/html')
|
|
278
|
+
.headers(responseManager.getHeaders())
|
|
279
|
+
.status(responseManager.getStatus())
|
|
280
|
+
.send(responseManager.getBody());
|
|
281
|
+
}
|
|
282
|
+
});
|
|
277
283
|
}
|
|
278
284
|
catch (err) {
|
|
279
285
|
if (err.di) {
|
|
@@ -439,7 +445,7 @@ ServerPapiModule = __decorate([
|
|
|
439
445
|
providers: [
|
|
440
446
|
fileApiProvider,
|
|
441
447
|
...sharedProviders,
|
|
442
|
-
provide({
|
|
448
|
+
provide$1({
|
|
443
449
|
provide: WEB_APP_BEFORE_INIT_TOKEN,
|
|
444
450
|
useFactory: ({ di, app, logger, privateRoutes, publicRoutes, publicBaseUrl, privateBaseUrl, }) => () => {
|
|
445
451
|
if (process.env.NODE_ENV === 'development') {
|
|
@@ -509,7 +515,7 @@ ServerPapiModule = __decorate([
|
|
|
509
515
|
multi: true,
|
|
510
516
|
}),
|
|
511
517
|
// необходимо для утилит. Подумать как можно убрать в будующем. Если убрать не будет ломающим изменением
|
|
512
|
-
provide({
|
|
518
|
+
provide$1({
|
|
513
519
|
provide: SERVER_MODULE_PAPI_PUBLIC_ROUTE,
|
|
514
520
|
multi: true,
|
|
515
521
|
useValue: createPapiMethod({
|
|
@@ -543,7 +549,7 @@ let ServerStaticsModule = class ServerStaticsModule {
|
|
|
543
549
|
ServerStaticsModule = __decorate([
|
|
544
550
|
Module({
|
|
545
551
|
providers: [
|
|
546
|
-
provide({
|
|
552
|
+
provide$1({
|
|
547
553
|
provide: WEB_FASTIFY_APP_BEFORE_INIT_TOKEN,
|
|
548
554
|
useFactory: ({ options }) => {
|
|
549
555
|
const path = (options === null || options === void 0 ? void 0 : options.path) || 'public';
|
|
@@ -587,7 +593,7 @@ let ServerGracefulShutdownModule = class ServerGracefulShutdownModule {
|
|
|
587
593
|
ServerGracefulShutdownModule = __decorate([
|
|
588
594
|
Module({
|
|
589
595
|
providers: [
|
|
590
|
-
provide({
|
|
596
|
+
provide$1({
|
|
591
597
|
provide: WEB_FASTIFY_APP_BEFORE_INIT_TOKEN,
|
|
592
598
|
multi: true,
|
|
593
599
|
useFactory: ({ app, server, logger, commandLineRunner, livenessProbe, readinessProbe }) => {
|
|
@@ -893,12 +899,12 @@ let UtilityServerModule = class UtilityServerModule {
|
|
|
893
899
|
UtilityServerModule = __decorate([
|
|
894
900
|
Module({
|
|
895
901
|
providers: [
|
|
896
|
-
provide({
|
|
902
|
+
provide$1({
|
|
897
903
|
provide: ENV_USED_TOKEN,
|
|
898
904
|
multi: true,
|
|
899
905
|
useValue: [{ key: 'UTILITY_SERVER_PORT', optional: true }],
|
|
900
906
|
}),
|
|
901
|
-
provide({
|
|
907
|
+
provide$1({
|
|
902
908
|
provide: UTILITY_SERVER_PORT_TOKEN,
|
|
903
909
|
scope: Scope.SINGLETON,
|
|
904
910
|
useFactory: ({ envManager }) => {
|
|
@@ -908,7 +914,7 @@ UtilityServerModule = __decorate([
|
|
|
908
914
|
envManager: ENV_MANAGER_TOKEN,
|
|
909
915
|
},
|
|
910
916
|
}),
|
|
911
|
-
provide({
|
|
917
|
+
provide$1({
|
|
912
918
|
provide: IS_CUSTOM_SERVER_TOKEN,
|
|
913
919
|
scope: Scope.SINGLETON,
|
|
914
920
|
useFactory: ({ port, envManager }) => {
|
|
@@ -919,7 +925,7 @@ UtilityServerModule = __decorate([
|
|
|
919
925
|
port: UTILITY_SERVER_PORT_TOKEN,
|
|
920
926
|
},
|
|
921
927
|
}),
|
|
922
|
-
provide({
|
|
928
|
+
provide$1({
|
|
923
929
|
provide: UTILITY_SERVER_TOKEN,
|
|
924
930
|
scope: Scope.SINGLETON,
|
|
925
931
|
useFactory: ({ isCustomServer, serverFactory, server }) => {
|
|
@@ -931,7 +937,7 @@ UtilityServerModule = __decorate([
|
|
|
931
937
|
serverFactory: SERVER_FACTORY_TOKEN,
|
|
932
938
|
},
|
|
933
939
|
}),
|
|
934
|
-
provide({
|
|
940
|
+
provide$1({
|
|
935
941
|
provide: UTILITY_WEB_FASTIFY_APP_TOKEN,
|
|
936
942
|
scope: Scope.SINGLETON,
|
|
937
943
|
useFactory: ({ isCustomServer, app, appFactory, server }) => {
|
|
@@ -944,7 +950,7 @@ UtilityServerModule = __decorate([
|
|
|
944
950
|
server: UTILITY_SERVER_TOKEN,
|
|
945
951
|
},
|
|
946
952
|
}),
|
|
947
|
-
provide({
|
|
953
|
+
provide$1({
|
|
948
954
|
provide: commandLineListTokens.listen,
|
|
949
955
|
multi: true,
|
|
950
956
|
scope: Scope.SINGLETON,
|
|
@@ -984,7 +990,7 @@ let KeepAliveModule = class KeepAliveModule {
|
|
|
984
990
|
KeepAliveModule = __decorate([
|
|
985
991
|
Module({
|
|
986
992
|
providers: [
|
|
987
|
-
provide({
|
|
993
|
+
provide$1({
|
|
988
994
|
provide: ENV_USED_TOKEN,
|
|
989
995
|
useValue: [
|
|
990
996
|
{
|
|
@@ -1003,7 +1009,7 @@ KeepAliveModule = __decorate([
|
|
|
1003
1009
|
},
|
|
1004
1010
|
],
|
|
1005
1011
|
}),
|
|
1006
|
-
provide({
|
|
1012
|
+
provide$1({
|
|
1007
1013
|
provide: commandLineListTokens.init,
|
|
1008
1014
|
useFactory: ({ server, envManager, }) => () => {
|
|
1009
1015
|
const externalKeepAliveTimeout = envManager.get('NODE_KEEPALIVE_TIMEOUT');
|
|
@@ -1039,12 +1045,12 @@ ServerModule = __decorate([
|
|
|
1039
1045
|
process.env.NODE_ENV !== 'production' && DebugHttpRequestsModule,
|
|
1040
1046
|
].filter(Boolean),
|
|
1041
1047
|
providers: [
|
|
1042
|
-
provide({
|
|
1048
|
+
provide$1({
|
|
1043
1049
|
provide: SERVER_FACTORY_TOKEN,
|
|
1044
1050
|
scope: Scope.SINGLETON,
|
|
1045
1051
|
useValue: serverFactory,
|
|
1046
1052
|
}),
|
|
1047
|
-
provide({
|
|
1053
|
+
provide$1({
|
|
1048
1054
|
provide: SERVER_TOKEN,
|
|
1049
1055
|
scope: Scope.SINGLETON,
|
|
1050
1056
|
useFactory: ({ factory }) => factory(),
|
|
@@ -1052,12 +1058,12 @@ ServerModule = __decorate([
|
|
|
1052
1058
|
factory: SERVER_FACTORY_TOKEN,
|
|
1053
1059
|
},
|
|
1054
1060
|
}),
|
|
1055
|
-
provide({
|
|
1061
|
+
provide$1({
|
|
1056
1062
|
provide: WEB_FASTIFY_APP_FACTORY_TOKEN,
|
|
1057
1063
|
scope: Scope.SINGLETON,
|
|
1058
1064
|
useValue: webAppFactory,
|
|
1059
1065
|
}),
|
|
1060
|
-
provide({
|
|
1066
|
+
provide$1({
|
|
1061
1067
|
provide: WEB_FASTIFY_APP_TOKEN,
|
|
1062
1068
|
useFactory: ({ factory, server }) => factory({ server }),
|
|
1063
1069
|
scope: Scope.SINGLETON,
|
|
@@ -1066,7 +1072,7 @@ ServerModule = __decorate([
|
|
|
1066
1072
|
factory: WEB_FASTIFY_APP_FACTORY_TOKEN,
|
|
1067
1073
|
},
|
|
1068
1074
|
}),
|
|
1069
|
-
provide({
|
|
1075
|
+
provide$1({
|
|
1070
1076
|
// BACKWARD: provide the express app as before
|
|
1071
1077
|
provide: WEB_APP_TOKEN,
|
|
1072
1078
|
scope: Scope.SINGLETON,
|
|
@@ -1084,6 +1090,7 @@ ServerModule = __decorate([
|
|
|
1084
1090
|
expressApp: WEB_APP_TOKEN,
|
|
1085
1091
|
logger: LOGGER_TOKEN,
|
|
1086
1092
|
commandLineRunner: COMMAND_LINE_RUNNER_TOKEN,
|
|
1093
|
+
executionContextManager: EXECUTION_CONTEXT_MANAGER_TOKEN,
|
|
1087
1094
|
beforeInit: { token: WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, optional: true },
|
|
1088
1095
|
init: { token: WEB_FASTIFY_APP_INIT_TOKEN, optional: true },
|
|
1089
1096
|
afterInit: { token: WEB_FASTIFY_APP_AFTER_INIT_TOKEN, optional: true },
|
package/lib/server.js
CHANGED
|
@@ -15,6 +15,7 @@ var fastify = require('fastify');
|
|
|
15
15
|
var express = require('express');
|
|
16
16
|
var cookie = require('@fastify/cookie');
|
|
17
17
|
var fastifyFormBody = require('@fastify/formbody');
|
|
18
|
+
var dippy = require('@tinkoff/dippy');
|
|
18
19
|
var fp = require('fastify-plugin');
|
|
19
20
|
var symbols = require('fastify/lib/symbols');
|
|
20
21
|
var isNil = require('@tinkoff/utils/is/nil');
|
|
@@ -26,7 +27,6 @@ var filterObj = require('@tinkoff/utils/object/filter');
|
|
|
26
27
|
var flatten = require('@tinkoff/utils/array/flatten');
|
|
27
28
|
var toArray = require('@tinkoff/utils/array/toArray');
|
|
28
29
|
var papi = require('@tramvai/papi');
|
|
29
|
-
var dippy = require('@tinkoff/dippy');
|
|
30
30
|
var eachObj = require('@tinkoff/utils/object/each');
|
|
31
31
|
var path = require('path');
|
|
32
32
|
var FastifyStatic = require('@fastify/static');
|
|
@@ -226,7 +226,7 @@ const webAppExpressFactory = ({ webApp }) => {
|
|
|
226
226
|
app.disable('x-powered-by');
|
|
227
227
|
return app;
|
|
228
228
|
};
|
|
229
|
-
const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, beforeInit, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }) => {
|
|
229
|
+
const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, executionContextManager, beforeInit, limiterRequest, init, afterInit, expressBeforeInit, expressInit, expressAfterInit, expressLimiterRequest, beforeError, processError, afterError, }) => {
|
|
230
230
|
const log = logger('server:webapp');
|
|
231
231
|
const runHandlers = (instance, handlers, expressHandlers) => {
|
|
232
232
|
return Promise.all([
|
|
@@ -260,45 +260,51 @@ const webAppInitCommand = ({ app, expressApp, logger, commandLineRunner, beforeI
|
|
|
260
260
|
message: 'Клиент зашел на страницу',
|
|
261
261
|
url: request.url,
|
|
262
262
|
});
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
provide
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
263
|
+
await executionContextManager.withContext(null, 'root', async (rootExecutionContext) => {
|
|
264
|
+
const di = await commandLineRunner.run('server', 'customer', [
|
|
265
|
+
dippy.provide({
|
|
266
|
+
provide: tokensCommon.ROOT_EXECUTION_CONTEXT_TOKEN,
|
|
267
|
+
useValue: rootExecutionContext,
|
|
268
|
+
}),
|
|
269
|
+
{
|
|
270
|
+
provide: tokensCommon.REQUEST,
|
|
271
|
+
scope: core.Scope.REQUEST,
|
|
272
|
+
useValue: request.raw,
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
provide: tokensCommon.RESPONSE,
|
|
276
|
+
scope: core.Scope.REQUEST,
|
|
277
|
+
useValue: reply.raw,
|
|
278
|
+
},
|
|
279
|
+
// TODO: перевести использование на новые
|
|
280
|
+
// TODO: добавить для papi
|
|
281
|
+
{
|
|
282
|
+
provide: tokensCommon.FASTIFY_REQUEST,
|
|
283
|
+
scope: core.Scope.REQUEST,
|
|
284
|
+
useValue: request,
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
provide: tokensCommon.FASTIFY_RESPONSE,
|
|
288
|
+
scope: core.Scope.REQUEST,
|
|
289
|
+
useValue: reply,
|
|
290
|
+
},
|
|
291
|
+
]);
|
|
292
|
+
const responseManager = di.get(tokensCommon.RESPONSE_MANAGER_TOKEN);
|
|
293
|
+
if (reply.sent) {
|
|
294
|
+
log.debug({
|
|
295
|
+
event: 'response-ended',
|
|
296
|
+
message: 'Response was already ended.',
|
|
297
|
+
url: request.url,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
reply
|
|
302
|
+
.header('content-type', 'text/html')
|
|
303
|
+
.headers(responseManager.getHeaders())
|
|
304
|
+
.status(responseManager.getStatus())
|
|
305
|
+
.send(responseManager.getBody());
|
|
306
|
+
}
|
|
307
|
+
});
|
|
302
308
|
}
|
|
303
309
|
catch (err) {
|
|
304
310
|
if (err.di) {
|
|
@@ -1109,6 +1115,7 @@ exports.ServerModule = tslib.__decorate([
|
|
|
1109
1115
|
expressApp: tokensServer.WEB_APP_TOKEN,
|
|
1110
1116
|
logger: tokensCommon.LOGGER_TOKEN,
|
|
1111
1117
|
commandLineRunner: core.COMMAND_LINE_RUNNER_TOKEN,
|
|
1118
|
+
executionContextManager: tokensCommon.EXECUTION_CONTEXT_MANAGER_TOKEN,
|
|
1112
1119
|
beforeInit: { token: tokensServerPrivate.WEB_FASTIFY_APP_BEFORE_INIT_TOKEN, optional: true },
|
|
1113
1120
|
init: { token: tokensServerPrivate.WEB_FASTIFY_APP_INIT_TOKEN, optional: true },
|
|
1114
1121
|
afterInit: { token: tokensServerPrivate.WEB_FASTIFY_APP_AFTER_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.10.2",
|
|
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.
|
|
25
|
+
"@tinkoff/errors": "0.2.23",
|
|
26
26
|
"@tinkoff/monkeypatch": "1.3.5",
|
|
27
27
|
"@tinkoff/terminus": "0.0.5",
|
|
28
28
|
"@tinkoff/url": "0.7.39",
|
|
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.
|
|
29
|
+
"@tramvai/module-cache-warmup": "2.10.2",
|
|
30
|
+
"@tramvai/module-metrics": "2.10.2",
|
|
31
|
+
"@tramvai/papi": "2.10.2",
|
|
32
|
+
"@tramvai/tokens-server": "2.10.2",
|
|
33
|
+
"@tramvai/tokens-server-private": "2.10.2",
|
|
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.
|
|
44
|
+
"@tinkoff/dippy": "0.7.45",
|
|
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.10.2",
|
|
47
|
+
"@tramvai/core": "2.10.2",
|
|
48
|
+
"@tramvai/module-common": "2.10.2",
|
|
49
|
+
"@tramvai/module-environment": "2.10.2",
|
|
50
|
+
"@tramvai/tokens-common": "2.10.2",
|
|
51
51
|
"tslib": "^2.0.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|