@sima-land/isomorph 11.0.0-alpha.3 → 11.0.0-alpha.31

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 (216) hide show
  1. package/cache/types.d.ts +24 -2
  2. package/config/{index.d.ts → base.d.ts} +2 -2
  3. package/config/{index.js → base.js} +3 -3
  4. package/config/base.js.map +1 -0
  5. package/config/browser.d.ts +1 -1
  6. package/config/browser.js +11 -2
  7. package/config/browser.js.map +1 -1
  8. package/config/node.d.ts +1 -1
  9. package/config/node.js +17 -6
  10. package/config/node.js.map +1 -1
  11. package/config/types.d.ts +8 -1
  12. package/di/application.d.ts +10 -0
  13. package/{container → di}/application.js +29 -8
  14. package/di/application.js.map +1 -0
  15. package/di/container.d.ts +6 -0
  16. package/di/container.js +52 -0
  17. package/di/container.js.map +1 -0
  18. package/di/errors.d.ts +32 -0
  19. package/di/errors.js +48 -0
  20. package/di/errors.js.map +1 -0
  21. package/di/index.d.ts +6 -0
  22. package/di/index.js +17 -0
  23. package/di/index.js.map +1 -0
  24. package/di/preset.d.ts +9 -0
  25. package/di/preset.js +31 -0
  26. package/di/preset.js.map +1 -0
  27. package/di/token.d.ts +7 -0
  28. package/di/token.js +39 -0
  29. package/di/token.js.map +1 -0
  30. package/di/types.d.ts +88 -0
  31. package/{container → di}/types.js +0 -0
  32. package/{logger → di}/types.js.map +1 -1
  33. package/error-tracking/index.d.ts +25 -0
  34. package/error-tracking/index.js +34 -0
  35. package/error-tracking/index.js.map +1 -0
  36. package/error-tracking/types.d.ts +20 -0
  37. package/{error-tracker → error-tracking}/types.js +0 -0
  38. package/{container → error-tracking}/types.js.map +1 -1
  39. package/http-client/middleware/cookie.d.ts +1 -0
  40. package/http-client/middleware/cookie.js +5 -3
  41. package/http-client/middleware/cookie.js.map +1 -1
  42. package/http-client/middleware/headers.d.ts +13 -0
  43. package/http-client/middleware/headers.js +25 -0
  44. package/http-client/middleware/headers.js.map +1 -0
  45. package/http-client/middleware/log.d.ts +27 -0
  46. package/http-client/middleware/log.js +26 -0
  47. package/http-client/middleware/log.js.map +1 -0
  48. package/http-client/middleware/tracing.d.ts +3 -3
  49. package/http-client/middleware/tracing.js +22 -9
  50. package/http-client/middleware/tracing.js.map +1 -1
  51. package/http-client/sauce/index.d.ts +20 -5
  52. package/http-client/sauce/index.js +38 -21
  53. package/http-client/sauce/index.js.map +1 -1
  54. package/http-client/types.d.ts +1 -1
  55. package/http-client/utils.d.ts +14 -7
  56. package/http-client/utils.js +43 -12
  57. package/http-client/utils.js.map +1 -1
  58. package/http-server/errors.d.ts +11 -0
  59. package/http-server/errors.js +18 -0
  60. package/http-server/errors.js.map +1 -0
  61. package/http-server/handler/health-check.d.ts +1 -1
  62. package/http-server/handler/health-check.js +1 -1
  63. package/http-server/middleware/{logging.d.ts → log.d.ts} +2 -2
  64. package/http-server/middleware/log.js +43 -0
  65. package/http-server/middleware/log.js.map +1 -0
  66. package/http-server/middleware/metrics.js +2 -2
  67. package/http-server/middleware/metrics.js.map +1 -1
  68. package/http-server/middleware/tracing.d.ts +7 -1
  69. package/http-server/middleware/tracing.js +20 -2
  70. package/http-server/middleware/tracing.js.map +1 -1
  71. package/http-server/template/index.js +11 -6
  72. package/http-server/template/index.js.map +1 -1
  73. package/http-server/types.d.ts +2 -0
  74. package/http-server/utils.d.ts +14 -5
  75. package/http-server/utils.js +46 -21
  76. package/http-server/utils.js.map +1 -1
  77. package/log/handler/pino.d.ts +8 -0
  78. package/log/handler/pino.js +29 -0
  79. package/log/handler/pino.js.map +1 -0
  80. package/log/handler/sentry.d.ts +8 -0
  81. package/log/handler/sentry.js +50 -0
  82. package/log/handler/sentry.js.map +1 -0
  83. package/log/index.d.ts +2 -0
  84. package/log/index.js +6 -0
  85. package/log/index.js.map +1 -0
  86. package/{logger/index.d.ts → log/logger.d.ts} +0 -0
  87. package/{logger/index.js → log/logger.js} +1 -1
  88. package/log/logger.js.map +1 -0
  89. package/log/types.d.ts +41 -0
  90. package/{logger → log}/types.js +0 -0
  91. package/{preset → log}/types.js.map +1 -1
  92. package/metrics/constants.d.ts +3 -0
  93. package/metrics/constants.js +3 -0
  94. package/metrics/constants.js.map +1 -1
  95. package/metrics/node.d.ts +7 -0
  96. package/metrics/node.js +1 -0
  97. package/metrics/node.js.map +1 -1
  98. package/package.json +35 -30
  99. package/preset/browser/index.d.ts +10 -0
  100. package/preset/browser/index.js +71 -0
  101. package/preset/browser/index.js.map +1 -0
  102. package/preset/node/index.d.ts +16 -11
  103. package/preset/node/index.js +105 -61
  104. package/preset/node/index.js.map +1 -1
  105. package/preset/node/response.d.ts +12 -8
  106. package/preset/node/response.js +98 -28
  107. package/preset/node/response.js.map +1 -1
  108. package/preset/parts/providers.d.ts +7 -0
  109. package/preset/parts/providers.js +26 -0
  110. package/preset/parts/providers.js.map +1 -0
  111. package/preset/parts/types.d.ts +8 -0
  112. package/preset/{types.js → parts/types.js} +0 -0
  113. package/{error-tracker → preset/parts}/types.js.map +1 -1
  114. package/preset/parts/utils.d.ts +110 -0
  115. package/preset/parts/utils.js +261 -0
  116. package/preset/parts/utils.js.map +1 -0
  117. package/tokens.d.ts +39 -21
  118. package/tokens.js +35 -20
  119. package/tokens.js.map +1 -1
  120. package/tracing/index.d.ts +10 -0
  121. package/tracing/index.js +21 -0
  122. package/tracing/index.js.map +1 -0
  123. package/utils/browser/analytics/data-layer.d.ts +2 -2
  124. package/utils/browser/analytics/data-layer.js +4 -5
  125. package/utils/browser/analytics/data-layer.js.map +1 -1
  126. package/utils/browser/analytics/oko.d.ts +3 -2
  127. package/utils/browser/analytics/oko.js +2 -1
  128. package/utils/browser/analytics/oko.js.map +1 -1
  129. package/utils/browser/storage/index.d.ts +8 -0
  130. package/utils/browser/storage/index.js +6 -1
  131. package/utils/browser/storage/index.js.map +1 -1
  132. package/utils/function.d.ts +28 -0
  133. package/utils/function.js +23 -0
  134. package/utils/function.js.map +1 -0
  135. package/utils/react/error-handlers/index.d.ts +11 -8
  136. package/utils/react/error-handlers/index.js +8 -10
  137. package/utils/react/error-handlers/index.js.map +1 -1
  138. package/utils/redux/index.d.ts +3 -0
  139. package/utils/redux/index.js +8 -0
  140. package/utils/redux/index.js.map +1 -0
  141. package/utils/redux/remote-data.d.ts +83 -5
  142. package/utils/redux/remote-data.js +83 -1
  143. package/utils/redux/remote-data.js.map +1 -1
  144. package/utils/redux-saga/index.d.ts +3 -0
  145. package/utils/redux-saga/index.js +8 -0
  146. package/utils/redux-saga/index.js.map +1 -0
  147. package/utils/redux-saga/middleware.d.ts +8 -0
  148. package/utils/redux-saga/middleware.js +143 -0
  149. package/utils/redux-saga/middleware.js.map +1 -0
  150. package/utils/redux-saga/take-chain.d.ts +2 -0
  151. package/utils/redux-saga/take-chain.js +2 -0
  152. package/utils/redux-saga/take-chain.js.map +1 -1
  153. package/utils/redux-saga/types.d.ts +36 -0
  154. package/{saga-runner → utils/redux-saga}/types.js +0 -0
  155. package/utils/redux-saga/types.js.map +1 -0
  156. package/utils/ssr/index.d.ts +41 -0
  157. package/utils/ssr/index.js +54 -0
  158. package/utils/ssr/index.js.map +1 -0
  159. package/utils/webpack/env/index.d.ts +18 -0
  160. package/utils/webpack/env/index.js +76 -0
  161. package/utils/webpack/env/index.js.map +1 -0
  162. package/utils/webpack/env/types.d.ts +11 -0
  163. package/utils/webpack/env/types.js +3 -0
  164. package/utils/webpack/env/types.js.map +1 -0
  165. package/utils/webpack/env/utils.d.ts +15 -0
  166. package/utils/webpack/env/utils.js +52 -0
  167. package/utils/webpack/env/utils.js.map +1 -0
  168. package/utils/webpack/index.d.ts +6 -0
  169. package/utils/webpack/index.js +8 -0
  170. package/utils/webpack/index.js.map +1 -0
  171. package/utils/webpack/module-federation/index.d.ts +7 -1
  172. package/utils/webpack/module-federation/index.js +11 -4
  173. package/utils/webpack/module-federation/index.js.map +1 -1
  174. package/utils/webpack/module-federation/types.d.ts +11 -3
  175. package/utils/webpack/module-federation/utils.d.ts +6 -0
  176. package/utils/webpack/module-federation/utils.js +73 -17
  177. package/utils/webpack/module-federation/utils.js.map +1 -1
  178. package/config/index.js.map +0 -1
  179. package/config/utils.d.ts +0 -5
  180. package/config/utils.js +0 -12
  181. package/config/utils.js.map +0 -1
  182. package/container/application.d.ts +0 -25
  183. package/container/application.js.map +0 -1
  184. package/container/index.d.ts +0 -18
  185. package/container/index.js +0 -74
  186. package/container/index.js.map +0 -1
  187. package/container/types.d.ts +0 -14
  188. package/error-tracker/browser.d.ts +0 -8
  189. package/error-tracker/browser.js +0 -40
  190. package/error-tracker/browser.js.map +0 -1
  191. package/error-tracker/node.d.ts +0 -8
  192. package/error-tracker/node.js +0 -40
  193. package/error-tracker/node.js.map +0 -1
  194. package/error-tracker/types.d.ts +0 -18
  195. package/error-tracker/utils.d.ts +0 -12
  196. package/error-tracker/utils.js +0 -19
  197. package/error-tracker/utils.js.map +0 -1
  198. package/http-server/middleware/logging.js +0 -31
  199. package/http-server/middleware/logging.js.map +0 -1
  200. package/logger/handler/console.d.ts +0 -8
  201. package/logger/handler/console.js +0 -36
  202. package/logger/handler/console.js.map +0 -1
  203. package/logger/handler/sentry.d.ts +0 -8
  204. package/logger/handler/sentry.js +0 -36
  205. package/logger/handler/sentry.js.map +0 -1
  206. package/logger/index.js.map +0 -1
  207. package/logger/types.d.ts +0 -24
  208. package/preset/index.d.ts +0 -7
  209. package/preset/index.js +0 -25
  210. package/preset/index.js.map +0 -1
  211. package/preset/types.d.ts +0 -7
  212. package/saga-runner/index.d.ts +0 -8
  213. package/saga-runner/index.js +0 -79
  214. package/saga-runner/index.js.map +0 -1
  215. package/saga-runner/types.d.ts +0 -10
  216. package/saga-runner/types.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/http-server/errors.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAGjC;;;OAGG;IACH,YAAY,OAAe,EAAE,UAAU,GAAG,GAAG;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAXD,4BAWC"}
@@ -1,6 +1,6 @@
1
1
  import type { Handler } from 'express';
2
2
  /**
3
- * Обработчик, отвечающий данными о времени работы приложения.
3
+ * Возвращает обработчик, отвечающий данными о времени работы приложения.
4
4
  * @return Обработчик http-запроса.
5
5
  */
6
6
  export declare function healthCheck(): Handler;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.healthCheck = void 0;
4
4
  /**
5
- * Обработчик, отвечающий данными о времени работы приложения.
5
+ * Возвращает обработчик, отвечающий данными о времени работы приложения.
6
6
  * @return Обработчик http-запроса.
7
7
  */
8
8
  function healthCheck() {
@@ -1,10 +1,10 @@
1
1
  import type { Handler } from 'express';
2
2
  import type { BaseConfig } from '../../config/types';
3
- import type { Logger } from '../../logger/types';
3
+ import type { Logger } from '../../log/types';
4
4
  /**
5
5
  * Возвращает новый middleware для логирования запросов.
6
6
  * @param config Конфиг.
7
7
  * @param logger Logger.
8
8
  * @return Middleware.
9
9
  */
10
- export declare function loggingMiddleware(config: BaseConfig, logger: Logger): Handler;
10
+ export declare function logMiddleware(config: BaseConfig, logger: Logger): Handler;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logMiddleware = void 0;
4
+ const utils_1 = require("../utils");
5
+ const number_1 = require("../../utils/number");
6
+ /**
7
+ * Возвращает новый middleware для логирования запросов.
8
+ * @param config Конфиг.
9
+ * @param logger Logger.
10
+ * @return Middleware.
11
+ */
12
+ function logMiddleware(config, logger) {
13
+ return function log(req, res, next) {
14
+ const start = process.hrtime.bigint();
15
+ const remoteIp = (0, utils_1.getXClientIp)(req);
16
+ // @todo перенести в пресеты?
17
+ const startMsg = {
18
+ type: 'http.request[incoming]',
19
+ version: config.appVersion,
20
+ route: req.originalUrl,
21
+ method: req.method,
22
+ remote_ip: remoteIp,
23
+ };
24
+ logger.info(startMsg);
25
+ res.once('finish', () => {
26
+ const finish = process.hrtime.bigint();
27
+ // @todo перенести в пресеты?
28
+ const finishMsg = {
29
+ type: 'http.response[outgoing]',
30
+ version: config.appVersion,
31
+ route: req.originalUrl,
32
+ method: req.method,
33
+ status: res.statusCode,
34
+ remote_ip: remoteIp,
35
+ latency: (0, number_1.toMilliseconds)(finish - start),
36
+ };
37
+ logger.info(finishMsg);
38
+ });
39
+ next();
40
+ };
41
+ }
42
+ exports.logMiddleware = logMiddleware;
43
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/http-server/middleware/log.ts"],"names":[],"mappings":";;;AAGA,oCAAwC;AACxC,+CAAoD;AAEpD;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,MAAkB,EAAE,MAAc;IAC9D,OAAO,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAC;QAEnC,6BAA6B;QAC7B,MAAM,QAAQ,GAA0E;YACtF,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,MAAM,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,WAAW;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,QAAQ;SACpB,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAEvC,6BAA6B;YAC7B,MAAM,SAAS,GAA8C;gBAC3D,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,KAAK,EAAE,GAAG,CAAC,WAAW;gBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,UAAU;gBACtB,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,IAAA,uBAAc,EAAC,MAAM,GAAG,KAAK,CAAC;aACxC,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAnCD,sCAmCC"}
@@ -19,7 +19,7 @@ function responseMetricsMiddleware(config, metrics) {
19
19
  method: req.method,
20
20
  };
21
21
  }
22
- return (req, res, next) => {
22
+ return function responseMetrics(req, res, next) {
23
23
  const start = process.hrtime.bigint();
24
24
  metrics.counter.inc(resolveLabels(req, res), 1);
25
25
  res.once('finish', () => {
@@ -37,7 +37,7 @@ exports.responseMetricsMiddleware = responseMetricsMiddleware;
37
37
  * @return Middleware.
38
38
  */
39
39
  function renderMetricsMiddleware(config, metrics) {
40
- return (req, res, next) => {
40
+ return function renderMetrics(req, res, next) {
41
41
  let start;
42
42
  res.once(constants_1.RESPONSE_EVENT.renderStart, () => {
43
43
  start = process.hrtime.bigint();
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/http-server/middleware/metrics.ts"],"names":[],"mappings":";;;AAGA,+CAAoD;AACpD,4CAA8C;AAG9C;;;;;GAKG;AACH,SAAgB,yBAAyB,CACvC,MAAkB,EAClB,OAGC;IAED,8DAA8D;IAC9D,SAAS,aAAa,CACpB,GAAY,EACZ,GAAa;QAEb,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI;YAC7B,IAAI,EAAE,GAAG,CAAC,UAAU;YACpB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhD,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAEvC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAA,uBAAc,EAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAjCD,8DAiCC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,MAAkB,EAClB,OAEC;IAED,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,KAAyB,CAAC;QAE9B,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,WAAW,EAAE,GAAG,EAAE;YACxC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,YAAY,EAAE,GAAG,EAAE;YACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,MAAM,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAC5D;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAEvC,OAAO,CAAC,SAAS,CAAC,OAAO,CACvB;gBACE,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI;aAC9B,EACD,IAAA,uBAAc,EAAC,MAAM,GAAG,KAAK,CAAC,CAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAhCD,0DAgCC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/http-server/middleware/metrics.ts"],"names":[],"mappings":";;;AAGA,+CAAoD;AACpD,4CAA8C;AAG9C;;;;;GAKG;AACH,SAAgB,yBAAyB,CACvC,MAAkB,EAClB,OAGC;IAED,8DAA8D;IAC9D,SAAS,aAAa,CACpB,GAAY,EACZ,GAAa;QAEb,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI;YAC7B,IAAI,EAAE,GAAG,CAAC,UAAU;YACpB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhD,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAEvC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAA,uBAAc,EAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAjCD,8DAiCC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,MAAkB,EAClB,OAEC;IAED,OAAO,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;QAC1C,IAAI,KAAyB,CAAC;QAE9B,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,WAAW,EAAE,GAAG,EAAE;YACxC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,YAAY,EAAE,GAAG,EAAE;YACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,MAAM,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAC5D;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAEvC,OAAO,CAAC,SAAS,CAAC,OAAO,CACvB;gBACE,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI;aAC9B,EACD,IAAA,uBAAc,EAAC,MAAM,GAAG,KAAK,CAAC,CAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAhCD,0DAgCC"}
@@ -1,8 +1,14 @@
1
1
  import { Tracer } from '@opentelemetry/api';
2
- import type { Handler } from 'express';
2
+ import type { Request, Handler } from 'express';
3
3
  /**
4
4
  * Возвращает новый middleware для трассировки стадий входящего запроса.
5
5
  * @param tracer Tracer.
6
6
  * @return Middleware.
7
7
  */
8
8
  export declare function tracingMiddleware(tracer: Tracer): Handler;
9
+ /**
10
+ * Возвращает набор стандартных атрибутов для спана.
11
+ * @param req Входящий http-запрос.
12
+ * @return Атрибуты.
13
+ */
14
+ export declare function getConventionalRequestAttrs(req: Request): Record<string, string | undefined>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tracingMiddleware = void 0;
3
+ exports.getConventionalRequestAttrs = exports.tracingMiddleware = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  const api_1 = require("@opentelemetry/api");
6
6
  /**
@@ -9,9 +9,10 @@ const api_1 = require("@opentelemetry/api");
9
9
  * @return Middleware.
10
10
  */
11
11
  function tracingMiddleware(tracer) {
12
- return (req, res, next) => {
12
+ return function tracing(req, res, next) {
13
13
  const externalContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, req.headers);
14
14
  const rootSpan = tracer.startSpan('response', undefined, externalContext);
15
+ rootSpan.setAttributes(getConventionalRequestAttrs(req));
15
16
  const rootContext = api_1.trace.setSpan(externalContext, rootSpan);
16
17
  res.locals.tracing = {
17
18
  rootSpan,
@@ -30,4 +31,21 @@ function tracingMiddleware(tracer) {
30
31
  };
31
32
  }
32
33
  exports.tracingMiddleware = tracingMiddleware;
34
+ /**
35
+ * Возвращает набор стандартных атрибутов для спана.
36
+ * @param req Входящий http-запрос.
37
+ * @return Атрибуты.
38
+ */
39
+ function getConventionalRequestAttrs(req) {
40
+ const result = {
41
+ 'request.path': req.originalUrl,
42
+ };
43
+ for (const headerName in req.headers) {
44
+ if (headerName.toLowerCase().startsWith('simaland-')) {
45
+ result[headerName] = req.header(headerName);
46
+ }
47
+ }
48
+ return result;
49
+ }
50
+ exports.getConventionalRequestAttrs = getConventionalRequestAttrs;
33
51
  //# sourceMappingURL=tracing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-server/middleware/tracing.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,4CAA8E;AAG9E;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,eAAe,GAAG,iBAAW,CAAC,OAAO,CAAC,kBAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,WAAK,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAE7D,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG;YACnB,QAAQ;YACR,WAAW;SACZ,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,WAAW,EAAE,GAAG,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,YAAY,EAAE,GAAG,EAAE;YACzC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAzBD,8CAyBC"}
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/http-server/middleware/tracing.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,4CAA8E;AAG9E;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;QACpC,MAAM,eAAe,GAAG,iBAAW,CAAC,OAAO,CAAC,kBAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAE1E,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,WAAK,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAE7D,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG;YACnB,QAAQ;YACR,WAAW;SACZ,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,WAAW,EAAE,GAAG,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAAc,CAAC,YAAY,EAAE,GAAG,EAAE;YACzC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AA5BD,8CA4BC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CAAC,GAAY;IACtD,MAAM,MAAM,GAAuC;QACjD,cAAc,EAAE,GAAG,CAAC,WAAW;KAChC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,OAAO,EAAE;QACpC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACpD,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC7C;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,kEAYC"}
@@ -10,20 +10,25 @@ exports.pageTemplate = (0, ejs_1.compile)(`
10
10
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
12
12
  <title><%= title %></title>
13
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,600,700,700i,800&display=swap&subset=cyrillic">
13
14
  <style>
14
15
  * {
15
- margin: 0;
16
- padding: 0;
17
- border: 0;
18
- outline: 0;
19
16
  box-sizing: border-box;
20
- font: inherit;
21
- line-height: inherit;
17
+ }
18
+ body {
19
+ font-family: -apple-system,BlinkMacSystemFont,'Source Sans Pro',"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,Arial,sans-serif;
20
+ margin: 0;
22
21
  }
23
22
  </style>
23
+ <% if (assets.criticalCss) { %>
24
+ <link rel="stylesheet" href="<%= assets.criticalCss %>">
25
+ <% } %>
24
26
  <% if (assets.css) { %>
25
27
  <link rel="stylesheet" href="<%= assets.css %>">
26
28
  <% } %>
29
+ <% if (assets.criticalJs) { %>
30
+ <script src="<%= assets.criticalJs %>"></script>
31
+ <% } %>
27
32
  </head>
28
33
  <body>
29
34
  <%- markup %>
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http-server/template/index.ts"],"names":[],"mappings":";;;AAAA,6BAA8B;AAEjB,QAAA,YAAY,GAAG,IAAA,aAAO,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http-server/template/index.ts"],"names":[],"mappings":";;;AAAA,6BAA8B;AAEjB,QAAA,YAAY,GAAG,IAAA,aAAO,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCnC,CAAC,CAAC"}
@@ -7,6 +7,8 @@ export interface ResponseContext {
7
7
  export interface PageAssets {
8
8
  js: string;
9
9
  css: string;
10
+ criticalJs?: string;
11
+ criticalCss?: string;
10
12
  }
11
13
  export interface PageTemplateData {
12
14
  markup: string;
@@ -1,5 +1,6 @@
1
1
  import type { Request, Response } from 'express';
2
- import type { PageTemplate, PageTemplateData } from './types';
2
+ import type { PageAssets, PageTemplate, PageTemplateData } from './types';
3
+ import type { BaseConfig } from '../config/types';
3
4
  /**
4
5
  * Определяет IP входящего запроса.
5
6
  * @param req Входящий запрос.
@@ -12,19 +13,27 @@ export declare function getXClientIp(req: Request): string;
12
13
  * @return Служебные заголовки.
13
14
  */
14
15
  export declare function getServiceHeaders(req: Request): Record<string, string | undefined>;
16
+ /**
17
+ * Формирует заголовки для исходящих запросов с сервера по соглашению.
18
+ * @todo Убрать в preset'ы?
19
+ * @param config Конфиг.
20
+ * @param request Входящий запрос.
21
+ * @return Заголовки для исходящих запросов.
22
+ */
23
+ export declare function getRequestHeaders(config: BaseConfig, request: Request): Record<string, string>;
15
24
  export declare class PageResponse {
16
25
  private type;
17
26
  private html;
18
- private assets;
27
+ private _meta;
28
+ private _assets;
19
29
  private _template;
20
- static create(): PageResponse;
21
30
  static defineFormat(req: Request): PageResponse['type'];
22
31
  static defaultTemplate({ markup }: PageTemplateData): string;
23
32
  constructor();
24
33
  markup(html: string): this;
25
- script(url: string): this;
26
- styles(url: string): this;
34
+ assets(assets: PageAssets): this;
27
35
  format(type: PageResponse['type']): this;
28
36
  template(template: PageTemplate): this;
37
+ meta(meta: any): this;
29
38
  send(res: Response): void;
30
39
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PageResponse = exports.getServiceHeaders = exports.getXClientIp = void 0;
3
+ exports.PageResponse = exports.getRequestHeaders = exports.getServiceHeaders = exports.getXClientIp = void 0;
4
4
  const net_1 = require("net");
5
5
  /**
6
6
  * Определяет IP входящего запроса.
@@ -27,17 +27,24 @@ function getServiceHeaders(req) {
27
27
  return result;
28
28
  }
29
29
  exports.getServiceHeaders = getServiceHeaders;
30
+ /**
31
+ * Формирует заголовки для исходящих запросов с сервера по соглашению.
32
+ * @todo Убрать в preset'ы?
33
+ * @param config Конфиг.
34
+ * @param request Входящий запрос.
35
+ * @return Заголовки для исходящих запросов.
36
+ */
37
+ function getRequestHeaders(config, request) {
38
+ return {
39
+ 'X-Client-Ip': getXClientIp(request),
40
+ 'User-Agent': `simaland-${config.appName}/${config.appVersion}`,
41
+ Cookie: request.get('cookie') || '',
42
+ ...getServiceHeaders(request),
43
+ };
44
+ }
45
+ exports.getRequestHeaders = getRequestHeaders;
30
46
  /* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
31
47
  class PageResponse {
32
- constructor() {
33
- this.type = 'html';
34
- this.html = '';
35
- this.assets = { js: '', css: '' };
36
- this._template = PageResponse.defaultTemplate;
37
- }
38
- static create() {
39
- return new PageResponse();
40
- }
41
48
  static defineFormat(req) {
42
49
  let result = 'html';
43
50
  if ((req.header('accept') || '').toLowerCase().includes('application/json')) {
@@ -48,16 +55,18 @@ class PageResponse {
48
55
  static defaultTemplate({ markup }) {
49
56
  return markup;
50
57
  }
58
+ constructor() {
59
+ this.type = 'html';
60
+ this.html = '';
61
+ this._assets = { js: '', css: '' };
62
+ this._template = PageResponse.defaultTemplate;
63
+ }
51
64
  markup(html) {
52
65
  this.html = html;
53
66
  return this;
54
67
  }
55
- script(url) {
56
- this.assets.js = url;
57
- return this;
58
- }
59
- styles(url) {
60
- this.assets.css = url;
68
+ assets(assets) {
69
+ this._assets = assets;
61
70
  return this;
62
71
  }
63
72
  format(type) {
@@ -68,25 +77,41 @@ class PageResponse {
68
77
  this._template = template;
69
78
  return this;
70
79
  }
80
+ meta(meta) {
81
+ this._meta = meta;
82
+ return this;
83
+ }
71
84
  send(res) {
72
85
  const templateData = {
73
86
  type: this.type,
74
87
  markup: this.html,
75
- assets: this.assets,
88
+ assets: this._assets,
76
89
  };
77
90
  switch (this.type) {
78
91
  case 'json': {
79
92
  const result = {
80
93
  markup: this._template(templateData),
81
- bundle_js: this.assets.js,
82
- bundle_css: this.assets.css,
94
+ bundle_js: this._assets.js,
95
+ bundle_css: this._assets.css,
96
+ critical_js: this._assets.criticalJs,
97
+ critical_css: this._assets.criticalCss,
98
+ meta: this._meta,
83
99
  };
84
100
  res.json(result);
85
101
  break;
86
102
  }
87
103
  case 'html': {
88
- res.setHeader('simaland-bundle-js', this.assets.js);
89
- res.setHeader('simaland-bundle-css', this.assets.css);
104
+ res.setHeader('simaland-bundle-js', this._assets.js);
105
+ res.setHeader('simaland-bundle-css', this._assets.css);
106
+ if (this._assets.criticalJs) {
107
+ res.setHeader('simaland-critical-js', this._assets.criticalJs);
108
+ }
109
+ if (this._assets.criticalCss) {
110
+ res.setHeader('simaland-critical-css', this._assets.criticalCss);
111
+ }
112
+ if (this._meta) {
113
+ res.setHeader('simaland-meta', JSON.stringify(this._meta));
114
+ }
90
115
  res.send(this._template(templateData));
91
116
  break;
92
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-server/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/http-server/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { LoggerEventHandler } from '../types';
2
+ import type pino from 'pino';
3
+ /**
4
+ * Возвращает новый handler для logger'а для вывода событий в терминал.
5
+ * @param pinoInstance Конфиг.
6
+ * @return Handler.
7
+ */
8
+ export declare function createPinoHandler(pinoInstance: pino.Logger): LoggerEventHandler;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPinoHandler = void 0;
4
+ /**
5
+ * Возвращает новый handler для logger'а для вывода событий в терминал.
6
+ * @param pinoInstance Конфиг.
7
+ * @return Handler.
8
+ */
9
+ function createPinoHandler(pinoInstance) {
10
+ return function pinoHandler(event) {
11
+ switch (event.type) {
12
+ case 'log':
13
+ case 'info':
14
+ pinoInstance.info(event.data);
15
+ break;
16
+ case 'warn':
17
+ pinoInstance.warn(event.data);
18
+ break;
19
+ case 'debug':
20
+ pinoInstance.debug(event.data);
21
+ break;
22
+ case 'error':
23
+ pinoInstance.error(event.data);
24
+ break;
25
+ }
26
+ };
27
+ }
28
+ exports.createPinoHandler = createPinoHandler;
29
+ //# sourceMappingURL=pino.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pino.js","sourceRoot":"","sources":["../../../src/log/handler/pino.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,YAAyB;IACzD,OAAO,SAAS,WAAW,CAAC,KAAK;QAC/B,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,MAAM;gBACT,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,OAAO;gBACV,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,OAAO;gBACV,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;SACT;IACH,CAAC,CAAC;AACJ,CAAC;AAlBD,8CAkBC"}
@@ -0,0 +1,8 @@
1
+ import type { LoggerEventHandler } from '../types';
2
+ import type { Hub } from '@sentry/types';
3
+ /**
4
+ * Возвращает новый handler для logger'а для отправки событий в Sentry.
5
+ * @param hubInit Sentry Hub или функция которая его вернёт.
6
+ * @return Handler.
7
+ */
8
+ export declare function createSentryHandler(hubInit: Hub | (() => Hub)): LoggerEventHandler;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSentryHandler = void 0;
4
+ const error_tracking_1 = require("../../error-tracking");
5
+ /**
6
+ * Возвращает новый handler для logger'а для отправки событий в Sentry.
7
+ * @param hubInit Sentry Hub или функция которая его вернёт.
8
+ * @return Handler.
9
+ */
10
+ function createSentryHandler(hubInit) {
11
+ const getHub = typeof hubInit === 'function' ? hubInit : () => hubInit;
12
+ return event => {
13
+ // ВАЖНО: каждый входящий http-запрос должен иметь свой собственный hub
14
+ // подробности: https://github.com/getsentry/sentry-javascript/discussions/5648
15
+ // поэтому если передана функция - вызываем каждый раз (внутри обработчика)
16
+ const hub = getHub();
17
+ // error
18
+ if (event.type === 'error') {
19
+ const error = event.data;
20
+ if (error instanceof error_tracking_1.SentryError) {
21
+ const { level, context, extra } = error.data;
22
+ hub.withScope(scope => {
23
+ if (level) {
24
+ scope.setLevel(level);
25
+ }
26
+ if (context) {
27
+ const list = Array.isArray(context) ? context : [context];
28
+ for (const item of list) {
29
+ scope.setContext(item.key, item.data);
30
+ }
31
+ }
32
+ if (extra) {
33
+ scope.setExtra(extra.key, extra.data);
34
+ }
35
+ hub.captureException(error);
36
+ });
37
+ }
38
+ else {
39
+ hub.captureException(error);
40
+ }
41
+ }
42
+ // breadcrumb
43
+ if (event.data instanceof error_tracking_1.SentryBreadcrumb) {
44
+ const breadcrumb = event.data.data;
45
+ hub.addBreadcrumb(breadcrumb);
46
+ }
47
+ };
48
+ }
49
+ exports.createSentryHandler = createSentryHandler;
50
+ //# sourceMappingURL=sentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../src/log/handler/sentry.ts"],"names":[],"mappings":";;;AAEA,yDAAqE;AAErE;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,OAA0B;IAC5D,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IAEvE,OAAO,KAAK,CAAC,EAAE;QACb,uEAAuE;QACvE,+EAA+E;QAC/E,2EAA2E;QAC3E,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QAErB,QAAQ;QACR,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YAEzB,IAAI,KAAK,YAAY,4BAAW,EAAE;gBAChC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;gBAE7C,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACpB,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACvB;oBAED,IAAI,OAAO,EAAE;wBACX,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;wBAE1D,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;4BACvB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;yBACvC;qBACF;oBAED,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;qBACvC;oBAED,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aAC7B;SACF;QAED,aAAa;QACb,IAAI,KAAK,CAAC,IAAI,YAAY,iCAAgB,EAAE;YAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAEnC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;AACJ,CAAC;AA/CD,kDA+CC"}
package/log/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { Logger, LoggerEvent, LoggerEventType, LoggerEventHandler } from './types';
2
+ export { createLogger } from './logger';
package/log/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLogger = void 0;
4
+ var logger_1 = require("./logger");
5
+ Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAA/B,sGAAA,YAAY,OAAA"}
File without changes
@@ -28,4 +28,4 @@ function createLogger() {
28
28
  };
29
29
  }
30
30
  exports.createLogger = createLogger;
31
- //# sourceMappingURL=index.js.map
31
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,SAAgB,YAAY;IAC1B,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,8DAA8D;IAC9D,SAAS,YAAY,CAAC,IAAqB;QACzC,OAAO,UAAU,IAAS;YACxB,MAAM,KAAK,GAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;QACH,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC;QACxB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;QAC1B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC;QAC5B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC;QAE5B,SAAS,EAAE,OAAO,CAAC,EAAE;YACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC;AAxBD,oCAwBC"}
package/log/types.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Тип события.
3
+ */
4
+ export type LoggerEventType = 'error' | 'log' | 'info' | 'warn' | 'debug';
5
+ /**
6
+ * Интерфейс события.
7
+ */
8
+ export interface LoggerEvent {
9
+ type: LoggerEventType;
10
+ data: unknown;
11
+ }
12
+ /**
13
+ * Интерфейс функции-обработчика события.
14
+ */
15
+ export interface LoggerEventHandler {
16
+ (event: LoggerEvent): void;
17
+ }
18
+ /**
19
+ * Интерфейс логгера.
20
+ * Поддерживает наиболее распространенные события жизненного цикла программы.
21
+ */
22
+ export interface Logger {
23
+ error(data: any): void;
24
+ log(data: any): void;
25
+ info(data: any): void;
26
+ warn(data: any): void;
27
+ debug(data: any): void;
28
+ subscribe(handler: LoggerEventHandler): void;
29
+ }
30
+ /**
31
+ * Структура данных, которую необходимо выводить в терминал по соглашению внутри компании.
32
+ * @todo Убрать в preset'ы?
33
+ */
34
+ export interface ConventionalFluentInfo {
35
+ version: string;
36
+ latency: number;
37
+ method: string;
38
+ remote_ip: string;
39
+ route: string;
40
+ status: number;
41
+ }
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/preset/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/log/types.ts"],"names":[],"mappings":""}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Константы лейблов для метрик по соглашению.
3
+ */
1
4
  export declare const ConventionalLabels: {
2
5
  readonly HTTP_RESPONSE: readonly ["version", "route", "code", "method"];
3
6
  readonly SSR: readonly ["version", "route", "method"];
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConventionalLabels = void 0;
4
+ /**
5
+ * Константы лейблов для метрик по соглашению.
6
+ */
4
7
  exports.ConventionalLabels = {
5
8
  HTTP_RESPONSE: ['version', 'route', 'code', 'method'],
6
9
  SSR: ['version', 'route', 'method'],
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/metrics/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAChC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;IACrD,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/metrics/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,kBAAkB,GAAG;IAChC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;IACrD,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;CAC3B,CAAC"}