@vtex/api 6.48.1-beta → 6.48.1-beta.3

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 (430) hide show
  1. package/gen/manifest.schema +5 -3
  2. package/lib/HttpClient/GraphQLClient.d.ts +2 -1
  3. package/lib/HttpClient/GraphQLClient.js +5 -1
  4. package/lib/HttpClient/HttpClient.d.ts +6 -5
  5. package/lib/HttpClient/HttpClient.js +64 -21
  6. package/lib/HttpClient/agents.d.ts +3 -0
  7. package/lib/HttpClient/agents.js +37 -0
  8. package/lib/HttpClient/index.d.ts +1 -7
  9. package/lib/HttpClient/index.js +17 -16
  10. package/lib/HttpClient/middlewares/cache.d.ts +8 -2
  11. package/lib/HttpClient/middlewares/cache.js +126 -33
  12. package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
  13. package/lib/HttpClient/middlewares/cancellationToken.js +3 -1
  14. package/lib/HttpClient/middlewares/inflight.js +1 -0
  15. package/lib/HttpClient/middlewares/memoization.js +9 -1
  16. package/lib/HttpClient/middlewares/metrics.js +17 -31
  17. package/lib/HttpClient/middlewares/notFound.js +1 -0
  18. package/lib/HttpClient/middlewares/recorder.d.ts +1 -1
  19. package/lib/HttpClient/middlewares/recorder.js +20 -12
  20. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +11 -0
  21. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +31 -0
  22. package/lib/HttpClient/middlewares/request/index.d.ts +18 -0
  23. package/lib/HttpClient/middlewares/request/index.js +85 -0
  24. package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +2 -0
  25. package/lib/HttpClient/middlewares/request/setupAxios/index.js +21 -0
  26. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +2 -0
  27. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +54 -0
  28. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +2 -0
  29. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +7 -0
  30. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +8 -0
  31. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +56 -0
  32. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +4 -0
  33. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +30 -0
  34. package/lib/HttpClient/middlewares/tracing.d.ts +15 -0
  35. package/lib/HttpClient/middlewares/tracing.js +61 -0
  36. package/lib/HttpClient/typings.d.ts +44 -10
  37. package/lib/HttpClient/typings.js +1 -0
  38. package/lib/caches/DiskCache.d.ts +1 -1
  39. package/lib/caches/DiskCache.js +1 -0
  40. package/lib/caches/LRUCache.d.ts +2 -2
  41. package/lib/caches/LRUCache.js +6 -1
  42. package/lib/caches/LRUDiskCache.d.ts +1 -1
  43. package/lib/caches/LRUDiskCache.js +6 -1
  44. package/lib/caches/MultilayeredCache.d.ts +1 -1
  45. package/lib/caches/MultilayeredCache.js +2 -1
  46. package/lib/caches/index.js +16 -7
  47. package/lib/{HttpClient → clients}/IOClient.d.ts +4 -4
  48. package/lib/clients/IOClient.js +20 -0
  49. package/lib/clients/IOClients.d.ts +28 -24
  50. package/lib/clients/IOClients.js +36 -28
  51. package/lib/{HttpClient → clients}/IOGraphQLClient.d.ts +4 -4
  52. package/lib/{HttpClient → clients}/IOGraphQLClient.js +3 -2
  53. package/lib/{HttpClient → clients/apps}/AppClient.d.ts +3 -3
  54. package/lib/{HttpClient → clients/apps}/AppClient.js +11 -5
  55. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.d.ts +3 -3
  56. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.js +11 -5
  57. package/lib/clients/apps/Billing.d.ts +12 -0
  58. package/lib/clients/{Billing.js → apps/Billing.js} +9 -3
  59. package/lib/clients/{Builder.d.ts → apps/Builder.d.ts} +12 -11
  60. package/lib/clients/{Builder.js → apps/Builder.js} +50 -22
  61. package/lib/clients/apps/MessagesGraphQL.d.ts +61 -0
  62. package/lib/clients/apps/MessagesGraphQL.js +122 -0
  63. package/lib/clients/{Settings.d.ts → apps/Settings.d.ts} +5 -4
  64. package/lib/clients/{Settings.js → apps/Settings.js} +15 -20
  65. package/lib/clients/apps/catalogGraphQL/brand.d.ts +13 -0
  66. package/lib/clients/apps/catalogGraphQL/brand.js +19 -0
  67. package/lib/clients/apps/catalogGraphQL/category.d.ts +11 -0
  68. package/lib/clients/apps/catalogGraphQL/category.js +17 -0
  69. package/lib/clients/apps/catalogGraphQL/index.d.ts +22 -0
  70. package/lib/clients/apps/catalogGraphQL/index.js +89 -0
  71. package/lib/clients/apps/catalogGraphQL/product.d.ts +25 -0
  72. package/lib/clients/apps/catalogGraphQL/product.js +31 -0
  73. package/lib/clients/apps/catalogGraphQL/sku.d.ts +26 -0
  74. package/lib/clients/apps/catalogGraphQL/sku.js +31 -0
  75. package/lib/clients/apps/index.d.ts +7 -0
  76. package/lib/clients/apps/index.js +19 -0
  77. package/lib/{HttpClient → clients/external}/ExternalClient.d.ts +3 -3
  78. package/lib/{HttpClient → clients/external}/ExternalClient.js +10 -2
  79. package/lib/clients/external/ID.d.ts +23 -0
  80. package/lib/clients/external/ID.js +61 -0
  81. package/lib/clients/external/Masterdata.d.ts +94 -0
  82. package/lib/clients/external/Masterdata.js +225 -0
  83. package/lib/clients/external/PaymentProvider.d.ts +31 -0
  84. package/lib/clients/external/PaymentProvider.js +43 -0
  85. package/lib/clients/external/index.d.ts +4 -0
  86. package/lib/clients/external/index.js +16 -0
  87. package/lib/clients/index.d.ts +9 -21
  88. package/lib/clients/index.js +23 -24
  89. package/lib/clients/infra/Apps.d.ts +88 -0
  90. package/lib/clients/infra/Apps.js +511 -0
  91. package/lib/clients/infra/Assets.d.ts +34 -0
  92. package/lib/clients/{Assets.js → infra/Assets.js} +75 -19
  93. package/lib/clients/infra/BillingMetrics.d.ts +13 -0
  94. package/lib/clients/infra/BillingMetrics.js +16 -0
  95. package/lib/clients/infra/Events.d.ts +12 -0
  96. package/lib/clients/infra/Events.js +34 -0
  97. package/lib/clients/infra/Housekeeper.d.ts +10 -0
  98. package/lib/clients/infra/Housekeeper.js +31 -0
  99. package/lib/{HttpClient → clients/infra}/InfraClient.d.ts +3 -3
  100. package/lib/{HttpClient → clients/infra}/InfraClient.js +10 -4
  101. package/lib/clients/infra/Registry.d.ts +59 -0
  102. package/lib/clients/{Registry.js → infra/Registry.js} +95 -33
  103. package/lib/clients/infra/Router.d.ts +34 -0
  104. package/lib/clients/infra/Router.js +82 -0
  105. package/lib/clients/infra/Sphinx.d.ts +13 -0
  106. package/lib/clients/infra/Sphinx.js +30 -0
  107. package/lib/clients/infra/VBase.d.ts +60 -0
  108. package/lib/clients/infra/VBase.js +197 -0
  109. package/lib/clients/infra/Workspaces.d.ts +18 -0
  110. package/lib/clients/infra/Workspaces.js +66 -0
  111. package/lib/clients/infra/index.d.ts +11 -0
  112. package/lib/clients/infra/index.js +23 -0
  113. package/lib/{HttpClient → clients/janus}/JanusClient.d.ts +3 -3
  114. package/lib/{HttpClient → clients/janus}/JanusClient.js +8 -3
  115. package/lib/clients/janus/LicenseManager.d.ts +7 -0
  116. package/lib/clients/{LicenseManager.js → janus/LicenseManager.js} +24 -8
  117. package/lib/clients/{Segment.d.ts → janus/Segment.d.ts} +7 -11
  118. package/lib/clients/janus/Segment.js +89 -0
  119. package/lib/clients/{Session.d.ts → janus/Session.d.ts} +4 -4
  120. package/lib/clients/{Session.js → janus/Session.js} +25 -13
  121. package/lib/clients/{Tenant.d.ts → janus/Tenant.d.ts} +6 -7
  122. package/lib/clients/janus/Tenant.js +29 -0
  123. package/lib/clients/janus/index.d.ts +5 -0
  124. package/lib/clients/janus/index.js +17 -0
  125. package/lib/constants.d.ts +49 -1
  126. package/lib/constants.js +55 -1
  127. package/lib/errors/AuthenticationError.js +1 -0
  128. package/lib/errors/ForbiddenError.js +1 -0
  129. package/lib/errors/NotFoundError.js +1 -0
  130. package/lib/errors/RequestCancelledError.js +1 -0
  131. package/lib/errors/ResolverError.d.ts +1 -1
  132. package/lib/errors/ResolverError.js +3 -2
  133. package/lib/errors/ResolverWarning.d.ts +1 -1
  134. package/lib/errors/ResolverWarning.js +3 -2
  135. package/lib/errors/TooManyRequestsError.js +1 -0
  136. package/lib/errors/UserInputError.js +1 -0
  137. package/lib/errors/index.js +18 -11
  138. package/lib/index.d.ts +9 -7
  139. package/lib/index.js +27 -16
  140. package/lib/metrics/MetricsAccumulator.d.ts +1 -18
  141. package/lib/metrics/MetricsAccumulator.js +39 -22
  142. package/lib/responses.d.ts +3 -44
  143. package/lib/service/index.d.ts +2 -0
  144. package/lib/service/index.js +34 -0
  145. package/lib/service/loaders.d.ts +8 -0
  146. package/lib/service/loaders.js +55 -0
  147. package/lib/service/logger/console.d.ts +10 -0
  148. package/lib/service/logger/console.js +37 -0
  149. package/lib/service/logger/index.d.ts +2 -28
  150. package/lib/service/logger/index.js +12 -68
  151. package/lib/service/logger/logger.d.ts +29 -0
  152. package/lib/service/logger/logger.js +62 -0
  153. package/lib/service/logger/metricsLogger.d.ts +40 -0
  154. package/lib/service/logger/metricsLogger.js +150 -0
  155. package/lib/service/master.d.ts +2 -0
  156. package/lib/service/master.js +88 -0
  157. package/lib/service/metrics/requestMetricsMiddleware.d.ts +2 -0
  158. package/lib/service/metrics/requestMetricsMiddleware.js +45 -0
  159. package/lib/service/tracing/TracerSingleton.d.ts +7 -0
  160. package/lib/service/tracing/TracerSingleton.js +49 -0
  161. package/lib/service/tracing/metrics/MetricNames.d.ts +60 -0
  162. package/lib/service/tracing/metrics/MetricNames.js +45 -0
  163. package/lib/service/tracing/metrics/instruments.d.ts +9 -0
  164. package/lib/service/tracing/metrics/instruments.js +12 -0
  165. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +9 -0
  166. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +26 -0
  167. package/lib/service/tracing/tracingMiddlewares.d.ts +5 -0
  168. package/lib/service/tracing/tracingMiddlewares.js +114 -0
  169. package/lib/service/worker/index.d.ts +11 -0
  170. package/lib/service/worker/index.js +196 -0
  171. package/lib/service/worker/listeners.d.ts +3 -0
  172. package/lib/{utils/unhandled.js → service/worker/listeners.js} +10 -15
  173. package/lib/service/{Service.d.ts → worker/runtime/Service.d.ts} +5 -5
  174. package/lib/service/{Service.js → worker/runtime/Service.js} +3 -1
  175. package/lib/service/worker/runtime/builtIn/handlers.d.ts +4 -0
  176. package/lib/service/worker/runtime/builtIn/handlers.js +31 -0
  177. package/lib/service/worker/runtime/builtIn/middlewares.d.ts +4 -0
  178. package/lib/service/worker/runtime/builtIn/middlewares.js +41 -0
  179. package/lib/service/worker/runtime/events/index.d.ts +4 -0
  180. package/lib/service/worker/runtime/events/index.js +47 -0
  181. package/lib/service/worker/runtime/events/middlewares/body.d.ts +3 -0
  182. package/lib/service/worker/runtime/events/middlewares/body.js +26 -0
  183. package/lib/service/worker/runtime/events/middlewares/context.d.ts +3 -0
  184. package/lib/service/worker/runtime/events/middlewares/context.js +23 -0
  185. package/lib/service/worker/runtime/events/router.d.ts +2 -0
  186. package/lib/service/worker/runtime/events/router.js +28 -0
  187. package/lib/service/worker/runtime/graphql/index.d.ts +6 -0
  188. package/lib/service/worker/runtime/graphql/index.js +28 -0
  189. package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +2 -0
  190. package/lib/service/worker/runtime/graphql/middlewares/context.js +17 -0
  191. package/lib/service/worker/runtime/graphql/middlewares/error.js +97 -0
  192. package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +3 -0
  193. package/lib/service/worker/runtime/graphql/middlewares/query.js +53 -0
  194. package/lib/service/worker/runtime/graphql/middlewares/response.js +39 -0
  195. package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +2 -0
  196. package/lib/service/worker/runtime/graphql/middlewares/run.js +20 -0
  197. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +5 -0
  198. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +29 -0
  199. package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +4 -0
  200. package/lib/service/{graphql → worker/runtime/graphql}/middlewares/upload.js +1 -0
  201. package/lib/service/worker/runtime/graphql/schema/index.d.ts +7 -0
  202. package/lib/service/worker/runtime/graphql/schema/index.js +32 -0
  203. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +6 -0
  204. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +80 -0
  205. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.d.ts +1 -0
  206. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.js +17 -10
  207. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +7 -0
  208. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +38 -0
  209. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +11 -0
  210. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +62 -0
  211. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +7 -0
  212. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +41 -0
  213. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.d.ts +1 -0
  214. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.js +7 -0
  215. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +6 -0
  216. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +35 -0
  217. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.d.ts +1 -0
  218. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.js +9 -3
  219. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +7 -0
  220. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +40 -0
  221. package/lib/service/{graphql/schema/schemaDirectives/Translatable.d.ts → worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts} +2 -1
  222. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +34 -0
  223. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +22 -0
  224. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +37 -0
  225. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +8 -0
  226. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +13 -0
  227. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.js +1 -0
  228. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.js +6 -1
  229. package/lib/service/worker/runtime/graphql/typings.d.ts +31 -0
  230. package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +2 -0
  231. package/lib/service/worker/runtime/graphql/utils/cacheControl.js +33 -0
  232. package/lib/service/worker/runtime/graphql/utils/error.d.ts +2 -0
  233. package/lib/service/worker/runtime/graphql/utils/error.js +77 -0
  234. package/lib/service/{graphql → worker/runtime/graphql}/utils/pathname.js +1 -0
  235. package/lib/service/worker/runtime/graphql/utils/translations.d.ts +14 -0
  236. package/lib/service/worker/runtime/graphql/utils/translations.js +39 -0
  237. package/lib/service/worker/runtime/http/index.d.ts +5 -0
  238. package/lib/service/worker/runtime/http/index.js +59 -0
  239. package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +3 -0
  240. package/lib/service/{http → worker/runtime/http}/middlewares/authTokens.js +1 -0
  241. package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +3 -0
  242. package/lib/service/{http → worker/runtime/http}/middlewares/cancellationToken.js +3 -1
  243. package/lib/service/worker/runtime/http/middlewares/clients.d.ts +4 -0
  244. package/lib/service/{http → worker/runtime/http}/middlewares/clients.js +1 -0
  245. package/lib/service/worker/runtime/http/middlewares/context.d.ts +4 -0
  246. package/lib/service/worker/runtime/http/middlewares/context.js +37 -0
  247. package/lib/service/worker/runtime/http/middlewares/error.d.ts +2 -0
  248. package/lib/service/{http → worker/runtime/http}/middlewares/error.js +28 -15
  249. package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +6 -0
  250. package/lib/service/worker/runtime/http/middlewares/rateLimit.js +43 -0
  251. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.d.ts +3 -3
  252. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.js +1 -0
  253. package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +3 -0
  254. package/lib/service/{http → worker/runtime/http}/middlewares/setCookie.js +1 -0
  255. package/lib/service/worker/runtime/http/middlewares/settings.d.ts +9 -0
  256. package/lib/service/worker/runtime/http/middlewares/settings.js +45 -0
  257. package/lib/service/worker/runtime/http/middlewares/timings.d.ts +3 -0
  258. package/lib/service/{http → worker/runtime/http}/middlewares/timings.js +22 -8
  259. package/lib/service/worker/runtime/http/middlewares/vary.d.ts +3 -0
  260. package/lib/service/{http → worker/runtime/http}/middlewares/vary.js +4 -3
  261. package/lib/service/worker/runtime/http/router.d.ts +2 -0
  262. package/lib/service/worker/runtime/http/router.js +24 -0
  263. package/lib/service/worker/runtime/http/routes.d.ts +19 -0
  264. package/lib/service/worker/runtime/http/routes.js +13 -0
  265. package/lib/service/worker/runtime/method.d.ts +9 -0
  266. package/lib/service/{method.js → worker/runtime/method.js} +1 -0
  267. package/lib/service/worker/runtime/statusTrack.d.ts +14 -0
  268. package/lib/service/worker/runtime/statusTrack.js +38 -0
  269. package/lib/service/{typings.d.ts → worker/runtime/typings.d.ts} +70 -36
  270. package/lib/service/worker/runtime/utils/compose.d.ts +5 -0
  271. package/lib/service/{utils → worker/runtime/utils}/compose.js +3 -2
  272. package/lib/service/worker/runtime/utils/context.d.ts +5 -0
  273. package/lib/service/worker/runtime/utils/context.js +41 -0
  274. package/lib/service/worker/runtime/utils/diff.d.ts +12 -0
  275. package/lib/service/worker/runtime/utils/diff.js +22 -0
  276. package/lib/service/worker/runtime/utils/recorder.d.ts +8 -0
  277. package/lib/service/worker/runtime/utils/recorder.js +38 -0
  278. package/lib/service/{graphql/utils/array.js → worker/runtime/utils/toArray.js} +1 -0
  279. package/lib/service/worker/runtime/utils/tokenBucket.d.ts +2 -0
  280. package/lib/service/worker/runtime/utils/tokenBucket.js +17 -0
  281. package/lib/tracing/LogEvents.d.ts +31 -0
  282. package/lib/tracing/LogEvents.js +3 -0
  283. package/lib/tracing/LogFields.d.ts +66 -0
  284. package/lib/tracing/LogFields.js +3 -0
  285. package/lib/tracing/Tags.d.ts +81 -0
  286. package/lib/tracing/Tags.js +8 -0
  287. package/lib/tracing/UserLandTracer.d.ts +27 -0
  288. package/lib/tracing/UserLandTracer.js +57 -0
  289. package/lib/tracing/errorReporting/ErrorReport.d.ts +31 -0
  290. package/lib/tracing/errorReporting/ErrorReport.js +71 -0
  291. package/lib/tracing/index.d.ts +9 -0
  292. package/lib/tracing/index.js +20 -0
  293. package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +4 -0
  294. package/lib/tracing/spanReference/SpanReferenceTypes.js +8 -0
  295. package/lib/tracing/spanReference/createSpanReference.d.ts +3 -0
  296. package/lib/tracing/spanReference/createSpanReference.js +9 -0
  297. package/lib/tracing/utils.d.ts +13 -0
  298. package/lib/tracing/utils.js +41 -0
  299. package/lib/utils/MineWinsConflictsResolver.d.ts +6 -4
  300. package/lib/utils/MineWinsConflictsResolver.js +35 -17
  301. package/lib/utils/app.d.ts +3 -1
  302. package/lib/utils/app.js +4 -1
  303. package/lib/utils/appsStaleIfError.d.ts +1 -1
  304. package/lib/utils/appsStaleIfError.js +20 -7
  305. package/lib/utils/billingOptions.d.ts +36 -3
  306. package/lib/utils/billingOptions.js +8 -3
  307. package/lib/utils/binding.d.ts +3 -3
  308. package/lib/utils/binding.js +1 -0
  309. package/lib/utils/buildFullPath.d.ts +11 -0
  310. package/lib/utils/buildFullPath.js +54 -0
  311. package/lib/utils/cancel.d.ts +2 -2
  312. package/lib/utils/cancel.js +3 -1
  313. package/lib/utils/conflicts.mock.d.ts +17 -0
  314. package/lib/utils/conflicts.mock.js +28 -0
  315. package/lib/utils/domain.js +1 -0
  316. package/lib/utils/error.js +1 -0
  317. package/lib/utils/index.js +19 -12
  318. package/lib/utils/json.js +1 -0
  319. package/lib/utils/log.d.ts +1 -3
  320. package/lib/utils/log.js +3 -2
  321. package/lib/utils/message.js +5 -1
  322. package/lib/utils/renameBy.js +1 -0
  323. package/lib/utils/retry.js +3 -2
  324. package/lib/utils/status.js +1 -0
  325. package/lib/utils/tenant.d.ts +3 -3
  326. package/lib/utils/tenant.js +1 -0
  327. package/lib/utils/throwOnGraphQLErrors.js +1 -0
  328. package/lib/utils/time.d.ts +7 -7
  329. package/lib/utils/time.js +10 -2
  330. package/package.json +3 -3
  331. package/lib/HttpClient/IOClient.js +0 -14
  332. package/lib/HttpClient/factories/index.d.ts +0 -8
  333. package/lib/HttpClient/factories/index.js +0 -31
  334. package/lib/HttpClient/middlewares/request.d.ts +0 -10
  335. package/lib/HttpClient/middlewares/request.js +0 -87
  336. package/lib/IODataSource.d.ts +0 -27
  337. package/lib/IODataSource.js +0 -46
  338. package/lib/clients/Apps.d.ts +0 -84
  339. package/lib/clients/Apps.js +0 -326
  340. package/lib/clients/Assets.d.ts +0 -21
  341. package/lib/clients/Billing.d.ts +0 -11
  342. package/lib/clients/BillingMetrics.d.ts +0 -12
  343. package/lib/clients/BillingMetrics.js +0 -10
  344. package/lib/clients/Events.d.ts +0 -6
  345. package/lib/clients/Events.js +0 -19
  346. package/lib/clients/Housekeeper.d.ts +0 -11
  347. package/lib/clients/Housekeeper.js +0 -24
  348. package/lib/clients/ID.d.ts +0 -22
  349. package/lib/clients/ID.js +0 -48
  350. package/lib/clients/LicenseManager.d.ts +0 -6
  351. package/lib/clients/Logger.d.ts +0 -27
  352. package/lib/clients/Logger.js +0 -32
  353. package/lib/clients/Messages.d.ts +0 -18
  354. package/lib/clients/Messages.js +0 -20
  355. package/lib/clients/MessagesGraphQL.d.ts +0 -63
  356. package/lib/clients/MessagesGraphQL.js +0 -50
  357. package/lib/clients/Metadata.d.ts +0 -25
  358. package/lib/clients/Metadata.js +0 -53
  359. package/lib/clients/Registry.d.ts +0 -61
  360. package/lib/clients/Router.d.ts +0 -33
  361. package/lib/clients/Router.js +0 -50
  362. package/lib/clients/Segment.js +0 -69
  363. package/lib/clients/Sphinx.d.ts +0 -12
  364. package/lib/clients/Sphinx.js +0 -19
  365. package/lib/clients/Tenant.js +0 -13
  366. package/lib/clients/VBase.d.ts +0 -57
  367. package/lib/clients/VBase.js +0 -116
  368. package/lib/clients/Workspaces.d.ts +0 -17
  369. package/lib/clients/Workspaces.js +0 -38
  370. package/lib/service/Runtime.d.ts +0 -18
  371. package/lib/service/Runtime.js +0 -57
  372. package/lib/service/events/index.d.ts +0 -3
  373. package/lib/service/events/index.js +0 -21
  374. package/lib/service/graphql/index.d.ts +0 -7
  375. package/lib/service/graphql/index.js +0 -33
  376. package/lib/service/graphql/middlewares/error.js +0 -107
  377. package/lib/service/graphql/middlewares/formatters.d.ts +0 -2
  378. package/lib/service/graphql/middlewares/formatters.js +0 -64
  379. package/lib/service/graphql/middlewares/query.d.ts +0 -2
  380. package/lib/service/graphql/middlewares/query.js +0 -32
  381. package/lib/service/graphql/middlewares/response.js +0 -36
  382. package/lib/service/graphql/middlewares/run.d.ts +0 -4
  383. package/lib/service/graphql/middlewares/run.js +0 -55
  384. package/lib/service/graphql/middlewares/schema.d.ts +0 -2
  385. package/lib/service/graphql/middlewares/schema.js +0 -8
  386. package/lib/service/graphql/middlewares/timings.d.ts +0 -2
  387. package/lib/service/graphql/middlewares/timings.js +0 -10
  388. package/lib/service/graphql/middlewares/upload.d.ts +0 -7
  389. package/lib/service/graphql/schema/index.d.ts +0 -3
  390. package/lib/service/graphql/schema/index.js +0 -66
  391. package/lib/service/graphql/schema/messagesLoader.d.ts +0 -4
  392. package/lib/service/graphql/schema/messagesLoader.js +0 -41
  393. package/lib/service/graphql/schema/messagesLoaderV2.d.ts +0 -5
  394. package/lib/service/graphql/schema/messagesLoaderV2.js +0 -44
  395. package/lib/service/graphql/schema/schemaDirectives/Translatable.js +0 -54
  396. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.d.ts +0 -13
  397. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.js +0 -67
  398. package/lib/service/graphql/schema/schemaDirectives/index.d.ts +0 -13
  399. package/lib/service/graphql/schema/schemaDirectives/index.js +0 -17
  400. package/lib/service/graphql/schema/typeDefs/index.d.ts +0 -16
  401. package/lib/service/graphql/schema/typeDefs/index.js +0 -21
  402. package/lib/service/graphql/schema/typeDefs/ioMessage.d.ts +0 -8
  403. package/lib/service/graphql/schema/typeDefs/ioMessage.js +0 -33
  404. package/lib/service/graphql/typings.d.ts +0 -21
  405. package/lib/service/graphql/utils/cacheControl.d.ts +0 -6
  406. package/lib/service/graphql/utils/cacheControl.js +0 -38
  407. package/lib/service/graphql/utils/maxAgeEnum.d.ts +0 -6
  408. package/lib/service/graphql/utils/maxAgeEnum.js +0 -17
  409. package/lib/service/http/index.d.ts +0 -3
  410. package/lib/service/http/index.js +0 -18
  411. package/lib/service/http/middlewares/authTokens.d.ts +0 -3
  412. package/lib/service/http/middlewares/cancellationToken.d.ts +0 -3
  413. package/lib/service/http/middlewares/clients.d.ts +0 -4
  414. package/lib/service/http/middlewares/error.d.ts +0 -3
  415. package/lib/service/http/middlewares/setCookie.d.ts +0 -3
  416. package/lib/service/http/middlewares/timings.d.ts +0 -3
  417. package/lib/service/http/middlewares/vary.d.ts +0 -3
  418. package/lib/service/method.d.ts +0 -9
  419. package/lib/service/utils/compose.d.ts +0 -4
  420. package/lib/utils/MineWinsConflictsResolver.test.d.ts +0 -1
  421. package/lib/utils/MineWinsConflictsResolver.test.js +0 -134
  422. package/lib/utils/unhandled.d.ts +0 -1
  423. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/error.d.ts +0 -0
  424. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/response.d.ts +0 -0
  425. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.d.ts +0 -0
  426. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.d.ts +0 -0
  427. /package/lib/service/{graphql → worker/runtime/graphql}/typings.js +0 -0
  428. /package/lib/service/{graphql → worker/runtime/graphql}/utils/pathname.d.ts +0 -0
  429. /package/lib/service/{typings.js → worker/runtime/typings.js} +0 -0
  430. /package/lib/service/{graphql/utils/array.d.ts → worker/runtime/utils/toArray.d.ts} +0 -0
@@ -0,0 +1,150 @@
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
+ exports.MetricsLogger = void 0;
7
+ const fast_json_stable_stringify_1 = __importDefault(require("fast-json-stable-stringify"));
8
+ const ramda_1 = require("ramda");
9
+ const stats_lite_1 = require("stats-lite");
10
+ const constants_1 = require("../../constants");
11
+ const diff_1 = require("../worker/runtime/utils/diff");
12
+ const runtimeBaseDefaultMetricNames = ['routeStats'];
13
+ const runtimeNodeDefaultMetricNames = {
14
+ cpuUsage: 'cpuUsage',
15
+ memoryUsage: 'memoryUsage',
16
+ };
17
+ const invalidMetricNames = runtimeBaseDefaultMetricNames.concat(Object.values(runtimeNodeDefaultMetricNames));
18
+ class MetricsLogger {
19
+ constructor() {
20
+ //////////////////////
21
+ // private attributes
22
+ //////////////////////
23
+ let samples = {};
24
+ let lastCpu = diff_1.cpuSnapshot();
25
+ //////////////////////
26
+ // private methods definitions
27
+ //////////////////////
28
+ const summaries = ramda_1.compose(ramda_1.reject(ramda_1.isNil), ramda_1.values, ramda_1.mapObjIndexed(getSummary));
29
+ function getDefaultStoredashProperties() {
30
+ return {
31
+ Count: 1,
32
+ Max: 0,
33
+ Min: 0,
34
+ Name: 'runtime',
35
+ Sum: 0,
36
+ Timestamp: (new Date()).getTime(),
37
+ Unit: '',
38
+ };
39
+ }
40
+ function getProcessEnv() {
41
+ return {
42
+ appName: process.env.VTEX_APP_NAME || '',
43
+ appVersion: process.env.VTEX_APP_VERSION || '',
44
+ production: constants_1.PRODUCTION,
45
+ region: process.env.VTEX_REGION || '',
46
+ vendor: process.env.VTEX_APP_VENDOR || '',
47
+ };
48
+ }
49
+ function getCpuUsage() {
50
+ const cpu = diff_1.cpuSnapshot();
51
+ const cpuDiff = diff_1.snapshotDiff(cpu, lastCpu);
52
+ lastCpu = cpu;
53
+ const metric = {
54
+ Data: {
55
+ key: {
56
+ name: runtimeNodeDefaultMetricNames.cpuUsage,
57
+ },
58
+ processEnv: getProcessEnv(),
59
+ summary: cpuDiff,
60
+ },
61
+ ...getDefaultStoredashProperties(),
62
+ };
63
+ return metric;
64
+ }
65
+ function getMemoryUsage() {
66
+ const metric = {
67
+ Data: {
68
+ key: {
69
+ name: runtimeNodeDefaultMetricNames.memoryUsage,
70
+ },
71
+ processEnv: getProcessEnv(),
72
+ summary: process.memoryUsage(),
73
+ },
74
+ ...getDefaultStoredashProperties(),
75
+ };
76
+ return metric;
77
+ }
78
+ function getRuntimeSummaries() {
79
+ return [getCpuUsage(), getMemoryUsage()];
80
+ }
81
+ function getSummary(vals, strKey) {
82
+ if (strKey in samples) {
83
+ const summary = getNumericSummary(vals);
84
+ const keyObj = JSON.parse(strKey);
85
+ const metric = {
86
+ Data: {
87
+ key: keyObj,
88
+ processEnv: getProcessEnv(),
89
+ summary,
90
+ },
91
+ ...getDefaultStoredashProperties(),
92
+ };
93
+ return metric;
94
+ }
95
+ return null;
96
+ }
97
+ // TODO: create some kind of alert/log if metric is not valid
98
+ function validKey(key) {
99
+ if (!('name' in key)) {
100
+ return false;
101
+ }
102
+ if (invalidMetricNames.includes(key.name)) {
103
+ return false;
104
+ }
105
+ try {
106
+ fast_json_stable_stringify_1.default(key);
107
+ }
108
+ catch {
109
+ return false;
110
+ }
111
+ return true;
112
+ }
113
+ function getStrKey(key) {
114
+ return fast_json_stable_stringify_1.default(key);
115
+ }
116
+ function getNumericSummary(vals) {
117
+ return {
118
+ count: vals.length,
119
+ max: Math.max(...vals),
120
+ median: stats_lite_1.median(vals),
121
+ min: Math.min(...vals),
122
+ percentile95: stats_lite_1.percentile(vals, 0.95),
123
+ percentile99: stats_lite_1.percentile(vals, 0.99),
124
+ sum: stats_lite_1.sum(vals),
125
+ };
126
+ }
127
+ //////////////////////
128
+ // public methods definitions
129
+ //////////////////////
130
+ this.add = (key, value) => {
131
+ if (validKey(key)) {
132
+ const strKey = getStrKey(key);
133
+ if (!(strKey in samples)) {
134
+ samples[strKey] = [];
135
+ }
136
+ samples[strKey].push(value);
137
+ }
138
+ };
139
+ this.getSummaries = () => {
140
+ const appSummaries = summaries(samples);
141
+ samples = {};
142
+ const runtimeSummaries = getRuntimeSummaries();
143
+ return runtimeSummaries.concat(appSummaries);
144
+ };
145
+ //////////////////////
146
+ // real constructor
147
+ //////////////////////
148
+ }
149
+ }
150
+ exports.MetricsLogger = MetricsLogger;
@@ -0,0 +1,2 @@
1
+ import { ServiceJSON } from './worker/runtime/typings';
2
+ export declare const startMaster: (service: ServiceJSON) => void;
@@ -0,0 +1,88 @@
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
+ exports.startMaster = void 0;
7
+ const cluster_1 = __importDefault(require("cluster"));
8
+ const os_1 = require("os");
9
+ const constants_1 = require("../constants");
10
+ const logger_1 = require("./logger");
11
+ const listeners_1 = require("./worker/listeners");
12
+ const statusTrack_1 = require("./worker/runtime/statusTrack");
13
+ let handledSignal;
14
+ const onMessage = (worker, message) => {
15
+ if (logger_1.isLog(message)) {
16
+ logger_1.logOnceToDevConsole(message.message, message.level);
17
+ }
18
+ else if (statusTrack_1.isStatusTrackBroadcast(message)) {
19
+ statusTrack_1.trackStatus();
20
+ statusTrack_1.broadcastStatusTrack();
21
+ }
22
+ else {
23
+ listeners_1.logger.warn({
24
+ content: message,
25
+ message: 'Worker sent message',
26
+ pid: worker.process.pid,
27
+ });
28
+ }
29
+ };
30
+ const onExit = (worker, code, signal) => {
31
+ if (!constants_1.LINKED && worker.exitedAfterDisconnect === false) {
32
+ listeners_1.logger.error({
33
+ code,
34
+ message: 'Worker Died',
35
+ pid: worker.process.pid,
36
+ signal,
37
+ });
38
+ cluster_1.default.fork();
39
+ }
40
+ const exitOn = ['SIGTERM', 'SIGINT'];
41
+ if (handledSignal && exitOn.includes(handledSignal) && Object.keys(cluster_1.default.workers).length === 0) {
42
+ process.exit(os_1.constants.signals[handledSignal]);
43
+ }
44
+ };
45
+ let workersOnline = 0;
46
+ const onOnline = (worker) => {
47
+ console.log('Worker ' + worker.process.pid + ' is listening');
48
+ workersOnline += 1;
49
+ if (workersOnline === 1) {
50
+ worker.send(constants_1.UP_SIGNAL);
51
+ }
52
+ };
53
+ const GRACEFULLY_SHUTDOWN_TIMEOUT_S = 30;
54
+ const SIGINT_TIMEOUT_S = 1;
55
+ const handleSignal = (timeout) => (signal) => {
56
+ // For each worker, let's try to kill it gracefully
57
+ Object.values(cluster_1.default.workers).forEach((worker) => worker === null || worker === void 0 ? void 0 : worker.kill(signal));
58
+ // Let's raise the flag to kill the master process after all workers have died
59
+ handledSignal = signal;
60
+ // Let's wait for all in-flight requests finish before send any kill signal
61
+ const waitTimeToForceKill = timeout * 1e3;
62
+ // Force workers and master to die after a graceful timeout
63
+ setTimeout(() => {
64
+ Object.values(cluster_1.default.workers).forEach((worker) => worker === null || worker === void 0 ? void 0 : worker.process.kill('SIGKILL'));
65
+ process.exit(os_1.constants.signals[signal]);
66
+ }, waitTimeToForceKill);
67
+ };
68
+ exports.startMaster = (service) => {
69
+ const { workers: numWorkers, timeout = GRACEFULLY_SHUTDOWN_TIMEOUT_S } = service;
70
+ if (service.deterministicVary) {
71
+ process.env.DETERMINISTIC_VARY = 'true';
72
+ }
73
+ // Setup dubugger
74
+ if (constants_1.LINKED) {
75
+ cluster_1.default.setupMaster({ inspectPort: constants_1.INSPECT_DEBUGGER_PORT });
76
+ }
77
+ const shutdownTimeout = Math.max(GRACEFULLY_SHUTDOWN_TIMEOUT_S, timeout);
78
+ console.log(`Spawning ${numWorkers} workers`);
79
+ console.log(`Using ${shutdownTimeout} seconds as worker graceful shutdown timeout`);
80
+ for (let i = 0; i < numWorkers; i++) {
81
+ cluster_1.default.fork();
82
+ }
83
+ cluster_1.default.on('online', onOnline);
84
+ cluster_1.default.on('exit', onExit);
85
+ cluster_1.default.on('message', onMessage);
86
+ process.on('SIGINT', handleSignal(SIGINT_TIMEOUT_S));
87
+ process.on('SIGTERM', handleSignal(shutdownTimeout));
88
+ };
@@ -0,0 +1,2 @@
1
+ import { ServiceContext } from '../worker/runtime/typings';
2
+ export declare const addRequestMetricsMiddleware: () => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addRequestMetricsMiddleware = void 0;
4
+ const stream_1 = require("stream");
5
+ const utils_1 = require("../../utils");
6
+ const instruments_1 = require("../tracing/metrics/instruments");
7
+ exports.addRequestMetricsMiddleware = () => {
8
+ const concurrentRequests = instruments_1.createConcurrentRequestsInstrument();
9
+ const requestTimings = instruments_1.createRequestsTimingsInstrument();
10
+ const totalRequests = instruments_1.createTotalRequestsInstrument();
11
+ const responseSizes = instruments_1.createRequestsResponseSizesInstrument();
12
+ const abortedRequests = instruments_1.createTotalAbortedRequestsInstrument();
13
+ return async function addRequestMetrics(ctx, next) {
14
+ const start = process.hrtime();
15
+ concurrentRequests.inc(1);
16
+ ctx.req.once('aborted', () => abortedRequests.inc({ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName }, 1));
17
+ let responseClosed = false;
18
+ ctx.res.once('close', () => (responseClosed = true));
19
+ try {
20
+ await next();
21
+ }
22
+ finally {
23
+ const responseLength = ctx.response.length;
24
+ if (responseLength) {
25
+ responseSizes.observe({ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName }, responseLength);
26
+ }
27
+ totalRequests.inc({
28
+ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName,
29
+ ["status_code" /* STATUS_CODE */]: ctx.response.status,
30
+ }, 1);
31
+ const onResFinished = () => {
32
+ requestTimings.observe({
33
+ ["handler" /* REQUEST_HANDLER */]: ctx.requestHandlerName,
34
+ }, utils_1.hrToMillisFloat(process.hrtime(start)));
35
+ concurrentRequests.dec(1);
36
+ };
37
+ if (responseClosed) {
38
+ onResFinished();
39
+ }
40
+ else {
41
+ stream_1.finished(ctx.res, onResFinished);
42
+ }
43
+ }
44
+ };
45
+ };
@@ -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,49 @@
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
+ exports.TracerSingleton = void 0;
7
+ const jaeger_client_1 = require("jaeger-client");
8
+ const prom_client_1 = __importDefault(require("prom-client"));
9
+ const constants_1 = require("../../constants");
10
+ const utils_1 = require("../../utils");
11
+ class TracerSingleton {
12
+ static getTracer() {
13
+ if (!TracerSingleton.singleton) {
14
+ TracerSingleton.singleton = TracerSingleton.initServiceTracer();
15
+ }
16
+ return TracerSingleton.singleton;
17
+ }
18
+ static initServiceTracer() {
19
+ return TracerSingleton.createJaegerTracer(utils_1.appIdToAppAtMajor(constants_1.APP.ID), {
20
+ ["app.linked" /* VTEX_APP_LINKED */]: constants_1.LINKED,
21
+ ["app.node_vtex_api_version" /* VTEX_APP_NODE_VTEX_API_VERSION */]: constants_1.NODE_VTEX_API_VERSION,
22
+ ["app.production" /* VTEX_APP_PRODUCTION */]: constants_1.PRODUCTION,
23
+ ["app.region" /* VTEX_APP_REGION */]: constants_1.REGION,
24
+ ["app.version" /* VTEX_APP_VERSION */]: constants_1.APP.VERSION,
25
+ ["app.workspace" /* VTEX_APP_WORKSPACE */]: constants_1.WORKSPACE,
26
+ ["app.node_env" /* VTEX_APP_NODE_ENV */]: constants_1.NODE_ENV !== null && constants_1.NODE_ENV !== void 0 ? constants_1.NODE_ENV : 'undefined',
27
+ });
28
+ }
29
+ static createJaegerTracer(serviceName, defaultTags) {
30
+ const config = {
31
+ reporter: {
32
+ agentHost: process.env.VTEX_OWN_NODE_IP,
33
+ },
34
+ serviceName,
35
+ };
36
+ const options = {
37
+ /**
38
+ * Jaeger metric names are available in:
39
+ * https://github.com/jaegertracing/jaeger-client-node/blob/master/src/metrics/metrics.js
40
+ *
41
+ * Runtime will prefix these metrics with 'runtime:'
42
+ */
43
+ metrics: new jaeger_client_1.PrometheusMetricsFactory(prom_client_1.default, 'runtime'),
44
+ tags: defaultTags,
45
+ };
46
+ return jaeger_client_1.initTracer(config, options);
47
+ }
48
+ }
49
+ 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,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES = exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX = exports.REQUEST_RESPONSE_SIZES = exports.REQUEST_TIMINGS = exports.REQUESTS_ABORTED = exports.REQUESTS_TOTAL = exports.CONCURRENT_REQUESTS = void 0;
4
+ exports.CONCURRENT_REQUESTS = {
5
+ name: 'io_http_requests_current',
6
+ help: 'The current number of requests in course.',
7
+ type: "gauge" /* GAUGE */,
8
+ };
9
+ exports.REQUESTS_TOTAL = {
10
+ name: 'runtime_http_requests_total',
11
+ help: 'The total number of HTTP requests.',
12
+ labelNames: ["status_code" /* STATUS_CODE */, "handler" /* REQUEST_HANDLER */],
13
+ type: "counter" /* COUNTER */,
14
+ };
15
+ exports.REQUESTS_ABORTED = {
16
+ name: 'runtime_http_aborted_requests_total',
17
+ help: 'The total number of HTTP requests aborted.',
18
+ labelNames: ["handler" /* REQUEST_HANDLER */],
19
+ type: "counter" /* COUNTER */,
20
+ };
21
+ exports.REQUEST_TIMINGS = {
22
+ name: 'runtime_http_requests_duration_milliseconds',
23
+ help: 'The incoming http requests total duration.',
24
+ labelNames: ["handler" /* REQUEST_HANDLER */],
25
+ buckets: [10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120],
26
+ type: "histogram" /* HISTOGRAM */,
27
+ };
28
+ exports.REQUEST_RESPONSE_SIZES = {
29
+ name: 'runtime_http_response_size_bytes',
30
+ help: `The outgoing response sizes (only applicable when the response isn't a stream).`,
31
+ labelNames: ["handler" /* REQUEST_HANDLER */],
32
+ buckets: [500, 2000, 8000, 16000, 64000, 256000, 1024000, 4096000],
33
+ type: "histogram" /* HISTOGRAM */,
34
+ };
35
+ exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX = {
36
+ name: 'runtime_event_loop_lag_max_between_scrapes_seconds',
37
+ help: 'The max event loop lag that occurred between this and the previous scrape',
38
+ type: "gauge" /* GAUGE */,
39
+ };
40
+ exports.BETWEEN_SCRAPES_EVENT_LOOP_LAG_PERCENTILES = {
41
+ name: 'runtime_event_loop_lag_percentiles_between_scrapes_seconds',
42
+ help: 'Event loop lag percentiles from the observations that occurred between this and the previous scrape',
43
+ labelNames: ["percentile" /* PERCENTILE */],
44
+ type: "gauge" /* GAUGE */,
45
+ };
@@ -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,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEventLoopLagPercentilesInstrument = exports.createEventLoopLagMaxInstrument = exports.createConcurrentRequestsInstrument = exports.createRequestsResponseSizesInstrument = exports.createRequestsTimingsInstrument = exports.createTotalAbortedRequestsInstrument = exports.createTotalRequestsInstrument = void 0;
4
+ const prom_client_1 = require("prom-client");
5
+ const MetricNames_1 = require("./MetricNames");
6
+ exports.createTotalRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_TOTAL);
7
+ exports.createTotalAbortedRequestsInstrument = () => new prom_client_1.Counter(MetricNames_1.REQUESTS_ABORTED);
8
+ exports.createRequestsTimingsInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_TIMINGS);
9
+ exports.createRequestsResponseSizesInstrument = () => new prom_client_1.Histogram(MetricNames_1.REQUEST_RESPONSE_SIZES);
10
+ exports.createConcurrentRequestsInstrument = () => new prom_client_1.Gauge(MetricNames_1.CONCURRENT_REQUESTS);
11
+ exports.createEventLoopLagMaxInstrument = () => new prom_client_1.Gauge(MetricNames_1.BETWEEN_SCRAPES_EVENT_LOOP_LAG_MAX);
12
+ 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,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventLoopLagMeasurer = void 0;
4
+ const perf_hooks_1 = require("perf_hooks");
5
+ const utils_1 = require("../../../../utils");
6
+ const instruments_1 = require("../instruments");
7
+ class EventLoopLagMeasurer {
8
+ constructor() {
9
+ this.eventLoopDelayMonitor = perf_hooks_1.monitorEventLoopDelay({ resolution: 10 });
10
+ this.percentilesInstrument = instruments_1.createEventLoopLagPercentilesInstrument();
11
+ this.maxInstrument = instruments_1.createEventLoopLagMaxInstrument();
12
+ }
13
+ start() {
14
+ this.eventLoopDelayMonitor.enable();
15
+ }
16
+ async updateInstrumentsAndReset() {
17
+ this.maxInstrument.set(utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.max));
18
+ this.setPercentileObservation(95);
19
+ this.setPercentileObservation(99);
20
+ this.eventLoopDelayMonitor.reset();
21
+ }
22
+ setPercentileObservation(percentile) {
23
+ this.percentilesInstrument.set({ ["percentile" /* PERCENTILE */]: percentile }, utils_1.nanosecondsToSeconds(this.eventLoopDelayMonitor.percentile(percentile)));
24
+ }
25
+ }
26
+ 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, next: () => Promise<void>) => Promise<void>;
4
+ export declare const nameSpanOperationMiddleware: (operationType: string, operationName: string) => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
5
+ export declare const traceUserLandRemainingPipelineMiddleware: () => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traceUserLandRemainingPipelineMiddleware = exports.nameSpanOperationMiddleware = exports.addTracingMiddleware = void 0;
4
+ const opentracing_1 = require("opentracing");
5
+ const stream_1 = require("stream");
6
+ const constants_1 = require("../../constants");
7
+ const tracing_1 = require("../../tracing");
8
+ const Tags_1 = require("../../tracing/Tags");
9
+ const utils_1 = require("../../tracing/utils");
10
+ const utils_2 = require("../../utils");
11
+ const PATHS_BLACKLISTED_FOR_TRACING = ['/_status', '/healthcheck'];
12
+ exports.addTracingMiddleware = (tracer) => {
13
+ return async function addTracing(ctx, next) {
14
+ var _a;
15
+ const rootSpan = tracer.extract(opentracing_1.FORMAT_HTTP_HEADERS, ctx.request.headers);
16
+ ctx.tracing = { tracer, currentSpan: undefined };
17
+ if (!shouldTrace(ctx, rootSpan)) {
18
+ await next();
19
+ return;
20
+ }
21
+ const currentSpan = tracer.startSpan('unknown-operation', {
22
+ childOf: rootSpan,
23
+ tags: { [Tags_1.OpentracingTags.SPAN_KIND]: Tags_1.OpentracingTags.SPAN_KIND_RPC_SERVER },
24
+ });
25
+ const initialSamplingDecision = tracing_1.getTraceInfo(currentSpan).isSampled;
26
+ ctx.tracing = { currentSpan, tracer };
27
+ let responseClosed = false;
28
+ ctx.res.once('close', () => (responseClosed = true));
29
+ try {
30
+ await next();
31
+ }
32
+ catch (err) {
33
+ if (!(err instanceof Error)) {
34
+ throw err;
35
+ }
36
+ tracing_1.ErrorReport.create({ originalError: err }).injectOnSpan(currentSpan, (_a = ctx.vtex) === null || _a === void 0 ? void 0 : _a.logger);
37
+ throw err;
38
+ }
39
+ finally {
40
+ const traceInfo = tracing_1.getTraceInfo(currentSpan);
41
+ if (traceInfo === null || traceInfo === void 0 ? void 0 : traceInfo.isSampled) {
42
+ if (!initialSamplingDecision) {
43
+ currentSpan === null || currentSpan === void 0 ? void 0 : currentSpan.setTag(Tags_1.OpentracingTags.SPAN_KIND, Tags_1.OpentracingTags.SPAN_KIND_RPC_SERVER);
44
+ }
45
+ currentSpan === null || currentSpan === void 0 ? void 0 : currentSpan.addTags({
46
+ [Tags_1.OpentracingTags.HTTP_URL]: ctx.request.href,
47
+ [Tags_1.OpentracingTags.HTTP_METHOD]: ctx.request.method,
48
+ [Tags_1.OpentracingTags.HTTP_STATUS_CODE]: ctx.response.status,
49
+ ["http.path" /* HTTP_PATH */]: ctx.request.path,
50
+ ["vtex.request_id" /* VTEX_REQUEST_ID */]: ctx.get(constants_1.REQUEST_ID_HEADER),
51
+ ["vtex.incoming.workspace" /* VTEX_WORKSPACE */]: ctx.get(constants_1.WORKSPACE_HEADER),
52
+ ["vtex.incoming.account" /* VTEX_ACCOUNT */]: ctx.get(constants_1.ACCOUNT_HEADER),
53
+ });
54
+ currentSpan === null || currentSpan === void 0 ? void 0 : currentSpan.log(utils_1.cloneAndSanitizeHeaders(ctx.request.headers, 'req.headers.'));
55
+ currentSpan === null || currentSpan === void 0 ? void 0 : currentSpan.log(utils_1.cloneAndSanitizeHeaders(ctx.response.headers, 'res.headers.'));
56
+ ctx.set(constants_1.TRACE_ID_HEADER, traceInfo.traceId);
57
+ }
58
+ const onResFinished = () => {
59
+ currentSpan === null || currentSpan === void 0 ? void 0 : currentSpan.finish();
60
+ };
61
+ if (responseClosed) {
62
+ onResFinished();
63
+ }
64
+ else {
65
+ stream_1.finished(ctx.res, onResFinished);
66
+ }
67
+ }
68
+ };
69
+ };
70
+ exports.nameSpanOperationMiddleware = (operationType, operationName) => {
71
+ return function nameSpanOperation(ctx, next) {
72
+ var _a, _b;
73
+ ctx.requestHandlerName = `${operationType}:${operationName}`;
74
+ (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
75
+ return next();
76
+ };
77
+ };
78
+ exports.traceUserLandRemainingPipelineMiddleware = () => {
79
+ return async function traceUserLandRemainingPipeline(ctx, next) {
80
+ const tracingCtx = ctx.tracing;
81
+ ctx.tracing = undefined;
82
+ const span = tracingCtx === null || tracingCtx === void 0 ? void 0 : tracingCtx.currentSpan;
83
+ const userLandTracer = ctx.vtex.tracer;
84
+ userLandTracer.setFallbackSpan(span);
85
+ userLandTracer.lockFallbackSpan();
86
+ const startTime = process.hrtime();
87
+ try {
88
+ span === null || span === void 0 ? void 0 : span.log({ event: "user-middlewares-start" /* USER_MIDDLEWARES_START */ });
89
+ await next();
90
+ }
91
+ catch (err) {
92
+ if (!(err instanceof Error)) {
93
+ throw err;
94
+ }
95
+ tracing_1.ErrorReport.create({ originalError: err }).injectOnSpan(span, ctx.vtex.logger);
96
+ throw err;
97
+ }
98
+ finally {
99
+ span === null || span === void 0 ? void 0 : span.log({
100
+ event: "user-middlewares-finish" /* USER_MIDDLEWARES_FINISH */,
101
+ ["user-middlewares-duration" /* USER_MIDDLEWARES_DURATION */]: utils_2.hrToMillis(process.hrtime(startTime)),
102
+ });
103
+ ctx.tracing = tracingCtx;
104
+ }
105
+ };
106
+ };
107
+ function shouldTrace(ctx, rootSpan) {
108
+ var _a, _b, _c;
109
+ /** Should trace if path isnt blacklisted and sampling decision came from the edge
110
+ * ((rootSpan as any).isSampled. returns whether or not this span context was sampled
111
+ * There is a cast to bypass opentracing typescript
112
+ */
113
+ return !PATHS_BLACKLISTED_FOR_TRACING.includes(ctx.request.path) && ((_c = (_b = (_a = rootSpan).isSampled) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : false);
114
+ }
@@ -0,0 +1,11 @@
1
+ import Koa from 'koa';
2
+ import { MetricsAccumulator } from '../../metrics/MetricsAccumulator';
3
+ import { ServiceJSON } from './runtime/typings';
4
+ export declare const startWorker: (serviceJSON: ServiceJSON) => Koa<Koa.DefaultState, Koa.DefaultContext>;
5
+ declare global {
6
+ namespace NodeJS {
7
+ interface Global {
8
+ metrics: MetricsAccumulator;
9
+ }
10
+ }
11
+ }