@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,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logAvailableRoutes = exports.formatPublicRoute = exports.formatPrivateRoute = void 0;
4
+ const constants_1 = require("../../../../constants");
5
+ const formatPrivateRoute = ({ protocol = 'https', vendor, name, major, account, workspace, path }) => `${protocol}://app.io.vtex.com/${vendor}.${name}/v${major}/${account}/${workspace}${path || ''}`;
6
+ exports.formatPrivateRoute = formatPrivateRoute;
7
+ const formatPublicRoute = ({ workspace, account, endpoint, path }) => `https://${workspace}--${account}.${endpoint}${path}`;
8
+ exports.formatPublicRoute = formatPublicRoute;
9
+ const getPath = ({ public: publicRoute, path }) => publicRoute
10
+ ? (0, exports.formatPublicRoute)({ workspace: constants_1.WORKSPACE, account: constants_1.ACCOUNT, endpoint: constants_1.PUBLIC_ENDPOINT, path })
11
+ : (0, exports.formatPrivateRoute)({ protocol: 'https', vendor: constants_1.APP.VENDOR, name: constants_1.APP.NAME, major: constants_1.APP.MAJOR, account: constants_1.ACCOUNT, workspace: constants_1.WORKSPACE, path });
12
+ const logAvailableRoutes = (service) => {
13
+ const available = Object.values(service.routes || {}).reduce((acc, route) => `${acc}\n${getPath(route)}`, 'Available service routes:');
14
+ console.info(available);
15
+ };
16
+ exports.logAvailableRoutes = logAvailableRoutes;
@@ -0,0 +1,9 @@
1
+ import { IOClients } from '../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, RouteHandler, ServiceContext } from './typings';
3
+ type HTTPMethods = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH' | 'DEFAULT';
4
+ type MethodOptions<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = Partial<Record<HTTPMethods, RouteHandler<ClientsT, StateT, CustomT> | Array<RouteHandler<ClientsT, StateT, CustomT>>>>;
5
+ export declare function method<T extends IOClients, U extends RecorderState, V extends ParamsContext>(options: MethodOptions<T, U, V>): {
6
+ (ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
7
+ skipTimer: boolean;
8
+ };
9
+ export {};
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.method = void 0;
3
4
  const ramda_1 = require("ramda");
4
5
  const compose_1 = require("./utils/compose");
5
6
  const TEN_SECONDS_S = 10;
@@ -8,7 +9,7 @@ function methodNotAllowed(ctx) {
8
9
  ctx.set('cache-control', `public, max-age=${TEN_SECONDS_S}`);
9
10
  }
10
11
  function method(options) {
11
- const handlers = ramda_1.mapObjIndexed(handler => compose_1.compose(Array.isArray(handler) ? handler : [handler]), options);
12
+ const handlers = (0, ramda_1.mapObjIndexed)(handler => (0, compose_1.compose)(Array.isArray(handler) ? handler : [handler]), options);
12
13
  const inner = async function forMethod(ctx, next) {
13
14
  const verb = ctx.method.toUpperCase();
14
15
  const handler = handlers[verb] || handlers.DEFAULT || methodNotAllowed;
@@ -0,0 +1,14 @@
1
+ import { ServiceContext } from './typings';
2
+ export type StatusTrack = () => EnvMetric[];
3
+ export interface NamedMetric {
4
+ name: string;
5
+ [key: string]: any;
6
+ }
7
+ export interface EnvMetric extends NamedMetric {
8
+ production: boolean;
9
+ }
10
+ export declare const isStatusTrack: (message: any) => message is "statusTrack";
11
+ export declare const isStatusTrackBroadcast: (message: any) => message is "broadcastStatusTrack";
12
+ export declare const statusTrackHandler: (ctx: ServiceContext) => Promise<void>;
13
+ export declare const trackStatus: () => void;
14
+ export declare const broadcastStatusTrack: () => void;
@@ -0,0 +1,43 @@
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.broadcastStatusTrack = exports.trackStatus = exports.statusTrackHandler = exports.isStatusTrackBroadcast = exports.isStatusTrack = void 0;
7
+ const cluster_1 = __importDefault(require("cluster"));
8
+ const constants_1 = require("../../../constants");
9
+ const BROADCAST_STATUS_TRACK = 'broadcastStatusTrack';
10
+ const STATUS_TRACK = 'statusTrack';
11
+ const isStatusTrack = (message) => message === STATUS_TRACK;
12
+ exports.isStatusTrack = isStatusTrack;
13
+ const isStatusTrackBroadcast = (message) => message === BROADCAST_STATUS_TRACK;
14
+ exports.isStatusTrackBroadcast = isStatusTrackBroadcast;
15
+ const statusTrackHandler = async (ctx) => {
16
+ var _a, _b, _c;
17
+ (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName('builtin:status-track');
18
+ if (!constants_1.LINKED) {
19
+ (_c = process.send) === null || _c === void 0 ? void 0 : _c.call(process, BROADCAST_STATUS_TRACK);
20
+ }
21
+ ctx.body = [];
22
+ return;
23
+ };
24
+ exports.statusTrackHandler = statusTrackHandler;
25
+ const trackStatus = () => {
26
+ global.metrics.statusTrack().forEach(status => {
27
+ logStatus(status);
28
+ });
29
+ };
30
+ exports.trackStatus = trackStatus;
31
+ const broadcastStatusTrack = () => Object.values(cluster_1.default.workers).forEach(worker => worker === null || worker === void 0 ? void 0 : worker.send(STATUS_TRACK));
32
+ exports.broadcastStatusTrack = broadcastStatusTrack;
33
+ const logStatus = (status) => console.log(JSON.stringify({
34
+ __VTEX_IO_LOG: true,
35
+ account: constants_1.ACCOUNT,
36
+ app: constants_1.APP.ID,
37
+ isLink: constants_1.LINKED,
38
+ pid: process.pid,
39
+ production: constants_1.PRODUCTION,
40
+ status,
41
+ type: 'metric/status',
42
+ workspace: constants_1.WORKSPACE,
43
+ }));
@@ -0,0 +1,173 @@
1
+ /// <reference types="node" />
2
+ import { CancelTokenSource } from 'axios';
3
+ import DataLoader from 'dataloader';
4
+ import { GraphQLFieldConfig, GraphQLFieldResolver, GraphQLScalarType } from 'graphql';
5
+ import { SchemaDirectiveVisitor } from 'graphql-tools';
6
+ import { ParameterizedContext } from 'koa';
7
+ import { Middleware } from 'koa-compose';
8
+ import { Span, Tracer } from 'opentracing';
9
+ import { ParsedUrlQuery } from 'querystring';
10
+ import { ClientsImplementation, IOClients } from '../../../clients/IOClients';
11
+ import { InstanceOptions } from '../../../HttpClient';
12
+ import { IUserLandTracer } from '../../../tracing/UserLandTracer';
13
+ import { BindingHeader } from '../../../utils/binding';
14
+ import { IOMessage } from '../../../utils/message';
15
+ import { TenantHeader } from '../../../utils/tenant';
16
+ import { Logger } from '../../logger';
17
+ import { MetricsLogger } from '../../logger/metricsLogger';
18
+ import { MessagesLoaderV2 } from './graphql/schema/messagesLoaderV2';
19
+ import { Recorder } from './utils/recorder';
20
+ type ServerTiming = Record<string, string>;
21
+ export type Maybe<T> = T | null | undefined;
22
+ export interface TracingContext {
23
+ tracer: Tracer;
24
+ currentSpan: Span | undefined;
25
+ }
26
+ export interface Context<T extends IOClients> {
27
+ clients: T;
28
+ vtex: IOContext;
29
+ timings: Record<string, [number, number]>;
30
+ metrics: Record<string, [number, number]>;
31
+ previousTimerStart: [number, number];
32
+ requestHandlerName?: string;
33
+ serverTiming?: ServerTiming;
34
+ tracing?: TracingContext;
35
+ }
36
+ export interface EventContext<T extends IOClients, StateT = any> {
37
+ clients: T;
38
+ state: StateT;
39
+ vtex: IOContext;
40
+ body: any;
41
+ timings: Record<string, [number, number]>;
42
+ metrics: Record<string, [number, number]>;
43
+ key: string;
44
+ sender: string;
45
+ subject: string;
46
+ }
47
+ type KnownKeys<T> = {
48
+ [K in keyof T]: string extends K ? never : number extends K ? never : K;
49
+ } extends {
50
+ [_ in keyof T]: infer U;
51
+ } ? U : never;
52
+ interface Loaders {
53
+ messages?: DataLoader<IOMessage, string>;
54
+ messagesV2?: MessagesLoaderV2;
55
+ immutableMessagesV2?: MessagesLoaderV2;
56
+ }
57
+ export type ServiceContext<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = Pick<ParameterizedContext<StateT, Context<ClientsT>>, KnownKeys<ParameterizedContext<StateT, Context<ClientsT>>>> & CustomT & {
58
+ loaders?: Loaders;
59
+ };
60
+ export type RouteHandler<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = Middleware<ServiceContext<ClientsT, StateT, CustomT>>;
61
+ export type EventHandler<ClientsT extends IOClients = IOClients, StateT = void> = Middleware<EventContext<ClientsT, StateT>>;
62
+ export type Resolver<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = GraphQLFieldResolver<any, ServiceContext<ClientsT, StateT, CustomT>, any> | GraphQLFieldConfig<any, ServiceContext<ClientsT, StateT, CustomT>, any>;
63
+ export type Handler = RouteHandler<IOClients, RecorderState, ParamsContext>;
64
+ export interface HttpRoute {
65
+ handler: RouteHandler;
66
+ path: string;
67
+ }
68
+ export interface RecorderState {
69
+ recorder: Recorder;
70
+ body: any;
71
+ }
72
+ export interface ParamsContext {
73
+ params: any;
74
+ metricsLogger: MetricsLogger;
75
+ }
76
+ export interface ClientsConfig<ClientsT extends IOClients = IOClients> {
77
+ implementation?: ClientsImplementation<ClientsT>;
78
+ options: Record<string, InstanceOptions>;
79
+ }
80
+ export interface GraphQLOptions<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> {
81
+ resolvers: Record<string, Record<string, Resolver<ClientsT, StateT, CustomT>> | GraphQLScalarType>;
82
+ schema?: string;
83
+ schemaDirectives?: Record<string, typeof SchemaDirectiveVisitor>;
84
+ }
85
+ export interface ServiceConfig<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> {
86
+ clients?: ClientsConfig<ClientsT>;
87
+ events?: Record<string, EventHandler<ClientsT, StateT> | Array<EventHandler<ClientsT, StateT>>>;
88
+ graphql?: GraphQLOptions<ClientsT, StateT, CustomT>;
89
+ routes?: Record<string, RouteHandler<ClientsT, StateT, CustomT> | Array<RouteHandler<ClientsT, StateT, CustomT>>>;
90
+ }
91
+ export interface Cancellation {
92
+ cancelable: boolean;
93
+ cancelled: boolean;
94
+ source: CancelTokenSource;
95
+ }
96
+ export interface IOContext {
97
+ account: string;
98
+ platform: string;
99
+ authToken: string;
100
+ adminUserAuthToken?: string;
101
+ storeUserAuthToken?: string;
102
+ locale?: string;
103
+ production: boolean;
104
+ product: string;
105
+ recorder?: Recorder;
106
+ region: string;
107
+ route: {
108
+ declarer?: string;
109
+ id: string;
110
+ params: ParsedUrlQuery;
111
+ type: 'public' | 'private' | 'event';
112
+ };
113
+ userAgent: string;
114
+ workspace: string;
115
+ segmentToken?: string;
116
+ sessionToken?: string;
117
+ requestId: string;
118
+ operationId: string;
119
+ janusEnv?: JanusEnv;
120
+ serverTiming?: ServerTiming;
121
+ logger: Logger;
122
+ eventInfo?: EventBody;
123
+ host?: string;
124
+ tenant?: TenantHeader;
125
+ binding?: BindingHeader;
126
+ cancellation?: Cancellation;
127
+ settings?: any;
128
+ tracer: IUserLandTracer;
129
+ }
130
+ export interface EventBody {
131
+ sender: string;
132
+ subject: string;
133
+ key: string;
134
+ }
135
+ export type RouteSettingsType = 'pure' | 'workspace' | 'userAndWorkspace';
136
+ export interface ServiceRoute {
137
+ path: string;
138
+ public?: boolean;
139
+ smartcache?: boolean;
140
+ extensible?: boolean;
141
+ settingsType?: RouteSettingsType;
142
+ rateLimitPerReplica?: RateLimitOptions;
143
+ }
144
+ export interface ServiceEvent {
145
+ keys?: string[];
146
+ sender?: string;
147
+ subject?: string;
148
+ settingsType?: RouteSettingsType;
149
+ rateLimitPerReplica?: RateLimitOptions;
150
+ }
151
+ export interface RateLimitOptions {
152
+ perMinute?: number;
153
+ concurrent?: number;
154
+ }
155
+ export interface RawServiceJSON {
156
+ stack: 'nodejs';
157
+ memory: number;
158
+ ttl?: number;
159
+ timeout?: number;
160
+ runtimeArgs?: string[];
161
+ routes?: Record<string, ServiceRoute>;
162
+ rateLimitPerReplica?: RateLimitOptions;
163
+ events?: Record<string, ServiceEvent>;
164
+ minReplicas?: number;
165
+ maxReplicas?: number;
166
+ workers?: number;
167
+ deterministicVary?: boolean;
168
+ }
169
+ export interface ServiceJSON extends RawServiceJSON {
170
+ workers: number;
171
+ }
172
+ export type JanusEnv = string;
173
+ export {};
@@ -0,0 +1,5 @@
1
+ import koaCompose from 'koa-compose';
2
+ import { IOClients } from '../../../../clients/IOClients';
3
+ import { EventHandler, ParamsContext, RecorderState, RouteHandler } from '../typings';
4
+ export declare const compose: <ClientsT extends IOClients, StateT extends RecorderState, CustomT extends ParamsContext>(middlewares: RouteHandler<ClientsT, StateT, CustomT>[]) => koaCompose.ComposedMiddleware<import("../typings").ServiceContext<ClientsT, StateT, CustomT>>;
5
+ export declare const composeForEvents: <ClientsT extends IOClients, StateT extends RecorderState>(middlewares: EventHandler<ClientsT, StateT>[]) => koaCompose.ComposedMiddleware<import("../typings").EventContext<ClientsT, StateT>>;
@@ -0,0 +1,14 @@
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.composeForEvents = exports.compose = void 0;
7
+ const koa_compose_1 = __importDefault(require("koa-compose"));
8
+ const ramda_1 = require("ramda");
9
+ const cancel_1 = require("../../../../utils/cancel");
10
+ const time_1 = require("../../../../utils/time");
11
+ const compose = (middlewares) => (0, koa_compose_1.default)(middlewares.map((0, ramda_1.pipe)(time_1.timer, cancel_1.cancel)));
12
+ exports.compose = compose;
13
+ const composeForEvents = (middlewares) => (0, koa_compose_1.default)(middlewares.map(time_1.timerForEvents));
14
+ exports.composeForEvents = composeForEvents;
@@ -0,0 +1,5 @@
1
+ import { Context } from 'koa';
2
+ import { IOContext, TracingContext } from '../typings';
3
+ type HandlerContext = Omit<IOContext, 'route'>;
4
+ export declare const prepareHandlerCtx: (header: Context['request']['header'], tracingContext?: TracingContext) => HandlerContext;
5
+ export {};
@@ -0,0 +1,42 @@
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.prepareHandlerCtx = void 0;
7
+ const v4_1 = __importDefault(require("uuid/v4"));
8
+ const constants_1 = require("../../../../constants");
9
+ const UserLandTracer_1 = require("../../../../tracing/UserLandTracer");
10
+ const tenant_1 = require("../../../../utils/tenant");
11
+ const logger_1 = require("../../../logger");
12
+ const binding_1 = require("./../../../../utils/binding");
13
+ const getPlatform = (account) => {
14
+ return account.startsWith('gc-') ? 'gocommerce' : 'vtex';
15
+ };
16
+ const prepareHandlerCtx = (header, tracingContext) => {
17
+ var _a;
18
+ const partialContext = {
19
+ account: header[constants_1.ACCOUNT_HEADER],
20
+ authToken: header[constants_1.CREDENTIAL_HEADER],
21
+ binding: header[constants_1.BINDING_HEADER] ? (0, binding_1.parseBindingHeaderValue)(header[constants_1.BINDING_HEADER]) : undefined,
22
+ host: header[constants_1.FORWARDED_HOST_HEADER],
23
+ locale: header[constants_1.LOCALE_HEADER],
24
+ operationId: header[constants_1.OPERATION_ID_HEADER] || (0, v4_1.default)(),
25
+ platform: header[constants_1.PLATFORM_HEADER] || getPlatform(header[constants_1.ACCOUNT_HEADER]),
26
+ product: header[constants_1.PRODUCT_HEADER],
27
+ production: ((_a = header[constants_1.WORKSPACE_IS_PRODUCTION_HEADER]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'true' || false,
28
+ region: constants_1.REGION,
29
+ requestId: header[constants_1.REQUEST_ID_HEADER],
30
+ segmentToken: header[constants_1.SEGMENT_HEADER],
31
+ sessionToken: header[constants_1.SESSION_HEADER],
32
+ tenant: header[constants_1.TENANT_HEADER] ? (0, tenant_1.parseTenantHeaderValue)(header[constants_1.TENANT_HEADER]) : undefined,
33
+ tracer: new UserLandTracer_1.UserLandTracer(tracingContext === null || tracingContext === void 0 ? void 0 : tracingContext.tracer, tracingContext === null || tracingContext === void 0 ? void 0 : tracingContext.currentSpan),
34
+ userAgent: process.env.VTEX_APP_ID || '',
35
+ workspace: header[constants_1.WORKSPACE_HEADER],
36
+ };
37
+ return {
38
+ ...partialContext,
39
+ logger: new logger_1.Logger(partialContext),
40
+ };
41
+ };
42
+ exports.prepareHandlerCtx = prepareHandlerCtx;
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ export interface Snapshot {
3
+ usage: NodeJS.CpuUsage;
4
+ time: number;
5
+ }
6
+ interface CpuUsage {
7
+ user: number;
8
+ system: number;
9
+ }
10
+ export declare function cpuSnapshot(): Snapshot;
11
+ export declare function snapshotDiff(curr: Snapshot, last: Snapshot): CpuUsage;
12
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.snapshotDiff = exports.cpuSnapshot = void 0;
4
+ function cpuSnapshot() {
5
+ return {
6
+ time: microtime(),
7
+ usage: process.cpuUsage(),
8
+ };
9
+ }
10
+ exports.cpuSnapshot = cpuSnapshot;
11
+ function snapshotDiff(curr, last) {
12
+ const timeDiff = curr.time - last.time;
13
+ return {
14
+ system: (curr.usage.system - last.usage.system) / timeDiff,
15
+ user: (curr.usage.user - last.usage.user) / timeDiff,
16
+ };
17
+ }
18
+ exports.snapshotDiff = snapshotDiff;
19
+ function microtime() {
20
+ const hrTime = process.hrtime();
21
+ return hrTime[0] * 1000000 + hrTime[1] / 1000;
22
+ }
@@ -0,0 +1,8 @@
1
+ import { Context } from 'koa';
2
+ export declare class Recorder {
3
+ private _record;
4
+ constructor();
5
+ clear(): void;
6
+ record(headers?: Record<string, string>): void;
7
+ flush(ctx: Context): void;
8
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Recorder = void 0;
4
+ const ramda_1 = require("ramda");
5
+ const constants_1 = require("./../../../../constants");
6
+ const HEADERS = [constants_1.META_HEADER, constants_1.META_HEADER_BUCKET];
7
+ class Recorder {
8
+ constructor() {
9
+ this._record = HEADERS.reduce((acc, headerName) => {
10
+ acc[headerName] = new Set();
11
+ return acc;
12
+ }, {});
13
+ }
14
+ clear() {
15
+ HEADERS.forEach(headerName => this._record[headerName].clear());
16
+ }
17
+ record(headers) {
18
+ HEADERS.forEach(headerName => {
19
+ const h = headers === null || headers === void 0 ? void 0 : headers[headerName];
20
+ if (h) {
21
+ h.split(',').map(ramda_1.trim).forEach(hh => this._record[headerName].add(hh));
22
+ }
23
+ });
24
+ }
25
+ flush(ctx) {
26
+ HEADERS.forEach(headerName => {
27
+ const newValueSet = new Set(this._record[headerName]);
28
+ const currentValue = ctx.response.get(headerName);
29
+ const parsedCurrentValue = typeof currentValue === 'string' ? currentValue.split(',') : currentValue;
30
+ parsedCurrentValue.forEach(cur => newValueSet.add((0, ramda_1.trim)(cur)));
31
+ const deduped = Array.from(newValueSet).filter(x => !!x);
32
+ if (deduped.length > 0) {
33
+ ctx.set(headerName, deduped);
34
+ }
35
+ });
36
+ }
37
+ }
38
+ exports.Recorder = Recorder;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toArray = void 0;
4
+ const toArray = (x) => Array.isArray(x) ? x : [x];
5
+ exports.toArray = toArray;
@@ -0,0 +1,2 @@
1
+ import TokenBucket from 'tokenbucket';
2
+ export declare function createTokenBucket(rateLimit?: number, globalRateTokenBucket?: TokenBucket): TokenBucket;
@@ -0,0 +1,17 @@
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.createTokenBucket = void 0;
7
+ const tokenbucket_1 = __importDefault(require("tokenbucket"));
8
+ function createTokenBucket(rateLimit, globalRateTokenBucket) {
9
+ return rateLimit ? new tokenbucket_1.default({
10
+ interval: 'minute',
11
+ parentBucket: globalRateTokenBucket,
12
+ size: Math.ceil(rateLimit / 2.0),
13
+ spread: true,
14
+ tokensToAddPerInterval: rateLimit,
15
+ }) : globalRateTokenBucket;
16
+ }
17
+ exports.createTokenBucket = createTokenBucket;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * This file has all events logged by the runtime's distributed tracing
3
+ * instrumentation. In the code you would see something like:
4
+ * ```
5
+ * span.log({ event: HttpEvents.CACHE_KEY_CREATE })
6
+ * ```
7
+ */
8
+ export declare const enum HttpLogEvents {
9
+ /** Event holding the cache key created */
10
+ CACHE_KEY_CREATE = "cache-key-created",
11
+ /** Event representing that the memoization cache has just saved a response */
12
+ MEMOIZATION_CACHE_SAVED = "memoization-cache-saved",
13
+ /** Event representing that the memoization cache has just saved a error response */
14
+ MEMOIZATION_CACHE_SAVED_ERROR = "memoization-cache-saved-error",
15
+ /** Event holding information on a local cache hit that just happened */
16
+ LOCAL_CACHE_HIT_INFO = "local-cache-hit-info",
17
+ /** Event holding information on the cache config that will be used to decide whether or not to update the local cache */
18
+ CACHE_CONFIG = "cache-config",
19
+ /** Event informing the decision to not update or save to local cache */
20
+ NO_LOCAL_CACHE_SAVE = "no-local-cache-save",
21
+ /** Event holding information on the local cache save that just happened */
22
+ LOCAL_CACHE_SAVED = "local-cache-saved",
23
+ /** A request that is retryable just failed - this event will hold info on the retry that may happen */
24
+ SETUP_REQUEST_RETRY = "setup-request-retry"
25
+ }
26
+ export declare const enum RuntimeLogEvents {
27
+ /** Event representing that userland middlewares are about to start */
28
+ USER_MIDDLEWARES_START = "user-middlewares-start",
29
+ /** Event representing that userland middlewares just finished */
30
+ USER_MIDDLEWARES_FINISH = "user-middlewares-finish"
31
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
+ /* tslint:disable:object-literal-sort-keys */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toArray = (x) => Array.isArray(x) ? x : [x];
@@ -0,0 +1,66 @@
1
+ /**
2
+ * When using span.log({ field1: string1, field2: object2, ... })
3
+ * The jaeger backend indexes for search the first-level fields that hold strings
4
+ * These fields then can be searched on jaeger-ui using: 'field1=string'
5
+ * This file concentrates all log fields used in node-vtex-api that hold
6
+ * strings and can be searched in the jaeger-ui
7
+ */
8
+ export declare const enum ErrorReportLogFields {
9
+ /**
10
+ * ErrorReport class has some meta info on the error
11
+ * The following log fields hold this meta info
12
+ */
13
+ ERROR_KIND = "error.kind",
14
+ ERROR_ID = "error.id",
15
+ ERROR_MESSAGE = "error.message",
16
+ ERROR_CODE = "error.code",
17
+ ERROR_STACK = "error.stack",
18
+ ERROR_METADATA_REPORT_COUNT = "error.metadata.reportCount",
19
+ ERROR_METADATA_METRICS_INSTANTIATION_TIME = "error.metadata.metrics.InstantiationTime",
20
+ /**
21
+ * VTEX's Infra errors adds error details to the response
22
+ * The following log fields are supposed to hold these fields
23
+ */
24
+ ERROR_SERVER_CODE = "error.server.code",
25
+ ERROR_SERVER_REQUEST_ID = "error.server.request_id"
26
+ }
27
+ export declare const enum RuntimeLogFields {
28
+ /** Time in ms spent to run the user middlewares */
29
+ USER_MIDDLEWARES_DURATION = "user-middlewares-duration"
30
+ }
31
+ export declare const enum HttpCacheLogFields {
32
+ /** The generated cache key for Memoization or Local caches */
33
+ KEY = "key",
34
+ /** The generated cache key for local cache with the segment added to it */
35
+ KEY_WITH_SEGMENT = "key-with-segment",
36
+ /** The key that was just set on the cache */
37
+ KEY_SET = "key-set",
38
+ /** The type of cache: 'disk', 'memory' or 'memoization' */
39
+ CACHE_TYPE = "cache-type",
40
+ /** The etag for the current request used for caching decisions. Can be undefined. */
41
+ ETAG = "etag",
42
+ /** The expiration time in seconds of the current cache entry (either just saved or fetched from the storage) */
43
+ EXPIRATION_TIME = "expiration-time",
44
+ /** The http response type. Can be undefined. */
45
+ RESPONSE_TYPE = "response-type",
46
+ /** The http response encoding. Can be undefined. */
47
+ RESPONSE_ENCONDING = "response-encoding",
48
+ /**
49
+ * The forceMaxAge option on the incoming RequestConfig. This can be set to override no-cache or no-store headers.
50
+ * Can be undefined.
51
+ */
52
+ FORCE_MAX_AGE = "force-max-age",
53
+ /** The calculated max-age the current response will have if stored */
54
+ CALCULATED_MAX_AGE = "calculated-max-age",
55
+ /** Content parsed from the incoming response headers */
56
+ AGE = "age",
57
+ NO_CACHE = "no-cache",
58
+ NO_STORE = "no-store",
59
+ MAX_AGE = "max-age"
60
+ }
61
+ export declare const enum HttpRetryLogFields {
62
+ /** The retry number scheduled (e.g, 1, 2, meaning that is the first or second retry) */
63
+ RETRY_NUMBER = "retry-number",
64
+ /** How much time in ms will be waited until this retry happens */
65
+ RETRY_IN = "retry-in"
66
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ /* tslint:disable:object-literal-sort-keys */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,81 @@
1
+ import { Tags as OpentracingTags } from 'opentracing';
2
+ export { OpentracingTags };
3
+ /**
4
+ * The following tags are process tags - defined when the tracer is instantiated.
5
+ * Those will annotate all spans created
6
+ */
7
+ export declare const enum AppTags {
8
+ /** Boolean indicating if the app is linked or not */
9
+ VTEX_APP_LINKED = "app.linked",
10
+ /** The value of the NODE_ENV environment variable */
11
+ VTEX_APP_NODE_ENV = "app.node_env",
12
+ /** The @vtex/api version used (e.g. '6.1.2') */
13
+ VTEX_APP_NODE_VTEX_API_VERSION = "app.node_vtex_api_version",
14
+ /** The value of the VTEX_PRODUCTION environment variable - whether the app is in a production workspace */
15
+ VTEX_APP_PRODUCTION = "app.production",
16
+ /** The value of the VTEX_REGION environment variable (e.g. 'aws-us-east-1') */
17
+ VTEX_APP_REGION = "app.region",
18
+ /** The app version (e.g. '1.2.0') */
19
+ VTEX_APP_VERSION = "app.version",
20
+ /** The workspace in which the app is installed or linked */
21
+ VTEX_APP_WORKSPACE = "app.workspace"
22
+ }
23
+ /** The following tags annotate the entrypoint span on incoming requests */
24
+ export declare const enum VTEXIncomingRequestTags {
25
+ /** The account being served by the request */
26
+ VTEX_ACCOUNT = "vtex.incoming.account",
27
+ /** The request id header value */
28
+ VTEX_REQUEST_ID = "vtex.request_id",
29
+ /** The workspace being served by the request */
30
+ VTEX_WORKSPACE = "vtex.incoming.workspace"
31
+ }
32
+ export declare const enum CustomHttpTags {
33
+ HTTP_PATH = "http.path",
34
+ /** Set to true when the client had no response, probably meaning that there was a client error */
35
+ HTTP_NO_RESPONSE = "http.no_response",
36
+ /** The HTTP client name (e.g. Apps, Registry, Router) */
37
+ HTTP_CLIENT_NAME = "http.client.name",
38
+ /**
39
+ * CACHE_ENABLED tags indicate if the Cache strategy is enabled
40
+ * for the specific request.
41
+ */
42
+ HTTP_MEMOIZATION_CACHE_ENABLED = "http.cache.memoization.enabled",
43
+ HTTP_DISK_CACHE_ENABLED = "http.cache.disk.enabled",
44
+ HTTP_MEMORY_CACHE_ENABLED = "http.cache.memory.enabled",
45
+ /**
46
+ * CACHE_RESULT tags indicate the result for that cache strategy
47
+ * (HIT or MISS for example). Since there may be many layers
48
+ * of cache a ENABLED flag for a strategy may be 'true', but
49
+ * the RESULT for that strategy may not be present.
50
+ */
51
+ HTTP_MEMORY_CACHE_RESULT = "http.cache.memory",
52
+ HTTP_MEMOIZATION_CACHE_RESULT = "http.cache.memoization",
53
+ HTTP_DISK_CACHE_RESULT = "http.cache.disk",
54
+ HTTP_ROUTER_CACHE_RESULT = "http.cache.router",
55
+ HTTP_RETRY_ERROR_CODE = "http.retry.error.code",
56
+ HTTP_RETRY_COUNT = "http.retry.count"
57
+ }
58
+ export declare const UserlandTags: {
59
+ SPAN_KIND: "span.kind";
60
+ SPAN_KIND_RPC_CLIENT: "client";
61
+ SPAN_KIND_RPC_SERVER: "server";
62
+ SPAN_KIND_MESSAGING_PRODUCER: "producer";
63
+ SPAN_KIND_MESSAGING_CONSUMER: "consumer";
64
+ ERROR: "error";
65
+ COMPONENT: "component";
66
+ SAMPLING_PRIORITY: "sampling.priority";
67
+ PEER_SERVICE: "peer.service";
68
+ PEER_HOSTNAME: "peer.hostname";
69
+ PEER_ADDRESS: "peer.address";
70
+ PEER_HOST_IPV4: "peer.ipv4";
71
+ PEER_HOST_IPV6: "peer.ipv6";
72
+ PEER_PORT: "peer.port";
73
+ HTTP_URL: "http.url";
74
+ HTTP_METHOD: "http.method";
75
+ HTTP_STATUS_CODE: "http.status_code";
76
+ MESSAGE_BUS_DESTINATION: "message_bus.destination";
77
+ DB_INSTANCE: "db.instance";
78
+ DB_STATEMENT: "db.statement";
79
+ DB_TYPE: "db.type";
80
+ DB_USER: "db.user";
81
+ };