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

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 (94) hide show
  1. package/cache/types.d.ts +1 -0
  2. package/config/index.d.ts +3 -0
  3. package/config/index.js +8 -0
  4. package/config/index.js.map +1 -0
  5. package/config/source.d.ts +11 -0
  6. package/config/{browser.js → source.js} +6 -7
  7. package/config/source.js.map +1 -0
  8. package/di/application.js +33 -29
  9. package/di/application.js.map +1 -1
  10. package/di/errors.d.ts +7 -4
  11. package/di/errors.js +18 -7
  12. package/di/errors.js.map +1 -1
  13. package/di/preset.d.ts +1 -1
  14. package/di/preset.js +0 -4
  15. package/di/preset.js.map +1 -1
  16. package/di/token.js +1 -1
  17. package/di/token.js.map +1 -1
  18. package/di/types.d.ts +0 -2
  19. package/http/errors.d.ts +16 -0
  20. package/http/errors.js +26 -0
  21. package/http/errors.js.map +1 -0
  22. package/http/index.d.ts +4 -0
  23. package/http/index.js +14 -0
  24. package/http/index.js.map +1 -0
  25. package/http/types.d.ts +2 -0
  26. package/{error-tracking → http}/types.js.map +1 -1
  27. package/http-server/types.d.ts +2 -9
  28. package/http-server/utils.d.ts +7 -1
  29. package/http-server/utils.js +22 -3
  30. package/http-server/utils.js.map +1 -1
  31. package/log/errors.d.ts +23 -0
  32. package/log/errors.js +31 -0
  33. package/log/errors.js.map +1 -0
  34. package/log/handler/pino.d.ts +2 -2
  35. package/log/handler/sentry.d.ts +2 -2
  36. package/log/handler/sentry.js +3 -3
  37. package/log/handler/sentry.js.map +1 -1
  38. package/log/index.d.ts +2 -1
  39. package/log/index.js +4 -1
  40. package/log/index.js.map +1 -1
  41. package/log/logger.js +6 -8
  42. package/log/logger.js.map +1 -1
  43. package/log/types.d.ts +31 -8
  44. package/metrics/node.d.ts +0 -6
  45. package/metrics/node.js +1 -20
  46. package/metrics/node.js.map +1 -1
  47. package/package.json +33 -28
  48. package/preset/browser/index.d.ts +9 -2
  49. package/preset/browser/index.js +34 -21
  50. package/preset/browser/index.js.map +1 -1
  51. package/preset/node/{response.d.ts → handler.d.ts} +7 -4
  52. package/preset/node/{response.js → handler.js} +45 -33
  53. package/preset/node/handler.js.map +1 -0
  54. package/preset/node/index.d.ts +15 -9
  55. package/preset/node/index.js +161 -67
  56. package/preset/node/index.js.map +1 -1
  57. package/preset/parts/types.d.ts +6 -0
  58. package/preset/parts/utils.d.ts +2 -2
  59. package/preset/parts/utils.js +10 -8
  60. package/preset/parts/utils.js.map +1 -1
  61. package/tokens.d.ts +36 -20
  62. package/tokens.js +41 -27
  63. package/tokens.js.map +1 -1
  64. package/utils/function.d.ts +1 -1
  65. package/utils/redux/index.d.ts +2 -2
  66. package/utils/redux/index.js +1 -2
  67. package/utils/redux/index.js.map +1 -1
  68. package/utils/redux/remote-data.d.ts +5 -21
  69. package/utils/redux/remote-data.js +1 -20
  70. package/utils/redux/remote-data.js.map +1 -1
  71. package/utils/redux-saga/middleware.js.map +1 -1
  72. package/utils/ssr/index.d.ts +1 -1
  73. package/utils/ssr/index.js +1 -1
  74. package/utils/webpack/env/index.d.ts +2 -2
  75. package/utils/webpack/env/index.js.map +1 -1
  76. package/utils/webpack/env/utils.js +5 -5
  77. package/utils/webpack/env/utils.js.map +1 -1
  78. package/config/browser.d.ts +0 -6
  79. package/config/browser.js.map +0 -1
  80. package/config/node.d.ts +0 -6
  81. package/config/node.js +0 -30
  82. package/config/node.js.map +0 -1
  83. package/error-tracking/index.d.ts +0 -25
  84. package/error-tracking/index.js +0 -34
  85. package/error-tracking/index.js.map +0 -1
  86. package/error-tracking/types.d.ts +0 -20
  87. package/http-server/middleware/log.d.ts +0 -10
  88. package/http-server/middleware/log.js +0 -43
  89. package/http-server/middleware/log.js.map +0 -1
  90. package/preset/node/response.js.map +0 -1
  91. package/tracing/index.d.ts +0 -10
  92. package/tracing/index.js +0 -21
  93. package/tracing/index.js.map +0 -1
  94. /package/{error-tracking → http}/types.js +0 -0
@@ -1 +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"}
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../src/log/handler/sentry.ts"],"names":[],"mappings":";;;AAEA,mCAAsD;AAEtD;;;;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,mBAAa,EAAE;gBAClC,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,gBAAU,EAAE;YACpC,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 CHANGED
@@ -1,2 +1,3 @@
1
- export { Logger, LoggerEvent, LoggerEventType, LoggerEventHandler } from './types';
1
+ export { Logger, LogEvent, LogLevel, LogHandler, ErrorDetails, BreadcrumbDetails, ContextData, } from './types';
2
2
  export { createLogger } from './logger';
3
+ export { DetailedError, Breadcrumb } from './errors';
package/log/index.js CHANGED
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLogger = void 0;
3
+ exports.Breadcrumb = exports.DetailedError = exports.createLogger = void 0;
4
4
  var logger_1 = require("./logger");
5
5
  Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
6
+ var errors_1 = require("./errors");
7
+ Object.defineProperty(exports, "DetailedError", { enumerable: true, get: function () { return errors_1.DetailedError; } });
8
+ Object.defineProperty(exports, "Breadcrumb", { enumerable: true, get: function () { return errors_1.Breadcrumb; } });
6
9
  //# sourceMappingURL=index.js.map
package/log/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAA/B,sGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":";;;AAUA,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,mCAAqD;AAA5C,uGAAA,aAAa,OAAA;AAAE,oGAAA,UAAU,OAAA"}
package/log/logger.js CHANGED
@@ -8,14 +8,12 @@ exports.createLogger = void 0;
8
8
  function createLogger() {
9
9
  const handlers = [];
10
10
  // eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
11
- function createMethod(type) {
12
- return function (data) {
13
- const event = { type, data };
14
- for (const handler of handlers) {
15
- handler(event);
16
- }
17
- };
18
- }
11
+ const createMethod = (type) => (data) => {
12
+ const event = { type, data };
13
+ for (const handler of handlers) {
14
+ handler(event);
15
+ }
16
+ };
19
17
  return {
20
18
  log: createMethod('log'),
21
19
  info: createMethod('info'),
package/log/logger.js.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,SAAgB,YAAY;IAC1B,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAElC,8DAA8D;IAC9D,MAAM,YAAY,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,IAAS,EAAE,EAAE;QACrD,MAAM,KAAK,GAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;SAChB;IACH,CAAC,CAAC;IAEF,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;AAvBD,oCAuBC"}
package/log/types.d.ts CHANGED
@@ -1,22 +1,23 @@
1
+ import type { SeverityLevel, Context, Extra, Breadcrumb } from '@sentry/types';
1
2
  /**
2
3
  * Тип события.
3
4
  */
4
- export type LoggerEventType = 'error' | 'log' | 'info' | 'warn' | 'debug';
5
+ export type LogLevel = 'error' | 'log' | 'info' | 'warn' | 'debug';
5
6
  /**
6
7
  * Интерфейс события.
7
8
  */
8
- export interface LoggerEvent {
9
- type: LoggerEventType;
9
+ export interface LogEvent {
10
+ type: LogLevel;
10
11
  data: unknown;
11
12
  }
12
13
  /**
13
14
  * Интерфейс функции-обработчика события.
14
15
  */
15
- export interface LoggerEventHandler {
16
- (event: LoggerEvent): void;
16
+ export interface LogHandler {
17
+ (event: LogEvent): void;
17
18
  }
18
19
  /**
19
- * Интерфейс логгера.
20
+ * Logger.
20
21
  * Поддерживает наиболее распространенные события жизненного цикла программы.
21
22
  */
22
23
  export interface Logger {
@@ -25,11 +26,33 @@ export interface Logger {
25
26
  info(data: any): void;
26
27
  warn(data: any): void;
27
28
  debug(data: any): void;
28
- subscribe(handler: LoggerEventHandler): void;
29
+ subscribe(handler: LogHandler): void;
29
30
  }
31
+ /**
32
+ * Контекст ошибки.
33
+ */
34
+ export interface ContextData {
35
+ key: string;
36
+ data: Context | null;
37
+ }
38
+ /**
39
+ * Детали ошибки.
40
+ */
41
+ export interface ErrorDetails {
42
+ level?: SeverityLevel;
43
+ context?: ContextData | ContextData[];
44
+ extra?: {
45
+ key: string;
46
+ data: Extra | null;
47
+ };
48
+ }
49
+ /**
50
+ * Детали хлебной крошки.
51
+ */
52
+ export type BreadcrumbDetails = Breadcrumb;
30
53
  /**
31
54
  * Структура данных, которую необходимо выводить в терминал по соглашению внутри компании.
32
- * @todo Убрать в preset'ы?
55
+ * @todo Убрать в preset'ы.
33
56
  */
34
57
  export interface ConventionalFluentInfo {
35
58
  version: string;
package/metrics/node.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Application } from 'express';
2
1
  import * as PromClient from 'prom-client';
3
2
  import { ConventionalLabels } from './constants';
4
3
  /**
@@ -12,11 +11,6 @@ export interface DefaultNodeMetrics {
12
11
  /** Гистограмма длительности SSR. */
13
12
  renderDuration: PromClient.Histogram<typeof ConventionalLabels.SSR[number]>;
14
13
  }
15
- /**
16
- * Возвращает новое express-приложение, настроенное для выдачи информации о метриках.
17
- * @return Приложение.
18
- */
19
- export declare function createMetricsHttpApp(): Application;
20
14
  /**
21
15
  * Возвращает набор готовых метрик по умолчанию для приложений.
22
16
  * @todo Возможно стоит унести это в пресет.
package/metrics/node.js CHANGED
@@ -22,29 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.createDefaultMetrics = exports.createMetricsHttpApp = void 0;
30
- const express_1 = __importDefault(require("express"));
26
+ exports.createDefaultMetrics = void 0;
31
27
  const PromClient = __importStar(require("prom-client"));
32
28
  const constants_1 = require("./constants");
33
- /**
34
- * Возвращает новое express-приложение, настроенное для выдачи информации о метриках.
35
- * @return Приложение.
36
- */
37
- function createMetricsHttpApp() {
38
- const app = (0, express_1.default)();
39
- PromClient.collectDefaultMetrics();
40
- app.get('/', async function (req, res) {
41
- const metrics = await PromClient.register.metrics();
42
- res.setHeader('Content-Type', PromClient.register.contentType);
43
- res.send(metrics);
44
- });
45
- return app;
46
- }
47
- exports.createMetricsHttpApp = createMetricsHttpApp;
48
29
  /**
49
30
  * Возвращает набор готовых метрик по умолчанию для приложений.
50
31
  * @todo Возможно стоит унести это в пресет.
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/metrics/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA+C;AAC/C,wDAA0C;AAC1C,2CAAiD;AAgBjD;;;GAGG;AACH,SAAgB,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IAEtB,UAAU,CAAC,qBAAqB,EAAE,CAAC;IAEnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,WAAW,GAAG,EAAE,GAAG;QACnC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEpD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAbD,oDAaC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,OAAO;QACL,YAAY,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC;YACnC,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,6BAA6B;YACnC,UAAU,EAAE,8BAAkB,CAAC,aAAa;SAC7C,CAAC;QACF,gBAAgB,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC;YACzC,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,0CAA0C;YAChD,UAAU,EAAE,8BAAkB,CAAC,aAAa;YAC5C,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;SACtD,CAAC;QACF,cAAc,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC;YACvC,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,8BAAkB,CAAC,GAAG;YAClC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;SACjD,CAAC;KACH,CAAC;AACJ,CAAC;AApBD,oDAoBC"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/metrics/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAC1C,2CAAiD;AAgBjD;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,OAAO;QACL,YAAY,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC;YACnC,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,6BAA6B;YACnC,UAAU,EAAE,8BAAkB,CAAC,aAAa;SAC7C,CAAC;QACF,gBAAgB,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC;YACzC,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,0CAA0C;YAChD,UAAU,EAAE,8BAAkB,CAAC,aAAa;YAC5C,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;SACtD,CAAC;QACF,cAAc,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC;YACvC,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,8BAAkB,CAAC,GAAG;YAClC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;SACjD,CAAC;KACH,CAAC;AACJ,CAAC;AApBD,oDAoBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sima-land/isomorph",
3
- "version": "11.0.0-alpha.33",
3
+ "version": "11.0.0-alpha.34",
4
4
  "description": "Tiny framework for fast start frontend microservices",
5
5
  "author": "www.sima-land.ru team",
6
6
  "license": "Apache-2.0",
@@ -18,52 +18,57 @@
18
18
  "node": ">=16.15.1"
19
19
  },
20
20
  "devDependencies": {
21
+ "@babel/core": "^7.22.5",
22
+ "@babel/preset-env": "^7.22.5",
23
+ "@babel/preset-react": "^7.22.5",
24
+ "@babel/preset-typescript": "^7.22.5",
21
25
  "@sima-land/linters": "^2.1.5",
22
- "@swc/jest": "^0.2.22",
23
26
  "@testing-library/react": "^12.1.3",
24
- "@types/ejs": "^3.1.1",
25
- "@types/express": "^4.17.13",
27
+ "@types/ejs": "^3.1.2",
28
+ "@types/express": "^4.17.17",
26
29
  "@types/jest": "^28.1.7",
27
30
  "@types/jsesc": "^3.0.1",
28
- "@types/lodash": "^4.14.184",
31
+ "@types/lodash": "^4.14.194",
29
32
  "@types/react": "^17.0.40",
30
33
  "@types/react-dom": "^17.0.13",
31
- "@types/webpack": "^5.28.0",
32
- "husky": "^8.0.1",
34
+ "@types/webpack": "^5.28.1",
35
+ "babel-jest": "^29.5.0",
36
+ "husky": "^8.0.3",
33
37
  "jest": "^28.1.3",
34
38
  "jest-environment-jsdom": "^28.1.3",
35
39
  "typescript": "^4.9.4"
36
40
  },
37
41
  "dependencies": {
38
42
  "@humanwhocodes/env": "^2.2.2",
39
- "@opentelemetry/api": "^1.3.0",
40
- "@opentelemetry/exporter-jaeger": "^1.8.0",
41
- "@opentelemetry/instrumentation": "^0.34.0",
42
- "@opentelemetry/instrumentation-express": "^0.32.0",
43
- "@opentelemetry/instrumentation-http": "^0.34.0",
44
- "@opentelemetry/resources": "^1.8.0",
45
- "@opentelemetry/sdk-trace-base": "^1.8.0",
46
- "@opentelemetry/sdk-trace-node": "^1.8.0",
47
- "@opentelemetry/semantic-conventions": "^1.8.0",
48
- "@sentry/browser": "^7.32.1",
49
- "@sentry/node": "^7.32.1",
50
- "dotenv": "^16.0.0",
51
- "ejs": "^3.1.8",
52
- "express": "^4.17.3",
43
+ "@krutoo/fetch-tools": "^0.0.7",
44
+ "@opentelemetry/api": "^1.4.1",
45
+ "@opentelemetry/exporter-prometheus": "^0.38.0",
46
+ "@opentelemetry/exporter-trace-otlp-http": "^0.39.1",
47
+ "@opentelemetry/propagator-jaeger": "^1.12.0",
48
+ "@opentelemetry/resources": "^1.12.0",
49
+ "@opentelemetry/sdk-metrics": "^1.12.0",
50
+ "@opentelemetry/sdk-trace-base": "^1.12.0",
51
+ "@opentelemetry/sdk-trace-node": "^1.12.0",
52
+ "@opentelemetry/semantic-conventions": "^1.12.0",
53
+ "@sentry/browser": "^7.51.2",
54
+ "@sentry/node": "^7.51.2",
55
+ "dotenv": "^16.0.3",
56
+ "ejs": "^3.1.9",
57
+ "express": "^4.18.2",
53
58
  "jsesc": "^3.0.2",
54
59
  "middleware-axios": "^2.1.5",
55
- "pino": "^8.7.0",
60
+ "pino": "^8.14.1",
56
61
  "pino-pretty": "^9.1.1",
57
- "prom-client": "^14.0.1",
58
- "webpack": "^5.74.0"
62
+ "prom-client": "^14.2.0",
63
+ "webpack": "^5.82.0"
59
64
  },
60
65
  "peerDependencies": {
61
- "@reduxjs/toolkit": "^1.9.1",
62
- "axios": "^1.2.0-alpha.1",
66
+ "@reduxjs/toolkit": "^1.9.5",
67
+ "axios": "^1.4.0",
63
68
  "lodash": "^4.17.21",
64
69
  "react": "^17.0.2",
65
70
  "react-dom": "^17.0.2",
66
- "react-redux": "^8.0.2",
67
- "redux-saga": "^1.2.1"
71
+ "react-redux": "^8.0.5",
72
+ "redux-saga": "^1.2.3"
68
73
  }
69
74
  }
@@ -1,9 +1,16 @@
1
1
  import { Resolve, Preset } from '../../di';
2
+ import { ConfigSource } from '../../config';
2
3
  import { Logger } from '../../log';
3
4
  import { BridgeClientSide } from '../../utils/ssr';
4
- import { StrictMap, KnownHttpApiKey } from '../parts/types';
5
+ import { StrictMap, KnownHttpApiKey, PresetTuner } from '../parts/types';
5
6
  import { HttpClientFactory } from '../../http-client/types';
6
- export declare function PresetBrowser(): Preset;
7
+ /**
8
+ * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов в браузере.
9
+ * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
10
+ * @return Preset.
11
+ */
12
+ export declare function PresetBrowser(customize?: PresetTuner): Preset;
13
+ export declare function provideConfigSource(): ConfigSource;
7
14
  export declare function provideLogger(resolve: Resolve): Logger;
8
15
  export declare function provideBridgeClientSide(resolve: Resolve): BridgeClientSide<unknown>;
9
16
  export declare function provideKnownHttpApiHosts(resolve: Resolve): StrictMap<KnownHttpApiKey>;
@@ -1,42 +1,55 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.provideHttpClientFactory = exports.provideKnownHttpApiHosts = exports.provideBridgeClientSide = exports.provideLogger = exports.PresetBrowser = void 0;
3
+ exports.provideHttpClientFactory = exports.provideKnownHttpApiHosts = exports.provideBridgeClientSide = exports.provideLogger = exports.provideConfigSource = exports.PresetBrowser = void 0;
4
4
  /* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
5
5
  const di_1 = require("../../di");
6
6
  const tokens_1 = require("../../tokens");
7
- const browser_1 = require("../../config/browser");
7
+ const config_1 = require("../../config");
8
8
  const log_1 = require("../../log");
9
9
  const sentry_1 = require("../../log/handler/sentry");
10
- const browser_2 = require("@sentry/browser");
10
+ const browser_1 = require("@sentry/browser");
11
11
  const middleware_axios_1 = require("middleware-axios");
12
12
  const ssr_1 = require("../../utils/ssr");
13
13
  const utils_1 = require("../parts/utils");
14
14
  const log_2 = require("../../http-client/middleware/log");
15
15
  const providers_1 = require("../parts/providers");
16
- function PresetBrowser() {
17
- return (0, di_1.createPreset)([
18
- [tokens_1.KnownToken.Config.source, browser_1.createConfigSource],
19
- [tokens_1.KnownToken.Config.base, providers_1.provideBaseConfig],
20
- [tokens_1.KnownToken.logger, provideLogger],
21
- [tokens_1.KnownToken.sagaMiddleware, providers_1.provideSagaMiddleware],
22
- [tokens_1.KnownToken.Http.Client.factory, provideHttpClientFactory],
23
- [tokens_1.KnownToken.Http.Client.LogMiddleware.handler, providers_1.provideHttpClientLogHandler],
24
- [tokens_1.KnownToken.SsrBridge.clientSide, provideBridgeClientSide],
25
- [tokens_1.KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts],
26
- ]);
16
+ /**
17
+ * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов в браузере.
18
+ * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
19
+ * @return Preset.
20
+ */
21
+ function PresetBrowser(customize) {
22
+ // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости
23
+ const preset = (0, di_1.createPreset)();
24
+ preset.set(tokens_1.KnownToken.Config.source, provideConfigSource);
25
+ preset.set(tokens_1.KnownToken.Config.base, providers_1.provideBaseConfig);
26
+ preset.set(tokens_1.KnownToken.logger, provideLogger);
27
+ preset.set(tokens_1.KnownToken.sagaMiddleware, providers_1.provideSagaMiddleware);
28
+ preset.set(tokens_1.KnownToken.Http.Client.factory, provideHttpClientFactory);
29
+ preset.set(tokens_1.KnownToken.Http.Client.Middleware.Log.handler, providers_1.provideHttpClientLogHandler);
30
+ preset.set(tokens_1.KnownToken.SsrBridge.clientSide, provideBridgeClientSide);
31
+ preset.set(tokens_1.KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);
32
+ if (customize) {
33
+ customize({ override: preset.set.bind(preset) });
34
+ }
35
+ return preset;
27
36
  }
28
37
  exports.PresetBrowser = PresetBrowser;
38
+ function provideConfigSource() {
39
+ return (0, config_1.createConfigSource)(process.env);
40
+ }
41
+ exports.provideConfigSource = provideConfigSource;
29
42
  function provideLogger(resolve) {
30
43
  const source = resolve(tokens_1.KnownToken.Config.source);
31
- const client = new browser_2.BrowserClient({
32
- transport: browser_2.makeFetchTransport,
33
- stackParser: browser_2.defaultStackParser,
44
+ const client = new browser_1.BrowserClient({
45
+ transport: browser_1.makeFetchTransport,
46
+ stackParser: browser_1.defaultStackParser,
34
47
  dsn: source.require('PUBLIC_SENTRY_DSN'),
35
48
  release: source.require('SENTRY_RELEASE'),
36
49
  environment: source.require('PUBLIC_SENTRY_ENVIRONMENT'),
37
- integrations: [...browser_2.defaultIntegrations],
50
+ integrations: [...browser_1.defaultIntegrations],
38
51
  });
39
- const hub = new browser_2.Hub(client);
52
+ const hub = new browser_1.Hub(client);
40
53
  hub.setTag('url', window.location.href);
41
54
  const logger = (0, log_1.createLogger)();
42
55
  logger.subscribe((0, sentry_1.createSentryHandler)(hub));
@@ -59,10 +72,10 @@ function provideKnownHttpApiHosts(resolve) {
59
72
  }
60
73
  exports.provideKnownHttpApiHosts = provideKnownHttpApiHosts;
61
74
  function provideHttpClientFactory(resolve) {
62
- const logHandler = resolve(tokens_1.KnownToken.Http.Client.LogMiddleware.handler);
75
+ const logHandler = resolve(tokens_1.KnownToken.Http.Client.Middleware.Log.handler);
63
76
  return function createHttpClient(config = {}) {
64
77
  const client = (0, middleware_axios_1.create)(config);
65
- client.use(utils_1.HttpStatus.createMiddleware());
78
+ client.use(utils_1.HttpStatus.axiosMiddleware());
66
79
  client.use((0, log_2.logMiddleware)(logHandler));
67
80
  return client;
68
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/browser/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/preset/browser/index.ts"],"names":[],"mappings":"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"}
@@ -3,19 +3,22 @@ import type { PageTemplate } from '../../http-server/types';
3
3
  import type { Handler } from 'express';
4
4
  import { Application, Preset, Resolve } from '../../di';
5
5
  import { HttpClientFactory } from '../../http-client/types';
6
+ import { PresetTuner } from '../parts/types';
6
7
  /**
7
8
  * Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
9
+ * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
10
+ * @todo Возможно стоит переименовать в PresetPageHandler.
8
11
  * @return Preset.
9
12
  */
10
- export declare function PresetResponse(): Preset;
13
+ export declare function PresetHandler(customize?: PresetTuner): Preset;
11
14
  export declare function provideHttpClientFactory(resolve: Resolve): HttpClientFactory;
12
15
  export declare function provideRender(resolve: Resolve): (element: JSX.Element) => string;
13
16
  export declare function provideTemplate(resolve: Resolve): PageTemplate;
14
17
  export declare function provideMain(resolve: Resolve): VoidFunction;
15
- export declare function provideParams(resolve: Resolve): Record<string, unknown>;
18
+ export declare function provideSpecificParams(resolve: Resolve): Record<string, unknown>;
16
19
  /**
17
20
  * Возвращает express-handler, создающий дочернее di-приложение при запросе.
18
- * @param appFactory Фабрика di-приложения запроса.
21
+ * @param getApp Должна вернуть di-приложения запроса.
19
22
  * @return Обработчик.
20
23
  */
21
- export declare function HandlerProvider(appFactory: () => Application): (resolve: Resolve) => Handler;
24
+ export declare function HandlerProvider(getApp: () => Application): (resolve: Resolve) => Handler;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HandlerProvider = exports.provideParams = exports.provideMain = exports.provideTemplate = exports.provideRender = exports.provideHttpClientFactory = exports.PresetResponse = void 0;
3
+ exports.HandlerProvider = exports.provideSpecificParams = exports.provideMain = exports.provideTemplate = exports.provideRender = exports.provideHttpClientFactory = exports.PresetHandler = void 0;
4
4
  const di_1 = require("../../di");
5
5
  const tokens_1 = require("../../tokens");
6
6
  const server_1 = require("react-dom/server");
@@ -17,28 +17,38 @@ const providers_1 = require("../parts/providers");
17
17
  const utils_2 = require("../parts/utils");
18
18
  /**
19
19
  * Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
20
+ * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
21
+ * @todo Возможно стоит переименовать в PresetPageHandler.
20
22
  * @return Preset.
21
23
  */
22
- function PresetResponse() {
23
- return (0, di_1.createPreset)([
24
- [tokens_1.KnownToken.sagaMiddleware, providers_1.provideSagaMiddleware],
25
- [tokens_1.KnownToken.Response.builder, () => new utils_1.PageResponse()],
26
- [tokens_1.KnownToken.Response.render, provideRender],
27
- [tokens_1.KnownToken.Response.template, provideTemplate],
28
- [tokens_1.KnownToken.Response.main, provideMain],
29
- [tokens_1.KnownToken.Response.params, provideParams],
30
- [tokens_1.KnownToken.Http.Client.factory, provideHttpClientFactory],
31
- [tokens_1.KnownToken.Http.Client.LogMiddleware.handler, providers_1.provideHttpClientLogHandler],
32
- ]);
24
+ function PresetHandler(customize) {
25
+ // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости
26
+ const preset = (0, di_1.createPreset)();
27
+ // saga
28
+ preset.set(tokens_1.KnownToken.sagaMiddleware, providers_1.provideSagaMiddleware);
29
+ // http client
30
+ preset.set(tokens_1.KnownToken.Http.Client.factory, provideHttpClientFactory);
31
+ preset.set(tokens_1.KnownToken.Http.Client.Middleware.Log.handler, providers_1.provideHttpClientLogHandler);
32
+ // http handler
33
+ preset.set(tokens_1.KnownToken.Http.Handler.main, provideMain);
34
+ preset.set(tokens_1.KnownToken.Http.Handler.Request.specificParams, provideSpecificParams);
35
+ preset.set(tokens_1.KnownToken.Http.Handler.Response.builder, () => new utils_1.PageResponse());
36
+ preset.set(tokens_1.KnownToken.Http.Handler.Response.Page.assets, () => ({ js: '', css: '' }));
37
+ preset.set(tokens_1.KnownToken.Http.Handler.Response.Page.template, provideTemplate);
38
+ preset.set(tokens_1.KnownToken.Http.Handler.Response.Page.render, provideRender);
39
+ if (customize) {
40
+ customize({ override: preset.set.bind(preset) });
41
+ }
42
+ return preset;
33
43
  }
34
- exports.PresetResponse = PresetResponse;
44
+ exports.PresetHandler = PresetHandler;
35
45
  function provideHttpClientFactory(resolve) {
36
46
  // @todo а что если привести все зависимости к виду:
37
47
  // const getAppConfig = resolve.lazy(KnownToken.Config.base);
38
48
  const appConfig = resolve(tokens_1.KnownToken.Config.base);
39
49
  const tracer = resolve(tokens_1.KnownToken.Tracing.tracer);
40
- const context = resolve(tokens_1.KnownToken.Response.context);
41
- const logHandler = resolve(tokens_1.KnownToken.Http.Client.LogMiddleware.handler);
50
+ const context = resolve(tokens_1.KnownToken.Http.Handler.context);
51
+ const logHandler = resolve(tokens_1.KnownToken.Http.Client.Middleware.Log.handler);
42
52
  // @todo добавить при необходимости (но тогда в логе будет значительно больше ошибок)
43
53
  // const controller = new AbortController();
44
54
  // context.res.on('finish', () => {
@@ -52,7 +62,7 @@ function provideHttpClientFactory(resolve) {
52
62
  ...config.headers,
53
63
  },
54
64
  });
55
- client.use(utils_2.HttpStatus.createMiddleware());
65
+ client.use(utils_2.HttpStatus.axiosMiddleware());
56
66
  client.use((0, tracing_1.tracingMiddleware)(tracer, context.res.locals.tracing.rootContext));
57
67
  client.use((0, log_1.logMiddleware)(logHandler));
58
68
  client.use((0, headers_1.passHeadersMiddleware)(context.req, {
@@ -64,7 +74,7 @@ function provideHttpClientFactory(resolve) {
64
74
  }
65
75
  exports.provideHttpClientFactory = provideHttpClientFactory;
66
76
  function provideRender(resolve) {
67
- const { res } = resolve(tokens_1.KnownToken.Response.context);
77
+ const { res } = resolve(tokens_1.KnownToken.Http.Handler.context);
68
78
  return function render(element) {
69
79
  res.emit(constants_1.RESPONSE_EVENT.renderStart);
70
80
  const result = (0, server_1.renderToString)(element);
@@ -83,18 +93,20 @@ function provideTemplate(resolve) {
83
93
  }
84
94
  exports.provideTemplate = provideTemplate;
85
95
  function provideMain(resolve) {
86
- const context = resolve(tokens_1.KnownToken.Response.context);
87
- const assets = resolve(tokens_1.KnownToken.Response.assets);
88
- const prepare = resolve(tokens_1.KnownToken.Response.prepare);
89
- const render = resolve(tokens_1.KnownToken.Response.render);
90
- const template = resolve(tokens_1.KnownToken.Response.template);
91
96
  const logger = resolve(tokens_1.KnownToken.logger);
92
- const builder = resolve(tokens_1.KnownToken.Response.builder);
97
+ const context = resolve(tokens_1.KnownToken.Http.Handler.context);
98
+ const assets = resolve(tokens_1.KnownToken.Http.Handler.Response.Page.assets);
99
+ const prepare = resolve(tokens_1.KnownToken.Http.Handler.Response.Page.prepare);
100
+ const render = resolve(tokens_1.KnownToken.Http.Handler.Response.Page.render);
101
+ const template = resolve(tokens_1.KnownToken.Http.Handler.Response.Page.template);
102
+ const builder = resolve(tokens_1.KnownToken.Http.Handler.Response.builder);
103
+ const getAssets = typeof assets === 'function' ? assets : () => assets;
93
104
  return async function main() {
94
105
  try {
106
+ // @todo это билдер ответа но в ответе может не быть markup, assets и тд, подумать и переделать
95
107
  builder
96
108
  .markup(await render(await prepare()))
97
- .assets(assets)
109
+ .assets(await getAssets())
98
110
  .format(utils_1.PageResponse.defineFormat(context.req))
99
111
  .template(template)
100
112
  .send(context.res);
@@ -117,8 +129,8 @@ function provideMain(resolve) {
117
129
  };
118
130
  }
119
131
  exports.provideMain = provideMain;
120
- function provideParams(resolve) {
121
- const context = resolve(tokens_1.KnownToken.Response.context);
132
+ function provideSpecificParams(resolve) {
133
+ const context = resolve(tokens_1.KnownToken.Http.Handler.context);
122
134
  try {
123
135
  const headerValue = context.req.header('simaland-params');
124
136
  /**
@@ -132,22 +144,22 @@ function provideParams(resolve) {
132
144
  return {};
133
145
  }
134
146
  }
135
- exports.provideParams = provideParams;
147
+ exports.provideSpecificParams = provideSpecificParams;
136
148
  /**
137
149
  * Возвращает express-handler, создающий дочернее di-приложение при запросе.
138
- * @param appFactory Фабрика di-приложения запроса.
150
+ * @param getApp Должна вернуть di-приложения запроса.
139
151
  * @return Обработчик.
140
152
  */
141
- function HandlerProvider(appFactory) {
153
+ function HandlerProvider(getApp) {
142
154
  return function provider(resolve) {
143
155
  const parent = resolve(di_1.CURRENT_APP);
144
156
  return function handler(req, res, next) {
145
- const app = appFactory();
157
+ const app = getApp();
146
158
  app.attach(parent);
147
- app.bind(tokens_1.KnownToken.Response.context).toValue({ req, res, next });
148
- app.get(tokens_1.KnownToken.Response.main)();
159
+ app.bind(tokens_1.KnownToken.Http.Handler.context).toValue({ req, res, next });
160
+ app.get(tokens_1.KnownToken.Http.Handler.main)();
149
161
  };
150
162
  };
151
163
  }
152
164
  exports.HandlerProvider = HandlerProvider;
153
- //# sourceMappingURL=response.js.map
165
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/preset/node/handler.ts"],"names":[],"mappings":"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"}