@sima-land/isomorph 11.0.0-alpha.34 → 11.0.0-alpha.36

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 (154) hide show
  1. package/config/index.d.ts +1 -1
  2. package/config/source.d.ts +1 -5
  3. package/config/source.js.map +1 -1
  4. package/config/types.d.ts +6 -0
  5. package/di/index.d.ts +1 -1
  6. package/http/errors.d.ts +12 -0
  7. package/http/errors.js +17 -1
  8. package/http/errors.js.map +1 -1
  9. package/http/index.d.ts +3 -3
  10. package/http/index.js +3 -1
  11. package/http/index.js.map +1 -1
  12. package/package.json +14 -14
  13. package/preset/isomorphic/constants.d.ts +7 -0
  14. package/preset/isomorphic/constants.js +11 -0
  15. package/preset/isomorphic/constants.js.map +1 -0
  16. package/preset/isomorphic/providers/index.d.ts +22 -0
  17. package/preset/isomorphic/providers/index.js +38 -0
  18. package/preset/isomorphic/providers/index.js.map +1 -0
  19. package/preset/isomorphic/types.d.ts +43 -0
  20. package/{http-client → preset/isomorphic}/types.js.map +1 -1
  21. package/preset/{parts/utils.d.ts → isomorphic/utils/index.d.ts} +14 -6
  22. package/preset/{parts/utils.js → isomorphic/utils/index.js} +31 -5
  23. package/preset/isomorphic/utils/index.js.map +1 -0
  24. package/preset/node/handler/index.d.ts +10 -0
  25. package/preset/node/handler/index.js +38 -0
  26. package/preset/node/handler/index.js.map +1 -0
  27. package/preset/node/handler/providers/index.d.ts +35 -0
  28. package/preset/node/handler/providers/index.js +184 -0
  29. package/preset/node/handler/providers/index.js.map +1 -0
  30. package/preset/node/handler/utils/index.d.ts +46 -0
  31. package/preset/node/handler/utils/index.js +81 -0
  32. package/preset/node/handler/utils/index.js.map +1 -0
  33. package/preset/node/index.d.ts +2 -29
  34. package/preset/node/index.js +6 -255
  35. package/preset/node/index.js.map +1 -1
  36. package/preset/node/node/index.d.ts +8 -0
  37. package/preset/node/node/index.js +49 -0
  38. package/preset/node/node/index.js.map +1 -0
  39. package/preset/node/node/providers/index.d.ts +112 -0
  40. package/preset/node/node/providers/index.js +392 -0
  41. package/preset/node/node/providers/index.js.map +1 -0
  42. package/{http-client/middleware/tracing.d.ts → preset/node/node/utils/http-client/index.d.ts} +9 -0
  43. package/{http-client/middleware/tracing.js → preset/node/node/utils/http-client/index.js} +32 -3
  44. package/preset/node/node/utils/http-client/index.js.map +1 -0
  45. package/preset/node/node/utils/http-server/index.d.ts +7 -0
  46. package/preset/node/node/utils/http-server/index.js +21 -0
  47. package/preset/node/node/utils/http-server/index.js.map +1 -0
  48. package/preset/web/index.d.ts +8 -0
  49. package/preset/web/index.js +30 -0
  50. package/preset/web/index.js.map +1 -0
  51. package/preset/web/providers/index.d.ts +35 -0
  52. package/preset/{browser → web/providers}/index.js +37 -33
  53. package/preset/web/providers/index.js.map +1 -0
  54. package/tokens.d.ts +20 -19
  55. package/tokens.js +11 -8
  56. package/tokens.js.map +1 -1
  57. package/utils/axios/index.d.ts +4 -0
  58. package/utils/axios/index.js +13 -0
  59. package/utils/axios/index.js.map +1 -0
  60. package/utils/axios/middleware/cookie.d.ts +8 -0
  61. package/utils/axios/middleware/cookie.js +26 -0
  62. package/utils/axios/middleware/cookie.js.map +1 -0
  63. package/utils/axios/middleware/log.js.map +1 -0
  64. package/{http-client → utils/axios}/sauce/index.d.ts +1 -1
  65. package/{http-client → utils/axios}/sauce/index.js +1 -1
  66. package/utils/axios/sauce/index.js.map +1 -0
  67. package/{http-client/utils.d.ts → utils/axios/utils/index.d.ts} +0 -7
  68. package/{http-client/utils.js → utils/axios/utils/index.js} +2 -28
  69. package/utils/axios/utils/index.js.map +1 -0
  70. package/utils/express/handler/health-check.js.map +1 -0
  71. package/utils/express/index.d.ts +2 -0
  72. package/utils/express/index.js +8 -0
  73. package/utils/express/index.js.map +1 -0
  74. package/utils/express/utils/index.d.ts +7 -0
  75. package/utils/express/utils/index.js +20 -0
  76. package/utils/express/utils/index.js.map +1 -0
  77. package/utils/react/error-handlers/index.d.ts +3 -3
  78. package/utils/react/error-handlers/index.js +1 -1
  79. package/utils/react/error-handlers/index.js.map +1 -1
  80. package/utils/react/index.d.ts +2 -0
  81. package/utils/react/index.js +7 -0
  82. package/utils/react/index.js.map +1 -0
  83. package/utils/ssr/index.d.ts +1 -2
  84. package/utils/web/analytics/data-layer.js +16 -0
  85. package/utils/web/analytics/data-layer.js.map +1 -0
  86. package/utils/web/analytics/oko.d.ts +6 -0
  87. package/utils/web/analytics/oko.js +16 -0
  88. package/utils/web/analytics/oko.js.map +1 -0
  89. package/utils/{browser → web}/storage/index.d.ts +1 -0
  90. package/utils/{browser → web}/storage/index.js +1 -0
  91. package/utils/web/storage/index.js.map +1 -0
  92. package/http-client/middleware/cookie.d.ts +0 -20
  93. package/http-client/middleware/cookie.js +0 -64
  94. package/http-client/middleware/cookie.js.map +0 -1
  95. package/http-client/middleware/headers.d.ts +0 -13
  96. package/http-client/middleware/headers.js +0 -25
  97. package/http-client/middleware/headers.js.map +0 -1
  98. package/http-client/middleware/log.js.map +0 -1
  99. package/http-client/middleware/tracing.js.map +0 -1
  100. package/http-client/sauce/index.js.map +0 -1
  101. package/http-client/types.d.ts +0 -6
  102. package/http-client/utils.js.map +0 -1
  103. package/http-server/constants.d.ts +0 -4
  104. package/http-server/constants.js +0 -8
  105. package/http-server/constants.js.map +0 -1
  106. package/http-server/errors.d.ts +0 -11
  107. package/http-server/errors.js +0 -18
  108. package/http-server/errors.js.map +0 -1
  109. package/http-server/handler/health-check.js.map +0 -1
  110. package/http-server/middleware/metrics.d.ts +0 -23
  111. package/http-server/middleware/metrics.js +0 -60
  112. package/http-server/middleware/metrics.js.map +0 -1
  113. package/http-server/middleware/tracing.d.ts +0 -14
  114. package/http-server/middleware/tracing.js +0 -51
  115. package/http-server/middleware/tracing.js.map +0 -1
  116. package/http-server/template/index.d.ts +0 -1
  117. package/http-server/template/index.js +0 -41
  118. package/http-server/template/index.js.map +0 -1
  119. package/http-server/types.d.ts +0 -28
  120. package/http-server/types.js +0 -3
  121. package/http-server/types.js.map +0 -1
  122. package/http-server/utils.d.ts +0 -45
  123. package/http-server/utils.js +0 -144
  124. package/http-server/utils.js.map +0 -1
  125. package/metrics/constants.d.ts +0 -7
  126. package/metrics/constants.js +0 -11
  127. package/metrics/constants.js.map +0 -1
  128. package/metrics/node.d.ts +0 -19
  129. package/metrics/node.js +0 -56
  130. package/metrics/node.js.map +0 -1
  131. package/preset/browser/index.d.ts +0 -17
  132. package/preset/browser/index.js.map +0 -1
  133. package/preset/node/handler.d.ts +0 -24
  134. package/preset/node/handler.js +0 -165
  135. package/preset/node/handler.js.map +0 -1
  136. package/preset/parts/providers.d.ts +0 -7
  137. package/preset/parts/providers.js +0 -26
  138. package/preset/parts/providers.js.map +0 -1
  139. package/preset/parts/types.d.ts +0 -14
  140. package/preset/parts/types.js +0 -3
  141. package/preset/parts/types.js.map +0 -1
  142. package/preset/parts/utils.js.map +0 -1
  143. package/utils/browser/analytics/data-layer.js +0 -14
  144. package/utils/browser/analytics/data-layer.js.map +0 -1
  145. package/utils/browser/analytics/oko.d.ts +0 -13
  146. package/utils/browser/analytics/oko.js +0 -40
  147. package/utils/browser/analytics/oko.js.map +0 -1
  148. package/utils/browser/storage/index.js.map +0 -1
  149. /package/{http-client → preset/isomorphic}/types.js +0 -0
  150. /package/{http-client → utils/axios}/middleware/log.d.ts +0 -0
  151. /package/{http-client → utils/axios}/middleware/log.js +0 -0
  152. /package/{http-server → utils/express}/handler/health-check.d.ts +0 -0
  153. /package/{http-server → utils/express}/handler/health-check.js +0 -0
  154. /package/utils/{browser → web}/analytics/data-layer.d.ts +0 -0
@@ -0,0 +1,8 @@
1
+ import { Preset } from '../../../di';
2
+ import { PresetTuner } from '../../isomorphic/types';
3
+ /**
4
+ * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
5
+ * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
6
+ * @return Preset.
7
+ */
8
+ export declare function PresetNode(customize?: PresetTuner): Preset;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PresetNode = void 0;
4
+ const tokens_1 = require("../../../tokens");
5
+ const providers_1 = require("../../isomorphic/providers");
6
+ const di_1 = require("../../../di");
7
+ const health_check_1 = require("../../../utils/express/handler/health-check");
8
+ const providers_2 = require("./providers");
9
+ /**
10
+ * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
11
+ * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
12
+ * @return Preset.
13
+ */
14
+ function PresetNode(customize) {
15
+ // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости
16
+ const preset = (0, di_1.createPreset)();
17
+ // config
18
+ preset.set(tokens_1.KnownToken.Config.source, providers_2.provideConfigSource);
19
+ preset.set(tokens_1.KnownToken.Config.base, providers_1.provideBaseConfig);
20
+ // log
21
+ preset.set(tokens_1.KnownToken.logger, providers_2.provideLogger);
22
+ // tracing
23
+ preset.set(tokens_1.KnownToken.Tracing.tracer, providers_2.provideTracer);
24
+ preset.set(tokens_1.KnownToken.Tracing.spanExporter, providers_2.provideSpanExporter);
25
+ preset.set(tokens_1.KnownToken.Tracing.tracerProvider, providers_2.provideTracerProvider);
26
+ preset.set(tokens_1.KnownToken.Tracing.tracerProviderResource, providers_2.provideTracerProviderResource);
27
+ // metrics
28
+ preset.set(tokens_1.KnownToken.Metrics.httpApp, providers_2.provideMetricsHttpApp);
29
+ // http client
30
+ preset.set(tokens_1.KnownToken.Http.Client.factory, providers_2.provideHttpClientFactory);
31
+ // http server
32
+ preset.set(tokens_1.KnownToken.Http.Server.factory, providers_2.provideHttpServerFactory);
33
+ preset.set(tokens_1.KnownToken.Http.Server.Handlers.healthCheck, health_check_1.healthCheck);
34
+ preset.set(tokens_1.KnownToken.Http.Server.Middleware.request, providers_2.provideHttpServerRequestMiddleware);
35
+ preset.set(tokens_1.KnownToken.Http.Server.Middleware.log, providers_2.provideHttpServerLogMiddleware);
36
+ preset.set(tokens_1.KnownToken.Http.Server.Middleware.metrics, providers_2.provideHttpServerMetricsMiddleware);
37
+ preset.set(tokens_1.KnownToken.Http.Server.Middleware.tracing, providers_2.provideHttpServerTracingMiddleware);
38
+ preset.set(tokens_1.KnownToken.Http.Server.Middleware.error, providers_2.provideHttpServerErrorMiddleware);
39
+ // http api
40
+ preset.set(tokens_1.KnownToken.Http.Api.knownHosts, providers_2.provideKnownHttpApiHosts);
41
+ // ssr bridge
42
+ preset.set(tokens_1.KnownToken.SsrBridge.serverSide, providers_2.provideSsrBridgeServerSide);
43
+ if (customize) {
44
+ customize({ override: preset.set.bind(preset) });
45
+ }
46
+ return preset;
47
+ }
48
+ exports.PresetNode = PresetNode;
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/preset/node/node/index.ts"],"names":[],"mappings":";;;AAAA,4CAA6C;AAC7C,0DAA+D;AAC/D,oCAAmD;AAEnD,8EAA0E;AAC1E,2CAiBqB;AAErB;;;;GAIG;AACH,SAAgB,UAAU,CAAC,SAAuB;IAChD,yFAAyF;IACzF,MAAM,MAAM,GAAG,IAAA,iBAAY,GAAE,CAAC;IAE9B,SAAS;IACT,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,+BAAmB,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,MAAM,CAAC,IAAI,EAAE,6BAAiB,CAAC,CAAC;IAEtD,MAAM;IACN,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,MAAM,EAAE,yBAAa,CAAC,CAAC;IAE7C,UAAU;IACV,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAa,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,OAAO,CAAC,YAAY,EAAE,+BAAmB,CAAC,CAAC;IACjE,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,OAAO,CAAC,cAAc,EAAE,iCAAqB,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,OAAO,CAAC,sBAAsB,EAAE,yCAA6B,CAAC,CAAC;IAErF,UAAU;IACV,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,OAAO,CAAC,OAAO,EAAE,iCAAqB,CAAC,CAAC;IAE9D,cAAc;IACd,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,oCAAwB,CAAC,CAAC;IAErE,cAAc;IACd,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,oCAAwB,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,0BAAW,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,8CAAkC,CAAC,CAAC;IAC1F,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,0CAA8B,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,8CAAkC,CAAC,CAAC;IAC1F,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,8CAAkC,CAAC,CAAC;IAC1F,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,4CAAgC,CAAC,CAAC;IAEtF,WAAW;IACX,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,oCAAwB,CAAC,CAAC;IAErE,aAAa;IACb,MAAM,CAAC,GAAG,CAAC,mBAAU,CAAC,SAAS,CAAC,UAAU,EAAE,sCAA0B,CAAC,CAAC;IAExE,IAAI,SAAS,EAAE;QACb,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAClD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA3CD,gCA2CC"}
@@ -0,0 +1,112 @@
1
+ import type { Logger, LogHandler } from '../../../../log/types';
2
+ import { BridgeServerSide } from '../../../../utils/ssr';
3
+ import { ConfigSource } from '../../../../config';
4
+ import { Resolve } from '../../../../di';
5
+ import { StrictMap, KnownHttpApiKey } from '../../../isomorphic/types';
6
+ import Express, { Application, ErrorRequestHandler, Handler } from 'express';
7
+ import { type Tracer } from '@opentelemetry/api';
8
+ import { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';
9
+ import { Resource } from '@opentelemetry/resources';
10
+ import { create } from 'middleware-axios';
11
+ /**
12
+ * Провайдер источника конфигурации.
13
+ * @return Источник конфигурации.
14
+ */
15
+ export declare function provideConfigSource(): ConfigSource;
16
+ /**
17
+ * Провайдер Logger'а.
18
+ * @param resolve Функция для получения зависимости по токену.
19
+ * @return Logger.
20
+ */
21
+ export declare function provideLogger(resolve: Resolve): Logger;
22
+ /**
23
+ * Провайдер обработчика логирования для Sentry.
24
+ * @param resolve Функция для получения зависимости по токену.
25
+ * @return Обработчик.
26
+ */
27
+ export declare function provideSentryHandler(resolve: Resolve): LogHandler;
28
+ /**
29
+ * Провайдер обработчика логирования для Pino.
30
+ * @param resolve Функция для получения зависимости по токену.
31
+ * @return Обработчик.
32
+ */
33
+ export declare function providePinoHandler(resolve: Resolve): LogHandler;
34
+ /**
35
+ * Провайдер объекта Tracer.
36
+ * @param resolve Функция для получения зависимости по токену.
37
+ * @return Tracer.
38
+ */
39
+ export declare function provideTracer(resolve: Resolve): Tracer;
40
+ /**
41
+ * Провайдер объекта SpanExporter.
42
+ * @param resolve Функция для получения зависимости по токену.
43
+ * @return SpanExporter.
44
+ */
45
+ export declare function provideSpanExporter(resolve: Resolve): SpanExporter;
46
+ /**
47
+ * Провайдер объекта BasicTracerProvider.
48
+ * @param resolve Функция для получения зависимости по токену.
49
+ * @return BasicTracerProvider.
50
+ */
51
+ export declare function provideTracerProvider(resolve: Resolve): BasicTracerProvider;
52
+ /**
53
+ * Провайдер объекта Resource.
54
+ * @param resolve Функция для получения зависимости по токену.
55
+ * @return Resource.
56
+ */
57
+ export declare function provideTracerProviderResource(resolve: Resolve): Resource;
58
+ /**
59
+ * Провайдер фабрики http-клиентов.
60
+ * @return Фабрика.
61
+ */
62
+ export declare function provideHttpClientFactory(): typeof create;
63
+ /**
64
+ * Провайдер фабрики http-серверов.
65
+ * @return Фабрика.
66
+ */
67
+ export declare function provideHttpServerFactory(): typeof Express;
68
+ /**
69
+ * Провайдер промежуточного слоя учета входящих http-запросов.
70
+ * @return Промежуточный слой.
71
+ */
72
+ export declare function provideHttpServerRequestMiddleware(): Handler;
73
+ /**
74
+ * Провайдер промежуточного слоя логирования входящих http-запросов.
75
+ * @param resolve Функция для получения зависимости по токену.
76
+ * @return Промежуточный слой.
77
+ */
78
+ export declare function provideHttpServerLogMiddleware(resolve: Resolve): Handler;
79
+ /**
80
+ * Провайдер промежуточного слоя сбора метрик входящих http-запросов.
81
+ * @param resolve Функция для получения зависимости по токену.
82
+ * @return Промежуточный слой.
83
+ */
84
+ export declare function provideHttpServerMetricsMiddleware(resolve: Resolve): Handler;
85
+ /**
86
+ * Провайдер промежуточного слоя трассировки входящих http-запросов.
87
+ * @param resolve Функция для получения зависимости по токену.
88
+ * @return Промежуточный слой.
89
+ */
90
+ export declare function provideHttpServerTracingMiddleware(resolve: Resolve): Handler;
91
+ /**
92
+ * Провайдер промежуточного слоя обработки ошибок в рамках ответ на http-запросы.
93
+ * @return Промежуточный слой.
94
+ */
95
+ export declare function provideHttpServerErrorMiddleware(): ErrorRequestHandler;
96
+ /**
97
+ * Провайдер серверной части "моста" для передачи данных между сервером и клиентом.
98
+ * @param resolve Функция для получения зависимости по токену.
99
+ * @return Серверная часть "моста".
100
+ */
101
+ export declare function provideSsrBridgeServerSide(resolve: Resolve): BridgeServerSide;
102
+ /**
103
+ * Провайдер известных http-хостов.
104
+ * @param resolve Функция для получения зависимости по токену.
105
+ * @return Пул известных http-хостов.
106
+ */
107
+ export declare function provideKnownHttpApiHosts(resolve: Resolve): StrictMap<KnownHttpApiKey>;
108
+ /**
109
+ * Провайдер express-приложения метрик.
110
+ * @return Пул известных http-хостов.
111
+ */
112
+ export declare function provideMetricsHttpApp(): Application;
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.provideMetricsHttpApp = exports.provideKnownHttpApiHosts = exports.provideSsrBridgeServerSide = exports.provideHttpServerErrorMiddleware = exports.provideHttpServerTracingMiddleware = exports.provideHttpServerMetricsMiddleware = exports.provideHttpServerLogMiddleware = exports.provideHttpServerRequestMiddleware = exports.provideHttpServerFactory = exports.provideHttpClientFactory = exports.provideTracerProviderResource = exports.provideTracerProvider = exports.provideSpanExporter = exports.provideTracer = exports.providePinoHandler = exports.provideSentryHandler = exports.provideLogger = exports.provideConfigSource = void 0;
30
+ const ssr_1 = require("../../../../utils/ssr");
31
+ const config_1 = require("../../../../config");
32
+ const log_1 = require("../../../../log");
33
+ const pino_1 = require("../../../../log/handler/pino");
34
+ const sentry_1 = require("../../../../log/handler/sentry");
35
+ const utils_1 = require("../../../isomorphic/utils");
36
+ const tokens_1 = require("../../../../tokens");
37
+ const number_1 = require("../../../../utils/number");
38
+ const constants_1 = require("../../../isomorphic/constants");
39
+ const http_server_1 = require("../utils/http-server");
40
+ // Node.js specific packages
41
+ const node_os_1 = __importDefault(require("node:os"));
42
+ const node_path_1 = __importDefault(require("node:path"));
43
+ // Node.js libraries (not isomorphic)
44
+ const dotenv_1 = require("dotenv");
45
+ const node_1 = require("@sentry/node");
46
+ const PromClient = __importStar(require("prom-client"));
47
+ const express_1 = __importDefault(require("express"));
48
+ const pino_2 = __importDefault(require("pino"));
49
+ const pino_pretty_1 = __importDefault(require("pino-pretty"));
50
+ // opentelemetry
51
+ const api_1 = require("@opentelemetry/api");
52
+ const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
53
+ const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
54
+ const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
55
+ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
56
+ const resources_1 = require("@opentelemetry/resources");
57
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
58
+ const middleware_axios_1 = require("middleware-axios");
59
+ /**
60
+ * Провайдер источника конфигурации.
61
+ * @return Источник конфигурации.
62
+ */
63
+ function provideConfigSource() {
64
+ const envName = process.env.NODE_ENV;
65
+ // подключаем соответствующий среде файл со значениями по умолчанию
66
+ if (envName) {
67
+ (0, dotenv_1.config)({ path: node_path_1.default.resolve(process.cwd(), `./.env.${envName}`) });
68
+ }
69
+ return (0, config_1.createConfigSource)(process.env);
70
+ }
71
+ exports.provideConfigSource = provideConfigSource;
72
+ /**
73
+ * Провайдер Logger'а.
74
+ * @param resolve Функция для получения зависимости по токену.
75
+ * @return Logger.
76
+ */
77
+ function provideLogger(resolve) {
78
+ const logger = (0, log_1.createLogger)();
79
+ // @todo возможно надо придумать как не давать вызывать провайдеры внутри провайдеров
80
+ logger.subscribe(providePinoHandler(resolve));
81
+ logger.subscribe(provideSentryHandler(resolve));
82
+ return logger;
83
+ }
84
+ exports.provideLogger = provideLogger;
85
+ /**
86
+ * Провайдер обработчика логирования для Sentry.
87
+ * @param resolve Функция для получения зависимости по токену.
88
+ * @return Обработчик.
89
+ */
90
+ function provideSentryHandler(resolve) {
91
+ const source = resolve(tokens_1.KnownToken.Config.source);
92
+ // экспериментально пробуем не использовать вручную созданный клиент
93
+ (0, node_1.init)({
94
+ dsn: source.require('SENTRY_DSN'),
95
+ release: source.require('SENTRY_RELEASE'),
96
+ environment: source.require('SENTRY_ENVIRONMENT'),
97
+ });
98
+ // ВАЖНО: передаем функцию чтобы брать текущий hub в момент вызова метода logger'а
99
+ // это нужно чтобы хлебные крошки в ошибках Sentry группировались по запросам
100
+ return (0, sentry_1.createSentryHandler)(node_1.getCurrentHub);
101
+ }
102
+ exports.provideSentryHandler = provideSentryHandler;
103
+ /**
104
+ * Провайдер обработчика логирования для Pino.
105
+ * @param resolve Функция для получения зависимости по токену.
106
+ * @return Обработчик.
107
+ */
108
+ function providePinoHandler(resolve) {
109
+ const config = resolve(tokens_1.KnownToken.Config.base);
110
+ const pinoLogger = (0, pino_2.default)(config.env === 'production'
111
+ ? {
112
+ formatters: {
113
+ // ВАЖНО: для Fluent необходимо наличие поля level: string
114
+ level: label => ({ level: label }),
115
+ },
116
+ }
117
+ : (0, pino_pretty_1.default)({
118
+ colorize: true,
119
+ translateTime: 'yyyy-mm-dd HH:MM:ss.l o',
120
+ }));
121
+ return (0, pino_1.createPinoHandler)(pinoLogger);
122
+ }
123
+ exports.providePinoHandler = providePinoHandler;
124
+ /**
125
+ * Провайдер объекта Tracer.
126
+ * @param resolve Функция для получения зависимости по токену.
127
+ * @return Tracer.
128
+ */
129
+ function provideTracer(resolve) {
130
+ const config = resolve(tokens_1.KnownToken.Config.base);
131
+ const provider = resolve(tokens_1.KnownToken.Tracing.tracerProvider);
132
+ return provider.getTracer(config.appName, config.appVersion);
133
+ }
134
+ exports.provideTracer = provideTracer;
135
+ /**
136
+ * Провайдер объекта SpanExporter.
137
+ * @param resolve Функция для получения зависимости по токену.
138
+ * @return SpanExporter.
139
+ */
140
+ function provideSpanExporter(resolve) {
141
+ const source = resolve(tokens_1.KnownToken.Config.source);
142
+ return new exporter_trace_otlp_http_1.OTLPTraceExporter({
143
+ url: source.require('JAEGER_AGENT_URL'),
144
+ });
145
+ }
146
+ exports.provideSpanExporter = provideSpanExporter;
147
+ /**
148
+ * Провайдер объекта BasicTracerProvider.
149
+ * @param resolve Функция для получения зависимости по токену.
150
+ * @return BasicTracerProvider.
151
+ */
152
+ function provideTracerProvider(resolve) {
153
+ const exporter = resolve(tokens_1.KnownToken.Tracing.spanExporter);
154
+ const resource = resolve(tokens_1.KnownToken.Tracing.tracerProviderResource);
155
+ const provider = new sdk_trace_node_1.NodeTracerProvider({ resource });
156
+ provider.addSpanProcessor(new sdk_trace_base_1.BatchSpanProcessor(exporter));
157
+ provider.register({ propagator: new propagator_jaeger_1.JaegerPropagator() });
158
+ return provider;
159
+ }
160
+ exports.provideTracerProvider = provideTracerProvider;
161
+ /**
162
+ * Провайдер объекта Resource.
163
+ * @param resolve Функция для получения зависимости по токену.
164
+ * @return Resource.
165
+ */
166
+ function provideTracerProviderResource(resolve) {
167
+ const config = resolve(tokens_1.KnownToken.Config.base);
168
+ return new resources_1.Resource({
169
+ [semantic_conventions_1.SemanticResourceAttributes.HOST_NAME]: node_os_1.default.hostname(),
170
+ [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: config.appName,
171
+ [semantic_conventions_1.SemanticResourceAttributes.SERVICE_VERSION]: config.appVersion,
172
+ [semantic_conventions_1.SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: config.env,
173
+ });
174
+ }
175
+ exports.provideTracerProviderResource = provideTracerProviderResource;
176
+ /**
177
+ * Провайдер фабрики http-клиентов.
178
+ * @return Фабрика.
179
+ */
180
+ function provideHttpClientFactory() {
181
+ return middleware_axios_1.create;
182
+ }
183
+ exports.provideHttpClientFactory = provideHttpClientFactory;
184
+ /**
185
+ * Провайдер фабрики http-серверов.
186
+ * @return Фабрика.
187
+ */
188
+ function provideHttpServerFactory() {
189
+ return express_1.default;
190
+ }
191
+ exports.provideHttpServerFactory = provideHttpServerFactory;
192
+ /**
193
+ * Провайдер промежуточного слоя учета входящих http-запросов.
194
+ * @return Промежуточный слой.
195
+ */
196
+ function provideHttpServerRequestMiddleware() {
197
+ return node_1.Handlers.requestHandler();
198
+ }
199
+ exports.provideHttpServerRequestMiddleware = provideHttpServerRequestMiddleware;
200
+ /**
201
+ * Провайдер промежуточного слоя логирования входящих http-запросов.
202
+ * @param resolve Функция для получения зависимости по токену.
203
+ * @return Промежуточный слой.
204
+ */
205
+ function provideHttpServerLogMiddleware(resolve) {
206
+ const config = resolve(tokens_1.KnownToken.Config.base);
207
+ const logger = resolve(tokens_1.KnownToken.logger);
208
+ return (req, res, next) => {
209
+ const start = process.hrtime.bigint();
210
+ const remoteIp = (0, http_server_1.getClientIp)(req) ?? '';
211
+ const startMsg = {
212
+ type: 'http.request[incoming]',
213
+ version: config.appVersion,
214
+ route: req.originalUrl,
215
+ method: req.method,
216
+ remote_ip: remoteIp,
217
+ };
218
+ logger.info(startMsg);
219
+ res.once('finish', () => {
220
+ const finish = process.hrtime.bigint();
221
+ const finishMsg = {
222
+ type: 'http.response[outgoing]',
223
+ version: config.appVersion,
224
+ route: req.originalUrl,
225
+ method: req.method,
226
+ status: res.statusCode,
227
+ remote_ip: remoteIp,
228
+ latency: (0, number_1.toMilliseconds)(finish - start),
229
+ };
230
+ logger.info(finishMsg);
231
+ });
232
+ next();
233
+ };
234
+ }
235
+ exports.provideHttpServerLogMiddleware = provideHttpServerLogMiddleware;
236
+ /**
237
+ * Провайдер промежуточного слоя сбора метрик входящих http-запросов.
238
+ * @param resolve Функция для получения зависимости по токену.
239
+ * @return Промежуточный слой.
240
+ */
241
+ function provideHttpServerMetricsMiddleware(resolve) {
242
+ const config = resolve(tokens_1.KnownToken.Config.base);
243
+ const ConventionalLabels = {
244
+ HTTP_RESPONSE: ['version', 'route', 'code', 'method'],
245
+ SSR: ['version', 'route', 'method'],
246
+ };
247
+ const requestCount = new PromClient.Counter({
248
+ name: 'http_request_count',
249
+ help: 'Incoming HTTP request count',
250
+ labelNames: ConventionalLabels.HTTP_RESPONSE,
251
+ });
252
+ const responseDuration = new PromClient.Histogram({
253
+ name: 'http_response_duration_ms',
254
+ help: 'Duration of incoming HTTP requests in ms',
255
+ labelNames: ConventionalLabels.HTTP_RESPONSE,
256
+ buckets: [30, 100, 200, 500, 1000, 2500, 5000, 10000],
257
+ });
258
+ const renderDuration = new PromClient.Histogram({
259
+ name: 'render_duration_ms',
260
+ help: 'Duration of SSR ms',
261
+ labelNames: ConventionalLabels.SSR,
262
+ buckets: [0.1, 15, 50, 100, 250, 500, 800, 1500],
263
+ });
264
+ /**
265
+ * Функция формирования labels.
266
+ * @param req Request.
267
+ * @param res Response.
268
+ * @return Labels.
269
+ */
270
+ const getLabels = (req, res) => ({
271
+ version: config.appVersion,
272
+ route: req.baseUrl + req.path,
273
+ code: res.statusCode,
274
+ method: req.method,
275
+ });
276
+ return (req, res, next) => {
277
+ const responseStart = process.hrtime.bigint();
278
+ requestCount.inc(getLabels(req, res), 1);
279
+ res.once(constants_1.RESPONSE_EVENT_TYPE.renderStart, () => {
280
+ const renderStart = process.hrtime.bigint();
281
+ res.once(constants_1.RESPONSE_EVENT_TYPE.renderFinish, () => {
282
+ const renderFinish = process.hrtime.bigint();
283
+ renderDuration.observe({
284
+ version: config.appVersion,
285
+ method: req.method,
286
+ route: req.baseUrl + req.path,
287
+ }, (0, number_1.toMilliseconds)(renderStart - renderFinish));
288
+ });
289
+ });
290
+ res.once('finish', () => {
291
+ const responseFinish = process.hrtime.bigint();
292
+ responseDuration.observe(getLabels(req, res), (0, number_1.toMilliseconds)(responseFinish - responseStart));
293
+ });
294
+ next();
295
+ };
296
+ }
297
+ exports.provideHttpServerMetricsMiddleware = provideHttpServerMetricsMiddleware;
298
+ /**
299
+ * Провайдер промежуточного слоя трассировки входящих http-запросов.
300
+ * @param resolve Функция для получения зависимости по токену.
301
+ * @return Промежуточный слой.
302
+ */
303
+ function provideHttpServerTracingMiddleware(resolve) {
304
+ const tracer = resolve(tokens_1.KnownToken.Tracing.tracer);
305
+ /**
306
+ * Возвращает набор стандартных атрибутов для спана.
307
+ * @param req Входящий http-запрос.
308
+ * @return Атрибуты.
309
+ */
310
+ const getConventionalRequestAttrs = (req) => {
311
+ const result = {
312
+ 'request.path': req.originalUrl,
313
+ };
314
+ for (const headerName in req.headers) {
315
+ if (headerName.toLowerCase().startsWith('simaland-')) {
316
+ result[headerName] = req.header(headerName);
317
+ }
318
+ }
319
+ return result;
320
+ };
321
+ return (req, res, next) => {
322
+ const externalContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, req.headers);
323
+ const rootSpan = tracer.startSpan('response', undefined, externalContext);
324
+ rootSpan.setAttributes(getConventionalRequestAttrs(req));
325
+ const rootContext = api_1.trace.setSpan(externalContext, rootSpan);
326
+ res.locals.tracing = {
327
+ rootSpan,
328
+ rootContext,
329
+ renderSpan: null,
330
+ };
331
+ res.once(constants_1.RESPONSE_EVENT_TYPE.renderStart, () => {
332
+ res.locals.tracing.renderSpan = tracer.startSpan('render', undefined, rootContext);
333
+ res.once(constants_1.RESPONSE_EVENT_TYPE.renderFinish, () => {
334
+ res.locals.tracing.renderSpan.end();
335
+ });
336
+ });
337
+ res.once('finish', () => {
338
+ rootSpan.end();
339
+ });
340
+ next();
341
+ };
342
+ }
343
+ exports.provideHttpServerTracingMiddleware = provideHttpServerTracingMiddleware;
344
+ /**
345
+ * Провайдер промежуточного слоя обработки ошибок в рамках ответ на http-запросы.
346
+ * @return Промежуточный слой.
347
+ */
348
+ function provideHttpServerErrorMiddleware() {
349
+ return node_1.Handlers.errorHandler();
350
+ }
351
+ exports.provideHttpServerErrorMiddleware = provideHttpServerErrorMiddleware;
352
+ /**
353
+ * Провайдер серверной части "моста" для передачи данных между сервером и клиентом.
354
+ * @param resolve Функция для получения зависимости по токену.
355
+ * @return Серверная часть "моста".
356
+ */
357
+ function provideSsrBridgeServerSide(resolve) {
358
+ const config = resolve(tokens_1.KnownToken.Config.base);
359
+ return ssr_1.SsrBridge.prepare(config.appName);
360
+ }
361
+ exports.provideSsrBridgeServerSide = provideSsrBridgeServerSide;
362
+ /**
363
+ * Провайдер известных http-хостов.
364
+ * @param resolve Функция для получения зависимости по токену.
365
+ * @return Пул известных http-хостов.
366
+ */
367
+ function provideKnownHttpApiHosts(resolve) {
368
+ const source = resolve(tokens_1.KnownToken.Config.source);
369
+ return new utils_1.HttpApiHostPool({
370
+ ilium: 'API_URL_ILIUM',
371
+ simaV3: 'API_URL_SIMALAND_V3',
372
+ simaV4: 'API_URL_SIMALAND_V4',
373
+ simaV6: 'API_URL_SIMALAND_V6',
374
+ }, source);
375
+ }
376
+ exports.provideKnownHttpApiHosts = provideKnownHttpApiHosts;
377
+ /**
378
+ * Провайдер express-приложения метрик.
379
+ * @return Пул известных http-хостов.
380
+ */
381
+ function provideMetricsHttpApp() {
382
+ PromClient.collectDefaultMetrics();
383
+ const app = (0, express_1.default)();
384
+ app.get('/', async function (req, res) {
385
+ const metrics = await PromClient.register.metrics();
386
+ res.setHeader('Content-Type', PromClient.register.contentType);
387
+ res.send(metrics);
388
+ });
389
+ return app;
390
+ }
391
+ exports.provideMetricsHttpApp = provideMetricsHttpApp;
392
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/preset/node/node/providers/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { AxiosDefaults, AxiosRequestConfig } from 'axios';
2
2
  import type { Middleware } from 'middleware-axios';
3
3
  import { Context, Tracer } from '@opentelemetry/api';
4
+ import { BaseConfig } from '../../../../../config';
5
+ import { Request } from 'express';
4
6
  /**
5
7
  * Возвращает новый middleware для трассировки исходящих запросов.
6
8
  * @param tracer Трейсер.
@@ -30,3 +32,10 @@ export declare function getRequestInfo(config: AxiosRequestConfig, defaults: Axi
30
32
  * @return Кортеж со строкой и результатом поиска числа.
31
33
  */
32
34
  export declare function hideFirstId(url: string): [string, number | undefined];
35
+ /**
36
+ * Формирует заголовки для исходящих запросов с сервера по соглашению.
37
+ * @param config Конфиг.
38
+ * @param request Входящий запрос.
39
+ * @return Заголовки для исходящих запросов.
40
+ */
41
+ export declare function getRequestHeaders(config: BaseConfig, request: Request): Record<string, string>;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hideFirstId = exports.getRequestInfo = exports.tracingMiddleware = void 0;
3
+ exports.getRequestHeaders = exports.hideFirstId = exports.getRequestInfo = exports.tracingMiddleware = void 0;
4
4
  const api_1 = require("@opentelemetry/api");
5
5
  const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
6
- const utils_1 = require("../utils");
6
+ const http_server_1 = require("../http-server");
7
+ const utils_1 = require("../../../../isomorphic/utils");
7
8
  /**
8
9
  * Возвращает новый middleware для трассировки исходящих запросов.
9
10
  * @param tracer Трейсер.
@@ -77,4 +78,32 @@ function hideFirstId(url) {
77
78
  return found ? [url.replace(found[0], '{id}'), Number(found[0])] : [url, undefined];
78
79
  }
79
80
  exports.hideFirstId = hideFirstId;
80
- //# sourceMappingURL=tracing.js.map
81
+ /**
82
+ * Формирует заголовки для исходящих запросов с сервера по соглашению.
83
+ * @param config Конфиг.
84
+ * @param request Входящий запрос.
85
+ * @return Заголовки для исходящих запросов.
86
+ */
87
+ function getRequestHeaders(config, request) {
88
+ const result = {
89
+ 'User-Agent': `simaland-${config.appName}/${config.appVersion}`,
90
+ };
91
+ const clientIp = (0, http_server_1.getClientIp)(request);
92
+ if (clientIp) {
93
+ result['X-Client-Ip'] = clientIp;
94
+ }
95
+ const cookie = request.get('cookie');
96
+ if (cookie) {
97
+ result.Cookie = cookie;
98
+ }
99
+ // добавляем специфичные заголовки
100
+ for (const key of Object.keys(request.headers)) {
101
+ const value = request.header(key);
102
+ if (key.toLowerCase().indexOf('simaland-') === 0 && value) {
103
+ result[key] = value;
104
+ }
105
+ }
106
+ return result;
107
+ }
108
+ exports.getRequestHeaders = getRequestHeaders;
109
+ //# sourceMappingURL=index.js.map