@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
package/tokens.d.ts CHANGED
@@ -1,46 +1,64 @@
1
1
  /// <reference types="react" />
2
2
  import type { Application } from 'express';
3
3
  import type { DefaultMiddleware, PageAssets, PageTemplate, ResponseContext } from './http-server/types';
4
- import type { SagaRunner } from './saga-runner/types';
5
- import type { Logger } from './logger/types';
4
+ import type { SagaExtendedMiddleware } from './utils/redux-saga';
5
+ import type { Logger } from './log/types';
6
6
  import type { HttpClientFactory } from './http-client/types';
7
7
  import type { BaseConfig } from './config/types';
8
8
  import type { Tracer } from '@opentelemetry/api';
9
9
  import type { Cache } from './cache/types';
10
- import type { BasicTracerProvider, SpanExporter } from '@opentelemetry/tracing';
10
+ import type { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';
11
+ import type { Resource } from '@opentelemetry/resources';
12
+ import type { StrictMap, KnownHttpApiKey } from './preset/parts/types';
13
+ import type { BridgeClientSide, BridgeServerSide } from './utils/ssr';
14
+ import type { PageResponse } from './http-server/utils';
15
+ import type { LogMiddlewareHandlerInit } from './http-client/middleware/log';
11
16
  export declare const KnownToken: {
12
17
  readonly Config: {
13
- readonly source: import("./container/types").Token<import("@humanwhocodes/env").Env>;
14
- readonly base: import("./container/types").Token<BaseConfig>;
18
+ readonly source: import("./di").Token<import("@humanwhocodes/env").Env>;
19
+ readonly base: import("./di").Token<BaseConfig>;
15
20
  };
16
- readonly cache: import("./container/types").Token<Cache>;
17
- readonly logger: import("./container/types").Token<Logger>;
21
+ readonly cache: import("./di").Token<Cache>;
22
+ readonly logger: import("./di").Token<Logger>;
23
+ readonly sagaMiddleware: import("./di").Token<SagaExtendedMiddleware>;
18
24
  readonly Tracing: {
19
- readonly tracer: import("./container/types").Token<Tracer>;
20
- readonly spanExporter: import("./container/types").Token<SpanExporter>;
21
- readonly tracerProvider: import("./container/types").Token<BasicTracerProvider>;
25
+ readonly tracer: import("./di").Token<Tracer>;
26
+ readonly spanExporter: import("./di").Token<SpanExporter>;
27
+ readonly tracerProvider: import("./di").Token<BasicTracerProvider>;
28
+ readonly tracerProviderResource: import("./di").Token<Resource>;
22
29
  };
23
30
  readonly Metrics: {
24
- readonly httpApp: import("./container/types").Token<Application>;
31
+ readonly httpApp: import("./di").Token<Application>;
25
32
  };
26
33
  readonly Http: {
27
34
  readonly Client: {
28
- readonly factory: import("./container/types").Token<HttpClientFactory>;
35
+ readonly factory: import("./di").Token<HttpClientFactory>;
36
+ readonly LogMiddleware: {
37
+ readonly handler: import("./di").Token<LogMiddlewareHandlerInit>;
38
+ };
29
39
  };
30
40
  readonly Server: {
31
- readonly factory: import("./container/types").Token<() => Application>;
41
+ readonly factory: import("./di").Token<() => Application>;
32
42
  readonly Defaults: {
33
- readonly middleware: import("./container/types").Token<DefaultMiddleware>;
43
+ readonly middleware: import("./di").Token<DefaultMiddleware>;
34
44
  };
35
45
  };
46
+ readonly Api: {
47
+ readonly knownHosts: import("./di").Token<StrictMap<KnownHttpApiKey>>;
48
+ };
36
49
  };
37
50
  readonly Response: {
38
- readonly template: import("./container/types").Token<PageTemplate>;
39
- readonly context: import("./container/types").Token<ResponseContext>;
40
- readonly assets: import("./container/types").Token<PageAssets>;
41
- readonly prepare: import("./container/types").Token<() => JSX.Element | Promise<JSX.Element>>;
42
- readonly render: import("./container/types").Token<(element: JSX.Element) => string | Promise<string>>;
43
- readonly main: import("./container/types").Token<() => void>;
44
- readonly sagaRunner: import("./container/types").Token<SagaRunner>;
51
+ readonly builder: import("./di").Token<PageResponse>;
52
+ readonly params: import("./di").Token<Record<string, unknown>>;
53
+ readonly template: import("./di").Token<PageTemplate>;
54
+ readonly context: import("./di").Token<ResponseContext>;
55
+ readonly assets: import("./di").Token<PageAssets>;
56
+ readonly prepare: import("./di").Token<() => JSX.Element | Promise<JSX.Element>>;
57
+ readonly render: import("./di").Token<(element: JSX.Element) => string | Promise<string>>;
58
+ readonly main: import("./di").Token<() => void>;
59
+ };
60
+ readonly SsrBridge: {
61
+ readonly clientSide: import("./di").Token<BridgeClientSide<unknown>>;
62
+ readonly serverSide: import("./di").Token<BridgeServerSide>;
45
63
  };
46
64
  };
package/tokens.js CHANGED
@@ -1,48 +1,63 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KnownToken = void 0;
4
- const container_1 = require("./container");
4
+ const di_1 = require("./di");
5
5
  exports.KnownToken = {
6
6
  // config
7
7
  Config: {
8
- source: (0, container_1.createToken)('config.source'),
9
- base: (0, container_1.createToken)('config.base'),
8
+ source: (0, di_1.createToken)('config.source'),
9
+ base: (0, di_1.createToken)('config.base'),
10
10
  },
11
11
  // cache
12
- cache: (0, container_1.createToken)('cache'),
13
- // logging
14
- logger: (0, container_1.createToken)('logger'),
12
+ cache: (0, di_1.createToken)('cache'),
13
+ // log
14
+ logger: (0, di_1.createToken)('logger'),
15
+ // saga runner
16
+ sagaMiddleware: (0, di_1.createToken)('saga-middleware'),
15
17
  // tracing
16
18
  Tracing: {
17
- tracer: (0, container_1.createToken)('tracing.tracer'),
18
- spanExporter: (0, container_1.createToken)('tracing.span-exporter'),
19
- tracerProvider: (0, container_1.createToken)('tracing.tracer-provider'),
19
+ tracer: (0, di_1.createToken)('tracing.tracer'),
20
+ spanExporter: (0, di_1.createToken)('tracing.span-exporter'),
21
+ tracerProvider: (0, di_1.createToken)('tracing.tracer-provider'),
22
+ tracerProviderResource: (0, di_1.createToken)('tracing.tracer-provider-resource'),
20
23
  },
21
24
  // metrics
22
25
  Metrics: {
23
- httpApp: (0, container_1.createToken)('metrics.http-app'),
26
+ httpApp: (0, di_1.createToken)('metrics.http-app'),
24
27
  },
25
28
  // http
26
29
  Http: {
27
30
  Client: {
28
- factory: (0, container_1.createToken)('http.client.factory'),
31
+ factory: (0, di_1.createToken)('http.client.factory'),
32
+ LogMiddleware: {
33
+ handler: (0, di_1.createToken)('http.client.log-middleware.handler'),
34
+ },
29
35
  },
30
36
  Server: {
31
- factory: (0, container_1.createToken)('http.server.factory'),
37
+ factory: (0, di_1.createToken)('http.server.factory'),
32
38
  Defaults: {
33
- middleware: (0, container_1.createToken)('http.server.defaults.middleware'),
39
+ middleware: (0, di_1.createToken)('http.server.defaults.middleware'),
34
40
  },
35
41
  },
42
+ Api: {
43
+ knownHosts: (0, di_1.createToken)('http.api.known-hosts'),
44
+ },
36
45
  },
37
46
  // scope: page response
38
47
  Response: {
39
- template: (0, container_1.createToken)('response/template'),
40
- context: (0, container_1.createToken)('response/context'),
41
- assets: (0, container_1.createToken)('response/assets'),
42
- prepare: (0, container_1.createToken)('response/prepare'),
43
- render: (0, container_1.createToken)('response/render'),
44
- main: (0, container_1.createToken)('response/main'),
45
- sagaRunner: (0, container_1.createToken)('response/saga-runner'),
48
+ builder: (0, di_1.createToken)('response/builder'),
49
+ params: (0, di_1.createToken)('response/params'),
50
+ template: (0, di_1.createToken)('response/template'),
51
+ context: (0, di_1.createToken)('response/context'),
52
+ assets: (0, di_1.createToken)('response/assets'),
53
+ prepare: (0, di_1.createToken)('response/prepare'),
54
+ render: (0, di_1.createToken)('response/render'),
55
+ main: (0, di_1.createToken)('response/main'),
56
+ },
57
+ // SSR
58
+ SsrBridge: {
59
+ clientSide: (0, di_1.createToken)('ssr-bridge/client-side'),
60
+ serverSide: (0, di_1.createToken)('ssr-bridge/server-side'),
46
61
  },
47
62
  };
48
63
  //# sourceMappingURL=tokens.js.map
package/tokens.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAgB7B,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,MAAM,EAAE;QACN,MAAM,EAAE,IAAA,uBAAW,EAAe,eAAe,CAAC;QAClD,IAAI,EAAE,IAAA,uBAAW,EAAa,aAAa,CAAC;KAC7C;IAED,QAAQ;IACR,KAAK,EAAE,IAAA,uBAAW,EAAQ,OAAO,CAAC;IAElC,UAAU;IACV,MAAM,EAAE,IAAA,uBAAW,EAAS,QAAQ,CAAC;IAErC,UAAU;IACV,OAAO,EAAE;QACP,MAAM,EAAE,IAAA,uBAAW,EAAS,gBAAgB,CAAC;QAC7C,YAAY,EAAE,IAAA,uBAAW,EAAe,uBAAuB,CAAC;QAChE,cAAc,EAAE,IAAA,uBAAW,EAAsB,yBAAyB,CAAC;KAC5E;IAED,UAAU;IACV,OAAO,EAAE;QACP,OAAO,EAAE,IAAA,uBAAW,EAAc,kBAAkB,CAAC;KACtD;IAED,OAAO;IACP,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,uBAAW,EAAoB,qBAAqB,CAAC;SAC/D;QACD,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,uBAAW,EAAoB,qBAAqB,CAAC;YAC9D,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAA,uBAAW,EAAoB,iCAAiC,CAAC;aAC9E;SACF;KACF;IAED,uBAAuB;IACvB,QAAQ,EAAE;QACR,QAAQ,EAAE,IAAA,uBAAW,EAAe,mBAAmB,CAAC;QACxD,OAAO,EAAE,IAAA,uBAAW,EAAkB,kBAAkB,CAAC;QACzD,MAAM,EAAE,IAAA,uBAAW,EAAa,iBAAiB,CAAC;QAClD,OAAO,EAAE,IAAA,uBAAW,EAA2C,kBAAkB,CAAC;QAClF,MAAM,EAAE,IAAA,uBAAW,EAAqD,iBAAiB,CAAC;QAC1F,IAAI,EAAE,IAAA,uBAAW,EAAa,eAAe,CAAC;QAC9C,UAAU,EAAE,IAAA,uBAAW,EAAa,sBAAsB,CAAC;KAC5D;CACO,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;;AAAA,6BAAmC;AAqBtB,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,MAAM,EAAE;QACN,MAAM,EAAE,IAAA,gBAAW,EAAe,eAAe,CAAC;QAClD,IAAI,EAAE,IAAA,gBAAW,EAAa,aAAa,CAAC;KAC7C;IAED,QAAQ;IACR,KAAK,EAAE,IAAA,gBAAW,EAAQ,OAAO,CAAC;IAElC,MAAM;IACN,MAAM,EAAE,IAAA,gBAAW,EAAS,QAAQ,CAAC;IAErC,cAAc;IACd,cAAc,EAAE,IAAA,gBAAW,EAAyB,iBAAiB,CAAC;IAEtE,UAAU;IACV,OAAO,EAAE;QACP,MAAM,EAAE,IAAA,gBAAW,EAAS,gBAAgB,CAAC;QAC7C,YAAY,EAAE,IAAA,gBAAW,EAAe,uBAAuB,CAAC;QAChE,cAAc,EAAE,IAAA,gBAAW,EAAsB,yBAAyB,CAAC;QAC3E,sBAAsB,EAAE,IAAA,gBAAW,EAAW,kCAAkC,CAAC;KAClF;IAED,UAAU;IACV,OAAO,EAAE;QACP,OAAO,EAAE,IAAA,gBAAW,EAAc,kBAAkB,CAAC;KACtD;IAED,OAAO;IACP,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,gBAAW,EAAoB,qBAAqB,CAAC;YAC9D,aAAa,EAAE;gBACb,OAAO,EAAE,IAAA,gBAAW,EAA2B,oCAAoC,CAAC;aACrF;SACF;QACD,MAAM,EAAE;YACN,OAAO,EAAE,IAAA,gBAAW,EAAoB,qBAAqB,CAAC;YAC9D,QAAQ,EAAE;gBACR,UAAU,EAAE,IAAA,gBAAW,EAAoB,iCAAiC,CAAC;aAC9E;SACF;QACD,GAAG,EAAE;YACH,UAAU,EAAE,IAAA,gBAAW,EAA6B,sBAAsB,CAAC;SAC5E;KACF;IAED,uBAAuB;IACvB,QAAQ,EAAE;QACR,OAAO,EAAE,IAAA,gBAAW,EAAe,kBAAkB,CAAC;QACtD,MAAM,EAAE,IAAA,gBAAW,EAA0B,iBAAiB,CAAC;QAC/D,QAAQ,EAAE,IAAA,gBAAW,EAAe,mBAAmB,CAAC;QACxD,OAAO,EAAE,IAAA,gBAAW,EAAkB,kBAAkB,CAAC;QACzD,MAAM,EAAE,IAAA,gBAAW,EAAa,iBAAiB,CAAC;QAClD,OAAO,EAAE,IAAA,gBAAW,EAA2C,kBAAkB,CAAC;QAClF,MAAM,EAAE,IAAA,gBAAW,EAAqD,iBAAiB,CAAC;QAC1F,IAAI,EAAE,IAAA,gBAAW,EAAa,eAAe,CAAC;KAC/C;IAED,MAAM;IACN,SAAS,EAAE;QACT,UAAU,EAAE,IAAA,gBAAW,EAA4B,wBAAwB,CAAC;QAC5E,UAAU,EAAE,IAAA,gBAAW,EAAmB,wBAAwB,CAAC;KACpE;CACO,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { BaseConfig } from '../config/types';
2
+ import { Resource } from '@opentelemetry/resources';
3
+ /**
4
+ * Возвращает ресурс для BasicTracerProvider, заполненный данными по соглашению.
5
+ * Может быть дополнен с помощью метода merge.
6
+ * @param config Конфиг.
7
+ * @return Ресурс для провайдера.
8
+ * @todo Перенести в пресеты?
9
+ */
10
+ export declare function getConventionalResource(config: BaseConfig): Resource;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConventionalResource = void 0;
4
+ const resources_1 = require("@opentelemetry/resources");
5
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
6
+ /**
7
+ * Возвращает ресурс для BasicTracerProvider, заполненный данными по соглашению.
8
+ * Может быть дополнен с помощью метода merge.
9
+ * @param config Конфиг.
10
+ * @return Ресурс для провайдера.
11
+ * @todo Перенести в пресеты?
12
+ */
13
+ function getConventionalResource(config) {
14
+ return new resources_1.Resource({
15
+ [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: config.appName,
16
+ [semantic_conventions_1.SemanticResourceAttributes.SERVICE_VERSION]: config.appVersion,
17
+ [semantic_conventions_1.SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: config.env,
18
+ });
19
+ }
20
+ exports.getConventionalResource = getConventionalResource;
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tracing/index.ts"],"names":[],"mappings":";;;AACA,wDAAoD;AACpD,8EAAiF;AAEjF;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,MAAkB;IACxD,OAAO,IAAI,oBAAQ,CAAC;QAClB,CAAC,iDAA0B,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO;QACzD,CAAC,iDAA0B,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,UAAU;QAC/D,CAAC,iDAA0B,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,GAAG;KAChE,CAAC,CAAC;AACL,CAAC;AAND,0DAMC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Отправка аналитики в око.
2
+ * Отправка аналитики в dataLayer.
3
3
  * @param eventData Данные события для отправки.
4
4
  */
5
- export declare const dataLayerPush: (eventData: Record<string, any>) => void;
5
+ export declare function dataLayerPush(eventData: Record<string, any>): void;
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dataLayerPush = void 0;
4
- const lodash_1 = require("lodash");
5
4
  /**
6
- * Отправка аналитики в око.
5
+ * Отправка аналитики в dataLayer.
7
6
  * @param eventData Данные события для отправки.
8
7
  */
9
- const dataLayerPush = (eventData) => {
8
+ function dataLayerPush(eventData) {
10
9
  const win = window;
11
10
  // копируем объект так как window.dataLayer.push может менять аргумент в процессе работы
12
- (0, lodash_1.isFunction)(win.dataLayer?.push) && win.dataLayer.push({ ...eventData });
13
- };
11
+ typeof win.dataLayer?.push === 'function' && win.dataLayer.push({ ...eventData });
12
+ }
14
13
  exports.dataLayerPush = dataLayerPush;
15
14
  //# sourceMappingURL=data-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-layer.js","sourceRoot":"","sources":["../../../../src/utils/browser/analytics/data-layer.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC;;;GAGG;AACI,MAAM,aAAa,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC9D,MAAM,GAAG,GAAQ,MAAM,CAAC;IAExB,wFAAwF;IACxF,IAAA,mBAAU,EAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC;AALW,QAAA,aAAa,iBAKxB"}
1
+ {"version":3,"file":"data-layer.js","sourceRoot":"","sources":["../../../../src/utils/browser/analytics/data-layer.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,aAAa,CAAC,SAA8B;IAC1D,MAAM,GAAG,GAAQ,MAAM,CAAC;IAExB,wFAAwF;IACxF,OAAO,GAAG,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;AACpF,CAAC;AALD,sCAKC"}
@@ -1,11 +1,12 @@
1
- export declare type OkoEvent = Record<string, any>;
1
+ export type OkoEvent = Record<string, any>;
2
2
  /**
3
- * Отправка аналитики в око.
3
+ * Получив объект события, запустит его отправку в ОКО (если на странице есть ОКО).
4
4
  * @param eventData Данные события для отправки.
5
5
  */
6
6
  export declare const okoPush: (eventData: OkoEvent) => void;
7
7
  /**
8
8
  * Хук, возвращающий функцию, которая отправит аналитику в ОКО.
9
+ * Не позволяет менять данные для отправки.
9
10
  * @param data Данные события для отправки в ОКО.
10
11
  * @return Функция.
11
12
  */
@@ -4,7 +4,7 @@ exports.useOkoPush = exports.okoPush = void 0;
4
4
  const react_1 = require("react");
5
5
  const lodash_1 = require("lodash");
6
6
  /**
7
- * Отправка аналитики в око.
7
+ * Получив объект события, запустит его отправку в ОКО (если на странице есть ОКО).
8
8
  * @param eventData Данные события для отправки.
9
9
  */
10
10
  const okoPush = (eventData) => {
@@ -15,6 +15,7 @@ const okoPush = (eventData) => {
15
15
  exports.okoPush = okoPush;
16
16
  /**
17
17
  * Хук, возвращающий функцию, которая отправит аналитику в ОКО.
18
+ * Не позволяет менять данные для отправки.
18
19
  * @param data Данные события для отправки в ОКО.
19
20
  * @return Функция.
20
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"oko.js","sourceRoot":"","sources":["../../../../src/utils/browser/analytics/oko.ts"],"names":[],"mappings":";;;AAAA,iCAA+B;AAC/B,mCAA6C;AAI7C;;;GAGG;AACI,MAAM,OAAO,GAAG,CAAC,SAAmB,EAAE,EAAE;IAC7C,MAAM,GAAG,GAAQ,MAAM,CAAC;IAExB,qFAAqF;IACrF,IAAA,mBAAU,EAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AALW,QAAA,OAAO,WAKlB;AAEF;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAA,cAAM,GAAY,CAAC;IACnC,MAAM,KAAK,GAAG,IAAA,cAAM,GAAc,CAAC;IAEnC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,OAAO,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;KAC/B;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QAClB,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAA,eAAO,EAAC,OAAO,CAAC,OAAmB,CAAC,CAAC;KAC5D;IAED,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;QACnC,MAAM,KAAK,CACT;YACE,gDAAgD;YAChD,wFAAwF;SACzF,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC;AAtBW,QAAA,UAAU,cAsBrB"}
1
+ {"version":3,"file":"oko.js","sourceRoot":"","sources":["../../../../src/utils/browser/analytics/oko.ts"],"names":[],"mappings":";;;AAAA,iCAA+B;AAC/B,mCAA6C;AAI7C;;;GAGG;AACI,MAAM,OAAO,GAAG,CAAC,SAAmB,EAAE,EAAE;IAC7C,MAAM,GAAG,GAAQ,MAAM,CAAC;IAExB,qFAAqF;IACrF,IAAA,mBAAU,EAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AALW,QAAA,OAAO,WAKlB;AAEF;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAA,cAAM,GAAY,CAAC;IACnC,MAAM,KAAK,GAAG,IAAA,cAAM,GAAc,CAAC;IAEnC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,OAAO,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;KAC/B;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QAClB,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAA,eAAO,EAAC,OAAO,CAAC,OAAmB,CAAC,CAAC;KAC5D;IAED,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;QACnC,MAAM,KAAK,CACT;YACE,gDAAgD;YAChD,wFAAwF;SACzF,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC;AAtBW,QAAA,UAAU,cAsBrB"}
@@ -1,4 +1,12 @@
1
+ /**
2
+ * Интерфейс объекта-обертки для безопасной работы с WebStorage.
3
+ */
1
4
  export interface StorageUtils extends Pick<Storage, 'clear' | 'getItem' | 'key' | 'removeItem' | 'setItem' | 'length'> {
2
5
  isAvailable: () => boolean;
3
6
  }
7
+ /**
8
+ * Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).
9
+ * @param getStorage Функция, которая должна вернуть целевое хранилище.
10
+ * @return Объект-обертка для безопасной работы с браузерным хранилищем.
11
+ */
4
12
  export declare function createStorageUtils(getStorage: () => Storage): StorageUtils;
@@ -2,10 +2,15 @@
2
2
  /* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.createStorageUtils = void 0;
5
+ /**
6
+ * Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).
7
+ * @param getStorage Функция, которая должна вернуть целевое хранилище.
8
+ * @return Объект-обертка для безопасной работы с браузерным хранилищем.
9
+ */
5
10
  function createStorageUtils(getStorage) {
6
11
  function isAvailable() {
7
12
  try {
8
- const testKey = `local_storage_test_key::${Date.now()}`;
13
+ const testKey = `storage_test_key::${Date.now()}`;
9
14
  getStorage().setItem(testKey, testKey);
10
15
  getStorage().removeItem(testKey);
11
16
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/browser/storage/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAOvD,SAAgB,kBAAkB,CAAC,UAAyB;IAC1D,SAAS,WAAW;QAClB,IAAI;YACF,MAAM,OAAO,GAAG,2BAA2B,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAExD,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,UAAU,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEjC,OAAO,IAAI,CAAC;SACb;QAAC,MAAM;YACN,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,SAAS,KAAK;QACZ,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;SACtB;IACH,CAAC;IAED,SAAS,OAAO,CAAC,IAAY;QAC3B,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,GAAG,CAAC,KAAa;QACxB,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,UAAU,CAAC,IAAY;QAC9B,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC;IAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa;QAC1C,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnC;IACH,CAAC;IAED,SAAS,MAAM;QACb,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC;SAC5B;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO;QACL,WAAW;QAEX,KAAK;QACL,OAAO;QACP,GAAG;QACH,UAAU;QACV,OAAO;QACP,IAAI,MAAM;YACR,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAnED,gDAmEC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/browser/storage/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAUvD;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,UAAyB;IAC1D,SAAS,WAAW;QAClB,IAAI;YACF,MAAM,OAAO,GAAG,qBAAqB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAElD,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,UAAU,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEjC,OAAO,IAAI,CAAC;SACb;QAAC,MAAM;YACN,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,SAAS,KAAK;QACZ,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;SACtB;IACH,CAAC;IAED,SAAS,OAAO,CAAC,IAAY;QAC3B,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,GAAG,CAAC,KAAa;QACxB,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,UAAU,CAAC,IAAY;QAC9B,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC;IAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa;QAC1C,IAAI,WAAW,EAAE,EAAE;YACjB,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnC;IACH,CAAC;IAED,SAAS,MAAM;QACb,IAAI,WAAW,EAAE,EAAE;YACjB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC;SAC5B;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO;QACL,WAAW;QAEX,KAAK;QACL,OAAO;QACP,GAAG;QACH,UAAU;QACV,OAAO;QACP,IAAI,MAAM;YACR,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAnED,gDAmEC"}
@@ -0,0 +1,28 @@
1
+ interface SafetyDoneInfo<T> {
2
+ ok: true;
3
+ result: T;
4
+ }
5
+ interface SafetyFailInfo {
6
+ ok: false;
7
+ error: unknown;
8
+ }
9
+ export type SafetyInfo<T> = SafetyDoneInfo<T> | SafetyFailInfo;
10
+ interface SafetyFormatter<T, F> {
11
+ (info: SafetyInfo<T>): F;
12
+ }
13
+ /**
14
+ * Возвращает функцию, результатом которой является promise, который никогда не переходит в состояние rejected.
15
+ * При перехвате исключения результат будет содержать ошибку.
16
+ * @param fn Оборачиваемая функция.
17
+ * @return Функция.
18
+ */
19
+ export declare function safetyAsync<T, P extends any[]>(fn: (...args: P) => Promise<T>): (...args: P) => Promise<SafetyInfo<T>>;
20
+ /**
21
+ * Возвращает функцию, результатом которой является promise, который никогда не переходит в состояние rejected.
22
+ * При перехвате исключения результат будет содержать ошибку.
23
+ * @param fn Оборачиваемая функция.
24
+ * @param format Получив базовую информацию об ответе должна вернуть отформатированную информацию.
25
+ * @return Функция.
26
+ */
27
+ export declare function safetyAsync<T, P extends any[], F>(fn: (...args: P) => Promise<T>, format: SafetyFormatter<T, F>): (...args: P) => Promise<F>;
28
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.safetyAsync = void 0;
4
+ const lodash_1 = require("lodash");
5
+ /**
6
+ * Возвращает функцию, результатом которой является promise, который никогда не переходит в состояние rejected.
7
+ * При перехвате исключения результат будет содержать ошибку.
8
+ * @param fn Оборачиваемая функция.
9
+ * @param format Получив базовую информацию об ответе должна вернуть отформатированную информацию.
10
+ * @return Функция.
11
+ */
12
+ function safetyAsync(fn, format = lodash_1.identity) {
13
+ return async function safetyWrapper(...args) {
14
+ try {
15
+ return format({ ok: true, result: await fn(...args) });
16
+ }
17
+ catch (error) {
18
+ return format({ ok: false, error });
19
+ }
20
+ };
21
+ }
22
+ exports.safetyAsync = safetyAsync;
23
+ //# sourceMappingURL=function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/utils/function.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAwClC;;;;;;GAMG;AACH,SAAgB,WAAW,CACzB,EAA8B,EAC9B,SAAgC,iBAAQ;IAExC,OAAO,KAAK,UAAU,aAAa,CAAC,GAAG,IAAO;QAC5C,IAAI;YACF,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;SACxD;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACrC;IACH,CAAC,CAAC;AACJ,CAAC;AAXD,kCAWC"}
@@ -1,27 +1,30 @@
1
- import React from 'react';
1
+ import { Component } from 'react';
2
+ /**
3
+ * Опции компонентов ErrorBoundary и SafeSuspense.
4
+ */
2
5
  export interface Props {
3
- /** Дочерний компонент. */
6
+ /** Дочерний элемент. */
4
7
  children: NonNullable<React.ReactNode> | null;
5
- /** Запасной элемент, если возникла ошибка. */
8
+ /** Содержимое, которое будет выведено если возникла ошибка. */
6
9
  fallback: NonNullable<React.ReactNode> | null;
7
- /** Функция для логирования ошибки. */
10
+ /** Функция для логирования ошибок. */
8
11
  onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
9
12
  }
10
13
  /**
11
- * Обработчик ошибок в React-компонентах.
14
+ * Компонент-предохранитель. Обработчик ошибок в React-компонентах.
12
15
  */
13
- export declare class ErrorBoundary extends React.Component<Props, {
16
+ export declare class ErrorBoundary extends Component<Props, {
14
17
  hasError: boolean;
15
18
  }> {
16
19
  /**
17
20
  * @param props Свойства.
18
21
  */
19
22
  constructor(props: Props);
20
- /** @inheritdoc */
23
+ /** @inheritDoc */
21
24
  static getDerivedStateFromError(): {
22
25
  hasError: boolean;
23
26
  };
24
- /** @inheritdoc */
27
+ /** @inheritDoc */
25
28
  componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
26
29
  /**
27
30
  * Рендер.
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.SafeSuspense = exports.ErrorBoundary = void 0;
7
- const react_1 = __importDefault(require("react"));
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
8
6
  /**
9
- * Обработчик ошибок в React-компонентах.
7
+ * Компонент-предохранитель. Обработчик ошибок в React-компонентах.
10
8
  */
11
- class ErrorBoundary extends react_1.default.Component {
9
+ class ErrorBoundary extends react_1.Component {
12
10
  /**
13
11
  * @param props Свойства.
14
12
  */
@@ -16,12 +14,13 @@ class ErrorBoundary extends react_1.default.Component {
16
14
  super(props);
17
15
  this.state = { hasError: false };
18
16
  }
19
- /** @inheritdoc */
17
+ /** @inheritDoc */
20
18
  static getDerivedStateFromError() {
21
19
  return { hasError: true };
22
20
  }
23
- /** @inheritdoc */
21
+ /** @inheritDoc */
24
22
  componentDidCatch(error, errorInfo) {
23
+ // @todo добавить возможность брать onError из специального контекста (это упростит передачу из di-контейнера)
25
24
  const { onError } = this.props;
26
25
  onError?.(error, errorInfo);
27
26
  }
@@ -41,7 +40,6 @@ exports.ErrorBoundary = ErrorBoundary;
41
40
  * @param props Свойства.
42
41
  * @return Элемент.
43
42
  */
44
- const SafeSuspense = ({ children, fallback, onError }) => (react_1.default.createElement(react_1.default.Suspense, { fallback: fallback },
45
- react_1.default.createElement(ErrorBoundary, { fallback: fallback, onError: onError }, children)));
43
+ const SafeSuspense = ({ children, fallback, onError }) => ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: fallback, children: (0, jsx_runtime_1.jsx)(ErrorBoundary, { fallback: fallback, onError: onError, children: children }) }));
46
44
  exports.SafeSuspense = SafeSuspense;
47
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/react/error-handlers/index.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAa1B;;GAEG;AACH,MAAa,aAAc,SAAQ,eAAK,CAAC,SAAuC;IAC9E;;OAEG;IACH,YAAY,KAAY;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAC,wBAAwB;QAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,iBAAiB,CAAC,KAAY,EAAE,SAA0B;QACxD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE/B,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,CAAC;CACF;AA/BD,sCA+BC;AAED;;;;;GAKG;AACI,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAS,EAAE,EAAE,CAAC,CACtE,8BAAC,eAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ;IAChC,8BAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,IAChD,QAAQ,CACK,CACD,CAClB,CAAC;AANW,QAAA,YAAY,gBAMvB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/react/error-handlers/index.tsx"],"names":[],"mappings":";;;;AAAA,iCAA4C;AAgB5C;;GAEG;AACH,MAAa,aAAc,SAAQ,iBAAuC;IACxE;;OAEG;IACH,YAAY,KAAY;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAC,wBAAwB;QAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,iBAAiB,CAAC,KAAY,EAAE,SAA0B;QACxD,8GAA8G;QAC9G,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE/B,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,CAAC;CACF;AAhCD,sCAgCC;AAED;;;;;GAKG;AACI,MAAM,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAS,EAAE,EAAE,CAAC,CACtE,uBAAC,gBAAQ,IAAC,QAAQ,EAAE,QAAQ,YAC1B,uBAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,YAChD,QAAQ,GACK,GACP,CACZ,CAAC;AANW,QAAA,YAAY,gBAMvB"}
@@ -0,0 +1,3 @@
1
+ import { Status, RemoteDataState, STATUS, RemoteData, createRemoteDataReducers } from './remote-data';
2
+ export type { Status, RemoteDataState };
3
+ export { STATUS, RemoteData, createRemoteDataReducers };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRemoteDataReducers = exports.RemoteData = exports.STATUS = void 0;
4
+ const remote_data_1 = require("./remote-data");
5
+ Object.defineProperty(exports, "STATUS", { enumerable: true, get: function () { return remote_data_1.STATUS; } });
6
+ Object.defineProperty(exports, "RemoteData", { enumerable: true, get: function () { return remote_data_1.RemoteData; } });
7
+ Object.defineProperty(exports, "createRemoteDataReducers", { enumerable: true, get: function () { return remote_data_1.createRemoteDataReducers; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/redux/index.ts"],"names":[],"mappings":";;;AAAA,+CAMuB;AAGd,uFANP,oBAAM,OAMO;AAAE,2FALf,wBAAU,OAKe;AAAE,yGAJ3B,sCAAwB,OAI2B"}
@@ -1,13 +1,90 @@
1
- import type { PayloadAction, Draft } from '@reduxjs/toolkit';
2
- export declare type Status = 'initial' | 'fetching' | 'success' | 'failure';
1
+ import { ActionReducerMapBuilder, Draft, PayloadAction, PayloadActionCreator } from '@reduxjs/toolkit';
2
+ interface RemoteDataActions<TData, TError = unknown, TPayload = void> {
3
+ request: PayloadActionCreator<TPayload, string>;
4
+ success: PayloadActionCreator<TData, string>;
5
+ failure: PayloadActionCreator<TError, string>;
6
+ }
7
+ /**
8
+ * Статус загрузки данных.
9
+ */
10
+ export type Status = 'initial' | 'fetching' | 'success' | 'failure';
11
+ /**
12
+ * Базовая структура хранилища удаленных данных.
13
+ */
3
14
  export interface RemoteDataState<TData, TError> {
4
- data: TData;
5
- error: TError;
6
- status: Status;
15
+ /** Загружаемые данные. */
16
+ readonly data: TData;
17
+ /** Данные ошибки запроса. */
18
+ readonly error: TError;
19
+ /** Статус загрузки данных. */
20
+ readonly status: Status;
21
+ /** Количество запросов. */
22
+ readonly fetchCount?: number;
7
23
  }
24
+ /**
25
+ * Возможные статусы загрузки данных.
26
+ */
8
27
  export declare const STATUS: Record<Status, Status>;
28
+ /** Работа с удаленными данными. */
29
+ export declare abstract class RemoteData {
30
+ static get STATUS(): Record<Status, Status>;
31
+ /**
32
+ * Возвращает action'ы для работы с удаленными данными.
33
+ * @param name Префикс имён.
34
+ * @return Набор.
35
+ */
36
+ static createActions<TData = never, TError = never, TPayload = void>(name: string): RemoteDataActions<TData, TError, TPayload>;
37
+ /**
38
+ * Возвращает набор обработчиков для работы с удаленными данными.
39
+ * @return Набор.
40
+ */
41
+ static createHandlers<TData, TError, S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>>(): {
42
+ readonly request: (state: S | Draft<S>) => S | Draft<S>;
43
+ readonly success: (state: S | Draft<S>, action: PayloadAction<TData>) => S | Draft<S>;
44
+ readonly failure: (state: S | Draft<S>, action: PayloadAction<TError>) => S | Draft<S>;
45
+ };
46
+ /**
47
+ * Применяет обработчики для работы с удаленными данными.
48
+ * @param actions Набор action'ов.
49
+ * @param builder Builder.
50
+ */
51
+ static applyHandlers<TData, TError>(actions: RemoteDataActions<TData, TError, any | never>, builder: Pick<ActionReducerMapBuilder<RemoteDataState<TData, TError>>, 'addCase'>): void;
52
+ /**
53
+ * Возвращает новый набор селекторов данных.
54
+ * @param selectRoot Функция получения состояния.
55
+ * @return Набор селекторов.
56
+ */
57
+ static createSelectors<S extends RemoteDataState<unknown, unknown>, R = unknown>(selectRoot: (root: R) => S): {
58
+ readonly isInitial: ((state: R) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
59
+ clearCache: () => void;
60
+ }> & {
61
+ clearCache: () => void;
62
+ };
63
+ readonly isFetching: ((state: R) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
64
+ clearCache: () => void;
65
+ }> & {
66
+ clearCache: () => void;
67
+ };
68
+ readonly isSuccess: ((state: R) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
69
+ clearCache: () => void;
70
+ }> & {
71
+ clearCache: () => void;
72
+ };
73
+ readonly isFailed: ((state: R) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
74
+ clearCache: () => void;
75
+ }> & {
76
+ clearCache: () => void;
77
+ };
78
+ readonly wasFetched: ((state: R) => boolean) & import("reselect").OutputSelectorFields<(args_0: S) => boolean & {
79
+ clearCache: () => void;
80
+ }> & {
81
+ clearCache: () => void;
82
+ };
83
+ };
84
+ }
9
85
  /**
10
86
  * Возвращает набор обработчиков для работы с удаленными данными.
87
+ * @deprecated Теперь нужно использовать RemoteData.createHandlers.
11
88
  * @return Набор.
12
89
  */
13
90
  export declare const createRemoteDataReducers: <S extends RemoteDataState<any, any>>() => {
@@ -21,3 +98,4 @@ export declare const createRemoteDataReducers: <S extends RemoteDataState<any, a
21
98
  type: string;
22
99
  }) => void;
23
100
  };
101
+ export {};