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

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 (440) hide show
  1. package/gen/manifest.schema +5 -3
  2. package/lib/HttpClient/GraphQLClient.d.ts +3 -2
  3. package/lib/HttpClient/GraphQLClient.js +5 -1
  4. package/lib/HttpClient/HttpClient.d.ts +9 -7
  5. package/lib/HttpClient/HttpClient.js +70 -27
  6. package/lib/HttpClient/agents.d.ts +6 -0
  7. package/lib/HttpClient/agents.js +43 -0
  8. package/lib/HttpClient/index.d.ts +1 -7
  9. package/lib/HttpClient/index.js +22 -16
  10. package/lib/HttpClient/middlewares/cache.d.ts +9 -3
  11. package/lib/HttpClient/middlewares/cache.js +130 -35
  12. package/lib/HttpClient/middlewares/cancellationToken.d.ts +2 -2
  13. package/lib/HttpClient/middlewares/cancellationToken.js +5 -2
  14. package/lib/HttpClient/middlewares/inflight.d.ts +1 -1
  15. package/lib/HttpClient/middlewares/inflight.js +7 -3
  16. package/lib/HttpClient/middlewares/memoization.d.ts +1 -1
  17. package/lib/HttpClient/middlewares/memoization.js +13 -4
  18. package/lib/HttpClient/middlewares/metrics.js +25 -38
  19. package/lib/HttpClient/middlewares/notFound.d.ts +1 -1
  20. package/lib/HttpClient/middlewares/notFound.js +5 -2
  21. package/lib/HttpClient/middlewares/recorder.d.ts +1 -1
  22. package/lib/HttpClient/middlewares/recorder.js +21 -12
  23. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +11 -0
  24. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +31 -0
  25. package/lib/HttpClient/middlewares/request/index.d.ts +18 -0
  26. package/lib/HttpClient/middlewares/request/index.js +88 -0
  27. package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +1 -0
  28. package/lib/HttpClient/middlewares/request/setupAxios/index.js +22 -0
  29. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +2 -0
  30. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +55 -0
  31. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +2 -0
  32. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +8 -0
  33. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +8 -0
  34. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +56 -0
  35. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +4 -0
  36. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +32 -0
  37. package/lib/HttpClient/middlewares/tracing.d.ts +15 -0
  38. package/lib/HttpClient/middlewares/tracing.js +62 -0
  39. package/lib/HttpClient/typings.d.ts +46 -12
  40. package/lib/HttpClient/typings.js +1 -0
  41. package/lib/caches/DiskCache.d.ts +1 -1
  42. package/lib/caches/DiskCache.js +3 -2
  43. package/lib/caches/LRUCache.d.ts +3 -3
  44. package/lib/caches/LRUCache.js +6 -1
  45. package/lib/caches/LRUDiskCache.d.ts +2 -2
  46. package/lib/caches/LRUDiskCache.js +8 -3
  47. package/lib/caches/MultilayeredCache.d.ts +2 -2
  48. package/lib/caches/MultilayeredCache.js +8 -7
  49. package/lib/caches/index.js +20 -7
  50. package/lib/caches/typings.d.ts +5 -5
  51. package/lib/clients/IOClient.d.ts +13 -0
  52. package/lib/clients/IOClient.js +20 -0
  53. package/lib/clients/IOClients.d.ts +29 -25
  54. package/lib/clients/IOClients.js +36 -28
  55. package/lib/{HttpClient → clients}/IOGraphQLClient.d.ts +4 -4
  56. package/lib/{HttpClient → clients}/IOGraphQLClient.js +3 -2
  57. package/lib/{HttpClient → clients/apps}/AppClient.d.ts +3 -3
  58. package/lib/{HttpClient → clients/apps}/AppClient.js +11 -5
  59. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.d.ts +3 -3
  60. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.js +11 -5
  61. package/lib/clients/apps/Billing.d.ts +12 -0
  62. package/lib/clients/{Billing.js → apps/Billing.js} +9 -3
  63. package/lib/clients/{Builder.d.ts → apps/Builder.d.ts} +12 -11
  64. package/lib/clients/{Builder.js → apps/Builder.js} +51 -23
  65. package/lib/clients/apps/MessagesGraphQL.d.ts +61 -0
  66. package/lib/clients/apps/MessagesGraphQL.js +122 -0
  67. package/lib/clients/{Settings.d.ts → apps/Settings.d.ts} +5 -4
  68. package/lib/clients/apps/Settings.js +39 -0
  69. package/lib/clients/apps/catalogGraphQL/brand.d.ts +13 -0
  70. package/lib/clients/apps/catalogGraphQL/brand.js +19 -0
  71. package/lib/clients/apps/catalogGraphQL/category.d.ts +11 -0
  72. package/lib/clients/apps/catalogGraphQL/category.js +17 -0
  73. package/lib/clients/apps/catalogGraphQL/index.d.ts +22 -0
  74. package/lib/clients/apps/catalogGraphQL/index.js +89 -0
  75. package/lib/clients/apps/catalogGraphQL/product.d.ts +25 -0
  76. package/lib/clients/apps/catalogGraphQL/product.js +31 -0
  77. package/lib/clients/apps/catalogGraphQL/sku.d.ts +26 -0
  78. package/lib/clients/apps/catalogGraphQL/sku.js +31 -0
  79. package/lib/clients/apps/index.d.ts +7 -0
  80. package/lib/clients/apps/index.js +23 -0
  81. package/lib/{HttpClient → clients/external}/ExternalClient.d.ts +3 -3
  82. package/lib/{HttpClient → clients/external}/ExternalClient.js +10 -2
  83. package/lib/clients/external/ID.d.ts +23 -0
  84. package/lib/clients/external/ID.js +61 -0
  85. package/lib/clients/external/Masterdata.d.ts +94 -0
  86. package/lib/clients/external/Masterdata.js +225 -0
  87. package/lib/clients/external/PaymentProvider.d.ts +31 -0
  88. package/lib/clients/external/PaymentProvider.js +43 -0
  89. package/lib/clients/external/index.d.ts +4 -0
  90. package/lib/clients/external/index.js +20 -0
  91. package/lib/clients/index.d.ts +9 -21
  92. package/lib/clients/index.js +27 -24
  93. package/lib/clients/infra/Apps.d.ts +93 -0
  94. package/lib/clients/infra/Apps.js +511 -0
  95. package/lib/clients/infra/Assets.d.ts +35 -0
  96. package/lib/clients/infra/Assets.js +166 -0
  97. package/lib/clients/infra/BillingMetrics.d.ts +13 -0
  98. package/lib/clients/infra/BillingMetrics.js +16 -0
  99. package/lib/clients/infra/Events.d.ts +12 -0
  100. package/lib/clients/infra/Events.js +34 -0
  101. package/lib/clients/infra/Housekeeper.d.ts +10 -0
  102. package/lib/clients/infra/Housekeeper.js +31 -0
  103. package/lib/{HttpClient → clients/infra}/InfraClient.d.ts +3 -3
  104. package/lib/{HttpClient → clients/infra}/InfraClient.js +10 -4
  105. package/lib/clients/infra/Registry.d.ts +65 -0
  106. package/lib/clients/infra/Registry.js +209 -0
  107. package/lib/clients/infra/Router.d.ts +34 -0
  108. package/lib/clients/infra/Router.js +82 -0
  109. package/lib/clients/infra/Sphinx.d.ts +13 -0
  110. package/lib/clients/infra/Sphinx.js +30 -0
  111. package/lib/clients/infra/VBase.d.ts +61 -0
  112. package/lib/clients/infra/VBase.js +197 -0
  113. package/lib/clients/infra/Workspaces.d.ts +18 -0
  114. package/lib/clients/infra/Workspaces.js +66 -0
  115. package/lib/clients/infra/index.d.ts +11 -0
  116. package/lib/clients/infra/index.js +27 -0
  117. package/lib/{HttpClient → clients/janus}/JanusClient.d.ts +4 -4
  118. package/lib/{HttpClient → clients/janus}/JanusClient.js +8 -3
  119. package/lib/clients/janus/LicenseManager.d.ts +7 -0
  120. package/lib/clients/janus/LicenseManager.js +59 -0
  121. package/lib/clients/{Segment.d.ts → janus/Segment.d.ts} +7 -11
  122. package/lib/clients/janus/Segment.js +89 -0
  123. package/lib/clients/{Session.d.ts → janus/Session.d.ts} +4 -4
  124. package/lib/clients/{Session.js → janus/Session.js} +25 -13
  125. package/lib/clients/{Tenant.d.ts → janus/Tenant.d.ts} +7 -8
  126. package/lib/clients/janus/Tenant.js +29 -0
  127. package/lib/clients/janus/index.d.ts +5 -0
  128. package/lib/clients/janus/index.js +21 -0
  129. package/lib/constants.d.ts +50 -2
  130. package/lib/constants.js +55 -1
  131. package/lib/errors/AuthenticationError.js +1 -0
  132. package/lib/errors/ForbiddenError.js +1 -0
  133. package/lib/errors/NotFoundError.js +1 -0
  134. package/lib/errors/RequestCancelledError.js +1 -0
  135. package/lib/errors/ResolverError.d.ts +1 -1
  136. package/lib/errors/ResolverError.js +4 -3
  137. package/lib/errors/ResolverWarning.d.ts +1 -1
  138. package/lib/errors/ResolverWarning.js +3 -2
  139. package/lib/errors/TooManyRequestsError.js +1 -0
  140. package/lib/errors/UserInputError.js +1 -0
  141. package/lib/errors/index.js +22 -11
  142. package/lib/index.d.ts +9 -7
  143. package/lib/index.js +31 -16
  144. package/lib/metrics/MetricsAccumulator.d.ts +3 -20
  145. package/lib/metrics/MetricsAccumulator.js +44 -27
  146. package/lib/responses.d.ts +5 -46
  147. package/lib/service/index.d.ts +2 -0
  148. package/lib/service/index.js +35 -0
  149. package/lib/service/loaders.d.ts +8 -0
  150. package/lib/service/loaders.js +57 -0
  151. package/lib/service/logger/console.d.ts +10 -0
  152. package/lib/service/logger/console.js +40 -0
  153. package/lib/service/logger/index.d.ts +2 -28
  154. package/lib/service/logger/index.js +16 -68
  155. package/lib/service/logger/logger.d.ts +29 -0
  156. package/lib/service/logger/logger.js +62 -0
  157. package/lib/service/logger/metricsLogger.d.ts +40 -0
  158. package/lib/service/logger/metricsLogger.js +150 -0
  159. package/lib/service/master.d.ts +2 -0
  160. package/lib/service/master.js +89 -0
  161. package/lib/service/metrics/requestMetricsMiddleware.d.ts +2 -0
  162. package/lib/service/metrics/requestMetricsMiddleware.js +46 -0
  163. package/lib/service/tracing/TracerSingleton.d.ts +7 -0
  164. package/lib/service/tracing/TracerSingleton.js +49 -0
  165. package/lib/service/tracing/metrics/MetricNames.d.ts +60 -0
  166. package/lib/service/tracing/metrics/MetricNames.js +45 -0
  167. package/lib/service/tracing/metrics/instruments.d.ts +9 -0
  168. package/lib/service/tracing/metrics/instruments.js +19 -0
  169. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +9 -0
  170. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +26 -0
  171. package/lib/service/tracing/tracingMiddlewares.d.ts +5 -0
  172. package/lib/service/tracing/tracingMiddlewares.js +117 -0
  173. package/lib/service/worker/index.d.ts +11 -0
  174. package/lib/service/worker/index.js +197 -0
  175. package/lib/service/worker/listeners.d.ts +3 -0
  176. package/lib/{utils/unhandled.js → service/worker/listeners.js} +12 -16
  177. package/lib/service/{Service.d.ts → worker/runtime/Service.d.ts} +5 -5
  178. package/lib/service/{Service.js → worker/runtime/Service.js} +3 -1
  179. package/lib/service/worker/runtime/builtIn/handlers.d.ts +4 -0
  180. package/lib/service/worker/runtime/builtIn/handlers.js +34 -0
  181. package/lib/service/worker/runtime/builtIn/middlewares.d.ts +4 -0
  182. package/lib/service/worker/runtime/builtIn/middlewares.js +43 -0
  183. package/lib/service/worker/runtime/events/index.d.ts +4 -0
  184. package/lib/service/worker/runtime/events/index.js +48 -0
  185. package/lib/service/worker/runtime/events/middlewares/body.d.ts +3 -0
  186. package/lib/service/worker/runtime/events/middlewares/body.js +26 -0
  187. package/lib/service/worker/runtime/events/middlewares/context.d.ts +3 -0
  188. package/lib/service/worker/runtime/events/middlewares/context.js +23 -0
  189. package/lib/service/worker/runtime/events/router.d.ts +2 -0
  190. package/lib/service/worker/runtime/events/router.js +29 -0
  191. package/lib/service/worker/runtime/graphql/index.d.ts +6 -0
  192. package/lib/service/worker/runtime/graphql/index.js +29 -0
  193. package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +2 -0
  194. package/lib/service/worker/runtime/graphql/middlewares/context.js +17 -0
  195. package/lib/service/worker/runtime/graphql/middlewares/error.js +97 -0
  196. package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +3 -0
  197. package/lib/service/worker/runtime/graphql/middlewares/query.js +54 -0
  198. package/lib/service/worker/runtime/graphql/middlewares/response.js +39 -0
  199. package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +2 -0
  200. package/lib/service/worker/runtime/graphql/middlewares/run.js +21 -0
  201. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +5 -0
  202. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +30 -0
  203. package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +4 -0
  204. package/lib/service/{graphql → worker/runtime/graphql}/middlewares/upload.js +2 -1
  205. package/lib/service/worker/runtime/graphql/schema/index.d.ts +7 -0
  206. package/lib/service/worker/runtime/graphql/schema/index.js +33 -0
  207. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +6 -0
  208. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +81 -0
  209. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.d.ts +1 -0
  210. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.js +17 -10
  211. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +7 -0
  212. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +38 -0
  213. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +11 -0
  214. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +62 -0
  215. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +7 -0
  216. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +41 -0
  217. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.d.ts +1 -0
  218. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.js +7 -0
  219. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +6 -0
  220. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +35 -0
  221. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.d.ts +1 -0
  222. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.js +9 -3
  223. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +7 -0
  224. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +40 -0
  225. package/lib/service/{graphql/schema/schemaDirectives/Translatable.d.ts → worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts} +2 -1
  226. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +34 -0
  227. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +22 -0
  228. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +37 -0
  229. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +8 -0
  230. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +14 -0
  231. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.js +1 -0
  232. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.js +8 -3
  233. package/lib/service/worker/runtime/graphql/typings.d.ts +31 -0
  234. package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +2 -0
  235. package/lib/service/worker/runtime/graphql/utils/cacheControl.js +34 -0
  236. package/lib/service/worker/runtime/graphql/utils/error.d.ts +2 -0
  237. package/lib/service/worker/runtime/graphql/utils/error.js +78 -0
  238. package/lib/service/worker/runtime/graphql/utils/pathname.js +9 -0
  239. package/lib/service/worker/runtime/graphql/utils/translations.d.ts +14 -0
  240. package/lib/service/worker/runtime/graphql/utils/translations.js +42 -0
  241. package/lib/service/worker/runtime/http/index.d.ts +5 -0
  242. package/lib/service/worker/runtime/http/index.js +61 -0
  243. package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +3 -0
  244. package/lib/service/{http → worker/runtime/http}/middlewares/authTokens.js +1 -0
  245. package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +3 -0
  246. package/lib/service/{http → worker/runtime/http}/middlewares/cancellationToken.js +3 -1
  247. package/lib/service/worker/runtime/http/middlewares/clients.d.ts +4 -0
  248. package/lib/service/{http → worker/runtime/http}/middlewares/clients.js +1 -0
  249. package/lib/service/worker/runtime/http/middlewares/context.d.ts +4 -0
  250. package/lib/service/worker/runtime/http/middlewares/context.js +39 -0
  251. package/lib/service/worker/runtime/http/middlewares/error.d.ts +2 -0
  252. package/lib/service/{http → worker/runtime/http}/middlewares/error.js +29 -16
  253. package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +6 -0
  254. package/lib/service/worker/runtime/http/middlewares/rateLimit.js +43 -0
  255. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.d.ts +3 -3
  256. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.js +1 -0
  257. package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +3 -0
  258. package/lib/service/{http → worker/runtime/http}/middlewares/setCookie.js +6 -5
  259. package/lib/service/worker/runtime/http/middlewares/settings.d.ts +9 -0
  260. package/lib/service/worker/runtime/http/middlewares/settings.js +49 -0
  261. package/lib/service/worker/runtime/http/middlewares/timings.d.ts +3 -0
  262. package/lib/service/{http → worker/runtime/http}/middlewares/timings.js +25 -11
  263. package/lib/service/worker/runtime/http/middlewares/vary.d.ts +3 -0
  264. package/lib/service/{http → worker/runtime/http}/middlewares/vary.js +4 -3
  265. package/lib/service/worker/runtime/http/router.d.ts +2 -0
  266. package/lib/service/worker/runtime/http/router.js +25 -0
  267. package/lib/service/worker/runtime/http/routes.d.ts +19 -0
  268. package/lib/service/worker/runtime/http/routes.js +16 -0
  269. package/lib/service/worker/runtime/method.d.ts +9 -0
  270. package/lib/service/{method.js → worker/runtime/method.js} +2 -1
  271. package/lib/service/worker/runtime/statusTrack.d.ts +14 -0
  272. package/lib/service/worker/runtime/statusTrack.js +43 -0
  273. package/lib/service/worker/runtime/typings.d.ts +173 -0
  274. package/lib/service/worker/runtime/utils/compose.d.ts +5 -0
  275. package/lib/service/worker/runtime/utils/compose.js +14 -0
  276. package/lib/service/worker/runtime/utils/context.d.ts +5 -0
  277. package/lib/service/worker/runtime/utils/context.js +42 -0
  278. package/lib/service/worker/runtime/utils/diff.d.ts +12 -0
  279. package/lib/service/worker/runtime/utils/diff.js +22 -0
  280. package/lib/service/worker/runtime/utils/recorder.d.ts +8 -0
  281. package/lib/service/worker/runtime/utils/recorder.js +38 -0
  282. package/lib/service/worker/runtime/utils/toArray.js +5 -0
  283. package/lib/service/worker/runtime/utils/tokenBucket.d.ts +2 -0
  284. package/lib/service/worker/runtime/utils/tokenBucket.js +17 -0
  285. package/lib/tracing/LogEvents.d.ts +31 -0
  286. package/lib/{service/graphql/utils/array.js → tracing/LogEvents.js} +1 -1
  287. package/lib/tracing/LogFields.d.ts +66 -0
  288. package/lib/tracing/LogFields.js +3 -0
  289. package/lib/tracing/Tags.d.ts +81 -0
  290. package/lib/tracing/Tags.js +8 -0
  291. package/lib/tracing/UserLandTracer.d.ts +27 -0
  292. package/lib/tracing/UserLandTracer.js +58 -0
  293. package/lib/tracing/errorReporting/ErrorReport.d.ts +31 -0
  294. package/lib/tracing/errorReporting/ErrorReport.js +71 -0
  295. package/lib/tracing/index.d.ts +9 -0
  296. package/lib/tracing/index.js +20 -0
  297. package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +4 -0
  298. package/lib/tracing/spanReference/SpanReferenceTypes.js +8 -0
  299. package/lib/tracing/spanReference/createSpanReference.d.ts +3 -0
  300. package/lib/tracing/spanReference/createSpanReference.js +9 -0
  301. package/lib/tracing/utils.d.ts +13 -0
  302. package/lib/tracing/utils.js +42 -0
  303. package/lib/utils/MineWinsConflictsResolver.d.ts +7 -5
  304. package/lib/utils/MineWinsConflictsResolver.js +40 -22
  305. package/lib/utils/app.d.ts +3 -1
  306. package/lib/utils/app.js +40 -21
  307. package/lib/utils/appsStaleIfError.d.ts +2 -1
  308. package/lib/utils/appsStaleIfError.js +33 -12
  309. package/lib/utils/billingOptions.d.ts +36 -3
  310. package/lib/utils/billingOptions.js +9 -3
  311. package/lib/utils/binding.d.ts +3 -3
  312. package/lib/utils/binding.js +5 -2
  313. package/lib/utils/cancel.d.ts +2 -2
  314. package/lib/utils/cancel.js +3 -1
  315. package/lib/utils/conflicts.mock.d.ts +17 -0
  316. package/lib/utils/conflicts.mock.js +28 -0
  317. package/lib/utils/domain.js +2 -1
  318. package/lib/utils/error.js +6 -4
  319. package/lib/utils/index.js +23 -12
  320. package/lib/utils/json.js +1 -0
  321. package/lib/utils/log.d.ts +1 -3
  322. package/lib/utils/log.js +6 -4
  323. package/lib/utils/message.js +11 -4
  324. package/lib/utils/renameBy.js +3 -1
  325. package/lib/utils/retry.js +10 -7
  326. package/lib/utils/status.js +3 -1
  327. package/lib/utils/tenant.d.ts +3 -3
  328. package/lib/utils/tenant.js +5 -2
  329. package/lib/utils/throwOnGraphQLErrors.js +1 -0
  330. package/lib/utils/time.d.ts +7 -7
  331. package/lib/utils/time.js +29 -12
  332. package/package.json +3 -3
  333. package/lib/HttpClient/IOClient.d.ts +0 -13
  334. package/lib/HttpClient/IOClient.js +0 -14
  335. package/lib/HttpClient/factories/index.d.ts +0 -8
  336. package/lib/HttpClient/factories/index.js +0 -31
  337. package/lib/HttpClient/middlewares/request.d.ts +0 -10
  338. package/lib/HttpClient/middlewares/request.js +0 -87
  339. package/lib/IODataSource.d.ts +0 -27
  340. package/lib/IODataSource.js +0 -46
  341. package/lib/clients/Apps.d.ts +0 -84
  342. package/lib/clients/Apps.js +0 -326
  343. package/lib/clients/Assets.d.ts +0 -21
  344. package/lib/clients/Assets.js +0 -110
  345. package/lib/clients/Billing.d.ts +0 -11
  346. package/lib/clients/BillingMetrics.d.ts +0 -12
  347. package/lib/clients/BillingMetrics.js +0 -10
  348. package/lib/clients/Events.d.ts +0 -6
  349. package/lib/clients/Events.js +0 -19
  350. package/lib/clients/Housekeeper.d.ts +0 -11
  351. package/lib/clients/Housekeeper.js +0 -24
  352. package/lib/clients/ID.d.ts +0 -22
  353. package/lib/clients/ID.js +0 -48
  354. package/lib/clients/LicenseManager.d.ts +0 -6
  355. package/lib/clients/LicenseManager.js +0 -43
  356. package/lib/clients/Logger.d.ts +0 -27
  357. package/lib/clients/Logger.js +0 -32
  358. package/lib/clients/Messages.d.ts +0 -18
  359. package/lib/clients/Messages.js +0 -20
  360. package/lib/clients/MessagesGraphQL.d.ts +0 -63
  361. package/lib/clients/MessagesGraphQL.js +0 -50
  362. package/lib/clients/Metadata.d.ts +0 -25
  363. package/lib/clients/Metadata.js +0 -53
  364. package/lib/clients/Registry.d.ts +0 -61
  365. package/lib/clients/Registry.js +0 -147
  366. package/lib/clients/Router.d.ts +0 -33
  367. package/lib/clients/Router.js +0 -50
  368. package/lib/clients/Segment.js +0 -69
  369. package/lib/clients/Settings.js +0 -44
  370. package/lib/clients/Sphinx.d.ts +0 -12
  371. package/lib/clients/Sphinx.js +0 -19
  372. package/lib/clients/Tenant.js +0 -13
  373. package/lib/clients/VBase.d.ts +0 -57
  374. package/lib/clients/VBase.js +0 -116
  375. package/lib/clients/Workspaces.d.ts +0 -17
  376. package/lib/clients/Workspaces.js +0 -38
  377. package/lib/service/Runtime.d.ts +0 -18
  378. package/lib/service/Runtime.js +0 -57
  379. package/lib/service/events/index.d.ts +0 -3
  380. package/lib/service/events/index.js +0 -21
  381. package/lib/service/graphql/index.d.ts +0 -7
  382. package/lib/service/graphql/index.js +0 -33
  383. package/lib/service/graphql/middlewares/error.js +0 -107
  384. package/lib/service/graphql/middlewares/formatters.d.ts +0 -2
  385. package/lib/service/graphql/middlewares/formatters.js +0 -64
  386. package/lib/service/graphql/middlewares/query.d.ts +0 -2
  387. package/lib/service/graphql/middlewares/query.js +0 -32
  388. package/lib/service/graphql/middlewares/response.js +0 -36
  389. package/lib/service/graphql/middlewares/run.d.ts +0 -4
  390. package/lib/service/graphql/middlewares/run.js +0 -55
  391. package/lib/service/graphql/middlewares/schema.d.ts +0 -2
  392. package/lib/service/graphql/middlewares/schema.js +0 -8
  393. package/lib/service/graphql/middlewares/timings.d.ts +0 -2
  394. package/lib/service/graphql/middlewares/timings.js +0 -10
  395. package/lib/service/graphql/middlewares/upload.d.ts +0 -7
  396. package/lib/service/graphql/schema/index.d.ts +0 -3
  397. package/lib/service/graphql/schema/index.js +0 -66
  398. package/lib/service/graphql/schema/messagesLoader.d.ts +0 -4
  399. package/lib/service/graphql/schema/messagesLoader.js +0 -41
  400. package/lib/service/graphql/schema/messagesLoaderV2.d.ts +0 -5
  401. package/lib/service/graphql/schema/messagesLoaderV2.js +0 -44
  402. package/lib/service/graphql/schema/schemaDirectives/Translatable.js +0 -54
  403. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.d.ts +0 -13
  404. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.js +0 -67
  405. package/lib/service/graphql/schema/schemaDirectives/index.d.ts +0 -13
  406. package/lib/service/graphql/schema/schemaDirectives/index.js +0 -17
  407. package/lib/service/graphql/schema/typeDefs/index.d.ts +0 -16
  408. package/lib/service/graphql/schema/typeDefs/index.js +0 -21
  409. package/lib/service/graphql/schema/typeDefs/ioMessage.d.ts +0 -8
  410. package/lib/service/graphql/schema/typeDefs/ioMessage.js +0 -33
  411. package/lib/service/graphql/typings.d.ts +0 -21
  412. package/lib/service/graphql/utils/cacheControl.d.ts +0 -6
  413. package/lib/service/graphql/utils/cacheControl.js +0 -38
  414. package/lib/service/graphql/utils/maxAgeEnum.d.ts +0 -6
  415. package/lib/service/graphql/utils/maxAgeEnum.js +0 -17
  416. package/lib/service/graphql/utils/pathname.js +0 -7
  417. package/lib/service/http/index.d.ts +0 -3
  418. package/lib/service/http/index.js +0 -18
  419. package/lib/service/http/middlewares/authTokens.d.ts +0 -3
  420. package/lib/service/http/middlewares/cancellationToken.d.ts +0 -3
  421. package/lib/service/http/middlewares/clients.d.ts +0 -4
  422. package/lib/service/http/middlewares/error.d.ts +0 -3
  423. package/lib/service/http/middlewares/setCookie.d.ts +0 -3
  424. package/lib/service/http/middlewares/timings.d.ts +0 -3
  425. package/lib/service/http/middlewares/vary.d.ts +0 -3
  426. package/lib/service/method.d.ts +0 -9
  427. package/lib/service/typings.d.ts +0 -139
  428. package/lib/service/utils/compose.d.ts +0 -4
  429. package/lib/service/utils/compose.js +0 -11
  430. package/lib/utils/MineWinsConflictsResolver.test.d.ts +0 -1
  431. package/lib/utils/MineWinsConflictsResolver.test.js +0 -134
  432. package/lib/utils/unhandled.d.ts +0 -1
  433. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/error.d.ts +0 -0
  434. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/response.d.ts +0 -0
  435. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.d.ts +0 -0
  436. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.d.ts +0 -0
  437. /package/lib/service/{graphql → worker/runtime/graphql}/typings.js +0 -0
  438. /package/lib/service/{graphql → worker/runtime/graphql}/utils/pathname.d.ts +0 -0
  439. /package/lib/service/{typings.js → worker/runtime/typings.js} +0 -0
  440. /package/lib/service/{graphql/utils/array.d.ts → worker/runtime/utils/toArray.d.ts} +0 -0
@@ -0,0 +1,117 @@
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
+ const 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 = (0, 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 = (0, 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" /* CustomHttpTags.HTTP_PATH */]: ctx.request.path,
50
+ ["vtex.request_id" /* VTEXIncomingRequestTags.VTEX_REQUEST_ID */]: ctx.get(constants_1.REQUEST_ID_HEADER),
51
+ ["vtex.incoming.workspace" /* VTEXIncomingRequestTags.VTEX_WORKSPACE */]: ctx.get(constants_1.WORKSPACE_HEADER),
52
+ ["vtex.incoming.account" /* VTEXIncomingRequestTags.VTEX_ACCOUNT */]: ctx.get(constants_1.ACCOUNT_HEADER),
53
+ });
54
+ currentSpan === null || currentSpan === void 0 ? void 0 : currentSpan.log((0, utils_1.cloneAndSanitizeHeaders)(ctx.request.headers, 'req.headers.'));
55
+ currentSpan === null || currentSpan === void 0 ? void 0 : currentSpan.log((0, 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
+ (0, stream_1.finished)(ctx.res, onResFinished);
66
+ }
67
+ }
68
+ };
69
+ };
70
+ exports.addTracingMiddleware = addTracingMiddleware;
71
+ const nameSpanOperationMiddleware = (operationType, operationName) => {
72
+ return function nameSpanOperation(ctx, next) {
73
+ var _a, _b;
74
+ ctx.requestHandlerName = `${operationType}:${operationName}`;
75
+ (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
76
+ return next();
77
+ };
78
+ };
79
+ exports.nameSpanOperationMiddleware = nameSpanOperationMiddleware;
80
+ const traceUserLandRemainingPipelineMiddleware = () => {
81
+ return async function traceUserLandRemainingPipeline(ctx, next) {
82
+ const tracingCtx = ctx.tracing;
83
+ ctx.tracing = undefined;
84
+ const span = tracingCtx === null || tracingCtx === void 0 ? void 0 : tracingCtx.currentSpan;
85
+ const userLandTracer = ctx.vtex.tracer;
86
+ userLandTracer.setFallbackSpan(span);
87
+ userLandTracer.lockFallbackSpan();
88
+ const startTime = process.hrtime();
89
+ try {
90
+ span === null || span === void 0 ? void 0 : span.log({ event: "user-middlewares-start" /* RuntimeLogEvents.USER_MIDDLEWARES_START */ });
91
+ await next();
92
+ }
93
+ catch (err) {
94
+ if (!(err instanceof Error)) {
95
+ throw err;
96
+ }
97
+ tracing_1.ErrorReport.create({ originalError: err }).injectOnSpan(span, ctx.vtex.logger);
98
+ throw err;
99
+ }
100
+ finally {
101
+ span === null || span === void 0 ? void 0 : span.log({
102
+ event: "user-middlewares-finish" /* RuntimeLogEvents.USER_MIDDLEWARES_FINISH */,
103
+ ["user-middlewares-duration" /* RuntimeLogFields.USER_MIDDLEWARES_DURATION */]: (0, utils_2.hrToMillis)(process.hrtime(startTime)),
104
+ });
105
+ ctx.tracing = tracingCtx;
106
+ }
107
+ };
108
+ };
109
+ exports.traceUserLandRemainingPipelineMiddleware = traceUserLandRemainingPipelineMiddleware;
110
+ function shouldTrace(ctx, rootSpan) {
111
+ var _a, _b, _c;
112
+ /** Should trace if path isnt blacklisted and sampling decision came from the edge
113
+ * ((rootSpan as any).isSampled. returns whether or not this span context was sampled
114
+ * There is a cast to bypass opentracing typescript
115
+ */
116
+ 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);
117
+ }
@@ -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
+ }
@@ -0,0 +1,197 @@
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.startWorker = void 0;
7
+ const http_1 = require("http");
8
+ const koa_1 = __importDefault(require("koa"));
9
+ const koa_compress_1 = __importDefault(require("koa-compress"));
10
+ const koa_router_1 = __importDefault(require("koa-router"));
11
+ const ramda_1 = require("ramda");
12
+ const constants_1 = require("../../constants");
13
+ const MetricsAccumulator_1 = require("../../metrics/MetricsAccumulator");
14
+ const loaders_1 = require("../loaders");
15
+ const console_1 = require("../logger/console");
16
+ const logger_1 = require("../logger/logger");
17
+ const requestMetricsMiddleware_1 = require("../metrics/requestMetricsMiddleware");
18
+ const TracerSingleton_1 = require("../tracing/TracerSingleton");
19
+ const tracingMiddlewares_1 = require("../tracing/tracingMiddlewares");
20
+ const listeners_1 = require("./listeners");
21
+ const handlers_1 = require("./runtime/builtIn/handlers");
22
+ const middlewares_1 = require("./runtime/builtIn/middlewares");
23
+ const events_1 = require("./runtime/events");
24
+ const router_1 = require("./runtime/events/router");
25
+ const graphql_1 = require("./runtime/graphql");
26
+ const http_2 = require("./runtime/http");
27
+ const error_1 = require("./runtime/http/middlewares/error");
28
+ const rateLimit_1 = require("./runtime/http/middlewares/rateLimit");
29
+ const router_2 = require("./runtime/http/router");
30
+ const routes_1 = require("./runtime/http/routes");
31
+ const statusTrack_1 = require("./runtime/statusTrack");
32
+ const tokenBucket_1 = require("./runtime/utils/tokenBucket");
33
+ const upSignal = () => {
34
+ const data = JSON.stringify({ statusTrack: true });
35
+ const options = {
36
+ headers: {
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ host: 'localhost',
40
+ method: 'POST',
41
+ path: '/_up',
42
+ port: 5000,
43
+ };
44
+ const req = (0, http_1.request)(options);
45
+ req.write(data);
46
+ req.end();
47
+ };
48
+ const isUpSignal = (message) => message === constants_1.UP_SIGNAL;
49
+ const onMessage = (service) => (message) => {
50
+ if (isUpSignal(message)) {
51
+ upSignal();
52
+ (0, routes_1.logAvailableRoutes)(service);
53
+ }
54
+ else if ((0, statusTrack_1.isStatusTrack)(message)) {
55
+ (0, statusTrack_1.trackStatus)();
56
+ }
57
+ else {
58
+ listeners_1.logger.warn({
59
+ content: message,
60
+ message: 'Master sent message',
61
+ pid: process.pid,
62
+ });
63
+ }
64
+ };
65
+ const createAppHttpHandlers = ({ config: { routes, clients } }, serviceJSON, globalLimiter) => {
66
+ if (routes && clients) {
67
+ return Object.keys(routes).reduce((acc, routeId) => {
68
+ var _a;
69
+ const serviceRoute = (_a = serviceJSON.routes) === null || _a === void 0 ? void 0 : _a[routeId];
70
+ if (!serviceRoute) {
71
+ throw new Error(`Could not find route: ${routeId}. Please add ${routeId} route in your service.json file`);
72
+ }
73
+ const { path: servicePath, public: publicRoute = false, extensible = false, } = serviceRoute;
74
+ if (publicRoute || extensible) {
75
+ acc.pub[routeId] = {
76
+ handler: (0, http_2.createPublicHttpRoute)(clients, routes[routeId], serviceRoute, routeId, globalLimiter),
77
+ path: servicePath,
78
+ };
79
+ }
80
+ else {
81
+ acc.pvt[routeId] = {
82
+ handler: (0, http_2.createPrivateHttpRoute)(clients, routes[routeId], serviceRoute, routeId, globalLimiter),
83
+ path: `/:account/:workspace${servicePath.replace(/\*([^/]*)/g, ':$1*')}`,
84
+ };
85
+ }
86
+ return acc;
87
+ }, {
88
+ pub: {},
89
+ pvt: {},
90
+ });
91
+ }
92
+ return null;
93
+ };
94
+ const routerFromPrivateHttpHandlers = (routes) => Object.values(routes).reduce((router, { handler, path }) => router.all(path, handler), new koa_router_1.default());
95
+ const createAppGraphQLHandler = ({ config: { graphql, clients } }, { routes }, globalLimiter) => {
96
+ const route = routes === null || routes === void 0 ? void 0 : routes[graphql_1.GRAPHQL_ROUTE];
97
+ if (graphql && route && clients) {
98
+ return {
99
+ pvt: {
100
+ [graphql_1.GRAPHQL_ROUTE]: {
101
+ handler: (0, graphql_1.createGraphQLRoute)(graphql, clients, route, graphql_1.GRAPHQL_ROUTE, globalLimiter),
102
+ path: `/:account/:workspace${route.path}`,
103
+ },
104
+ },
105
+ };
106
+ }
107
+ return null;
108
+ };
109
+ const createAppEventHandlers = ({ config: { events, clients } }, serviceJSON, globalLimiter) => {
110
+ if (events && clients) {
111
+ return Object.keys(events).reduce((acc, eventId) => {
112
+ var _a;
113
+ const serviceEvent = (_a = serviceJSON.events) === null || _a === void 0 ? void 0 : _a[eventId];
114
+ acc[eventId] = (0, events_1.createEventHandler)(clients, eventId, events[eventId], serviceEvent, globalLimiter);
115
+ return acc;
116
+ }, {});
117
+ }
118
+ return null;
119
+ };
120
+ const createRuntimeHttpHandlers = (appEventHandlers, serviceJSON) => ({
121
+ pvt: {
122
+ __events: {
123
+ handler: (0, router_1.routerFromEventHandlers)(appEventHandlers),
124
+ path: '/:account/:workspace/_events',
125
+ },
126
+ __healthCheck: {
127
+ handler: (0, handlers_1.healthcheckHandler)(serviceJSON),
128
+ path: '/healthcheck',
129
+ },
130
+ __metricsLogger: {
131
+ handler: handlers_1.metricsLoggerHandler,
132
+ path: '/_metrics',
133
+ },
134
+ __statusTrack: {
135
+ handler: statusTrack_1.statusTrackHandler,
136
+ path: '/_status',
137
+ },
138
+ __whoami: {
139
+ handler: (0, handlers_1.whoAmIHandler)(serviceJSON),
140
+ path: '/:account/:workspace/_whoami',
141
+ },
142
+ },
143
+ });
144
+ const scaleClientCaches = (scaleFactor, options) => Object.entries(options || {}).forEach(([name, opts]) => {
145
+ if (opts && opts.memoryCache && scaleFactor > 1) {
146
+ const previous = opts.memoryCache.storage.max;
147
+ const current = previous / scaleFactor;
148
+ opts.memoryCache.storage.max = current;
149
+ (0, console_1.logOnceToDevConsole)(`Scaling ${name} cache capacity from ${previous} to ${current}`, logger_1.LogLevel.Warn);
150
+ }
151
+ });
152
+ const startWorker = (serviceJSON) => {
153
+ var _a, _b;
154
+ (0, listeners_1.addProcessListeners)();
155
+ const tracer = TracerSingleton_1.TracerSingleton.getTracer();
156
+ const app = new koa_1.default();
157
+ app.proxy = true;
158
+ app
159
+ .use(error_1.error)
160
+ .use((0, middlewares_1.prometheusLoggerMiddleware)())
161
+ .use((0, tracingMiddlewares_1.addTracingMiddleware)(tracer))
162
+ .use((0, requestMetricsMiddleware_1.addRequestMetricsMiddleware)())
163
+ .use((0, middlewares_1.addMetricsLoggerMiddleware)())
164
+ .use((0, rateLimit_1.concurrentRateLimiter)((_a = serviceJSON === null || serviceJSON === void 0 ? void 0 : serviceJSON.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent))
165
+ .use((0, koa_compress_1.default)())
166
+ .use(middlewares_1.recorderMiddleware);
167
+ const service = (0, loaders_1.getService)();
168
+ const { config: { clients } } = service;
169
+ if (clients) {
170
+ scaleClientCaches(serviceJSON.workers, clients.options);
171
+ }
172
+ const globalLimiter = (0, tokenBucket_1.createTokenBucket)((_b = serviceJSON === null || serviceJSON === void 0 ? void 0 : serviceJSON.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute);
173
+ const appHttpHandlers = createAppHttpHandlers(service, serviceJSON, globalLimiter);
174
+ const appEventHandlers = createAppEventHandlers(service, serviceJSON, globalLimiter);
175
+ const appGraphQLHandlers = createAppGraphQLHandler(service, serviceJSON, globalLimiter);
176
+ const runtimeHttpHandlers = createRuntimeHttpHandlers(appEventHandlers, serviceJSON);
177
+ const httpHandlers = [
178
+ appHttpHandlers,
179
+ appGraphQLHandlers,
180
+ runtimeHttpHandlers,
181
+ ]
182
+ .filter(x => x != null)
183
+ // TODO: Fix ramda typings. Apparently there was an update that broke things
184
+ .reduce(ramda_1.mergeDeepRight);
185
+ if (httpHandlers === null || httpHandlers === void 0 ? void 0 : httpHandlers.pub) {
186
+ const publicHandlersRouter = (0, router_2.routerFromPublicHttpHandlers)(httpHandlers.pub);
187
+ app.use(publicHandlersRouter);
188
+ }
189
+ if (httpHandlers === null || httpHandlers === void 0 ? void 0 : httpHandlers.pvt) {
190
+ const privateHandlersRouter = routerFromPrivateHttpHandlers(httpHandlers.pvt);
191
+ app.use(privateHandlersRouter.routes());
192
+ }
193
+ process.on('message', onMessage(serviceJSON));
194
+ return app;
195
+ };
196
+ exports.startWorker = startWorker;
197
+ global.metrics = new MetricsAccumulator_1.MetricsAccumulator();
@@ -0,0 +1,3 @@
1
+ import { Logger } from '../logger';
2
+ export declare const logger: Logger;
3
+ export declare const addProcessListeners: () => void;
@@ -1,29 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addProcessListeners = exports.logger = void 0;
3
4
  const os_1 = require("os");
4
- const RequestCancelledError_1 = require("../errors/RequestCancelledError");
5
- const logger_1 = require("../service/logger");
6
- const logger = new logger_1.Logger({ account: 'unhandled', workspace: 'unhandled', requestId: 'unhandled', operationId: 'unhandled', production: process.env.VTEX_PRODUCTION === 'true' });
5
+ const RequestCancelledError_1 = require("../../errors/RequestCancelledError");
6
+ const logger_1 = require("../logger");
7
+ exports.logger = new logger_1.Logger({ account: 'unhandled', workspace: 'unhandled', requestId: 'unhandled', operationId: 'unhandled', production: process.env.VTEX_PRODUCTION === 'true' });
7
8
  let watched;
8
- // Remove the any typings once we move to nodejs 10.x
9
- const handleSignal = (signal) => {
10
- console.warn('Received signal', signal);
11
- logger.warn({
12
- signal,
13
- });
14
- // Default node behaviour
15
- process.exit(128 + os_1.constants.signals[signal]);
9
+ const handleSignal = signal => {
10
+ process.exit(os_1.constants.signals[signal]);
16
11
  };
17
- exports.addProcessListeners = () => {
12
+ const addProcessListeners = () => {
18
13
  // Listeners already set up
19
14
  if (watched) {
20
15
  return;
21
16
  }
22
17
  watched = process.on('uncaughtException', (err) => {
23
18
  console.error('uncaughtException', err);
24
- if (err && logger) {
19
+ if (err && exports.logger) {
25
20
  err.type = 'uncaughtException';
26
- logger.error(err);
21
+ exports.logger.error(err);
27
22
  }
28
23
  process.exit(420);
29
24
  });
@@ -32,9 +27,9 @@ exports.addProcessListeners = () => {
32
27
  return;
33
28
  }
34
29
  console.error('unhandledRejection', reason, promise);
35
- if (reason && logger) {
30
+ if (reason && exports.logger) {
36
31
  reason.type = 'unhandledRejection';
37
- logger.error(reason);
32
+ exports.logger.error(reason);
38
33
  }
39
34
  });
40
35
  process.on('warning', (warning) => {
@@ -43,3 +38,4 @@ exports.addProcessListeners = () => {
43
38
  process.on('SIGINT', handleSignal);
44
39
  process.on('SIGTERM', handleSignal);
45
40
  };
41
+ exports.addProcessListeners = addProcessListeners;
@@ -1,5 +1,5 @@
1
- import { IOClients } from '../clients/IOClients';
2
- import { ServiceConfig } from './typings';
1
+ import { IOClients } from '../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceConfig } from './typings';
3
3
  /**
4
4
  * This is the client definition to allow type checking on code editors.
5
5
  * In you `index.ts`, you must `export default new Service({...})` with your
@@ -11,7 +11,7 @@ import { ServiceConfig } from './typings';
11
11
  * @template StateT The state bag in `ctx.state`
12
12
  * @template CustomT Any custom fields in `ctx`. THIS IS NOT RECOMMENDED. Use StateT instead.
13
13
  */
14
- export declare class Service<ClientsT extends IOClients = IOClients, StateT = void, CustomT = void> {
15
- config: ServiceConfig<ClientsT, StateT, CustomT>;
16
- constructor(config: ServiceConfig<ClientsT, StateT, CustomT>);
14
+ export declare class Service<T extends IOClients, U extends RecorderState, V extends ParamsContext> {
15
+ config: ServiceConfig<T, U, V>;
16
+ constructor(config: ServiceConfig<T, U, V>);
17
17
  }
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Service = void 0;
4
+ const logger_1 = require("../../logger");
3
5
  /**
4
6
  * This is the client definition to allow type checking on code editors.
5
7
  * In you `index.ts`, you must `export default new Service({...})` with your
@@ -15,7 +17,7 @@ class Service {
15
17
  constructor(config) {
16
18
  this.config = config;
17
19
  if (config.routes && config.routes.graphql) {
18
- console.warn('Route id "graphql" is reserved and apps containing this routes will stop working in the near future. To create a GraphQL app, export a "graphql" key with {resolvers}.');
20
+ (0, logger_1.logOnceToDevConsole)(`Route id "graphql" is reserved and apps containing this routes will stop working in the near future. To create a GraphQL app, export a "graphql" key with {resolvers}.`, logger_1.LogLevel.Warn);
19
21
  }
20
22
  }
21
23
  }
@@ -0,0 +1,4 @@
1
+ import { ServiceContext, ServiceJSON } from '../typings';
2
+ export declare const whoAmIHandler: ({ events, routes, }: ServiceJSON) => (ctx: ServiceContext) => void;
3
+ export declare const healthcheckHandler: ({ events, routes, }: ServiceJSON) => (ctx: ServiceContext) => void;
4
+ export declare const metricsLoggerHandler: (ctx: ServiceContext) => void;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.metricsLoggerHandler = exports.healthcheckHandler = exports.whoAmIHandler = void 0;
4
+ const whoAmIHandler = ({ events, routes, }) => (ctx) => {
5
+ var _a, _b;
6
+ ctx.requestHandlerName = 'builtin:whoami';
7
+ (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
8
+ ctx.status = 200;
9
+ ctx.body = {
10
+ events,
11
+ routes,
12
+ };
13
+ ctx.set('Cache-Control', 'public, max-age=86400'); // cache for 24 hours
14
+ };
15
+ exports.whoAmIHandler = whoAmIHandler;
16
+ const healthcheckHandler = ({ events, routes, }) => (ctx) => {
17
+ var _a, _b;
18
+ ctx.requestHandlerName = 'builtin:healthcheck';
19
+ (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
20
+ ctx.status = 200;
21
+ ctx.body = {
22
+ events,
23
+ routes,
24
+ };
25
+ };
26
+ exports.healthcheckHandler = healthcheckHandler;
27
+ const metricsLoggerHandler = (ctx) => {
28
+ var _a, _b;
29
+ ctx.requestHandlerName = 'builtin:metrics-logger';
30
+ (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
31
+ ctx.status = 200;
32
+ ctx.body = ctx.metricsLogger.getSummaries();
33
+ };
34
+ exports.metricsLoggerHandler = metricsLoggerHandler;
@@ -0,0 +1,4 @@
1
+ import { ServiceContext } from '../typings';
2
+ export declare function recorderMiddleware(ctx: ServiceContext, next: () => Promise<void>): Promise<void>;
3
+ export declare const addMetricsLoggerMiddleware: () => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
4
+ export declare const prometheusLoggerMiddleware: () => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prometheusLoggerMiddleware = exports.addMetricsLoggerMiddleware = exports.recorderMiddleware = void 0;
4
+ const prom_client_1 = require("prom-client");
5
+ const constants_1 = require("../../../../constants");
6
+ const metricsLogger_1 = require("../../../logger/metricsLogger");
7
+ const EventLoopLagMeasurer_1 = require("../../../tracing/metrics/measurers/EventLoopLagMeasurer");
8
+ const recorder_1 = require("../utils/recorder");
9
+ async function recorderMiddleware(ctx, next) {
10
+ const recorder = new recorder_1.Recorder();
11
+ ctx.state.recorder = recorder;
12
+ await next();
13
+ recorder.flush(ctx);
14
+ return;
15
+ }
16
+ exports.recorderMiddleware = recorderMiddleware;
17
+ const addMetricsLoggerMiddleware = () => {
18
+ const metricsLogger = new metricsLogger_1.MetricsLogger();
19
+ return (ctx, next) => {
20
+ ctx.metricsLogger = metricsLogger;
21
+ return next();
22
+ };
23
+ };
24
+ exports.addMetricsLoggerMiddleware = addMetricsLoggerMiddleware;
25
+ const prometheusLoggerMiddleware = () => {
26
+ (0, prom_client_1.collectDefaultMetrics)();
27
+ const eventLoopLagMeasurer = new EventLoopLagMeasurer_1.EventLoopLagMeasurer();
28
+ eventLoopLagMeasurer.start();
29
+ return async (ctx, next) => {
30
+ if (ctx.request.path !== '/metrics') {
31
+ return next();
32
+ }
33
+ const routeId = ctx.get(constants_1.COLOSSUS_ROUTE_ID_HEADER);
34
+ if (routeId) {
35
+ return next();
36
+ }
37
+ await eventLoopLagMeasurer.updateInstrumentsAndReset();
38
+ ctx.set('Content-Type', prom_client_1.register.contentType);
39
+ ctx.body = await prom_client_1.register.metrics();
40
+ ctx.status = 200;
41
+ };
42
+ };
43
+ exports.prometheusLoggerMiddleware = prometheusLoggerMiddleware;
@@ -0,0 +1,4 @@
1
+ import TokenBucket from 'tokenbucket';
2
+ import { IOClients } from '../../../../clients/IOClients';
3
+ import { ClientsConfig, EventHandler, ParamsContext, RecorderState, ServiceContext, ServiceEvent } from '../typings';
4
+ export declare const createEventHandler: <T extends IOClients, U extends RecorderState, V extends ParamsContext>(clientsConfig: ClientsConfig<T>, eventId: string, handler: EventHandler<T, U> | EventHandler<T, U>[], serviceEvent: ServiceEvent | undefined, globalLimiter: TokenBucket | undefined) => import("koa-compose").ComposedMiddleware<ServiceContext<T, U, V>>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEventHandler = void 0;
4
+ const tracingMiddlewares_1 = require("../../../tracing/tracingMiddlewares");
5
+ const clients_1 = require("../http/middlewares/clients");
6
+ const rateLimit_1 = require("../http/middlewares/rateLimit");
7
+ const settings_1 = require("../http/middlewares/settings");
8
+ const timings_1 = require("../http/middlewares/timings");
9
+ const compose_1 = require("../utils/compose");
10
+ const toArray_1 = require("../utils/toArray");
11
+ const body_1 = require("./middlewares/body");
12
+ const context_1 = require("./middlewares/context");
13
+ const createEventHandler = (clientsConfig, eventId, handler, serviceEvent, globalLimiter) => {
14
+ var _a, _b;
15
+ const { implementation, options } = clientsConfig;
16
+ const middlewares = (0, toArray_1.toArray)(handler);
17
+ const pipeline = [
18
+ (0, tracingMiddlewares_1.nameSpanOperationMiddleware)('event-handler', eventId),
19
+ context_1.eventContextMiddleware,
20
+ body_1.parseBodyMiddleware,
21
+ (0, clients_1.clients)(implementation, options),
22
+ ...((serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.settingsType) === 'workspace' || (serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.settingsType) === 'userAndWorkspace' ? [(0, settings_1.getServiceSettings)()] : []),
23
+ timings_1.timings,
24
+ (0, rateLimit_1.concurrentRateLimiter)((_a = serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent),
25
+ (0, rateLimit_1.perMinuteRateLimiter)((_b = serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute, globalLimiter),
26
+ (0, tracingMiddlewares_1.traceUserLandRemainingPipelineMiddleware)(),
27
+ contextAdapter(middlewares),
28
+ ];
29
+ return (0, compose_1.compose)(pipeline);
30
+ };
31
+ exports.createEventHandler = createEventHandler;
32
+ function contextAdapter(middlewares) {
33
+ return async function middlewareCascade(ctx) {
34
+ const ctxEvent = {
35
+ body: ctx.state.body,
36
+ clients: ctx.clients,
37
+ key: ctx.vtex.eventInfo ? ctx.vtex.eventInfo.key : '',
38
+ metrics: ctx.metrics,
39
+ sender: ctx.vtex.eventInfo ? ctx.vtex.eventInfo.sender : '',
40
+ state: ctx.state,
41
+ subject: ctx.vtex.eventInfo ? ctx.vtex.eventInfo.subject : '',
42
+ timings: ctx.timings,
43
+ vtex: ctx.vtex,
44
+ };
45
+ await (0, compose_1.composeForEvents)(middlewares)(ctxEvent);
46
+ ctx.status = 204;
47
+ };
48
+ }
@@ -0,0 +1,3 @@
1
+ import { IOClients } from '../../../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceContext } from '../../typings';
3
+ export declare function parseBodyMiddleware<T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
@@ -0,0 +1,26 @@
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.parseBodyMiddleware = void 0;
7
+ const co_body_1 = __importDefault(require("co-body"));
8
+ const logger_1 = require("../../../../logger");
9
+ const console_1 = require("./../../../../logger/console");
10
+ async function parseBodyMiddleware(ctx, next) {
11
+ try {
12
+ ctx.state.body = await (0, co_body_1.default)(ctx.req);
13
+ }
14
+ catch (err) {
15
+ if (!(err instanceof Error)) {
16
+ throw err;
17
+ }
18
+ const msg = `Error parsing event body: ${err.message || err}`;
19
+ ctx.status = 500;
20
+ ctx.body = msg;
21
+ (0, console_1.logOnceToDevConsole)(msg, logger_1.LogLevel.Error);
22
+ return;
23
+ }
24
+ await next();
25
+ }
26
+ exports.parseBodyMiddleware = parseBodyMiddleware;
@@ -0,0 +1,3 @@
1
+ import { IOClients } from '../../../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceContext } from '../../typings';
3
+ export declare function eventContextMiddleware<T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventContextMiddleware = void 0;
4
+ const constants_1 = require("../../../../../constants");
5
+ const context_1 = require("../../utils/context");
6
+ async function eventContextMiddleware(ctx, next) {
7
+ const { request: { header } } = ctx;
8
+ ctx.vtex = {
9
+ ...(0, context_1.prepareHandlerCtx)(header, ctx.tracing),
10
+ eventInfo: {
11
+ key: header[constants_1.EVENT_KEY_HEADER],
12
+ sender: header[constants_1.EVENT_SENDER_HEADER],
13
+ subject: header[constants_1.EVENT_SUBJECT_HEADER],
14
+ },
15
+ route: {
16
+ id: header[constants_1.EVENT_HANDLER_ID_HEADER],
17
+ params: {},
18
+ type: 'event',
19
+ },
20
+ };
21
+ await next();
22
+ }
23
+ exports.eventContextMiddleware = eventContextMiddleware;
@@ -0,0 +1,2 @@
1
+ import { RouteHandler, ServiceContext } from '../typings';
2
+ export declare const routerFromEventHandlers: (events: Record<string, RouteHandler> | null) => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;