@sima-land/isomorph 11.0.0-alpha.52 → 11.0.0-alpha.54

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 (194) hide show
  1. package/dist/cjs/http/utils.js +62 -0
  2. package/dist/cjs/http/utils.js.map +1 -1
  3. package/dist/cjs/package.json +9 -11
  4. package/dist/cjs/preset/isomorphic/types.js.map +1 -1
  5. package/dist/cjs/preset/isomorphic/utils/axios-logging.js +63 -45
  6. package/dist/cjs/preset/isomorphic/utils/axios-logging.js.map +1 -1
  7. package/dist/cjs/preset/isomorphic/utils/fetch-logging.js +29 -0
  8. package/dist/cjs/preset/isomorphic/utils/fetch-logging.js.map +1 -1
  9. package/dist/cjs/preset/node/index.js +8 -8
  10. package/dist/cjs/preset/node/index.js.map +1 -1
  11. package/dist/cjs/preset/node/providers/express-tracing-middleware.js +15 -4
  12. package/dist/cjs/preset/node/providers/express-tracing-middleware.js.map +1 -1
  13. package/dist/cjs/preset/node/providers/{tracer-provider.js → telemetry-tracer-provider.js} +7 -10
  14. package/dist/cjs/preset/node/providers/telemetry-tracer-provider.js.map +1 -0
  15. package/dist/cjs/preset/{bun/utils/get-stats-handler.js → node/providers/telemetry-tracer-resource.js} +19 -20
  16. package/dist/cjs/preset/node/providers/telemetry-tracer-resource.js.map +1 -0
  17. package/dist/cjs/preset/node/providers/{span-exporter.js → telemetry-tracer-span-exporter.js} +6 -5
  18. package/dist/cjs/preset/node/providers/telemetry-tracer-span-exporter.js.map +1 -0
  19. package/dist/cjs/preset/node/providers/{tracer.js → telemetry-tracer.js} +2 -2
  20. package/dist/cjs/preset/node/providers/telemetry-tracer.js.map +1 -0
  21. package/dist/cjs/preset/node/utils/axios-tracing-middleware.js +9 -24
  22. package/dist/cjs/preset/node/utils/axios-tracing-middleware.js.map +1 -1
  23. package/dist/cjs/preset/node/utils/get-fetch-tracing.js +6 -11
  24. package/dist/cjs/preset/node/utils/get-fetch-tracing.js.map +1 -1
  25. package/dist/cjs/preset/node/utils/telemetry.js +23 -0
  26. package/dist/cjs/preset/node/utils/telemetry.js.map +1 -0
  27. package/dist/cjs/preset/server/providers/known-http-api-hosts.js +3 -1
  28. package/dist/cjs/preset/server/providers/known-http-api-hosts.js.map +1 -1
  29. package/dist/cjs/preset/web/providers/known-http-api-hosts.js +3 -1
  30. package/dist/cjs/preset/web/providers/known-http-api-hosts.js.map +1 -1
  31. package/dist/cjs/tokens.js +2 -3
  32. package/dist/cjs/tokens.js.map +1 -1
  33. package/dist/esm/http/utils.js +60 -0
  34. package/dist/esm/http/utils.js.map +1 -1
  35. package/dist/esm/package.json +9 -11
  36. package/dist/esm/preset/isomorphic/types.js.map +1 -1
  37. package/dist/esm/preset/isomorphic/utils/axios-logging.js +63 -45
  38. package/dist/esm/preset/isomorphic/utils/axios-logging.js.map +1 -1
  39. package/dist/esm/preset/isomorphic/utils/fetch-logging.js +29 -0
  40. package/dist/esm/preset/isomorphic/utils/fetch-logging.js.map +1 -1
  41. package/dist/esm/preset/node/index.js +6 -6
  42. package/dist/esm/preset/node/index.js.map +1 -1
  43. package/dist/esm/preset/node/providers/express-tracing-middleware.js +15 -4
  44. package/dist/esm/preset/node/providers/express-tracing-middleware.js.map +1 -1
  45. package/dist/esm/preset/node/providers/telemetry-tracer-provider.js +19 -0
  46. package/dist/esm/preset/node/providers/telemetry-tracer-provider.js.map +1 -0
  47. package/dist/esm/preset/node/providers/telemetry-tracer-resource.js +21 -0
  48. package/dist/esm/preset/node/providers/telemetry-tracer-resource.js.map +1 -0
  49. package/dist/esm/preset/node/providers/{span-exporter.js → telemetry-tracer-span-exporter.js} +4 -4
  50. package/dist/esm/preset/node/providers/telemetry-tracer-span-exporter.js.map +1 -0
  51. package/dist/esm/preset/node/providers/{tracer.js → telemetry-tracer.js} +2 -2
  52. package/dist/esm/preset/node/providers/telemetry-tracer.js.map +1 -0
  53. package/dist/esm/preset/node/utils/axios-tracing-middleware.js +9 -24
  54. package/dist/esm/preset/node/utils/axios-tracing-middleware.js.map +1 -1
  55. package/dist/esm/preset/node/utils/get-fetch-tracing.js +7 -12
  56. package/dist/esm/preset/node/utils/get-fetch-tracing.js.map +1 -1
  57. package/dist/esm/preset/node/utils/telemetry.js +18 -0
  58. package/dist/esm/preset/node/utils/telemetry.js.map +1 -0
  59. package/dist/esm/preset/server/providers/known-http-api-hosts.js +3 -1
  60. package/dist/esm/preset/server/providers/known-http-api-hosts.js.map +1 -1
  61. package/dist/esm/preset/web/providers/known-http-api-hosts.js +3 -1
  62. package/dist/esm/preset/web/providers/known-http-api-hosts.js.map +1 -1
  63. package/dist/esm/tokens.js +2 -3
  64. package/dist/esm/tokens.js.map +1 -1
  65. package/dist/types/http/utils.d.ts +16 -0
  66. package/dist/types/http/utils.d.ts.map +1 -1
  67. package/dist/types/preset/isomorphic/types.d.ts +1 -1
  68. package/dist/types/preset/isomorphic/types.d.ts.map +1 -1
  69. package/dist/types/preset/isomorphic/utils/axios-logging.d.ts.map +1 -1
  70. package/dist/types/preset/isomorphic/utils/fetch-logging.d.ts.map +1 -1
  71. package/dist/types/preset/node/providers/express-tracing-middleware.d.ts.map +1 -1
  72. package/dist/types/preset/node/providers/telemetry-tracer-provider.d.ts +9 -0
  73. package/dist/types/preset/node/providers/telemetry-tracer-provider.d.ts.map +1 -0
  74. package/dist/types/preset/node/providers/telemetry-tracer-resource.d.ts +9 -0
  75. package/dist/types/preset/node/providers/telemetry-tracer-resource.d.ts.map +1 -0
  76. package/dist/types/preset/node/providers/{span-exporter.d.ts → telemetry-tracer-span-exporter.d.ts} +3 -3
  77. package/dist/types/preset/node/providers/telemetry-tracer-span-exporter.d.ts.map +1 -0
  78. package/dist/types/preset/node/providers/{tracer.d.ts → telemetry-tracer.d.ts} +1 -1
  79. package/dist/types/preset/node/providers/telemetry-tracer.d.ts.map +1 -0
  80. package/dist/types/preset/node/utils/axios-tracing-middleware.d.ts +1 -3
  81. package/dist/types/preset/node/utils/axios-tracing-middleware.d.ts.map +1 -1
  82. package/dist/types/preset/node/utils/emitter-as-target.d.ts +0 -1
  83. package/dist/types/preset/node/utils/emitter-as-target.d.ts.map +1 -1
  84. package/dist/types/preset/node/utils/telemetry.d.ts +8 -0
  85. package/dist/types/preset/node/utils/telemetry.d.ts.map +1 -0
  86. package/dist/types/preset/server/providers/known-http-api-hosts.d.ts.map +1 -1
  87. package/dist/types/preset/server/providers/page-helmet.d.ts +1 -0
  88. package/dist/types/preset/server/providers/page-helmet.d.ts.map +1 -1
  89. package/dist/types/preset/server/types.d.ts +1 -0
  90. package/dist/types/preset/server/types.d.ts.map +1 -1
  91. package/dist/types/preset/web/providers/known-http-api-hosts.d.ts.map +1 -1
  92. package/dist/types/tokens.d.ts +3 -2
  93. package/dist/types/tokens.d.ts.map +1 -1
  94. package/package.json +10 -31
  95. package/dist/cjs/preset/bun/index.js +0 -80
  96. package/dist/cjs/preset/bun/index.js.map +0 -1
  97. package/dist/cjs/preset/bun/providers/config-source.js +0 -13
  98. package/dist/cjs/preset/bun/providers/config-source.js.map +0 -1
  99. package/dist/cjs/preset/bun/providers/log-handler-sentry.js +0 -26
  100. package/dist/cjs/preset/bun/providers/log-handler-sentry.js.map +0 -1
  101. package/dist/cjs/preset/bun/providers/logger.js +0 -18
  102. package/dist/cjs/preset/bun/providers/logger.js.map +0 -1
  103. package/dist/cjs/preset/bun/providers/serve-metrics.js +0 -25
  104. package/dist/cjs/preset/bun/providers/serve-metrics.js.map +0 -1
  105. package/dist/cjs/preset/bun/providers/serve-middleware.js +0 -29
  106. package/dist/cjs/preset/bun/providers/serve-middleware.js.map +0 -1
  107. package/dist/cjs/preset/bun/providers/service-routes.js +0 -16
  108. package/dist/cjs/preset/bun/providers/service-routes.js.map +0 -1
  109. package/dist/cjs/preset/bun/utils/get-stats-handler.js.map +0 -1
  110. package/dist/cjs/preset/bun-handler/index.js +0 -62
  111. package/dist/cjs/preset/bun-handler/index.js.map +0 -1
  112. package/dist/cjs/preset/bun-handler/providers/accept-type.js +0 -24
  113. package/dist/cjs/preset/bun-handler/providers/accept-type.js.map +0 -1
  114. package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js +0 -30
  115. package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js.map +0 -1
  116. package/dist/cjs/preset/bun-handler/providers/handler-main.js +0 -75
  117. package/dist/cjs/preset/bun-handler/providers/handler-main.js.map +0 -1
  118. package/dist/cjs/preset/bun-handler/providers/specific-params.js +0 -19
  119. package/dist/cjs/preset/bun-handler/providers/specific-params.js.map +0 -1
  120. package/dist/cjs/preset/isomorphic/utils/hide-first-id.js +0 -20
  121. package/dist/cjs/preset/isomorphic/utils/hide-first-id.js.map +0 -1
  122. package/dist/cjs/preset/node/providers/span-exporter.js.map +0 -1
  123. package/dist/cjs/preset/node/providers/tracer-provider-resource.js +0 -26
  124. package/dist/cjs/preset/node/providers/tracer-provider-resource.js.map +0 -1
  125. package/dist/cjs/preset/node/providers/tracer-provider.js.map +0 -1
  126. package/dist/cjs/preset/node/providers/tracer.js.map +0 -1
  127. package/dist/esm/preset/bun/index.js +0 -63
  128. package/dist/esm/preset/bun/index.js.map +0 -1
  129. package/dist/esm/preset/bun/providers/config-source.js +0 -6
  130. package/dist/esm/preset/bun/providers/config-source.js.map +0 -1
  131. package/dist/esm/preset/bun/providers/log-handler-sentry.js +0 -20
  132. package/dist/esm/preset/bun/providers/log-handler-sentry.js.map +0 -1
  133. package/dist/esm/preset/bun/providers/logger.js +0 -12
  134. package/dist/esm/preset/bun/providers/logger.js.map +0 -1
  135. package/dist/esm/preset/bun/providers/serve-metrics.js +0 -18
  136. package/dist/esm/preset/bun/providers/serve-metrics.js.map +0 -1
  137. package/dist/esm/preset/bun/providers/serve-middleware.js +0 -23
  138. package/dist/esm/preset/bun/providers/serve-middleware.js.map +0 -1
  139. package/dist/esm/preset/bun/providers/service-routes.js +0 -10
  140. package/dist/esm/preset/bun/providers/service-routes.js.map +0 -1
  141. package/dist/esm/preset/bun/utils/get-stats-handler.js +0 -22
  142. package/dist/esm/preset/bun/utils/get-stats-handler.js.map +0 -1
  143. package/dist/esm/preset/bun-handler/index.js +0 -57
  144. package/dist/esm/preset/bun-handler/index.js.map +0 -1
  145. package/dist/esm/preset/bun-handler/providers/accept-type.js +0 -18
  146. package/dist/esm/preset/bun-handler/providers/accept-type.js.map +0 -1
  147. package/dist/esm/preset/bun-handler/providers/fetch-middleware.js +0 -24
  148. package/dist/esm/preset/bun-handler/providers/fetch-middleware.js.map +0 -1
  149. package/dist/esm/preset/bun-handler/providers/handler-main.js +0 -66
  150. package/dist/esm/preset/bun-handler/providers/handler-main.js.map +0 -1
  151. package/dist/esm/preset/bun-handler/providers/specific-params.js +0 -13
  152. package/dist/esm/preset/bun-handler/providers/specific-params.js.map +0 -1
  153. package/dist/esm/preset/isomorphic/utils/hide-first-id.js +0 -14
  154. package/dist/esm/preset/isomorphic/utils/hide-first-id.js.map +0 -1
  155. package/dist/esm/preset/node/providers/span-exporter.js.map +0 -1
  156. package/dist/esm/preset/node/providers/tracer-provider-resource.js +0 -20
  157. package/dist/esm/preset/node/providers/tracer-provider-resource.js.map +0 -1
  158. package/dist/esm/preset/node/providers/tracer-provider.js +0 -22
  159. package/dist/esm/preset/node/providers/tracer-provider.js.map +0 -1
  160. package/dist/esm/preset/node/providers/tracer.js.map +0 -1
  161. package/dist/types/preset/bun/index.d.ts +0 -10
  162. package/dist/types/preset/bun/index.d.ts.map +0 -1
  163. package/dist/types/preset/bun/providers/config-source.d.ts +0 -3
  164. package/dist/types/preset/bun/providers/config-source.d.ts.map +0 -1
  165. package/dist/types/preset/bun/providers/log-handler-sentry.d.ts +0 -3
  166. package/dist/types/preset/bun/providers/log-handler-sentry.d.ts.map +0 -1
  167. package/dist/types/preset/bun/providers/logger.d.ts +0 -4
  168. package/dist/types/preset/bun/providers/logger.d.ts.map +0 -1
  169. package/dist/types/preset/bun/providers/serve-metrics.d.ts +0 -3
  170. package/dist/types/preset/bun/providers/serve-metrics.d.ts.map +0 -1
  171. package/dist/types/preset/bun/providers/serve-middleware.d.ts +0 -4
  172. package/dist/types/preset/bun/providers/serve-middleware.d.ts.map +0 -1
  173. package/dist/types/preset/bun/providers/service-routes.d.ts +0 -3
  174. package/dist/types/preset/bun/providers/service-routes.d.ts.map +0 -1
  175. package/dist/types/preset/bun/utils/get-stats-handler.d.ts +0 -7
  176. package/dist/types/preset/bun/utils/get-stats-handler.d.ts.map +0 -1
  177. package/dist/types/preset/bun-handler/index.d.ts +0 -9
  178. package/dist/types/preset/bun-handler/index.d.ts.map +0 -1
  179. package/dist/types/preset/bun-handler/providers/accept-type.d.ts +0 -11
  180. package/dist/types/preset/bun-handler/providers/accept-type.d.ts.map +0 -1
  181. package/dist/types/preset/bun-handler/providers/fetch-middleware.d.ts +0 -4
  182. package/dist/types/preset/bun-handler/providers/fetch-middleware.d.ts.map +0 -1
  183. package/dist/types/preset/bun-handler/providers/handler-main.d.ts +0 -3
  184. package/dist/types/preset/bun-handler/providers/handler-main.d.ts.map +0 -1
  185. package/dist/types/preset/bun-handler/providers/specific-params.d.ts +0 -3
  186. package/dist/types/preset/bun-handler/providers/specific-params.d.ts.map +0 -1
  187. package/dist/types/preset/isomorphic/utils/hide-first-id.d.ts +0 -11
  188. package/dist/types/preset/isomorphic/utils/hide-first-id.d.ts.map +0 -1
  189. package/dist/types/preset/node/providers/span-exporter.d.ts.map +0 -1
  190. package/dist/types/preset/node/providers/tracer-provider-resource.d.ts +0 -9
  191. package/dist/types/preset/node/providers/tracer-provider-resource.d.ts.map +0 -1
  192. package/dist/types/preset/node/providers/tracer-provider.d.ts +0 -9
  193. package/dist/types/preset/node/providers/tracer-provider.d.ts.map +0 -1
  194. package/dist/types/preset/node/providers/tracer.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-tracer-provider.js","names":["_sdkTraceNode","require","_tokens","provideTracingProvider","resolve","exporter","KnownToken","Tracing","spanExporter","resource","provider","NodeTracerProvider","spanProcessors","BatchSpanProcessor","register"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-provider.ts"],"sourcesContent":["import type { Resolve } from \"../../../di\";\nimport type { BasicTracerProvider } from \"@opentelemetry/sdk-trace-base\";\nimport {\n BatchSpanProcessor,\n NodeTracerProvider,\n} from \"@opentelemetry/sdk-trace-node\";\nimport { KnownToken } from \"../../../tokens\";\n\n/**\n * Провайдер объекта BasicTracerProvider.\n * @param resolve Функция для получения зависимости по токену.\n * @return BasicTracerProvider.\n */\nexport function provideTracingProvider(resolve: Resolve): BasicTracerProvider {\n const exporter = resolve(KnownToken.Tracing.spanExporter);\n const resource = resolve(KnownToken.Tracing.resource);\n const provider = new NodeTracerProvider({\n resource,\n spanProcessors: [new BatchSpanProcessor(exporter)],\n });\n\n provider.register();\n\n return provider;\n}\n"],"mappings":";;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AAIA,IAAAC,OAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,sBAAsBA,CAACC,OAAgB,EAAuB;EAC5E,MAAMC,QAAQ,GAAGD,OAAO,CAACE,kBAAU,CAACC,OAAO,CAACC,YAAY,CAAC;EACzD,MAAMC,QAAQ,GAAGL,OAAO,CAACE,kBAAU,CAACC,OAAO,CAACE,QAAQ,CAAC;EACrD,MAAMC,QAAQ,GAAG,IAAIC,gCAAkB,CAAC;IACtCF,QAAQ;IACRG,cAAc,EAAE,CAAC,IAAIC,gCAAkB,CAACR,QAAQ,CAAC;EACnD,CAAC,CAAC;EAEFK,QAAQ,CAACI,QAAQ,CAAC,CAAC;EAEnB,OAAOJ,QAAQ;AACjB"}
@@ -3,28 +3,27 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getStatsHandler = getStatsHandler;
6
+ exports.provideTracingResource = provideTracingResource;
7
+ var _resources = require("@opentelemetry/resources");
8
+ var SemanticArgs = _interopRequireWildcard(require("@opentelemetry/semantic-conventions/incubating"));
9
+ var _tokens = require("../../../tokens");
7
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
8
11
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
9
12
  /**
10
- * ВАЖНО: временная экспериментальная утилита, скорее всего будет удалена в будущем.
11
- * @inheritdoc
13
+ * Провайдер объекта Resource.
14
+ * @param resolve Функция для получения зависимости по токену.
15
+ * @return Resource.
12
16
  */
13
- function getStatsHandler() {
14
- /** @inheritdoc */
15
- const getHeapStats = async () => {
16
- // ВАЖНО: должны быть именно кавычки "'" по причине https://github.com/web-infra-dev/rspack/issues/5938#issuecomment-2000393152
17
- const jsc = await Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackIgnore: true */
18
- 'bun:jsc')));
19
- return jsc.heapStats();
20
- };
21
- return async () => {
22
- const stats = await getHeapStats();
23
- return new Response(JSON.stringify(stats, null, 2), {
24
- headers: {
25
- 'content-type': 'application/json'
26
- }
27
- });
28
- };
17
+ function provideTracingResource(resolve) {
18
+ const config = resolve(_tokens.KnownToken.Config.base);
19
+ const resource = new _resources.Resource({
20
+ [SemanticArgs.ATTR_SERVICE_NAME]: config.appName,
21
+ [SemanticArgs.ATTR_SERVICE_VERSION]: config.appVersion,
22
+ [SemanticArgs.ATTR_DEPLOYMENT_ENVIRONMENT_NAME]: config.env
23
+ });
24
+ resource.merge((0, _resources.detectResourcesSync)({
25
+ detectors: [_resources.osDetector, _resources.envDetector, _resources.hostDetector, _resources.processDetector]
26
+ }));
27
+ return resource;
29
28
  }
30
- //# sourceMappingURL=get-stats-handler.js.map
29
+ //# sourceMappingURL=telemetry-tracer-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-tracer-resource.js","names":["_resources","require","SemanticArgs","_interopRequireWildcard","_tokens","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","provideTracingResource","resolve","config","KnownToken","Config","base","resource","Resource","ATTR_SERVICE_NAME","appName","ATTR_SERVICE_VERSION","appVersion","ATTR_DEPLOYMENT_ENVIRONMENT_NAME","env","merge","detectResourcesSync","detectors","osDetector","envDetector","hostDetector","processDetector"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-resource.ts"],"sourcesContent":["import {\n detectResourcesSync,\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n Resource,\n} from \"@opentelemetry/resources\";\nimport * as SemanticArgs from \"@opentelemetry/semantic-conventions/incubating\";\nimport { KnownToken } from \"../../../tokens\";\n\nimport type { Resolve } from \"../../../di\";\n\n/**\n * Провайдер объекта Resource.\n * @param resolve Функция для получения зависимости по токену.\n * @return Resource.\n */\nexport function provideTracingResource(resolve: Resolve): Resource {\n const config = resolve(KnownToken.Config.base);\n\n const resource = new Resource({\n [SemanticArgs.ATTR_SERVICE_NAME]: config.appName,\n [SemanticArgs.ATTR_SERVICE_VERSION]: config.appVersion,\n [SemanticArgs.ATTR_DEPLOYMENT_ENVIRONMENT_NAME]: config.env,\n });\n\n resource.merge(\n detectResourcesSync({\n detectors: [osDetector, envDetector, hostDetector, processDetector],\n }),\n );\n\n return resource;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAQA,IAAAC,YAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAA6C,SAAAI,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAI7C;AACA;AACA;AACA;AACA;AACO,SAASW,sBAAsBA,CAACC,OAAgB,EAAY;EACjE,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EAE9C,MAAMC,QAAQ,GAAG,IAAIC,mBAAQ,CAAC;IAC5B,CAAChC,YAAY,CAACiC,iBAAiB,GAAGN,MAAM,CAACO,OAAO;IAChD,CAAClC,YAAY,CAACmC,oBAAoB,GAAGR,MAAM,CAACS,UAAU;IACtD,CAACpC,YAAY,CAACqC,gCAAgC,GAAGV,MAAM,CAACW;EAC1D,CAAC,CAAC;EAEFP,QAAQ,CAACQ,KAAK,CACZ,IAAAC,8BAAmB,EAAC;IAClBC,SAAS,EAAE,CAACC,qBAAU,EAAEC,sBAAW,EAAEC,uBAAY,EAAEC,0BAAe;EACpE,CAAC,CACH,CAAC;EAED,OAAOd,QAAQ;AACjB"}
@@ -4,8 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.provideSpanExporter = provideSpanExporter;
7
- var _exporterTraceOtlpHttp = require("@opentelemetry/exporter-trace-otlp-http");
7
+ var _exporterTraceOtlpGrpc = require("@opentelemetry/exporter-trace-otlp-grpc");
8
8
  var _tokens = require("../../../tokens");
9
+ const envPrefix = 'OTEL_EXPORTER_OTLP_';
10
+
9
11
  /**
10
12
  * Провайдер объекта SpanExporter.
11
13
  * @param resolve Функция для получения зависимости по токену.
@@ -13,9 +15,8 @@ var _tokens = require("../../../tokens");
13
15
  */
14
16
  function provideSpanExporter(resolve) {
15
17
  const source = resolve(_tokens.KnownToken.Config.source);
16
- return new _exporterTraceOtlpHttp.OTLPTraceExporter({
17
- // @todo сделать компонент ConventionalConfig и в реализации описать все переменные среды там
18
- url: source.require('JAEGER_AGENT_URL')
18
+ return new _exporterTraceOtlpGrpc.OTLPTraceExporter({
19
+ url: source.get(`${envPrefix}URL`, '')
19
20
  });
20
21
  }
21
- //# sourceMappingURL=span-exporter.js.map
22
+ //# sourceMappingURL=telemetry-tracer-span-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-tracer-span-exporter.js","names":["_exporterTraceOtlpGrpc","require","_tokens","envPrefix","provideSpanExporter","resolve","source","KnownToken","Config","OTLPTraceExporter","url","get"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer-span-exporter.ts"],"sourcesContent":["import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { KnownToken } from '../../../tokens';\n\nimport type { Resolve } from '../../../di';\n\nconst envPrefix = 'OTEL_EXPORTER_OTLP_';\n\n/**\n * Провайдер объекта SpanExporter.\n * @param resolve Функция для получения зависимости по токену.\n * @return SpanExporter.\n */\nexport function provideSpanExporter(resolve: Resolve): OTLPTraceExporter {\n const source = resolve(KnownToken.Config.source);\n\n return new OTLPTraceExporter({\n url: source.get(`${envPrefix}URL`, ''),\n });\n}\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAIA,MAAME,SAAS,GAAG,qBAAqB;;AAEvC;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAACC,OAAgB,EAAqB;EACvE,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACF,MAAM,CAAC;EAEhD,OAAO,IAAIG,wCAAiB,CAAC;IAC3BC,GAAG,EAAEJ,MAAM,CAACK,GAAG,CAAE,GAAER,SAAU,KAAI,EAAE,EAAE;EACvC,CAAC,CAAC;AACJ"}
@@ -12,7 +12,7 @@ var _tokens = require("../../../tokens");
12
12
  */
13
13
  function provideTracer(resolve) {
14
14
  const config = resolve(_tokens.KnownToken.Config.base);
15
- const provider = resolve(_tokens.KnownToken.Tracing.tracerProvider);
15
+ const provider = resolve(_tokens.KnownToken.Tracing.provider);
16
16
  return provider.getTracer(config.appName, config.appVersion);
17
17
  }
18
- //# sourceMappingURL=tracer.js.map
18
+ //# sourceMappingURL=telemetry-tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-tracer.js","names":["_tokens","require","provideTracer","resolve","config","KnownToken","Config","base","provider","Tracing","getTracer","appName","appVersion"],"sources":["../../../../../src/preset/node/providers/telemetry-tracer.ts"],"sourcesContent":["import { Tracer } from '@opentelemetry/api';\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\n\n/**\n * Провайдер объекта Tracer.\n * @param resolve Функция для получения зависимости по токену.\n * @return Tracer.\n */\nexport function provideTracer(resolve: Resolve): Tracer {\n const config = resolve(KnownToken.Config.base);\n const provider = resolve(KnownToken.Tracing.provider);\n\n return provider.getTracer(config.appName, config.appVersion);\n}\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAACC,OAAgB,EAAU;EACtD,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,QAAQ,GAAGL,OAAO,CAACE,kBAAU,CAACI,OAAO,CAACD,QAAQ,CAAC;EAErD,OAAOA,QAAQ,CAACE,SAAS,CAACN,MAAM,CAACO,OAAO,EAAEP,MAAM,CAACQ,UAAU,CAAC;AAC9D"}
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.axiosTracingMiddleware = axiosTracingMiddleware;
7
7
  exports.getRequestInfo = getRequestInfo;
8
8
  var _api = require("@opentelemetry/api");
9
- var _semanticConventions = require("@opentelemetry/semantic-conventions");
9
+ var _incubating = require("@opentelemetry/semantic-conventions/incubating");
10
10
  var _displayUrl = require("../../isomorphic/utils/display-url");
11
- var _hideFirstId = require("../../isomorphic/utils/hide-first-id");
11
+ var _telemetry = require("./telemetry");
12
12
  /**
13
13
  * Возвращает новый middleware для трассировки исходящих запросов.
14
14
  * @param tracer Трейсер.
@@ -19,28 +19,18 @@ function axiosTracingMiddleware(tracer, rootContext) {
19
19
  return async function trace(config, next, defaults) {
20
20
  const {
21
21
  method,
22
- url,
23
- foundId
22
+ urlStr
24
23
  } = getRequestInfo(config, defaults);
25
- const span = tracer.startSpan(`HTTP ${method} ${url}`, undefined, rootContext);
24
+ const url = new URL(urlStr);
25
+ const span = tracer.startSpan(`axios ${method} ${url}`, undefined, rootContext);
26
26
  span.setAttributes({
27
- [_semanticConventions.SemanticAttributes.HTTP_URL]: url,
28
- [_semanticConventions.SemanticAttributes.HTTP_METHOD]: method,
29
- 'request.params': JSON.stringify({
30
- ...defaults.params,
31
- ...config.params
32
- }),
33
- 'request.headers': JSON.stringify({
27
+ [_incubating.ATTR_URL_FULL]: url.href,
28
+ [_incubating.ATTR_HTTP_REQUEST_METHOD]: method,
29
+ ...(0, _telemetry.getSemanticHeaders)({
34
30
  // @todo непонятно как доставать заголовки из defaults потому что там на одном уровне заголовки и таблицы заголовков
35
31
  ...defaults.headers.common,
36
32
  ...defaults.headers[method.toLowerCase()],
37
33
  ...config.headers
38
- // @todo возможно стоит убрать cookie/Cookie
39
- }),
40
-
41
- // если нашли id - добавляем в теги
42
- ...(foundId && {
43
- 'request.id': foundId
44
34
  })
45
35
  });
46
36
  try {
@@ -61,7 +51,6 @@ function axiosTracingMiddleware(tracer, rootContext) {
61
51
 
62
52
  /**
63
53
  * Формирует базовые данные запроса.
64
- * Заменяет первое найденное число в url на "{id}", возвращая его в результате.
65
54
  * @param config Axios-конфиг запроса.
66
55
  * @param defaults Базовый конфиг экземпляра Axios.
67
56
  * @return Базовые данные запроса.
@@ -69,13 +58,9 @@ function axiosTracingMiddleware(tracer, rootContext) {
69
58
  function getRequestInfo(config, defaults) {
70
59
  const method = (config.method || 'GET').toUpperCase();
71
60
  const baseURL = config.baseURL || defaults.baseURL || '';
72
-
73
- // ВАЖНО: абстрагируем id только в url игнорируя baseURL
74
- const [url, foundId] = (0, _hideFirstId.hideFirstId)(config.url || defaults.url || '');
75
61
  return {
76
62
  method,
77
- url: (0, _displayUrl.displayUrl)(baseURL, url),
78
- foundId
63
+ urlStr: (0, _displayUrl.displayUrl)(baseURL, config.url || defaults.url || '')
79
64
  };
80
65
  }
81
66
  //# sourceMappingURL=axios-tracing-middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axios-tracing-middleware.js","names":["_api","require","_semanticConventions","_displayUrl","_hideFirstId","axiosTracingMiddleware","tracer","rootContext","trace","config","next","defaults","method","url","foundId","getRequestInfo","span","startSpan","undefined","setAttributes","SemanticAttributes","HTTP_URL","HTTP_METHOD","JSON","stringify","params","headers","common","toLowerCase","error","setStatus","code","SpanStatusCode","ERROR","message","end","toUpperCase","baseURL","hideFirstId","displayUrl"],"sources":["../../../../../src/preset/node/utils/axios-tracing-middleware.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, HeadersDefaults } from 'axios';\nimport type { Middleware } from 'middleware-axios';\nimport { Context, Tracer, SpanStatusCode } from '@opentelemetry/api';\nimport { SemanticAttributes } from '@opentelemetry/semantic-conventions';\nimport { displayUrl } from '../../isomorphic/utils/display-url';\nimport { hideFirstId } from '../../isomorphic/utils/hide-first-id';\n\n/**\n * Возвращает новый middleware для трассировки исходящих запросов.\n * @param tracer Трейсер.\n * @param rootContext Контекст.\n * @return Middleware.\n */\nexport function axiosTracingMiddleware(tracer: Tracer, rootContext: Context): Middleware<any> {\n return async function trace(config, next, defaults) {\n const { method, url, foundId } = getRequestInfo(config, defaults);\n const span = tracer.startSpan(`HTTP ${method} ${url}`, undefined, rootContext);\n\n span.setAttributes({\n [SemanticAttributes.HTTP_URL]: url,\n [SemanticAttributes.HTTP_METHOD]: method,\n 'request.params': JSON.stringify({\n ...defaults.params,\n ...config.params,\n }),\n 'request.headers': JSON.stringify({\n // @todo непонятно как доставать заголовки из defaults потому что там на одном уровне заголовки и таблицы заголовков\n ...defaults.headers.common,\n ...defaults.headers[method.toLowerCase() as keyof HeadersDefaults],\n ...config.headers,\n // @todo возможно стоит убрать cookie/Cookie\n }),\n\n // если нашли id - добавляем в теги\n ...(foundId && { 'request.id': foundId }),\n });\n\n try {\n await next(config);\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: 'HTTP Request failed',\n });\n\n span.end();\n\n // не прячем ошибку\n throw error;\n }\n\n span.end();\n };\n}\n\n/**\n * Формирует базовые данные запроса.\n * Заменяет первое найденное число в url на \"{id}\", возвращая его в результате.\n * @param config Axios-конфиг запроса.\n * @param defaults Базовый конфиг экземпляра Axios.\n * @return Базовые данные запроса.\n */\nexport function getRequestInfo(\n config: AxiosRequestConfig,\n defaults: AxiosInstance['defaults'],\n): {\n method: string;\n url: string;\n foundId?: number;\n} {\n const method = (config.method || 'GET').toUpperCase();\n const baseURL = config.baseURL || defaults.baseURL || '';\n\n // ВАЖНО: абстрагируем id только в url игнорируя baseURL\n const [url, foundId] = hideFirstId(config.url || defaults.url || '');\n\n return {\n method,\n url: displayUrl(baseURL, url),\n foundId,\n };\n}\n"],"mappings":";;;;;;;AAEA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,sBAAsBA,CAACC,MAAc,EAAEC,WAAoB,EAAmB;EAC5F,OAAO,eAAeC,KAAKA,CAACC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAE;IAClD,MAAM;MAAEC,MAAM;MAAEC,GAAG;MAAEC;IAAQ,CAAC,GAAGC,cAAc,CAACN,MAAM,EAAEE,QAAQ,CAAC;IACjE,MAAMK,IAAI,GAAGV,MAAM,CAACW,SAAS,CAAE,QAAOL,MAAO,IAAGC,GAAI,EAAC,EAAEK,SAAS,EAAEX,WAAW,CAAC;IAE9ES,IAAI,CAACG,aAAa,CAAC;MACjB,CAACC,uCAAkB,CAACC,QAAQ,GAAGR,GAAG;MAClC,CAACO,uCAAkB,CAACE,WAAW,GAAGV,MAAM;MACxC,gBAAgB,EAAEW,IAAI,CAACC,SAAS,CAAC;QAC/B,GAAGb,QAAQ,CAACc,MAAM;QAClB,GAAGhB,MAAM,CAACgB;MACZ,CAAC,CAAC;MACF,iBAAiB,EAAEF,IAAI,CAACC,SAAS,CAAC;QAChC;QACA,GAAGb,QAAQ,CAACe,OAAO,CAACC,MAAM;QAC1B,GAAGhB,QAAQ,CAACe,OAAO,CAACd,MAAM,CAACgB,WAAW,CAAC,CAAC,CAA0B;QAClE,GAAGnB,MAAM,CAACiB;QACV;MACF,CAAC,CAAC;;MAEF;MACA,IAAIZ,OAAO,IAAI;QAAE,YAAY,EAAEA;MAAQ,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI;MACF,MAAMJ,IAAI,CAACD,MAAM,CAAC;IACpB,CAAC,CAAC,OAAOoB,KAAK,EAAE;MACdb,IAAI,CAACc,SAAS,CAAC;QACbC,IAAI,EAAEC,mBAAc,CAACC,KAAK;QAC1BC,OAAO,EAAE;MACX,CAAC,CAAC;MAEFlB,IAAI,CAACmB,GAAG,CAAC,CAAC;;MAEV;MACA,MAAMN,KAAK;IACb;IAEAb,IAAI,CAACmB,GAAG,CAAC,CAAC;EACZ,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASpB,cAAcA,CAC5BN,MAA0B,EAC1BE,QAAmC,EAKnC;EACA,MAAMC,MAAM,GAAG,CAACH,MAAM,CAACG,MAAM,IAAI,KAAK,EAAEwB,WAAW,CAAC,CAAC;EACrD,MAAMC,OAAO,GAAG5B,MAAM,CAAC4B,OAAO,IAAI1B,QAAQ,CAAC0B,OAAO,IAAI,EAAE;;EAExD;EACA,MAAM,CAACxB,GAAG,EAAEC,OAAO,CAAC,GAAG,IAAAwB,wBAAW,EAAC7B,MAAM,CAACI,GAAG,IAAIF,QAAQ,CAACE,GAAG,IAAI,EAAE,CAAC;EAEpE,OAAO;IACLD,MAAM;IACNC,GAAG,EAAE,IAAA0B,sBAAU,EAACF,OAAO,EAAExB,GAAG,CAAC;IAC7BC;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"axios-tracing-middleware.js","names":["_api","require","_incubating","_displayUrl","_telemetry","axiosTracingMiddleware","tracer","rootContext","trace","config","next","defaults","method","urlStr","getRequestInfo","url","URL","span","startSpan","undefined","setAttributes","ATTR_URL_FULL","href","ATTR_HTTP_REQUEST_METHOD","getSemanticHeaders","headers","common","toLowerCase","error","setStatus","code","SpanStatusCode","ERROR","message","end","toUpperCase","baseURL","displayUrl"],"sources":["../../../../../src/preset/node/utils/axios-tracing-middleware.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, HeadersDefaults } from 'axios';\nimport type { Middleware } from 'middleware-axios';\nimport { Context, Tracer, SpanStatusCode } from '@opentelemetry/api';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_FULL,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport { displayUrl } from '../../isomorphic/utils/display-url';\nimport { getSemanticHeaders } from './telemetry';\n\n/**\n * Возвращает новый middleware для трассировки исходящих запросов.\n * @param tracer Трейсер.\n * @param rootContext Контекст.\n * @return Middleware.\n */\nexport function axiosTracingMiddleware(tracer: Tracer, rootContext: Context): Middleware<any> {\n return async function trace(config, next, defaults) {\n const { method, urlStr } = getRequestInfo(config, defaults);\n const url = new URL(urlStr);\n const span = tracer.startSpan(`axios ${method} ${url}`, undefined, rootContext);\n\n span.setAttributes({\n [ATTR_URL_FULL]: url.href,\n [ATTR_HTTP_REQUEST_METHOD]: method,\n ...getSemanticHeaders({\n // @todo непонятно как доставать заголовки из defaults потому что там на одном уровне заголовки и таблицы заголовков\n ...defaults.headers.common,\n ...defaults.headers[method.toLowerCase() as keyof HeadersDefaults],\n ...config.headers,\n }),\n });\n\n try {\n await next(config);\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: 'HTTP Request failed',\n });\n\n span.end();\n\n // не прячем ошибку\n throw error;\n }\n\n span.end();\n };\n}\n\n/**\n * Формирует базовые данные запроса.\n * @param config Axios-конфиг запроса.\n * @param defaults Базовый конфиг экземпляра Axios.\n * @return Базовые данные запроса.\n */\nexport function getRequestInfo(\n config: AxiosRequestConfig,\n defaults: AxiosInstance['defaults'],\n): {\n method: string;\n urlStr: string;\n} {\n const method = (config.method || 'GET').toUpperCase();\n const baseURL = config.baseURL || defaults.baseURL || '';\n\n return {\n method,\n urlStr: displayUrl(baseURL, config.url || defaults.url || ''),\n };\n}\n"],"mappings":";;;;;;;AAEA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAIA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,sBAAsBA,CAACC,MAAc,EAAEC,WAAoB,EAAmB;EAC5F,OAAO,eAAeC,KAAKA,CAACC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAE;IAClD,MAAM;MAAEC,MAAM;MAAEC;IAAO,CAAC,GAAGC,cAAc,CAACL,MAAM,EAAEE,QAAQ,CAAC;IAC3D,MAAMI,GAAG,GAAG,IAAIC,GAAG,CAACH,MAAM,CAAC;IAC3B,MAAMI,IAAI,GAAGX,MAAM,CAACY,SAAS,CAAE,SAAQN,MAAO,IAAGG,GAAI,EAAC,EAAEI,SAAS,EAAEZ,WAAW,CAAC;IAE/EU,IAAI,CAACG,aAAa,CAAC;MACjB,CAACC,yBAAa,GAAGN,GAAG,CAACO,IAAI;MACzB,CAACC,oCAAwB,GAAGX,MAAM;MAClC,GAAG,IAAAY,6BAAkB,EAAC;QACpB;QACA,GAAGb,QAAQ,CAACc,OAAO,CAACC,MAAM;QAC1B,GAAGf,QAAQ,CAACc,OAAO,CAACb,MAAM,CAACe,WAAW,CAAC,CAAC,CAA0B;QAClE,GAAGlB,MAAM,CAACgB;MACZ,CAAC;IACH,CAAC,CAAC;IAEF,IAAI;MACF,MAAMf,IAAI,CAACD,MAAM,CAAC;IACpB,CAAC,CAAC,OAAOmB,KAAK,EAAE;MACdX,IAAI,CAACY,SAAS,CAAC;QACbC,IAAI,EAAEC,mBAAc,CAACC,KAAK;QAC1BC,OAAO,EAAE;MACX,CAAC,CAAC;MAEFhB,IAAI,CAACiB,GAAG,CAAC,CAAC;;MAEV;MACA,MAAMN,KAAK;IACb;IAEAX,IAAI,CAACiB,GAAG,CAAC,CAAC;EACZ,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASpB,cAAcA,CAC5BL,MAA0B,EAC1BE,QAAmC,EAInC;EACA,MAAMC,MAAM,GAAG,CAACH,MAAM,CAACG,MAAM,IAAI,KAAK,EAAEuB,WAAW,CAAC,CAAC;EACrD,MAAMC,OAAO,GAAG3B,MAAM,CAAC2B,OAAO,IAAIzB,QAAQ,CAACyB,OAAO,IAAI,EAAE;EAExD,OAAO;IACLxB,MAAM;IACNC,MAAM,EAAE,IAAAwB,sBAAU,EAACD,OAAO,EAAE3B,MAAM,CAACM,GAAG,IAAIJ,QAAQ,CAACI,GAAG,IAAI,EAAE;EAC9D,CAAC;AACH"}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getFetchTracing = getFetchTracing;
7
7
  var _api = require("@opentelemetry/api");
8
8
  var _semanticConventions = require("@opentelemetry/semantic-conventions");
9
- var _hideFirstId = require("../../isomorphic/utils/hide-first-id");
9
+ var _telemetry = require("./telemetry");
10
10
  /**
11
11
  * Вернет новый промежуточный слой трассировки для fetch.
12
12
  * @param tracer Трассировщик.
@@ -15,17 +15,12 @@ var _hideFirstId = require("../../isomorphic/utils/hide-first-id");
15
15
  */
16
16
  function getFetchTracing(tracer, rootContext) {
17
17
  return async (request, next) => {
18
- const [url, foundId] = (0, _hideFirstId.hideFirstId)(new URL(request.url).pathname); // @todo тут бы помог URLPattern
19
- const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext);
18
+ const url = new URL(request.url);
19
+ const span = tracer.startSpan(`fetch ${request.method} ${url.pathname}`, undefined, rootContext);
20
20
  span.setAttributes({
21
- [_semanticConventions.SemanticAttributes.HTTP_URL]: url,
22
- [_semanticConventions.SemanticAttributes.HTTP_METHOD]: request.method,
23
- 'request.params': JSON.stringify(new URL(request.url).searchParams),
24
- 'request.headers': JSON.stringify(request.headers),
25
- // если нашли id - добавляем в теги
26
- ...(foundId && {
27
- 'request.id': foundId
28
- })
21
+ [_semanticConventions.ATTR_URL_FULL]: url.href,
22
+ [_semanticConventions.ATTR_HTTP_REQUEST_METHOD]: request.method,
23
+ ...(0, _telemetry.getSemanticHeaders)(request.headers)
29
24
  });
30
25
  try {
31
26
  const response = await next(request);
@@ -1 +1 @@
1
- {"version":3,"file":"get-fetch-tracing.js","names":["_api","require","_semanticConventions","_hideFirstId","getFetchTracing","tracer","rootContext","request","next","url","foundId","hideFirstId","URL","pathname","span","startSpan","method","undefined","setAttributes","SemanticAttributes","HTTP_URL","HTTP_METHOD","JSON","stringify","searchParams","headers","response","end","error","setStatus","code","SpanStatusCode","ERROR","message"],"sources":["../../../../../src/preset/node/utils/get-fetch-tracing.ts"],"sourcesContent":["import type { Middleware } from '../../../http';\nimport { SpanStatusCode, type Context, type Tracer } from '@opentelemetry/api';\nimport { SemanticAttributes } from '@opentelemetry/semantic-conventions';\nimport { hideFirstId } from '../../isomorphic/utils/hide-first-id';\n\n/**\n * Вернет новый промежуточный слой трассировки для fetch.\n * @param tracer Трассировщик.\n * @param rootContext Контекст.\n * @return Промежуточный слой трассировки.\n */\nexport function getFetchTracing(tracer: Tracer, rootContext: Context): Middleware {\n return async (request, next) => {\n const [url, foundId] = hideFirstId(new URL(request.url).pathname); // @todo тут бы помог URLPattern\n const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext);\n\n span.setAttributes({\n [SemanticAttributes.HTTP_URL]: url,\n [SemanticAttributes.HTTP_METHOD]: request.method,\n 'request.params': JSON.stringify(new URL(request.url).searchParams),\n 'request.headers': JSON.stringify(request.headers),\n\n // если нашли id - добавляем в теги\n ...(foundId && { 'request.id': foundId }),\n });\n\n try {\n const response = await next(request);\n\n span.end();\n\n return response;\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: 'HTTP Request failed',\n });\n\n span.end();\n\n // ВАЖНО: не прячем ошибку\n throw error;\n }\n };\n}\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,eAAeA,CAACC,MAAc,EAAEC,WAAoB,EAAc;EAChF,OAAO,OAAOC,OAAO,EAAEC,IAAI,KAAK;IAC9B,MAAM,CAACC,GAAG,EAAEC,OAAO,CAAC,GAAG,IAAAC,wBAAW,EAAC,IAAIC,GAAG,CAACL,OAAO,CAACE,GAAG,CAAC,CAACI,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAMC,IAAI,GAAGT,MAAM,CAACU,SAAS,CAAE,QAAOR,OAAO,CAACS,MAAO,IAAGP,GAAI,EAAC,EAAEQ,SAAS,EAAEX,WAAW,CAAC;IAEtFQ,IAAI,CAACI,aAAa,CAAC;MACjB,CAACC,uCAAkB,CAACC,QAAQ,GAAGX,GAAG;MAClC,CAACU,uCAAkB,CAACE,WAAW,GAAGd,OAAO,CAACS,MAAM;MAChD,gBAAgB,EAAEM,IAAI,CAACC,SAAS,CAAC,IAAIX,GAAG,CAACL,OAAO,CAACE,GAAG,CAAC,CAACe,YAAY,CAAC;MACnE,iBAAiB,EAAEF,IAAI,CAACC,SAAS,CAAChB,OAAO,CAACkB,OAAO,CAAC;MAElD;MACA,IAAIf,OAAO,IAAI;QAAE,YAAY,EAAEA;MAAQ,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI;MACF,MAAMgB,QAAQ,GAAG,MAAMlB,IAAI,CAACD,OAAO,CAAC;MAEpCO,IAAI,CAACa,GAAG,CAAC,CAAC;MAEV,OAAOD,QAAQ;IACjB,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdd,IAAI,CAACe,SAAS,CAAC;QACbC,IAAI,EAAEC,mBAAc,CAACC,KAAK;QAC1BC,OAAO,EAAE;MACX,CAAC,CAAC;MAEFnB,IAAI,CAACa,GAAG,CAAC,CAAC;;MAEV;MACA,MAAMC,KAAK;IACb;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"get-fetch-tracing.js","names":["_api","require","_semanticConventions","_telemetry","getFetchTracing","tracer","rootContext","request","next","url","URL","span","startSpan","method","pathname","undefined","setAttributes","ATTR_URL_FULL","href","ATTR_HTTP_REQUEST_METHOD","getSemanticHeaders","headers","response","end","error","setStatus","code","SpanStatusCode","ERROR","message"],"sources":["../../../../../src/preset/node/utils/get-fetch-tracing.ts"],"sourcesContent":["import type { Middleware } from '../../../http';\nimport { SpanStatusCode, type Context, type Tracer } from '@opentelemetry/api';\nimport { ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from '@opentelemetry/semantic-conventions';\nimport { getSemanticHeaders } from './telemetry';\n\n/**\n * Вернет новый промежуточный слой трассировки для fetch.\n * @param tracer Трассировщик.\n * @param rootContext Контекст.\n * @return Промежуточный слой трассировки.\n */\nexport function getFetchTracing(tracer: Tracer, rootContext: Context): Middleware {\n return async (request, next) => {\n const url = new URL(request.url);\n const span = tracer.startSpan(\n `fetch ${request.method} ${url.pathname}`,\n undefined,\n rootContext,\n );\n\n span.setAttributes({\n [ATTR_URL_FULL]: url.href,\n [ATTR_HTTP_REQUEST_METHOD]: request.method,\n ...getSemanticHeaders(request.headers),\n });\n\n try {\n const response = await next(request);\n\n span.end();\n\n return response;\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: 'HTTP Request failed',\n });\n\n span.end();\n\n // ВАЖНО: не прячем ошибку\n throw error;\n }\n };\n}\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,eAAeA,CAACC,MAAc,EAAEC,WAAoB,EAAc;EAChF,OAAO,OAAOC,OAAO,EAAEC,IAAI,KAAK;IAC9B,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACH,OAAO,CAACE,GAAG,CAAC;IAChC,MAAME,IAAI,GAAGN,MAAM,CAACO,SAAS,CAC1B,SAAQL,OAAO,CAACM,MAAO,IAAGJ,GAAG,CAACK,QAAS,EAAC,EACzCC,SAAS,EACTT,WACF,CAAC;IAEDK,IAAI,CAACK,aAAa,CAAC;MACjB,CAACC,kCAAa,GAAGR,GAAG,CAACS,IAAI;MACzB,CAACC,6CAAwB,GAAGZ,OAAO,CAACM,MAAM;MAC1C,GAAG,IAAAO,6BAAkB,EAACb,OAAO,CAACc,OAAO;IACvC,CAAC,CAAC;IAEF,IAAI;MACF,MAAMC,QAAQ,GAAG,MAAMd,IAAI,CAACD,OAAO,CAAC;MAEpCI,IAAI,CAACY,GAAG,CAAC,CAAC;MAEV,OAAOD,QAAQ;IACjB,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdb,IAAI,CAACc,SAAS,CAAC;QACbC,IAAI,EAAEC,mBAAc,CAACC,KAAK;QAC1BC,OAAO,EAAE;MACX,CAAC,CAAC;MAEFlB,IAAI,CAACY,GAAG,CAAC,CAAC;;MAEV;MACA,MAAMC,KAAK;IACb;EACF,CAAC;AACH"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSemanticHeaders = getSemanticHeaders;
7
+ var _semanticConventions = require("@opentelemetry/semantic-conventions");
8
+ /**
9
+ * Формирует данные заголовков согласно семантике.
10
+ * @todo Возможно стоит убрать cookie/Cookie.
11
+ * @param headers Объект заголовков запроса.
12
+ * @return Данные заголовков.
13
+ */
14
+ function getSemanticHeaders(headers) {
15
+ const result = Object.entries(headers).reduce((acc, [key, value]) => {
16
+ if (value || typeof value === 'number') {
17
+ acc[(0, _semanticConventions.ATTR_HTTP_REQUEST_HEADER)(key)] = value;
18
+ }
19
+ return acc;
20
+ }, {});
21
+ return Object.keys(result).length ? result : null;
22
+ }
23
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","names":["_semanticConventions","require","getSemanticHeaders","headers","result","Object","entries","reduce","acc","key","value","ATTR_HTTP_REQUEST_HEADER","keys","length"],"sources":["../../../../../src/preset/node/utils/telemetry.ts"],"sourcesContent":["import { ATTR_HTTP_REQUEST_HEADER } from '@opentelemetry/semantic-conventions';\n\n/**\n * Формирует данные заголовков согласно семантике.\n * @todo Возможно стоит убрать cookie/Cookie.\n * @param headers Объект заголовков запроса.\n * @return Данные заголовков.\n */\nexport function getSemanticHeaders(headers: Record<string, any>): Record<string, string> | null {\n const result = Object.entries(headers).reduce<Record<string, string>>((acc, [key, value]) => {\n if (value || typeof value === 'number') {\n acc[ATTR_HTTP_REQUEST_HEADER(key)] = value;\n }\n return acc;\n }, {});\n\n return Object.keys(result).length ? result : null;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,OAA4B,EAAiC;EAC9F,MAAMC,MAAM,GAAGC,MAAM,CAACC,OAAO,CAACH,OAAO,CAAC,CAACI,MAAM,CAAyB,CAACC,GAAG,EAAE,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;IAC3F,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtCF,GAAG,CAAC,IAAAG,6CAAwB,EAACF,GAAG,CAAC,CAAC,GAAGC,KAAK;IAC5C;IACA,OAAOF,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAEN,OAAOH,MAAM,CAACO,IAAI,CAACR,MAAM,CAAC,CAACS,MAAM,GAAGT,MAAM,GAAG,IAAI;AACnD"}
@@ -18,7 +18,9 @@ function provideKnownHttpApiHosts(resolve) {
18
18
  simaV3: 'API_URL_SIMALAND_V3',
19
19
  simaV4: 'API_URL_SIMALAND_V4',
20
20
  simaV6: 'API_URL_SIMALAND_V6',
21
- chponkiV2: 'API_URL_CHPONKI_V2'
21
+ chponkiV2: 'API_URL_CHPONKI_V2',
22
+ shuttle: 'API_URL_SHUTTLE',
23
+ fileDispatcher: 'API_URL_FILE_DISPATCHER'
22
24
  }, source);
23
25
  }
24
26
  //# sourceMappingURL=known-http-api-hosts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"known-http-api-hosts.js","names":["_tokens","require","_httpApiHostPool","provideKnownHttpApiHosts","resolve","source","KnownToken","Config","HttpApiHostPool","ilium","simaV3","simaV4","simaV6","chponkiV2"],"sources":["../../../../../src/preset/server/providers/known-http-api-hosts.ts"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport type { KnownHttpApiKey } from '../../isomorphic';\nimport { KnownToken } from '../../../tokens';\nimport { HttpApiHostPool } from '../../isomorphic/utils/http-api-host-pool';\n\n/**\n * Провайдер известных http-хостов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Пул известных http-хостов.\n */\nexport function provideKnownHttpApiHosts(resolve: Resolve): HttpApiHostPool<KnownHttpApiKey> {\n const source = resolve(KnownToken.Config.source);\n\n return new HttpApiHostPool(\n {\n ilium: 'API_URL_ILIUM',\n simaV3: 'API_URL_SIMALAND_V3',\n simaV4: 'API_URL_SIMALAND_V4',\n simaV6: 'API_URL_SIMALAND_V6',\n chponkiV2: 'API_URL_CHPONKI_V2',\n },\n source,\n );\n}\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAACC,OAAgB,EAAoC;EAC3F,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACF,MAAM,CAAC;EAEhD,OAAO,IAAIG,gCAAe,CACxB;IACEC,KAAK,EAAE,eAAe;IACtBC,MAAM,EAAE,qBAAqB;IAC7BC,MAAM,EAAE,qBAAqB;IAC7BC,MAAM,EAAE,qBAAqB;IAC7BC,SAAS,EAAE;EACb,CAAC,EACDR,MACF,CAAC;AACH"}
1
+ {"version":3,"file":"known-http-api-hosts.js","names":["_tokens","require","_httpApiHostPool","provideKnownHttpApiHosts","resolve","source","KnownToken","Config","HttpApiHostPool","ilium","simaV3","simaV4","simaV6","chponkiV2","shuttle","fileDispatcher"],"sources":["../../../../../src/preset/server/providers/known-http-api-hosts.ts"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport type { KnownHttpApiKey } from '../../isomorphic';\nimport { KnownToken } from '../../../tokens';\nimport { HttpApiHostPool } from '../../isomorphic/utils/http-api-host-pool';\n\n/**\n * Провайдер известных http-хостов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Пул известных http-хостов.\n */\nexport function provideKnownHttpApiHosts(resolve: Resolve): HttpApiHostPool<KnownHttpApiKey> {\n const source = resolve(KnownToken.Config.source);\n\n return new HttpApiHostPool(\n {\n ilium: 'API_URL_ILIUM',\n simaV3: 'API_URL_SIMALAND_V3',\n simaV4: 'API_URL_SIMALAND_V4',\n simaV6: 'API_URL_SIMALAND_V6',\n chponkiV2: 'API_URL_CHPONKI_V2',\n shuttle: 'API_URL_SHUTTLE',\n fileDispatcher: 'API_URL_FILE_DISPATCHER',\n },\n source,\n );\n}\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAACC,OAAgB,EAAoC;EAC3F,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACF,MAAM,CAAC;EAEhD,OAAO,IAAIG,gCAAe,CACxB;IACEC,KAAK,EAAE,eAAe;IACtBC,MAAM,EAAE,qBAAqB;IAC7BC,MAAM,EAAE,qBAAqB;IAC7BC,MAAM,EAAE,qBAAqB;IAC7BC,SAAS,EAAE,oBAAoB;IAC/BC,OAAO,EAAE,iBAAiB;IAC1BC,cAAc,EAAE;EAClB,CAAC,EACDV,MACF,CAAC;AACH"}
@@ -18,7 +18,9 @@ function provideKnownHttpApiHosts(resolve) {
18
18
  simaV3: 'PUBLIC_API_URL_SIMALAND_V3',
19
19
  simaV4: 'PUBLIC_API_URL_SIMALAND_V4',
20
20
  simaV6: 'PUBLIC_API_URL_SIMALAND_V6',
21
- chponkiV2: 'PUBLIC_API_URL_CHPONKI_V2'
21
+ chponkiV2: 'PUBLIC_API_URL_CHPONKI_V2',
22
+ shuttle: 'PUBLIC_API_URL_SHUTTLE',
23
+ fileDispatcher: 'PUBLIC_API_URL_FILE_DISPATCHER'
22
24
  }, source);
23
25
  }
24
26
  //# sourceMappingURL=known-http-api-hosts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"known-http-api-hosts.js","names":["_tokens","require","_httpApiHostPool","provideKnownHttpApiHosts","resolve","source","KnownToken","Config","HttpApiHostPool","ilium","simaV3","simaV4","simaV6","chponkiV2"],"sources":["../../../../../src/preset/web/providers/known-http-api-hosts.ts"],"sourcesContent":["import { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { KnownHttpApiKey } from '../../isomorphic/types';\nimport { HttpApiHostPool } from '../../isomorphic/utils/http-api-host-pool';\n\n/**\n * Провайдер известных http-хостов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Пул известных http-хостов.\n */\nexport function provideKnownHttpApiHosts(resolve: Resolve): HttpApiHostPool<KnownHttpApiKey> {\n const source = resolve(KnownToken.Config.source);\n\n return new HttpApiHostPool<KnownHttpApiKey>(\n {\n ilium: 'PUBLIC_API_URL_ILIUM',\n simaV3: 'PUBLIC_API_URL_SIMALAND_V3',\n simaV4: 'PUBLIC_API_URL_SIMALAND_V4',\n simaV6: 'PUBLIC_API_URL_SIMALAND_V6',\n chponkiV2: 'PUBLIC_API_URL_CHPONKI_V2',\n },\n source,\n );\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAACC,OAAgB,EAAoC;EAC3F,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACF,MAAM,CAAC;EAEhD,OAAO,IAAIG,gCAAe,CACxB;IACEC,KAAK,EAAE,sBAAsB;IAC7BC,MAAM,EAAE,4BAA4B;IACpCC,MAAM,EAAE,4BAA4B;IACpCC,MAAM,EAAE,4BAA4B;IACpCC,SAAS,EAAE;EACb,CAAC,EACDR,MACF,CAAC;AACH"}
1
+ {"version":3,"file":"known-http-api-hosts.js","names":["_tokens","require","_httpApiHostPool","provideKnownHttpApiHosts","resolve","source","KnownToken","Config","HttpApiHostPool","ilium","simaV3","simaV4","simaV6","chponkiV2","shuttle","fileDispatcher"],"sources":["../../../../../src/preset/web/providers/known-http-api-hosts.ts"],"sourcesContent":["import { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { KnownHttpApiKey } from '../../isomorphic/types';\nimport { HttpApiHostPool } from '../../isomorphic/utils/http-api-host-pool';\n\n/**\n * Провайдер известных http-хостов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Пул известных http-хостов.\n */\nexport function provideKnownHttpApiHosts(resolve: Resolve): HttpApiHostPool<KnownHttpApiKey> {\n const source = resolve(KnownToken.Config.source);\n\n return new HttpApiHostPool<KnownHttpApiKey>(\n {\n ilium: 'PUBLIC_API_URL_ILIUM',\n simaV3: 'PUBLIC_API_URL_SIMALAND_V3',\n simaV4: 'PUBLIC_API_URL_SIMALAND_V4',\n simaV6: 'PUBLIC_API_URL_SIMALAND_V6',\n chponkiV2: 'PUBLIC_API_URL_CHPONKI_V2',\n shuttle: 'PUBLIC_API_URL_SHUTTLE',\n fileDispatcher: 'PUBLIC_API_URL_FILE_DISPATCHER',\n },\n source,\n );\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAACC,OAAgB,EAAoC;EAC3F,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACF,MAAM,CAAC;EAEhD,OAAO,IAAIG,gCAAe,CACxB;IACEC,KAAK,EAAE,sBAAsB;IAC7BC,MAAM,EAAE,4BAA4B;IACpCC,MAAM,EAAE,4BAA4B;IACpCC,MAAM,EAAE,4BAA4B;IACpCC,SAAS,EAAE,2BAA2B;IACtCC,OAAO,EAAE,wBAAwB;IACjCC,cAAc,EAAE;EAClB,CAAC,EACDV,MACF,CAAC;AACH"}
@@ -27,9 +27,8 @@ const KnownToken = exports.KnownToken = {
27
27
  Tracing: {
28
28
  tracer: (0, _di.createToken)('tracing/tracer'),
29
29
  spanExporter: (0, _di.createToken)('tracing/span-exporter'),
30
- tracerProvider: (0, _di.createToken)('tracing/tracer-provider'),
31
- // @todo перенести в KnownToken.Telemetry.Resource?
32
- tracerProviderResource: (0, _di.createToken)('tracing/resource')
30
+ provider: (0, _di.createToken)('tracing/provider'),
31
+ resource: (0, _di.createToken)('tracing/resource')
33
32
  },
34
33
  /** Токены компонентов сбора метрик. */
35
34
  Metrics: {
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","names":["_di","require","KnownToken","exports","Config","source","createToken","base","cache","logger","Tracing","tracer","spanExporter","tracerProvider","tracerProviderResource","Metrics","expressApp","httpHandler","Http","Api","knownHosts","fetch","Fetch","abortController","middleware","Middleware","Log","handler","serve","Serve","pageRoutes","serviceRoutes","Proxy","config","Handler","main","context","Request","acceptType","specificParams","Response","events","specificExtras","Page","render","assets","helmet","elementToString","formatResponse","Axios","factory","Express","app","endMiddleware","Handlers","healthCheck","request","log","tracing","metrics","error","ExpressHandler","Redux","saga","SsrBridge","clientSide","serverSide"],"sources":["../../src/tokens.ts"],"sourcesContent":["import { createToken } from './di';\n\n// ВАЖНО: чтобы токенами можно было пользоваться независимо от среды исполнения - импортировать надо только типы\nimport type * as express from 'express';\nimport type { ConfigSource, BaseConfig } from './config/types';\nimport type { Logger } from './log/types';\nimport type { Cache } from './cache/types';\nimport type { LogMiddlewareHandlerInit } from './utils/axios/middleware/log';\nimport type { SagaMiddleware } from 'redux-saga';\nimport type { BridgeClientSide, BridgeServerSide } from './utils/ssr';\nimport type { Tracer } from '@opentelemetry/api';\nimport type { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { ElementType, ReactNode, JSX } from 'react';\nimport type { KnownHttpApiKey, PageAssets } from './preset/isomorphic/types';\nimport type { ExpressHandlerContext, ExpressRouteList } from './preset/node/types';\nimport type { SpecificExtras } from './preset/server/utils/specific-extras';\nimport type { CreateAxiosDefaults } from 'axios';\nimport type { AxiosInstanceWrapper, Middleware as AxiosMiddleware } from 'middleware-axios';\nimport type { Handler, LogHandler, LogHandlerFactory, Middleware, ProxyOptions } from './http';\nimport type { HttpApiHostPool } from './preset/isomorphic/utils/http-api-host-pool';\nimport type {\n ServerHandlerContext,\n ServerHandler,\n ServerMiddleware,\n PageResponseFormatter,\n RenderToString,\n RouteList,\n} from './preset/server/types';\n\n/**\n * Токены компонентов.\n * Данные токены используются в DI-пресетах, доступных из пакета.\n */\nexport const KnownToken = {\n /** Токены компонентов конфигурации приложения. */\n Config: {\n /** Токен \"источника конфигурации\". */\n source: createToken<ConfigSource>('config/source'),\n\n /** Токен базовой конфигурации. */\n base: createToken<BaseConfig>('config/base'),\n },\n\n /** Токен компонента кеша. */\n cache: createToken<Cache>('cache'),\n\n /** Токен компонента логгера. */\n logger: createToken<Logger>('logger'),\n\n /** Токены компонентов трассировки и телеметрии. */\n Tracing: {\n tracer: createToken<Tracer>('tracing/tracer'),\n spanExporter: createToken<SpanExporter>('tracing/span-exporter'),\n tracerProvider: createToken<BasicTracerProvider>('tracing/tracer-provider'),\n\n // @todo перенести в KnownToken.Telemetry.Resource?\n tracerProviderResource: createToken<Resource>('tracing/resource'),\n },\n\n /** Токены компонентов сбора метрик. */\n Metrics: {\n expressApp: createToken<express.Application>('metrics/express-app'),\n httpHandler: createToken<Handler>('metrics/http-handler'),\n },\n\n /** Токены компонентов для работы по HTTP. */\n Http: {\n /** Токены компонентов API. */\n Api: {\n /** Токен пула хостов известных HTTP API. */\n knownHosts: createToken<HttpApiHostPool<KnownHttpApiKey>>('http/api/known-hosts'),\n },\n\n /** Токен функции fetch. */\n fetch: createToken<typeof fetch>('fetch'),\n\n /** Токены компонентов формирующих работу функции fetch. */\n Fetch: {\n /** Токен AbortController для функции fetch. */\n abortController: createToken<AbortController>('fetch/abort-controller'),\n\n /** Токен списка промежуточных слоев для функции fetch. */\n middleware: createToken<Middleware[]>('fetch/middleware'),\n\n /** Токены компонентов промежуточных слоев для функции fetch. */\n Middleware: {\n /** Токены компонентов промежуточного слоя логирования. */\n Log: {\n /** Токены обработчика логирования работы функции fetch. */\n handler: createToken<LogHandler | LogHandlerFactory>('fetch/middleware/log/handler'),\n },\n },\n },\n\n /** Токен функции обработки входящего HTTP-запроса. */\n serve: createToken<Handler>('serve'),\n\n /** Токены компонентов функции обработки входящего HTTP-запроса. */\n Serve: {\n /** Токен списка маршрутов. */\n pageRoutes: createToken<RouteList>('serve/page-routes'),\n\n /** Токен списка \"служебных\" маршрутов. К \"служебным\" маршрутам не применяются промежуточные слои. */\n serviceRoutes: createToken<RouteList>('serve/service-routes'),\n\n /** Токен списка промежуточных слоев обработки входящего HTTP-запроса. */\n middleware: createToken<ServerMiddleware[]>('serve/middleware'),\n\n Proxy: {\n config: createToken<null | undefined | ProxyOptions | ProxyOptions[]>('proxy/config'),\n },\n },\n\n /** Токены компонентов обработчиков входящих HTTP-запросов. */\n Handler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<ServerHandler>('handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит объект запроса а также реализует EventTarget. */\n context: createToken<ServerHandlerContext & { request: Request }>('handler/context'),\n\n /** Токен компонентов входящего запроса. */\n Request: {\n /** Токен функции которая определяет возможные типы ответа и их приоритет. */\n acceptType: createToken<(types: string[]) => string | string[] | false>('handler/accepts'),\n\n /** Токен \"специфичных\" параметров запроса. В зависимости от реализации определит параметры на основе объекта запроса. */\n specificParams: createToken<Record<string, unknown>>('request/specific-params'),\n },\n\n /** Токены компонентов исходящего ответа. */\n Response: {\n /** Токен объекта для подписки на события и вызова событий ответа. */\n events: createToken<EventTarget>('response/events'),\n\n /** Токен \"специфичных\" дополнительных данных. В зависимости от реализации сформирует дополнительные данные ответа. */\n specificExtras: createToken<SpecificExtras>('response/specific-extras'),\n },\n\n /** Токены компонентов HTML-документа, формируемого в рамках обработчика. */\n Page: {\n /** Токен рендер-функции. */\n render: createToken<() => JSX.Element | Promise<JSX.Element>>('page/render'),\n\n /** Токен ассетов HTML-документа. */\n assets: createToken<PageAssets | (() => PageAssets | Promise<PageAssets>)>('page/assets'),\n\n /** Токен \"шлема\". Шлем - UI-компонент, внутри которого будет выведен результат render-функции. */\n helmet: createToken<ElementType<{ children: ReactNode }>>('page/helmet'),\n\n /** Токен функции, получающей jsx и возвращающей строку. */\n elementToString: createToken<RenderToString>('page/element-to-string'),\n\n /** Токен функции, которая вернёт данные для ответа. */\n formatResponse: createToken<PageResponseFormatter>('page/format-response'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой axios. */\n Axios: {\n /** Токен фабрики экземпляров axios. Фабрика вернет расширенный экземпляр с возможностью применять промежуточные слои. */\n factory: createToken<(config?: CreateAxiosDefaults) => AxiosInstanceWrapper>('axios/factory'),\n\n /** Токен промежуточных слоев. */\n middleware: createToken<AxiosMiddleware<any>[]>('axios/middleware'),\n\n /** Токен компонентов промежуточных слоев. */\n Middleware: {\n /** Токен компонентов слоя логирования. */\n Log: {\n /** Токен обработчика логирования. */\n handler: createToken<LogMiddlewareHandlerInit>('axios/middleware/log/handler'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой express. */\n Express: {\n /** Токен основного express-приложения. */\n app: createToken<express.Application>('express/app'),\n\n /** Токен списка маршрутов страниц. */\n pageRoutes: createToken<ExpressRouteList>('express/page-routes'),\n\n /** Токен списка служебных маршрутов. */\n serviceRoutes: createToken<ExpressRouteList>('express/service-routes'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов. */\n middleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/middleware'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов, которые подключаются после обработчика. */\n endMiddleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/end-middleware'),\n\n /** Токен фабрики express-приложений. */\n factory: createToken<() => express.Application>('express/factory'),\n\n /** Токен express-обработчиков. */\n Handlers: {\n /** Токен обработчика \"health check\". */\n healthCheck: createToken<express.Handler>('express/handler/health-check'),\n },\n\n /** Токены промежуточных слоев express-приложения. */\n Middleware: {\n request: createToken<express.Handler>('express/middleware/request'),\n log: createToken<express.Handler>('express/middleware/log'),\n tracing: createToken<express.Handler>('express/middleware/tracing'),\n metrics: createToken<express.Handler>('express/middleware/metrics'),\n error: createToken<express.ErrorRequestHandler>('express/middleware/error'),\n },\n },\n\n /** Токены компонентов express-обработчика. */\n ExpressHandler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<express.Handler>('express-handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит все аргументы, доступные обработчику (req, res, next). */\n context: createToken<ExpressHandlerContext>('express-handler/context'),\n },\n\n /** Токены компонентов для работы с библиотекой redux. */\n Redux: {\n /** Токены компонентов промежуточных слоев. */\n Middleware: {\n /** Токен промежуточного слоя redux-saga. */\n saga: createToken<SagaMiddleware>('saga-middleware'),\n },\n },\n\n /** Токены компонентов передачи данных страницы между клиентом и сервером. */\n SsrBridge: {\n /** Токены компонента \"клиентской стороны\". */\n clientSide: createToken<BridgeClientSide<unknown>>('ssr-bridge/client-side'),\n\n /** Токены компонента \"серверной стороны\". */\n serverSide: createToken<BridgeServerSide>('ssr-bridge/server-side'),\n },\n} as const;\n"],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","names":["_di","require","KnownToken","exports","Config","source","createToken","base","cache","logger","Tracing","tracer","spanExporter","provider","resource","Metrics","expressApp","httpHandler","Http","Api","knownHosts","fetch","Fetch","abortController","middleware","Middleware","Log","handler","serve","Serve","pageRoutes","serviceRoutes","Proxy","config","Handler","main","context","Request","acceptType","specificParams","Response","events","specificExtras","Page","render","assets","helmet","elementToString","formatResponse","Axios","factory","Express","app","endMiddleware","Handlers","healthCheck","request","log","tracing","metrics","error","ExpressHandler","Redux","saga","SsrBridge","clientSide","serverSide"],"sources":["../../src/tokens.ts"],"sourcesContent":["import { createToken } from './di';\n\n// ВАЖНО: чтобы токенами можно было пользоваться независимо от среды исполнения - импортировать надо только типы\nimport type * as express from 'express';\nimport type { ConfigSource, BaseConfig } from './config/types';\nimport type { Logger } from './log/types';\nimport type { Cache } from './cache/types';\nimport type { LogMiddlewareHandlerInit } from './utils/axios/middleware/log';\nimport type { SagaMiddleware } from 'redux-saga';\nimport type { BridgeClientSide, BridgeServerSide } from './utils/ssr';\nimport type { Tracer } from '@opentelemetry/api';\nimport type { BasicTracerProvider, SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { ElementType, ReactNode, JSX } from 'react';\nimport type { KnownHttpApiKey, PageAssets } from './preset/isomorphic/types';\nimport type { ExpressHandlerContext, ExpressRouteList } from './preset/node/types';\nimport type { SpecificExtras } from './preset/server/utils/specific-extras';\nimport type { CreateAxiosDefaults } from 'axios';\nimport type { AxiosInstanceWrapper, Middleware as AxiosMiddleware } from 'middleware-axios';\nimport type { Handler, LogHandler, LogHandlerFactory, Middleware, ProxyOptions } from './http';\nimport type { HttpApiHostPool } from './preset/isomorphic/utils/http-api-host-pool';\nimport type {\n ServerHandlerContext,\n ServerHandler,\n ServerMiddleware,\n PageResponseFormatter,\n RenderToString,\n RouteList,\n} from './preset/server/types';\n\n/**\n * Токены компонентов.\n * Данные токены используются в DI-пресетах, доступных из пакета.\n */\nexport const KnownToken = {\n /** Токены компонентов конфигурации приложения. */\n Config: {\n /** Токен \"источника конфигурации\". */\n source: createToken<ConfigSource>('config/source'),\n\n /** Токен базовой конфигурации. */\n base: createToken<BaseConfig>('config/base'),\n },\n\n /** Токен компонента кеша. */\n cache: createToken<Cache>('cache'),\n\n /** Токен компонента логгера. */\n logger: createToken<Logger>('logger'),\n\n /** Токены компонентов трассировки и телеметрии. */\n Tracing: {\n tracer: createToken<Tracer>('tracing/tracer'),\n spanExporter: createToken<SpanExporter>('tracing/span-exporter'),\n provider: createToken<BasicTracerProvider>('tracing/provider'),\n resource: createToken<Resource>('tracing/resource'),\n },\n\n /** Токены компонентов сбора метрик. */\n Metrics: {\n expressApp: createToken<express.Application>('metrics/express-app'),\n httpHandler: createToken<Handler>('metrics/http-handler'),\n },\n\n /** Токены компонентов для работы по HTTP. */\n Http: {\n /** Токены компонентов API. */\n Api: {\n /** Токен пула хостов известных HTTP API. */\n knownHosts: createToken<HttpApiHostPool<KnownHttpApiKey>>('http/api/known-hosts'),\n },\n\n /** Токен функции fetch. */\n fetch: createToken<typeof fetch>('fetch'),\n\n /** Токены компонентов формирующих работу функции fetch. */\n Fetch: {\n /** Токен AbortController для функции fetch. */\n abortController: createToken<AbortController>('fetch/abort-controller'),\n\n /** Токен списка промежуточных слоев для функции fetch. */\n middleware: createToken<Middleware[]>('fetch/middleware'),\n\n /** Токены компонентов промежуточных слоев для функции fetch. */\n Middleware: {\n /** Токены компонентов промежуточного слоя логирования. */\n Log: {\n /** Токены обработчика логирования работы функции fetch. */\n handler: createToken<LogHandler | LogHandlerFactory>('fetch/middleware/log/handler'),\n },\n },\n },\n\n /** Токен функции обработки входящего HTTP-запроса. */\n serve: createToken<Handler>('serve'),\n\n /** Токены компонентов функции обработки входящего HTTP-запроса. */\n Serve: {\n /** Токен списка маршрутов. */\n pageRoutes: createToken<RouteList>('serve/page-routes'),\n\n /** Токен списка \"служебных\" маршрутов. К \"служебным\" маршрутам не применяются промежуточные слои. */\n serviceRoutes: createToken<RouteList>('serve/service-routes'),\n\n /** Токен списка промежуточных слоев обработки входящего HTTP-запроса. */\n middleware: createToken<ServerMiddleware[]>('serve/middleware'),\n\n Proxy: {\n config: createToken<null | undefined | ProxyOptions | ProxyOptions[]>('proxy/config'),\n },\n },\n\n /** Токены компонентов обработчиков входящих HTTP-запросов. */\n Handler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<ServerHandler>('handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит объект запроса а также реализует EventTarget. */\n context: createToken<ServerHandlerContext & { request: Request }>('handler/context'),\n\n /** Токен компонентов входящего запроса. */\n Request: {\n /** Токен функции которая определяет возможные типы ответа и их приоритет. */\n acceptType: createToken<(types: string[]) => string | string[] | false>('handler/accepts'),\n\n /** Токен \"специфичных\" параметров запроса. В зависимости от реализации определит параметры на основе объекта запроса. */\n specificParams: createToken<Record<string, unknown>>('request/specific-params'),\n },\n\n /** Токены компонентов исходящего ответа. */\n Response: {\n /** Токен объекта для подписки на события и вызова событий ответа. */\n events: createToken<EventTarget>('response/events'),\n\n /** Токен \"специфичных\" дополнительных данных. В зависимости от реализации сформирует дополнительные данные ответа. */\n specificExtras: createToken<SpecificExtras>('response/specific-extras'),\n },\n\n /** Токены компонентов HTML-документа, формируемого в рамках обработчика. */\n Page: {\n /** Токен рендер-функции. */\n render: createToken<() => JSX.Element | Promise<JSX.Element>>('page/render'),\n\n /** Токен ассетов HTML-документа. */\n assets: createToken<PageAssets | (() => PageAssets | Promise<PageAssets>)>('page/assets'),\n\n /** Токен \"шлема\". Шлем - UI-компонент, внутри которого будет выведен результат render-функции. */\n helmet: createToken<ElementType<{ children: ReactNode }>>('page/helmet'),\n\n /** Токен функции, получающей jsx и возвращающей строку. */\n elementToString: createToken<RenderToString>('page/element-to-string'),\n\n /** Токен функции, которая вернёт данные для ответа. */\n formatResponse: createToken<PageResponseFormatter>('page/format-response'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой axios. */\n Axios: {\n /** Токен фабрики экземпляров axios. Фабрика вернет расширенный экземпляр с возможностью применять промежуточные слои. */\n factory: createToken<(config?: CreateAxiosDefaults) => AxiosInstanceWrapper>('axios/factory'),\n\n /** Токен промежуточных слоев. */\n middleware: createToken<AxiosMiddleware<any>[]>('axios/middleware'),\n\n /** Токен компонентов промежуточных слоев. */\n Middleware: {\n /** Токен компонентов слоя логирования. */\n Log: {\n /** Токен обработчика логирования. */\n handler: createToken<LogMiddlewareHandlerInit>('axios/middleware/log/handler'),\n },\n },\n },\n\n /** Токены компонентов для работы с библиотекой express. */\n Express: {\n /** Токен основного express-приложения. */\n app: createToken<express.Application>('express/app'),\n\n /** Токен списка маршрутов страниц. */\n pageRoutes: createToken<ExpressRouteList>('express/page-routes'),\n\n /** Токен списка служебных маршрутов. */\n serviceRoutes: createToken<ExpressRouteList>('express/service-routes'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов. */\n middleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/middleware'),\n\n /** Токен списка промежуточных слоев для публичных маршрутов, которые подключаются после обработчика. */\n endMiddleware:\n createToken<Array<express.Handler | express.ErrorRequestHandler>>('express/end-middleware'),\n\n /** Токен фабрики express-приложений. */\n factory: createToken<() => express.Application>('express/factory'),\n\n /** Токен express-обработчиков. */\n Handlers: {\n /** Токен обработчика \"health check\". */\n healthCheck: createToken<express.Handler>('express/handler/health-check'),\n },\n\n /** Токены промежуточных слоев express-приложения. */\n Middleware: {\n request: createToken<express.Handler>('express/middleware/request'),\n log: createToken<express.Handler>('express/middleware/log'),\n tracing: createToken<express.Handler>('express/middleware/tracing'),\n metrics: createToken<express.Handler>('express/middleware/metrics'),\n error: createToken<express.ErrorRequestHandler>('express/middleware/error'),\n },\n },\n\n /** Токены компонентов express-обработчика. */\n ExpressHandler: {\n /** Токен главной функции (точки входа) обработчика. */\n main: createToken<express.Handler>('express-handler/main'),\n\n /** Токен \"контекста\" обработчика. Контекст содержит все аргументы, доступные обработчику (req, res, next). */\n context: createToken<ExpressHandlerContext>('express-handler/context'),\n },\n\n /** Токены компонентов для работы с библиотекой redux. */\n Redux: {\n /** Токены компонентов промежуточных слоев. */\n Middleware: {\n /** Токен промежуточного слоя redux-saga. */\n saga: createToken<SagaMiddleware>('saga-middleware'),\n },\n },\n\n /** Токены компонентов передачи данных страницы между клиентом и сервером. */\n SsrBridge: {\n /** Токены компонента \"клиентской стороны\". */\n clientSide: createToken<BridgeClientSide<unknown>>('ssr-bridge/client-side'),\n\n /** Токены компонента \"серверной стороны\". */\n serverSide: createToken<BridgeServerSide>('ssr-bridge/server-side'),\n },\n} as const;\n"],"mappings":"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"}
@@ -88,4 +88,64 @@ export const FetchUtil = {
88
88
  })];
89
89
  }
90
90
  };
91
+
92
+ /**
93
+ * Проверяет, является ли переданное значение ошибкой.
94
+ * @param value Значение.
95
+ * @return Является ли значение ошибкой.
96
+ */
97
+ function isError(value) {
98
+ return Object.prototype.toString.call(value) === '[object Error]';
99
+ }
100
+
101
+ // Основано на исходном коде пакета https://github.com/sindresorhus/is-network-error
102
+ const networkErrorMessages = new Set(['network error',
103
+ // Chrome
104
+ 'Failed to fetch',
105
+ // Chrome
106
+ 'NetworkError when attempting to fetch resource.',
107
+ // Firefox
108
+ 'The Internet connection appears to be offline.',
109
+ // Safari 16
110
+ 'Load failed',
111
+ // Safari 17+
112
+ 'Network request failed',
113
+ // `cross-fetch`
114
+ 'fetch failed',
115
+ // Undici (Node.js)
116
+ 'terminated',
117
+ // Undici (Node.js)
118
+
119
+ // дальше идут наши наработки (основано на данных из Sentry)
120
+ 'Network Error' // Safari 17.4
121
+ ]);
122
+
123
+ /**
124
+ * Проверяет, является ли переданное значение ошибкой сети.
125
+ * Основано на исходном коде пакета https://github.com/sindresorhus/is-network-error.
126
+ * Нет возможности использовать пакет is-network-error по причине того что он - ESM only.
127
+ * @param value Проверяемое значение.
128
+ * @return Является ли значение TypeError о том что произошла ошибка сети.
129
+ */
130
+ export function isNetworkError(value) {
131
+ const isValid = isError(value) && value.name === 'TypeError' && typeof value.message === 'string';
132
+ if (!isValid) {
133
+ return false;
134
+ }
135
+
136
+ // ВАЖНО: в Safari 17+ ошибки имеют определенное сообщение и не имеют свойства stack
137
+ if (value.message === 'Load failed') {
138
+ return value.stack === undefined;
139
+ }
140
+ return networkErrorMessages.has(value.message);
141
+ }
142
+
143
+ /**
144
+ * Проверяет является ли переданное значение ошибкой обрывания с помощью AbortController.
145
+ * @param value Проверяемое значение.
146
+ * @return Является ли значение ошибкой обрывания.
147
+ */
148
+ export function isAbortError(value) {
149
+ return typeof value === 'object' && value !== null && value.name === 'AbortError';
150
+ }
91
151
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["FetchUtil","setParams","url","params","paramName","paramValue","Object","entries","searchParams","delete","undefined","set","String","withParams","resultUrl","URL","withoutParams","search","eitherResponse","parseBody","response","json","parse","ok","data","error","Error","status","statusText","headers"],"sources":["../../../src/http/utils.ts"],"sourcesContent":["import type { URLSearchParamsInit, ResponseDone, ResponseFail } from './types';\n\n/**\n * Утилиты для работы с URL, URLSearchParams, Headers, Request, Response.\n */\nexport const FetchUtil = {\n /**\n * Получив параметры применит их к переданному URL.\n * @param url URL.\n * @param params Параметры.\n */\n setParams(url: URL, params: URLSearchParamsInit): void {\n for (const [paramName, paramValue] of Object.entries(params)) {\n if (paramValue === null) {\n url.searchParams.delete(paramName);\n continue;\n }\n\n if (paramValue !== undefined) {\n url.searchParams.set(paramName, String(paramValue));\n continue;\n }\n }\n },\n\n // @todo resetPrams?\n\n /**\n * Получив URL и параметры вернет новый URL с примененными параметрами.\n * @param url URL.\n * @param params Параметры.\n * @return URL.\n */\n withParams(url: string | URL, params: URLSearchParamsInit): URL {\n const resultUrl = new URL(url);\n\n FetchUtil.setParams(resultUrl, params);\n\n return resultUrl;\n },\n\n /**\n * Получив URL вернет его копию но без параметров.\n * @param url URL.\n * @return URL.\n */\n withoutParams(url: string | URL): URL {\n const resultUrl = new URL(url);\n\n resultUrl.search = '';\n\n return resultUrl;\n },\n\n /**\n * Возвращает кортеж обработчиков для Promise из fetch.\n * Полученный Promise никогда не уйдет в состояние rejected.\n * @param options Опции.\n * @return Кортеж.\n */\n eitherResponse<T = unknown>({\n parseBody = response => response.json(),\n }: {\n /** Парсер body. */\n parseBody?: (response: Response) => Promise<T>;\n } = {}) {\n /** @inheritdoc */\n const parse = async (response: Response): Promise<T | null> => {\n try {\n return await parseBody(response);\n } catch {\n return null;\n }\n };\n\n return [\n // then\n async (response: Response): Promise<ResponseDone<T> | ResponseFail<T>> => {\n if (!response.ok) {\n return {\n ok: false,\n data: (await parse(response)) as T,\n error: new Error(`Request failed with status code ${response.status}`),\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n }\n\n return {\n ok: true,\n data: (await parse(response)) as T,\n error: null,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n },\n\n // catch\n async (error: unknown): Promise<ResponseFail<T>> => ({\n ok: false,\n error,\n }),\n ] as const;\n },\n} as const;\n"],"mappings":"AAEA;AACA;AACA;AACA,OAAO,MAAMA,SAAS,GAAG;EACvB;AACF;AACA;AACA;AACA;EACEC,SAASA,CAACC,GAAQ,EAAEC,MAA2B,EAAQ;IACrD,KAAK,MAAM,CAACC,SAAS,EAAEC,UAAU,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACJ,MAAM,CAAC,EAAE;MAC5D,IAAIE,UAAU,KAAK,IAAI,EAAE;QACvBH,GAAG,CAACM,YAAY,CAACC,MAAM,CAACL,SAAS,CAAC;QAClC;MACF;MAEA,IAAIC,UAAU,KAAKK,SAAS,EAAE;QAC5BR,GAAG,CAACM,YAAY,CAACG,GAAG,CAACP,SAAS,EAAEQ,MAAM,CAACP,UAAU,CAAC,CAAC;QACnD;MACF;IACF;EACF,CAAC;EAED;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEQ,UAAUA,CAACX,GAAiB,EAAEC,MAA2B,EAAO;IAC9D,MAAMW,SAAS,GAAG,IAAIC,GAAG,CAACb,GAAG,CAAC;IAE9BF,SAAS,CAACC,SAAS,CAACa,SAAS,EAAEX,MAAM,CAAC;IAEtC,OAAOW,SAAS;EAClB,CAAC;EAED;AACF;AACA;AACA;AACA;EACEE,aAAaA,CAACd,GAAiB,EAAO;IACpC,MAAMY,SAAS,GAAG,IAAIC,GAAG,CAACb,GAAG,CAAC;IAE9BY,SAAS,CAACG,MAAM,GAAG,EAAE;IAErB,OAAOH,SAAS;EAClB,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEI,cAAcA,CAAc;IAC1BC,SAAS,GAAGC,QAAQ,IAAIA,QAAQ,CAACC,IAAI,CAAC;EAIxC,CAAC,GAAG,CAAC,CAAC,EAAE;IACN;IACA,MAAMC,KAAK,GAAG,MAAOF,QAAkB,IAAwB;MAC7D,IAAI;QACF,OAAO,MAAMD,SAAS,CAACC,QAAQ,CAAC;MAClC,CAAC,CAAC,MAAM;QACN,OAAO,IAAI;MACb;IACF,CAAC;IAED,OAAO;IACL;IACA,MAAOA,QAAkB,IAAiD;MACxE,IAAI,CAACA,QAAQ,CAACG,EAAE,EAAE;QAChB,OAAO;UACLA,EAAE,EAAE,KAAK;UACTC,IAAI,EAAG,MAAMF,KAAK,CAACF,QAAQ,CAAO;UAClCK,KAAK,EAAE,IAAIC,KAAK,CAAE,mCAAkCN,QAAQ,CAACO,MAAO,EAAC,CAAC;UACtEA,MAAM,EAAEP,QAAQ,CAACO,MAAM;UACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;UAC/BC,OAAO,EAAET,QAAQ,CAACS;QACpB,CAAC;MACH;MAEA,OAAO;QACLN,EAAE,EAAE,IAAI;QACRC,IAAI,EAAG,MAAMF,KAAK,CAACF,QAAQ,CAAO;QAClCK,KAAK,EAAE,IAAI;QACXE,MAAM,EAAEP,QAAQ,CAACO,MAAM;QACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;QAC/BC,OAAO,EAAET,QAAQ,CAACS;MACpB,CAAC;IACH,CAAC;IAED;IACA,MAAOJ,KAAc,KAAgC;MACnDF,EAAE,EAAE,KAAK;MACTE;IACF,CAAC,CAAC,CACH;EACH;AACF,CAAU"}
1
+ {"version":3,"file":"utils.js","names":["FetchUtil","setParams","url","params","paramName","paramValue","Object","entries","searchParams","delete","undefined","set","String","withParams","resultUrl","URL","withoutParams","search","eitherResponse","parseBody","response","json","parse","ok","data","error","Error","status","statusText","headers","isError","value","prototype","toString","call","networkErrorMessages","Set","isNetworkError","isValid","name","message","stack","has","isAbortError"],"sources":["../../../src/http/utils.ts"],"sourcesContent":["import type { URLSearchParamsInit, ResponseDone, ResponseFail } from './types';\n\n/**\n * Утилиты для работы с URL, URLSearchParams, Headers, Request, Response.\n */\nexport const FetchUtil = {\n /**\n * Получив параметры применит их к переданному URL.\n * @param url URL.\n * @param params Параметры.\n */\n setParams(url: URL, params: URLSearchParamsInit): void {\n for (const [paramName, paramValue] of Object.entries(params)) {\n if (paramValue === null) {\n url.searchParams.delete(paramName);\n continue;\n }\n\n if (paramValue !== undefined) {\n url.searchParams.set(paramName, String(paramValue));\n continue;\n }\n }\n },\n\n // @todo resetPrams?\n\n /**\n * Получив URL и параметры вернет новый URL с примененными параметрами.\n * @param url URL.\n * @param params Параметры.\n * @return URL.\n */\n withParams(url: string | URL, params: URLSearchParamsInit): URL {\n const resultUrl = new URL(url);\n\n FetchUtil.setParams(resultUrl, params);\n\n return resultUrl;\n },\n\n /**\n * Получив URL вернет его копию но без параметров.\n * @param url URL.\n * @return URL.\n */\n withoutParams(url: string | URL): URL {\n const resultUrl = new URL(url);\n\n resultUrl.search = '';\n\n return resultUrl;\n },\n\n /**\n * Возвращает кортеж обработчиков для Promise из fetch.\n * Полученный Promise никогда не уйдет в состояние rejected.\n * @param options Опции.\n * @return Кортеж.\n */\n eitherResponse<T = unknown>({\n parseBody = response => response.json(),\n }: {\n /** Парсер body. */\n parseBody?: (response: Response) => Promise<T>;\n } = {}) {\n /** @inheritdoc */\n const parse = async (response: Response): Promise<T | null> => {\n try {\n return await parseBody(response);\n } catch {\n return null;\n }\n };\n\n return [\n // then\n async (response: Response): Promise<ResponseDone<T> | ResponseFail<T>> => {\n if (!response.ok) {\n return {\n ok: false,\n data: (await parse(response)) as T,\n error: new Error(`Request failed with status code ${response.status}`),\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n }\n\n return {\n ok: true,\n data: (await parse(response)) as T,\n error: null,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n };\n },\n\n // catch\n async (error: unknown): Promise<ResponseFail<T>> => ({\n ok: false,\n error,\n }),\n ] as const;\n },\n} as const;\n\n/**\n * Проверяет, является ли переданное значение ошибкой.\n * @param value Значение.\n * @return Является ли значение ошибкой.\n */\nfunction isError(value: unknown): value is Error {\n return Object.prototype.toString.call(value) === '[object Error]';\n}\n\n// Основано на исходном коде пакета https://github.com/sindresorhus/is-network-error\nconst networkErrorMessages = new Set([\n 'network error', // Chrome\n 'Failed to fetch', // Chrome\n 'NetworkError when attempting to fetch resource.', // Firefox\n 'The Internet connection appears to be offline.', // Safari 16\n 'Load failed', // Safari 17+\n 'Network request failed', // `cross-fetch`\n 'fetch failed', // Undici (Node.js)\n 'terminated', // Undici (Node.js)\n\n // дальше идут наши наработки (основано на данных из Sentry)\n 'Network Error', // Safari 17.4\n]);\n\n/**\n * Проверяет, является ли переданное значение ошибкой сети.\n * Основано на исходном коде пакета https://github.com/sindresorhus/is-network-error.\n * Нет возможности использовать пакет is-network-error по причине того что он - ESM only.\n * @param value Проверяемое значение.\n * @return Является ли значение TypeError о том что произошла ошибка сети.\n */\nexport function isNetworkError(value: unknown): value is TypeError {\n const isValid = isError(value) && value.name === 'TypeError' && typeof value.message === 'string';\n\n if (!isValid) {\n return false;\n }\n\n // ВАЖНО: в Safari 17+ ошибки имеют определенное сообщение и не имеют свойства stack\n if (value.message === 'Load failed') {\n return value.stack === undefined;\n }\n\n return networkErrorMessages.has(value.message);\n}\n\n/**\n * Проверяет является ли переданное значение ошибкой обрывания с помощью AbortController.\n * @param value Проверяемое значение.\n * @return Является ли значение ошибкой обрывания.\n */\nexport function isAbortError(value: unknown): value is { name: 'AbortError' } {\n return typeof value === 'object' && value !== null && (value as any).name === 'AbortError';\n}\n"],"mappings":"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"}
@@ -1,22 +1,20 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sima-land/isomorph",
4
- "version": "11.0.0-alpha.52",
4
+ "version": "11.0.0-alpha.54",
5
5
  "dependencies": {
6
6
  "@humanwhocodes/env": "^3.0.5",
7
7
  "@krutoo/fetch-tools": "^0.0.16",
8
8
  "@opentelemetry/api": "^1.9.0",
9
9
  "@opentelemetry/exporter-prometheus": "^0.52.1",
10
- "@opentelemetry/exporter-trace-otlp-http": "^0.52.1",
11
- "@opentelemetry/propagator-jaeger": "^1.25.1",
12
- "@opentelemetry/resources": "^1.25.1",
13
- "@opentelemetry/sdk-metrics": "^1.25.1",
14
- "@opentelemetry/sdk-trace-base": "^1.25.1",
15
- "@opentelemetry/sdk-trace-node": "^1.25.1",
16
- "@opentelemetry/semantic-conventions": "^1.25.1",
17
- "@sentry/browser": "^8.13.0",
18
- "@sentry/bun": "^8.13.0",
19
- "@sentry/node": "^8.13.0",
10
+ "@opentelemetry/exporter-trace-otlp-grpc": "^0.56.0",
11
+ "@opentelemetry/resources": "^1.30.1",
12
+ "@opentelemetry/sdk-metrics": "^1.30.1",
13
+ "@opentelemetry/sdk-trace-base": "^1.30.1",
14
+ "@opentelemetry/sdk-trace-node": "^1.30.1",
15
+ "@opentelemetry/semantic-conventions": "1.28.0",
16
+ "@sentry/browser": "^8.33.1",
17
+ "@sentry/node": "^8.33.1",
20
18
  "accepts": "^1.3.8",
21
19
  "dotenv": "^16.3.1",
22
20
  "express": "^4.21.0",