@vtex/api 6.45.4

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 (360) hide show
  1. package/CHANGELOG.md +1685 -0
  2. package/README.md +65 -0
  3. package/gen/manifest.schema +189 -0
  4. package/lib/HttpClient/GraphQLClient.d.ts +28 -0
  5. package/lib/HttpClient/GraphQLClient.js +30 -0
  6. package/lib/HttpClient/HttpClient.d.ts +29 -0
  7. package/lib/HttpClient/HttpClient.js +130 -0
  8. package/lib/HttpClient/agents.d.ts +3 -0
  9. package/lib/HttpClient/agents.js +24 -0
  10. package/lib/HttpClient/index.d.ts +6 -0
  11. package/lib/HttpClient/index.js +14 -0
  12. package/lib/HttpClient/middlewares/cache.d.ts +35 -0
  13. package/lib/HttpClient/middlewares/cache.js +173 -0
  14. package/lib/HttpClient/middlewares/cancellationToken.d.ts +3 -0
  15. package/lib/HttpClient/middlewares/cancellationToken.js +72 -0
  16. package/lib/HttpClient/middlewares/inflight.d.ts +5 -0
  17. package/lib/HttpClient/middlewares/inflight.js +50 -0
  18. package/lib/HttpClient/middlewares/memoization.d.ts +7 -0
  19. package/lib/HttpClient/middlewares/memoization.js +40 -0
  20. package/lib/HttpClient/middlewares/metrics.d.ts +9 -0
  21. package/lib/HttpClient/middlewares/metrics.js +110 -0
  22. package/lib/HttpClient/middlewares/notFound.d.ts +7 -0
  23. package/lib/HttpClient/middlewares/notFound.js +20 -0
  24. package/lib/HttpClient/middlewares/recorder.d.ts +3 -0
  25. package/lib/HttpClient/middlewares/recorder.js +21 -0
  26. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +14 -0
  27. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +37 -0
  28. package/lib/HttpClient/middlewares/request/index.d.ts +18 -0
  29. package/lib/HttpClient/middlewares/request/index.js +83 -0
  30. package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +1 -0
  31. package/lib/HttpClient/middlewares/request/setupAxios/index.js +20 -0
  32. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +2 -0
  33. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +48 -0
  34. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +2 -0
  35. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +7 -0
  36. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +8 -0
  37. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +51 -0
  38. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +4 -0
  39. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +29 -0
  40. package/lib/HttpClient/middlewares/tracing.d.ts +15 -0
  41. package/lib/HttpClient/middlewares/tracing.js +54 -0
  42. package/lib/HttpClient/typings.d.ts +123 -0
  43. package/lib/HttpClient/typings.js +11 -0
  44. package/lib/caches/CacheLayer.d.ts +7 -0
  45. package/lib/caches/CacheLayer.js +2 -0
  46. package/lib/caches/DiskCache.d.ts +17 -0
  47. package/lib/caches/DiskCache.js +70 -0
  48. package/lib/caches/LRUCache.d.ts +16 -0
  49. package/lib/caches/LRUCache.js +48 -0
  50. package/lib/caches/LRUDiskCache.d.ts +21 -0
  51. package/lib/caches/LRUDiskCache.js +132 -0
  52. package/lib/caches/MultilayeredCache.d.ts +14 -0
  53. package/lib/caches/MultilayeredCache.js +68 -0
  54. package/lib/caches/index.d.ts +6 -0
  55. package/lib/caches/index.js +9 -0
  56. package/lib/caches/typings.d.ts +48 -0
  57. package/lib/caches/typings.js +2 -0
  58. package/lib/clients/IOClient.d.ts +13 -0
  59. package/lib/clients/IOClient.js +19 -0
  60. package/lib/clients/IOClients.d.ts +37 -0
  61. package/lib/clients/IOClients.js +89 -0
  62. package/lib/clients/IOGraphQLClient.d.ts +13 -0
  63. package/lib/clients/IOGraphQLClient.js +16 -0
  64. package/lib/clients/apps/AppClient.d.ts +9 -0
  65. package/lib/clients/apps/AppClient.js +34 -0
  66. package/lib/clients/apps/AppGraphQLClient.d.ts +9 -0
  67. package/lib/clients/apps/AppGraphQLClient.js +34 -0
  68. package/lib/clients/apps/Billing.d.ts +12 -0
  69. package/lib/clients/apps/Billing.js +21 -0
  70. package/lib/clients/apps/Builder.d.ts +45 -0
  71. package/lib/clients/apps/Builder.js +114 -0
  72. package/lib/clients/apps/MessagesGraphQL.d.ts +61 -0
  73. package/lib/clients/apps/MessagesGraphQL.js +121 -0
  74. package/lib/clients/apps/Settings.d.ts +14 -0
  75. package/lib/clients/apps/Settings.js +38 -0
  76. package/lib/clients/apps/catalogGraphQL/brand.d.ts +13 -0
  77. package/lib/clients/apps/catalogGraphQL/brand.js +18 -0
  78. package/lib/clients/apps/catalogGraphQL/category.d.ts +11 -0
  79. package/lib/clients/apps/catalogGraphQL/category.js +16 -0
  80. package/lib/clients/apps/catalogGraphQL/index.d.ts +22 -0
  81. package/lib/clients/apps/catalogGraphQL/index.js +88 -0
  82. package/lib/clients/apps/catalogGraphQL/product.d.ts +25 -0
  83. package/lib/clients/apps/catalogGraphQL/product.js +30 -0
  84. package/lib/clients/apps/catalogGraphQL/sku.d.ts +26 -0
  85. package/lib/clients/apps/catalogGraphQL/sku.js +30 -0
  86. package/lib/clients/apps/index.d.ts +7 -0
  87. package/lib/clients/apps/index.js +12 -0
  88. package/lib/clients/external/ExternalClient.d.ts +9 -0
  89. package/lib/clients/external/ExternalClient.js +21 -0
  90. package/lib/clients/external/ID.d.ts +23 -0
  91. package/lib/clients/external/ID.js +60 -0
  92. package/lib/clients/external/Masterdata.d.ts +93 -0
  93. package/lib/clients/external/Masterdata.js +223 -0
  94. package/lib/clients/external/PaymentProvider.d.ts +31 -0
  95. package/lib/clients/external/PaymentProvider.js +42 -0
  96. package/lib/clients/external/index.d.ts +4 -0
  97. package/lib/clients/external/index.js +9 -0
  98. package/lib/clients/index.d.ts +9 -0
  99. package/lib/clients/index.js +17 -0
  100. package/lib/clients/infra/Apps.d.ts +88 -0
  101. package/lib/clients/infra/Apps.js +508 -0
  102. package/lib/clients/infra/Assets.d.ts +34 -0
  103. package/lib/clients/infra/Assets.js +165 -0
  104. package/lib/clients/infra/BillingMetrics.d.ts +13 -0
  105. package/lib/clients/infra/BillingMetrics.js +15 -0
  106. package/lib/clients/infra/Events.d.ts +12 -0
  107. package/lib/clients/infra/Events.js +33 -0
  108. package/lib/clients/infra/Housekeeper.d.ts +10 -0
  109. package/lib/clients/infra/Housekeeper.js +30 -0
  110. package/lib/clients/infra/InfraClient.d.ts +9 -0
  111. package/lib/clients/infra/InfraClient.js +34 -0
  112. package/lib/clients/infra/Metadata.d.ts +26 -0
  113. package/lib/clients/infra/Metadata.js +83 -0
  114. package/lib/clients/infra/Registry.d.ts +59 -0
  115. package/lib/clients/infra/Registry.js +207 -0
  116. package/lib/clients/infra/Router.d.ts +34 -0
  117. package/lib/clients/infra/Router.js +81 -0
  118. package/lib/clients/infra/Sphinx.d.ts +13 -0
  119. package/lib/clients/infra/Sphinx.js +29 -0
  120. package/lib/clients/infra/VBase.d.ts +60 -0
  121. package/lib/clients/infra/VBase.js +171 -0
  122. package/lib/clients/infra/Workspaces.d.ts +18 -0
  123. package/lib/clients/infra/Workspaces.js +65 -0
  124. package/lib/clients/infra/index.d.ts +12 -0
  125. package/lib/clients/infra/index.js +17 -0
  126. package/lib/clients/janus/JanusClient.d.ts +21 -0
  127. package/lib/clients/janus/JanusClient.js +30 -0
  128. package/lib/clients/janus/LicenseManager.d.ts +7 -0
  129. package/lib/clients/janus/LicenseManager.js +58 -0
  130. package/lib/clients/janus/Segment.d.ts +36 -0
  131. package/lib/clients/janus/Segment.js +79 -0
  132. package/lib/clients/janus/Session.d.ts +15 -0
  133. package/lib/clients/janus/Session.js +75 -0
  134. package/lib/clients/janus/Tenant.d.ts +29 -0
  135. package/lib/clients/janus/Tenant.js +28 -0
  136. package/lib/clients/janus/index.d.ts +5 -0
  137. package/lib/clients/janus/index.js +10 -0
  138. package/lib/constants.d.ts +59 -0
  139. package/lib/constants.js +65 -0
  140. package/lib/errors/AuthenticationError.d.ts +18 -0
  141. package/lib/errors/AuthenticationError.js +24 -0
  142. package/lib/errors/ForbiddenError.d.ts +18 -0
  143. package/lib/errors/ForbiddenError.js +24 -0
  144. package/lib/errors/NotFoundError.d.ts +18 -0
  145. package/lib/errors/NotFoundError.js +24 -0
  146. package/lib/errors/RequestCancelledError.d.ts +6 -0
  147. package/lib/errors/RequestCancelledError.js +11 -0
  148. package/lib/errors/ResolverError.d.ts +29 -0
  149. package/lib/errors/ResolverError.js +35 -0
  150. package/lib/errors/ResolverWarning.d.ts +21 -0
  151. package/lib/errors/ResolverWarning.js +28 -0
  152. package/lib/errors/TooManyRequestsError.d.ts +4 -0
  153. package/lib/errors/TooManyRequestsError.js +9 -0
  154. package/lib/errors/UserInputError.d.ts +18 -0
  155. package/lib/errors/UserInputError.js +24 -0
  156. package/lib/errors/customGraphQLError.d.ts +4 -0
  157. package/lib/errors/customGraphQLError.js +9 -0
  158. package/lib/errors/index.d.ts +8 -0
  159. package/lib/errors/index.js +13 -0
  160. package/lib/index.d.ts +17 -0
  161. package/lib/index.js +21 -0
  162. package/lib/metrics/MetricsAccumulator.d.ts +35 -0
  163. package/lib/metrics/MetricsAccumulator.js +125 -0
  164. package/lib/responses.d.ts +79 -0
  165. package/lib/responses.js +2 -0
  166. package/lib/service/index.d.ts +2 -0
  167. package/lib/service/index.js +30 -0
  168. package/lib/service/loaders.d.ts +8 -0
  169. package/lib/service/loaders.js +54 -0
  170. package/lib/service/logger/console.d.ts +10 -0
  171. package/lib/service/logger/console.js +36 -0
  172. package/lib/service/logger/index.d.ts +2 -0
  173. package/lib/service/logger/index.js +7 -0
  174. package/lib/service/logger/logger.d.ts +35 -0
  175. package/lib/service/logger/logger.js +73 -0
  176. package/lib/service/logger/metricsLogger.d.ts +40 -0
  177. package/lib/service/logger/metricsLogger.js +149 -0
  178. package/lib/service/master.d.ts +2 -0
  179. package/lib/service/master.js +91 -0
  180. package/lib/service/tracing/TracerSingleton.d.ts +7 -0
  181. package/lib/service/tracing/TracerSingleton.js +54 -0
  182. package/lib/service/tracing/metrics/MetricNames.d.ts +60 -0
  183. package/lib/service/tracing/metrics/MetricNames.js +44 -0
  184. package/lib/service/tracing/metrics/instruments.d.ts +9 -0
  185. package/lib/service/tracing/metrics/instruments.js +11 -0
  186. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +9 -0
  187. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +25 -0
  188. package/lib/service/tracing/tracingMiddlewares.d.ts +5 -0
  189. package/lib/service/tracing/tracingMiddlewares.js +119 -0
  190. package/lib/service/worker/index.d.ts +11 -0
  191. package/lib/service/worker/index.js +193 -0
  192. package/lib/service/worker/listeners.d.ts +3 -0
  193. package/lib/service/worker/listeners.js +43 -0
  194. package/lib/service/worker/runtime/Service.d.ts +17 -0
  195. package/lib/service/worker/runtime/Service.js +23 -0
  196. package/lib/service/worker/runtime/builtIn/handlers.d.ts +4 -0
  197. package/lib/service/worker/runtime/builtIn/handlers.js +27 -0
  198. package/lib/service/worker/runtime/builtIn/middlewares.d.ts +4 -0
  199. package/lib/service/worker/runtime/builtIn/middlewares.js +40 -0
  200. package/lib/service/worker/runtime/events/index.d.ts +4 -0
  201. package/lib/service/worker/runtime/events/index.js +46 -0
  202. package/lib/service/worker/runtime/events/middlewares/body.d.ts +3 -0
  203. package/lib/service/worker/runtime/events/middlewares/body.js +22 -0
  204. package/lib/service/worker/runtime/events/middlewares/context.d.ts +3 -0
  205. package/lib/service/worker/runtime/events/middlewares/context.js +22 -0
  206. package/lib/service/worker/runtime/events/router.d.ts +2 -0
  207. package/lib/service/worker/runtime/events/router.js +27 -0
  208. package/lib/service/worker/runtime/graphql/index.d.ts +6 -0
  209. package/lib/service/worker/runtime/graphql/index.js +27 -0
  210. package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +2 -0
  211. package/lib/service/worker/runtime/graphql/middlewares/context.js +16 -0
  212. package/lib/service/worker/runtime/graphql/middlewares/error.d.ts +2 -0
  213. package/lib/service/worker/runtime/graphql/middlewares/error.js +93 -0
  214. package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +2 -0
  215. package/lib/service/worker/runtime/graphql/middlewares/query.js +52 -0
  216. package/lib/service/worker/runtime/graphql/middlewares/response.d.ts +2 -0
  217. package/lib/service/worker/runtime/graphql/middlewares/response.js +38 -0
  218. package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +2 -0
  219. package/lib/service/worker/runtime/graphql/middlewares/run.js +19 -0
  220. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +4 -0
  221. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +28 -0
  222. package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +4 -0
  223. package/lib/service/worker/runtime/graphql/middlewares/upload.js +12 -0
  224. package/lib/service/worker/runtime/graphql/schema/index.d.ts +7 -0
  225. package/lib/service/worker/runtime/graphql/schema/index.js +31 -0
  226. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +6 -0
  227. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +79 -0
  228. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.d.ts +6 -0
  229. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.js +73 -0
  230. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +7 -0
  231. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +37 -0
  232. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +11 -0
  233. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +61 -0
  234. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +7 -0
  235. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +40 -0
  236. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Sanitize.d.ts +9 -0
  237. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Sanitize.js +35 -0
  238. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +6 -0
  239. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +34 -0
  240. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/SmartCacheDirective.d.ts +6 -0
  241. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/SmartCacheDirective.js +29 -0
  242. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +7 -0
  243. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +39 -0
  244. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts +7 -0
  245. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +33 -0
  246. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +22 -0
  247. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +36 -0
  248. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +7 -0
  249. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +12 -0
  250. package/lib/service/worker/runtime/graphql/schema/typeDefs/ioUpload.d.ts +3 -0
  251. package/lib/service/worker/runtime/graphql/schema/typeDefs/ioUpload.js +16 -0
  252. package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.d.ts +10 -0
  253. package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.js +39 -0
  254. package/lib/service/worker/runtime/graphql/typings.d.ts +31 -0
  255. package/lib/service/worker/runtime/graphql/typings.js +2 -0
  256. package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +1 -0
  257. package/lib/service/worker/runtime/graphql/utils/cacheControl.js +32 -0
  258. package/lib/service/worker/runtime/graphql/utils/error.d.ts +1 -0
  259. package/lib/service/worker/runtime/graphql/utils/error.js +76 -0
  260. package/lib/service/worker/runtime/graphql/utils/pathname.d.ts +1 -0
  261. package/lib/service/worker/runtime/graphql/utils/pathname.js +7 -0
  262. package/lib/service/worker/runtime/graphql/utils/translations.d.ts +14 -0
  263. package/lib/service/worker/runtime/graphql/utils/translations.js +38 -0
  264. package/lib/service/worker/runtime/http/index.d.ts +5 -0
  265. package/lib/service/worker/runtime/http/index.js +58 -0
  266. package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +3 -0
  267. package/lib/service/worker/runtime/http/middlewares/authTokens.js +12 -0
  268. package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +3 -0
  269. package/lib/service/worker/runtime/http/middlewares/cancellationToken.js +18 -0
  270. package/lib/service/worker/runtime/http/middlewares/clients.d.ts +4 -0
  271. package/lib/service/worker/runtime/http/middlewares/clients.js +12 -0
  272. package/lib/service/worker/runtime/http/middlewares/context.d.ts +4 -0
  273. package/lib/service/worker/runtime/http/middlewares/context.js +36 -0
  274. package/lib/service/worker/runtime/http/middlewares/error.d.ts +2 -0
  275. package/lib/service/worker/runtime/http/middlewares/error.js +84 -0
  276. package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +6 -0
  277. package/lib/service/worker/runtime/http/middlewares/rateLimit.js +42 -0
  278. package/lib/service/worker/runtime/http/middlewares/requestStats.d.ts +17 -0
  279. package/lib/service/worker/runtime/http/middlewares/requestStats.js +40 -0
  280. package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +3 -0
  281. package/lib/service/worker/runtime/http/middlewares/setCookie.js +52 -0
  282. package/lib/service/worker/runtime/http/middlewares/settings.d.ts +9 -0
  283. package/lib/service/worker/runtime/http/middlewares/settings.js +43 -0
  284. package/lib/service/worker/runtime/http/middlewares/timings.d.ts +3 -0
  285. package/lib/service/worker/runtime/http/middlewares/timings.js +45 -0
  286. package/lib/service/worker/runtime/http/middlewares/vary.d.ts +3 -0
  287. package/lib/service/worker/runtime/http/middlewares/vary.js +52 -0
  288. package/lib/service/worker/runtime/http/router.d.ts +2 -0
  289. package/lib/service/worker/runtime/http/router.js +23 -0
  290. package/lib/service/worker/runtime/http/routes.d.ts +19 -0
  291. package/lib/service/worker/runtime/http/routes.js +12 -0
  292. package/lib/service/worker/runtime/method.d.ts +9 -0
  293. package/lib/service/worker/runtime/method.js +23 -0
  294. package/lib/service/worker/runtime/statusTrack.d.ts +14 -0
  295. package/lib/service/worker/runtime/statusTrack.js +37 -0
  296. package/lib/service/worker/runtime/typings.d.ts +172 -0
  297. package/lib/service/worker/runtime/typings.js +2 -0
  298. package/lib/service/worker/runtime/utils/compose.d.ts +5 -0
  299. package/lib/service/worker/runtime/utils/compose.js +11 -0
  300. package/lib/service/worker/runtime/utils/context.d.ts +2 -0
  301. package/lib/service/worker/runtime/utils/context.js +40 -0
  302. package/lib/service/worker/runtime/utils/diff.d.ts +12 -0
  303. package/lib/service/worker/runtime/utils/diff.js +21 -0
  304. package/lib/service/worker/runtime/utils/recorder.d.ts +8 -0
  305. package/lib/service/worker/runtime/utils/recorder.js +37 -0
  306. package/lib/service/worker/runtime/utils/toArray.d.ts +1 -0
  307. package/lib/service/worker/runtime/utils/toArray.js +3 -0
  308. package/lib/service/worker/runtime/utils/tokenBucket.d.ts +2 -0
  309. package/lib/service/worker/runtime/utils/tokenBucket.js +16 -0
  310. package/lib/tracing/LogEvents.d.ts +31 -0
  311. package/lib/tracing/LogEvents.js +3 -0
  312. package/lib/tracing/LogFields.d.ts +61 -0
  313. package/lib/tracing/LogFields.js +3 -0
  314. package/lib/tracing/Tags.d.ts +79 -0
  315. package/lib/tracing/Tags.js +7 -0
  316. package/lib/tracing/UserLandTracer.d.ts +27 -0
  317. package/lib/tracing/UserLandTracer.js +55 -0
  318. package/lib/tracing/errorReporting/ErrorReport.d.ts +31 -0
  319. package/lib/tracing/errorReporting/ErrorReport.js +61 -0
  320. package/lib/tracing/index.d.ts +9 -0
  321. package/lib/tracing/index.js +19 -0
  322. package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +4 -0
  323. package/lib/tracing/spanReference/SpanReferenceTypes.js +7 -0
  324. package/lib/tracing/spanReference/createSpanReference.d.ts +3 -0
  325. package/lib/tracing/spanReference/createSpanReference.js +8 -0
  326. package/lib/tracing/utils.d.ts +13 -0
  327. package/lib/tracing/utils.js +40 -0
  328. package/lib/utils/MineWinsConflictsResolver.d.ts +28 -0
  329. package/lib/utils/MineWinsConflictsResolver.js +130 -0
  330. package/lib/utils/app.d.ts +23 -0
  331. package/lib/utils/app.js +48 -0
  332. package/lib/utils/appsStaleIfError.d.ts +11 -0
  333. package/lib/utils/appsStaleIfError.js +63 -0
  334. package/lib/utils/billingOptions.d.ts +36 -0
  335. package/lib/utils/billingOptions.js +9 -0
  336. package/lib/utils/binding.d.ts +13 -0
  337. package/lib/utils/binding.js +38 -0
  338. package/lib/utils/cancel.d.ts +3 -0
  339. package/lib/utils/cancel.js +12 -0
  340. package/lib/utils/domain.d.ts +1 -0
  341. package/lib/utils/domain.js +5 -0
  342. package/lib/utils/error.d.ts +8 -0
  343. package/lib/utils/error.js +94 -0
  344. package/lib/utils/index.d.ts +9 -0
  345. package/lib/utils/index.js +14 -0
  346. package/lib/utils/message.d.ts +25 -0
  347. package/lib/utils/message.js +23 -0
  348. package/lib/utils/renameBy.d.ts +1 -0
  349. package/lib/utils/renameBy.js +4 -0
  350. package/lib/utils/retry.d.ts +4 -0
  351. package/lib/utils/retry.js +32 -0
  352. package/lib/utils/status.d.ts +1 -0
  353. package/lib/utils/status.js +11 -0
  354. package/lib/utils/tenant.d.ts +5 -0
  355. package/lib/utils/tenant.js +6 -0
  356. package/lib/utils/throwOnGraphQLErrors.d.ts +2 -0
  357. package/lib/utils/throwOnGraphQLErrors.js +15 -0
  358. package/lib/utils/time.d.ts +31 -0
  359. package/lib/utils/time.js +118 -0
  360. package/package.json +127 -0
@@ -0,0 +1,2 @@
1
+ import { ServiceJSON } from './worker/runtime/typings';
2
+ export declare const startMaster: (service: ServiceJSON) => void;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const cluster_1 = __importDefault(require("cluster"));
7
+ const os_1 = require("os");
8
+ const constants_1 = require("../constants");
9
+ const logger_1 = require("./logger");
10
+ const listeners_1 = require("./worker/listeners");
11
+ const statusTrack_1 = require("./worker/runtime/statusTrack");
12
+ let handledSignal;
13
+ const onMessage = (worker, message) => {
14
+ if (logger_1.isLog(message)) {
15
+ logger_1.logOnceToDevConsole(message.message, message.level);
16
+ }
17
+ else if (statusTrack_1.isStatusTrackBroadcast(message)) {
18
+ statusTrack_1.trackStatus();
19
+ statusTrack_1.broadcastStatusTrack();
20
+ }
21
+ else {
22
+ listeners_1.logger.warn({
23
+ content: message,
24
+ message: 'Worker sent message',
25
+ pid: worker.process.pid,
26
+ });
27
+ }
28
+ };
29
+ const onExit = (worker, code, signal) => {
30
+ if (!constants_1.LINKED && worker.exitedAfterDisconnect === false) {
31
+ listeners_1.logger.error({
32
+ code,
33
+ message: 'Worker Died',
34
+ pid: worker.process.pid,
35
+ signal,
36
+ });
37
+ cluster_1.default.fork();
38
+ }
39
+ const exitOn = ['SIGTERM', 'SIGINT'];
40
+ if (handledSignal && exitOn.includes(handledSignal) && Object.keys(cluster_1.default.workers).length === 0) {
41
+ process.exit(os_1.constants.signals[handledSignal]);
42
+ }
43
+ };
44
+ let workersOnline = 0;
45
+ const onOnline = (worker) => {
46
+ console.log('Worker ' + worker.process.pid + ' is listening');
47
+ workersOnline += 1;
48
+ if (workersOnline === 1) {
49
+ worker.send(constants_1.UP_SIGNAL);
50
+ }
51
+ };
52
+ const GRACEFULLY_SHUTDOWN_TIMEOUT_S = 30;
53
+ const SIGINT_TIMEOUT_S = 1;
54
+ const handleSignal = (timeout) => (signal) => {
55
+ // Log the Master Process received a signal
56
+ const message = `Master process ${process.pid} received signal ${signal}`;
57
+ console.warn(message);
58
+ listeners_1.logger.warn({ message, signal });
59
+ // For each worker, let's try to kill it gracefully
60
+ Object.values(cluster_1.default.workers).forEach((worker) => worker === null || worker === void 0 ? void 0 : worker.kill(signal));
61
+ // Let's raise the flag to kill the master process after all workers have died
62
+ handledSignal = signal;
63
+ // Let's wait for all in-flight requests finish before send any kill signal
64
+ const waitTimeToForceKill = timeout * 1e3;
65
+ // Force workers and master to die after a graceful timeout
66
+ setTimeout(() => {
67
+ Object.values(cluster_1.default.workers).forEach((worker) => worker === null || worker === void 0 ? void 0 : worker.process.kill('SIGKILL'));
68
+ process.exit(os_1.constants.signals[signal]);
69
+ }, waitTimeToForceKill);
70
+ };
71
+ exports.startMaster = (service) => {
72
+ const { workers: numWorkers, timeout = GRACEFULLY_SHUTDOWN_TIMEOUT_S } = service;
73
+ if (service.deterministicVary) {
74
+ process.env.DETERMINISTIC_VARY = 'true';
75
+ }
76
+ // Setup dubugger
77
+ if (constants_1.LINKED) {
78
+ cluster_1.default.setupMaster({ inspectPort: constants_1.INSPECT_DEBUGGER_PORT });
79
+ }
80
+ const shutdownTimeout = Math.max(GRACEFULLY_SHUTDOWN_TIMEOUT_S, timeout);
81
+ console.log(`Spawning ${numWorkers} workers`);
82
+ console.log(`Using ${shutdownTimeout} seconds as worker graceful shutdown timeout`);
83
+ for (let i = 0; i < numWorkers; i++) {
84
+ cluster_1.default.fork();
85
+ }
86
+ cluster_1.default.on('online', onOnline);
87
+ cluster_1.default.on('exit', onExit);
88
+ cluster_1.default.on('message', onMessage);
89
+ process.on('SIGINT', handleSignal(SIGINT_TIMEOUT_S));
90
+ process.on('SIGTERM', handleSignal(shutdownTimeout));
91
+ };
@@ -0,0 +1,7 @@
1
+ import { Tracer } from 'opentracing';
2
+ export declare class TracerSingleton {
3
+ static getTracer(): Tracer;
4
+ private static singleton;
5
+ private static initServiceTracer;
6
+ private static createJaegerTracer;
7
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jaeger_client_1 = require("jaeger-client");
7
+ const prom_client_1 = __importDefault(require("prom-client"));
8
+ const constants_1 = require("../../constants");
9
+ const utils_1 = require("../../utils");
10
+ class TracerSingleton {
11
+ static getTracer() {
12
+ if (!TracerSingleton.singleton) {
13
+ TracerSingleton.singleton = TracerSingleton.initServiceTracer();
14
+ }
15
+ return TracerSingleton.singleton;
16
+ }
17
+ static initServiceTracer() {
18
+ return TracerSingleton.createJaegerTracer(utils_1.appIdToAppAtMajor(constants_1.APP.ID), {
19
+ ["app.linked" /* VTEX_APP_LINKED */]: constants_1.LINKED,
20
+ ["app.node_vtex_api_version" /* VTEX_APP_NODE_VTEX_API_VERSION */]: constants_1.NODE_VTEX_API_VERSION,
21
+ ["app.production" /* VTEX_APP_PRODUCTION */]: constants_1.PRODUCTION,
22
+ ["app.region" /* VTEX_APP_REGION */]: constants_1.REGION,
23
+ ["app.version" /* VTEX_APP_VERSION */]: constants_1.APP.VERSION,
24
+ ["app.workspace" /* VTEX_APP_WORKSPACE */]: constants_1.WORKSPACE,
25
+ ["app.node_env" /* VTEX_APP_NODE_ENV */]: constants_1.NODE_ENV !== null && constants_1.NODE_ENV !== void 0 ? constants_1.NODE_ENV : 'undefined',
26
+ });
27
+ }
28
+ static createJaegerTracer(serviceName, defaultTags) {
29
+ const config = {
30
+ reporter: {
31
+ agentHost: process.env.VTEX_OWN_NODE_IP,
32
+ },
33
+ sampler: {
34
+ host: process.env.VTEX_OWN_NODE_IP,
35
+ param: 0.05,
36
+ refreshIntervalMs: 60 * 1000,
37
+ type: 'remote',
38
+ },
39
+ serviceName,
40
+ };
41
+ const options = {
42
+ /**
43
+ * Jaeger metric names are available in:
44
+ * https://github.com/jaegertracing/jaeger-client-node/blob/master/src/metrics/metrics.js
45
+ *
46
+ * Runtime will prefix these metrics with 'runtime:'
47
+ */
48
+ metrics: new jaeger_client_1.PrometheusMetricsFactory(prom_client_1.default, 'runtime'),
49
+ tags: defaultTags,
50
+ };
51
+ return jaeger_client_1.initTracer(config, options);
52
+ }
53
+ }
54
+ exports.TracerSingleton = TracerSingleton;
@@ -0,0 +1,60 @@
1
+ declare const enum METRIC_TYPES {
2
+ /** Counter is monotonic */
3
+ COUNTER = "counter",
4
+ /** Gauge is a counter that can be increased and decreased */
5
+ GAUGE = "gauge",
6
+ /** Histogram creates a counter timeseries for each bucket specified */
7
+ HISTOGRAM = "histogram"
8
+ }
9
+ export declare const enum RequestsMetricLabels {
10
+ /** The status code for the HTTP request */
11
+ STATUS_CODE = "status_code",
12
+ /** The service.json handler name for the current request (e.g. 'public-handler:render') */
13
+ REQUEST_HANDLER = "handler"
14
+ }
15
+ export declare const enum EventLoopMetricLabels {
16
+ PERCENTILE = "percentile"
17
+ }
18
+ export declare const CONCURRENT_REQUESTS: {
19
+ name: string;
20
+ help: string;
21
+ type: METRIC_TYPES;
22
+ };
23
+ export declare const REQUESTS_TOTAL: {
24
+ name: string;
25
+ help: string;
26
+ labelNames: RequestsMetricLabels[];
27
+ type: METRIC_TYPES;
28
+ };
29
+ export declare const REQUESTS_ABORTED: {
30
+ name: string;
31
+ help: string;
32
+ labelNames: RequestsMetricLabels[];
33
+ type: METRIC_TYPES;
34
+ };
35
+ export declare const REQUEST_TIMINGS: {
36
+ name: string;
37
+ help: string;
38
+ labelNames: RequestsMetricLabels[];
39
+ buckets: number[];
40
+ type: METRIC_TYPES;
41
+ };
42
+ export declare const REQUEST_RESPONSE_SIZES: {
43
+ name: string;
44
+ help: string;
45
+ labelNames: RequestsMetricLabels[];
46
+ buckets: number[];
47
+ type: METRIC_TYPES;
48
+ };
49
+ export declare const BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX: {
50
+ name: string;
51
+ help: string;
52
+ type: METRIC_TYPES;
53
+ };
54
+ export declare const BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES: {
55
+ name: string;
56
+ help: string;
57
+ labelNames: EventLoopMetricLabels[];
58
+ type: METRIC_TYPES;
59
+ };
60
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONCURRENT_REQUESTS = {
4
+ name: 'io_http_requests_current',
5
+ help: 'The current number of requests in course.',
6
+ type: "gauge" /* GAUGE */,
7
+ };
8
+ exports.REQUESTS_TOTAL = {
9
+ name: 'runtime_http_requests_total',
10
+ help: 'The total number of HTTP requests.',
11
+ labelNames: ["status_code" /* STATUS_CODE */, "handler" /* REQUEST_HANDLER */],
12
+ type: "counter" /* COUNTER */,
13
+ };
14
+ exports.REQUESTS_ABORTED = {
15
+ name: 'runtime_http_aborted_requests_total',
16
+ help: 'The total number of HTTP requests aborted.',
17
+ labelNames: ["handler" /* REQUEST_HANDLER */],
18
+ type: "counter" /* COUNTER */,
19
+ };
20
+ exports.REQUEST_TIMINGS = {
21
+ name: 'runtime_http_requests_duration_milliseconds',
22
+ help: 'The incoming http requests total duration.',
23
+ labelNames: ["handler" /* REQUEST_HANDLER */],
24
+ buckets: [10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120],
25
+ type: "histogram" /* HISTOGRAM */,
26
+ };
27
+ exports.REQUEST_RESPONSE_SIZES = {
28
+ name: 'runtime_http_response_size_bytes',
29
+ help: `The outgoing response sizes (only applicable when the response isn't a stream).`,
30
+ labelNames: ["handler" /* REQUEST_HANDLER */],
31
+ buckets: [500, 2000, 8000, 16000, 64000, 256000, 1024000, 4096000],
32
+ type: "histogram" /* HISTOGRAM */,
33
+ };
34
+ exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX = {
35
+ name: 'runtime_event_loop_lag_max_between_scrapes_seconds',
36
+ help: 'The max event loop lag that occurred between this and the previous scrape',
37
+ type: "gauge" /* GAUGE */,
38
+ };
39
+ exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES = {
40
+ name: 'runtime_event_loop_lag_percentiles_between_scrapes_seconds',
41
+ help: 'Event loop lag percentiles from the observations that occurred between this and the previous scrape',
42
+ labelNames: ["percentile" /* PERCENTILE */],
43
+ type: "gauge" /* GAUGE */,
44
+ };
@@ -0,0 +1,9 @@
1
+ import { Counter, Gauge, Histogram } from 'prom-client';
2
+ export { EventLoopMetricLabels, RequestsMetricLabels } from './MetricNames';
3
+ export declare const createTotalRequestsInstrument: () => Counter<import("./MetricNames").RequestsMetricLabels>;
4
+ export declare const createTotalAbortedRequestsInstrument: () => Counter<import("./MetricNames").RequestsMetricLabels>;
5
+ export declare const createRequestsTimingsInstrument: () => Histogram<import("./MetricNames").RequestsMetricLabels>;
6
+ export declare const createRequestsResponseSizesInstrument: () => Histogram<import("./MetricNames").RequestsMetricLabels>;
7
+ export declare const createConcurrentRequestsInstrument: () => Gauge<string>;
8
+ export declare const createEventLoopLagMaxInstrument: () => Gauge<string>;
9
+ export declare const createEventLoopLagPercentilesInstrument: () => Gauge<import("./MetricNames").EventLoopMetricLabels>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const prom_client_1 = require("prom-client");
4
+ const MetricNames_1 = require("./MetricNames");
5
+ exports.createTotalRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_TOTAL);
6
+ exports.createTotalAbortedRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_ABORTED);
7
+ exports.createRequestsTimingsInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_TIMINGS);
8
+ exports.createRequestsResponseSizesInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_RESPONSE_SIZES);
9
+ exports.createConcurrentRequestsInstrument = () => new prom_client_1.Gauge(MetricNames_1.CONCURRENT_REQUESTS);
10
+ exports.createEventLoopLagMaxInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX);
11
+ exports.createEventLoopLagPercentilesInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES);
@@ -0,0 +1,9 @@
1
+ export declare class EventLoopLagMeasurer {
2
+ private eventLoopDelayMonitor;
3
+ private percentilesInstrument;
4
+ private maxInstrument;
5
+ constructor();
6
+ start(): void;
7
+ updateInstrumentsAndReset(): Promise<void>;
8
+ private setPercentileObservation;
9
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const perf_hooks_1 = require("perf_hooks");
4
+ const utils_1 = require("../../../../utils");
5
+ const instruments_1 = require("../instruments");
6
+ class EventLoopLagMeasurer {
7
+ constructor() {
8
+ this.eventLoopDelayMonitor = perf_hooks_1.monitorEventLoopDelay({ resolution: 10 });
9
+ this.percentilesInstrument = instruments_1.createEventLoopLagPercentilesInstrument();
10
+ this.maxInstrument = instruments_1.createEventLoopLagMaxInstrument();
11
+ }
12
+ start() {
13
+ this.eventLoopDelayMonitor.enable();
14
+ }
15
+ async updateInstrumentsAndReset() {
16
+ this.maxInstrument.set(utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.max));
17
+ this.setPercentileObservation(95);
18
+ this.setPercentileObservation(99);
19
+ this.eventLoopDelayMonitor.reset();
20
+ }
21
+ setPercentileObservation(percentile) {
22
+ this.percentilesInstrument.set({ ["percentile" /* PERCENTILE */]: percentile }, utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.percentile(percentile)));
23
+ }
24
+ }
25
+ exports.EventLoopLagMeasurer = EventLoopLagMeasurer;
@@ -0,0 +1,5 @@
1
+ import { Tracer } from 'opentracing';
2
+ import { ServiceContext } from '../worker/runtime/typings';
3
+ export declare const addTracingMiddleware: (tracer: Tracer) => (ctx: ServiceContext<import("../..").IOClients, import("../worker/runtime/typings").RecorderState, import("../worker/runtime/typings").ParamsContext>, next: () => Promise<void>) => Promise<void>;
4
+ export declare const nameSpanOperationMiddleware: (operationType: string, operationName: string) => (ctx: ServiceContext<import("../..").IOClients, import("../worker/runtime/typings").RecorderState, import("../worker/runtime/typings").ParamsContext>, next: () => Promise<void>) => Promise<void>;
5
+ export declare const traceUserLandRemainingPipelineMiddleware: () => (ctx: ServiceContext<import("../..").IOClients, import("../worker/runtime/typings").RecorderState, import("../worker/runtime/typings").ParamsContext>, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const opentracing_1 = require("opentracing");
4
+ const stream_1 = require("stream");
5
+ const constants_1 = require("../../constants");
6
+ const tracing_1 = require("../../tracing");
7
+ const Tags_1 = require("../../tracing/Tags");
8
+ const utils_1 = require("../../tracing/utils");
9
+ const utils_2 = require("../../utils");
10
+ const instruments_1 = require("./metrics/instruments");
11
+ const PATHS_BLACKLISTED_FOR_TRACING = ['/_status', '/healthcheck'];
12
+ exports.addTracingMiddleware = (tracer) => {
13
+ const concurrentRequests = instruments_1.createConcurrentRequestsInstrument();
14
+ const requestTimings = instruments_1.createRequestsTimingsInstrument();
15
+ const totalRequests = instruments_1.createTotalRequestsInstrument();
16
+ const responseSizes = instruments_1.createRequestsResponseSizesInstrument();
17
+ const abortedRequests = instruments_1.createTotalAbortedRequestsInstrument();
18
+ return async function addTracing(ctx, next) {
19
+ var _a;
20
+ const start = process.hrtime();
21
+ concurrentRequests.inc(1);
22
+ if (PATHS_BLACKLISTED_FOR_TRACING.includes(ctx.request.path)) {
23
+ await next();
24
+ concurrentRequests.dec(1);
25
+ return;
26
+ }
27
+ const rootSpan = tracer.extract(opentracing_1.FORMAT_HTTP_HEADERS, ctx.request.headers);
28
+ const currentSpan = tracer.startSpan('unknown-operation', {
29
+ childOf: rootSpan,
30
+ tags: { [Tags_1.OpentracingTags.SPAN_KIND]: Tags_1.OpentracingTags.SPAN_KIND_RPC_SERVER },
31
+ });
32
+ const initialSamplingDecision = tracing_1.getTraceInfo(currentSpan).isSampled;
33
+ ctx.tracing = { currentSpan, tracer };
34
+ ctx.req.once('aborted', () => abortedRequests.inc({ ["handler" /* REQUEST_HANDLER */]: currentSpan.operationName }, 1));
35
+ let responseClosed = false;
36
+ ctx.res.once('close', () => (responseClosed = true));
37
+ try {
38
+ await next();
39
+ }
40
+ catch (err) {
41
+ tracing_1.ErrorReport.create({ originalError: err }).injectOnSpan(currentSpan, (_a = ctx.vtex) === null || _a === void 0 ? void 0 : _a.logger);
42
+ throw err;
43
+ }
44
+ finally {
45
+ const responseLength = ctx.response.length;
46
+ if (responseLength) {
47
+ responseSizes.observe({ ["handler" /* REQUEST_HANDLER */]: currentSpan.operationName }, responseLength);
48
+ }
49
+ totalRequests.inc({
50
+ ["handler" /* REQUEST_HANDLER */]: currentSpan.operationName,
51
+ ["status_code" /* STATUS_CODE */]: ctx.response.status,
52
+ }, 1);
53
+ const traceInfo = tracing_1.getTraceInfo(currentSpan);
54
+ if (traceInfo.isSampled) {
55
+ if (!initialSamplingDecision) {
56
+ currentSpan.setTag(Tags_1.OpentracingTags.SPAN_KIND, Tags_1.OpentracingTags.SPAN_KIND_RPC_SERVER);
57
+ }
58
+ currentSpan.addTags({
59
+ [Tags_1.OpentracingTags.HTTP_URL]: ctx.request.href,
60
+ [Tags_1.OpentracingTags.HTTP_METHOD]: ctx.request.method,
61
+ [Tags_1.OpentracingTags.HTTP_STATUS_CODE]: ctx.response.status,
62
+ ["http.path" /* HTTP_PATH */]: ctx.request.path,
63
+ ["vtex.request_id" /* VTEX_REQUEST_ID */]: ctx.get(constants_1.REQUEST_ID_HEADER),
64
+ ["vtex.incoming.workspace" /* VTEX_WORKSPACE */]: ctx.get(constants_1.WORKSPACE_HEADER),
65
+ ["vtex.incoming.account" /* VTEX_ACCOUNT */]: ctx.get(constants_1.ACCOUNT_HEADER),
66
+ });
67
+ currentSpan.log(utils_1.cloneAndSanitizeHeaders(ctx.request.headers, 'req.headers.'));
68
+ currentSpan.log(utils_1.cloneAndSanitizeHeaders(ctx.response.headers, 'res.headers.'));
69
+ ctx.set(constants_1.TRACE_ID_HEADER, traceInfo.traceId);
70
+ }
71
+ const onResFinished = () => {
72
+ requestTimings.observe({
73
+ ["handler" /* REQUEST_HANDLER */]: currentSpan.operationName,
74
+ }, utils_2.hrToMillisFloat(process.hrtime(start)));
75
+ concurrentRequests.dec(1);
76
+ currentSpan.finish();
77
+ };
78
+ if (responseClosed) {
79
+ onResFinished();
80
+ }
81
+ else {
82
+ stream_1.finished(ctx.res, onResFinished);
83
+ }
84
+ }
85
+ };
86
+ };
87
+ exports.nameSpanOperationMiddleware = (operationType, operationName) => {
88
+ return function nameSpanOperation(ctx, next) {
89
+ var _a;
90
+ (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan.setOperationName(`${operationType}:${operationName}`);
91
+ return next();
92
+ };
93
+ };
94
+ exports.traceUserLandRemainingPipelineMiddleware = () => {
95
+ return async function traceUserLandRemainingPipeline(ctx, next) {
96
+ const tracingCtx = ctx.tracing;
97
+ ctx.tracing = undefined;
98
+ const span = tracingCtx.currentSpan;
99
+ const userLandTracer = ctx.vtex.tracer;
100
+ userLandTracer.setFallbackSpan(span);
101
+ userLandTracer.lockFallbackSpan();
102
+ const startTime = process.hrtime();
103
+ try {
104
+ span.log({ event: "user-middlewares-start" /* USER_MIDDLEWARES_START */ });
105
+ await next();
106
+ }
107
+ catch (err) {
108
+ tracing_1.ErrorReport.create({ originalError: err }).injectOnSpan(span, ctx.vtex.logger);
109
+ throw err;
110
+ }
111
+ finally {
112
+ span.log({
113
+ event: "user-middlewares-finish" /* USER_MIDDLEWARES_FINISH */,
114
+ ["user-middlewares-duration" /* USER_MIDDLEWARES_DURATION */]: utils_2.hrToMillis(process.hrtime(startTime)),
115
+ });
116
+ ctx.tracing = tracingCtx;
117
+ }
118
+ };
119
+ };