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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/gen/manifest.schema +5 -3
  2. package/lib/HttpClient/GraphQLClient.d.ts +2 -1
  3. package/lib/HttpClient/GraphQLClient.js +5 -1
  4. package/lib/HttpClient/HttpClient.d.ts +6 -5
  5. package/lib/HttpClient/HttpClient.js +64 -21
  6. package/lib/HttpClient/agents.d.ts +3 -0
  7. package/lib/HttpClient/agents.js +37 -0
  8. package/lib/HttpClient/index.d.ts +1 -7
  9. package/lib/HttpClient/index.js +17 -16
  10. package/lib/HttpClient/middlewares/cache.d.ts +8 -2
  11. package/lib/HttpClient/middlewares/cache.js +126 -33
  12. package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
  13. package/lib/HttpClient/middlewares/cancellationToken.js +3 -1
  14. package/lib/HttpClient/middlewares/inflight.js +1 -0
  15. package/lib/HttpClient/middlewares/memoization.js +9 -1
  16. package/lib/HttpClient/middlewares/metrics.js +17 -31
  17. package/lib/HttpClient/middlewares/notFound.js +1 -0
  18. package/lib/HttpClient/middlewares/recorder.d.ts +1 -1
  19. package/lib/HttpClient/middlewares/recorder.js +20 -12
  20. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +11 -0
  21. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +31 -0
  22. package/lib/HttpClient/middlewares/request/index.d.ts +18 -0
  23. package/lib/HttpClient/middlewares/request/index.js +85 -0
  24. package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +2 -0
  25. package/lib/HttpClient/middlewares/request/setupAxios/index.js +21 -0
  26. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +2 -0
  27. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +54 -0
  28. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +2 -0
  29. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +7 -0
  30. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +8 -0
  31. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +56 -0
  32. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +4 -0
  33. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +30 -0
  34. package/lib/HttpClient/middlewares/tracing.d.ts +15 -0
  35. package/lib/HttpClient/middlewares/tracing.js +61 -0
  36. package/lib/HttpClient/typings.d.ts +44 -10
  37. package/lib/HttpClient/typings.js +1 -0
  38. package/lib/caches/DiskCache.d.ts +1 -1
  39. package/lib/caches/DiskCache.js +1 -0
  40. package/lib/caches/LRUCache.d.ts +2 -2
  41. package/lib/caches/LRUCache.js +6 -1
  42. package/lib/caches/LRUDiskCache.d.ts +1 -1
  43. package/lib/caches/LRUDiskCache.js +6 -1
  44. package/lib/caches/MultilayeredCache.d.ts +1 -1
  45. package/lib/caches/MultilayeredCache.js +2 -1
  46. package/lib/caches/index.js +16 -7
  47. package/lib/{HttpClient → clients}/IOClient.d.ts +4 -4
  48. package/lib/clients/IOClient.js +20 -0
  49. package/lib/clients/IOClients.d.ts +28 -24
  50. package/lib/clients/IOClients.js +36 -28
  51. package/lib/{HttpClient → clients}/IOGraphQLClient.d.ts +4 -4
  52. package/lib/{HttpClient → clients}/IOGraphQLClient.js +3 -2
  53. package/lib/{HttpClient → clients/apps}/AppClient.d.ts +3 -3
  54. package/lib/{HttpClient → clients/apps}/AppClient.js +11 -5
  55. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.d.ts +3 -3
  56. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.js +11 -5
  57. package/lib/clients/apps/Billing.d.ts +12 -0
  58. package/lib/clients/{Billing.js → apps/Billing.js} +9 -3
  59. package/lib/clients/{Builder.d.ts → apps/Builder.d.ts} +12 -11
  60. package/lib/clients/{Builder.js → apps/Builder.js} +50 -22
  61. package/lib/clients/apps/MessagesGraphQL.d.ts +61 -0
  62. package/lib/clients/apps/MessagesGraphQL.js +122 -0
  63. package/lib/clients/{Settings.d.ts → apps/Settings.d.ts} +5 -4
  64. package/lib/clients/{Settings.js → apps/Settings.js} +15 -20
  65. package/lib/clients/apps/catalogGraphQL/brand.d.ts +13 -0
  66. package/lib/clients/apps/catalogGraphQL/brand.js +19 -0
  67. package/lib/clients/apps/catalogGraphQL/category.d.ts +11 -0
  68. package/lib/clients/apps/catalogGraphQL/category.js +17 -0
  69. package/lib/clients/apps/catalogGraphQL/index.d.ts +22 -0
  70. package/lib/clients/apps/catalogGraphQL/index.js +89 -0
  71. package/lib/clients/apps/catalogGraphQL/product.d.ts +25 -0
  72. package/lib/clients/apps/catalogGraphQL/product.js +31 -0
  73. package/lib/clients/apps/catalogGraphQL/sku.d.ts +26 -0
  74. package/lib/clients/apps/catalogGraphQL/sku.js +31 -0
  75. package/lib/clients/apps/index.d.ts +7 -0
  76. package/lib/clients/apps/index.js +19 -0
  77. package/lib/{HttpClient → clients/external}/ExternalClient.d.ts +3 -3
  78. package/lib/{HttpClient → clients/external}/ExternalClient.js +10 -2
  79. package/lib/clients/external/ID.d.ts +23 -0
  80. package/lib/clients/external/ID.js +61 -0
  81. package/lib/clients/external/Masterdata.d.ts +94 -0
  82. package/lib/clients/external/Masterdata.js +225 -0
  83. package/lib/clients/external/PaymentProvider.d.ts +31 -0
  84. package/lib/clients/external/PaymentProvider.js +43 -0
  85. package/lib/clients/external/index.d.ts +4 -0
  86. package/lib/clients/external/index.js +16 -0
  87. package/lib/clients/index.d.ts +9 -21
  88. package/lib/clients/index.js +23 -24
  89. package/lib/clients/infra/Apps.d.ts +88 -0
  90. package/lib/clients/infra/Apps.js +511 -0
  91. package/lib/clients/infra/Assets.d.ts +34 -0
  92. package/lib/clients/{Assets.js → infra/Assets.js} +75 -19
  93. package/lib/clients/infra/BillingMetrics.d.ts +13 -0
  94. package/lib/clients/infra/BillingMetrics.js +16 -0
  95. package/lib/clients/infra/Events.d.ts +12 -0
  96. package/lib/clients/infra/Events.js +34 -0
  97. package/lib/clients/infra/Housekeeper.d.ts +10 -0
  98. package/lib/clients/infra/Housekeeper.js +31 -0
  99. package/lib/{HttpClient → clients/infra}/InfraClient.d.ts +3 -3
  100. package/lib/{HttpClient → clients/infra}/InfraClient.js +10 -4
  101. package/lib/clients/infra/Registry.d.ts +59 -0
  102. package/lib/clients/{Registry.js → infra/Registry.js} +95 -33
  103. package/lib/clients/infra/Router.d.ts +34 -0
  104. package/lib/clients/infra/Router.js +82 -0
  105. package/lib/clients/infra/Sphinx.d.ts +13 -0
  106. package/lib/clients/infra/Sphinx.js +30 -0
  107. package/lib/clients/infra/VBase.d.ts +60 -0
  108. package/lib/clients/infra/VBase.js +197 -0
  109. package/lib/clients/infra/Workspaces.d.ts +18 -0
  110. package/lib/clients/infra/Workspaces.js +66 -0
  111. package/lib/clients/infra/index.d.ts +11 -0
  112. package/lib/clients/infra/index.js +23 -0
  113. package/lib/{HttpClient → clients/janus}/JanusClient.d.ts +3 -3
  114. package/lib/{HttpClient → clients/janus}/JanusClient.js +8 -3
  115. package/lib/clients/janus/LicenseManager.d.ts +7 -0
  116. package/lib/clients/{LicenseManager.js → janus/LicenseManager.js} +24 -8
  117. package/lib/clients/{Segment.d.ts → janus/Segment.d.ts} +7 -11
  118. package/lib/clients/janus/Segment.js +89 -0
  119. package/lib/clients/{Session.d.ts → janus/Session.d.ts} +4 -4
  120. package/lib/clients/{Session.js → janus/Session.js} +25 -13
  121. package/lib/clients/{Tenant.d.ts → janus/Tenant.d.ts} +6 -7
  122. package/lib/clients/janus/Tenant.js +29 -0
  123. package/lib/clients/janus/index.d.ts +5 -0
  124. package/lib/clients/janus/index.js +17 -0
  125. package/lib/constants.d.ts +49 -1
  126. package/lib/constants.js +55 -1
  127. package/lib/errors/AuthenticationError.js +1 -0
  128. package/lib/errors/ForbiddenError.js +1 -0
  129. package/lib/errors/NotFoundError.js +1 -0
  130. package/lib/errors/RequestCancelledError.js +1 -0
  131. package/lib/errors/ResolverError.d.ts +1 -1
  132. package/lib/errors/ResolverError.js +3 -2
  133. package/lib/errors/ResolverWarning.d.ts +1 -1
  134. package/lib/errors/ResolverWarning.js +3 -2
  135. package/lib/errors/TooManyRequestsError.js +1 -0
  136. package/lib/errors/UserInputError.js +1 -0
  137. package/lib/errors/index.js +18 -11
  138. package/lib/index.d.ts +9 -7
  139. package/lib/index.js +27 -16
  140. package/lib/metrics/MetricsAccumulator.d.ts +1 -18
  141. package/lib/metrics/MetricsAccumulator.js +39 -22
  142. package/lib/responses.d.ts +3 -44
  143. package/lib/service/index.d.ts +2 -0
  144. package/lib/service/index.js +34 -0
  145. package/lib/service/loaders.d.ts +8 -0
  146. package/lib/service/loaders.js +55 -0
  147. package/lib/service/logger/console.d.ts +10 -0
  148. package/lib/service/logger/console.js +37 -0
  149. package/lib/service/logger/index.d.ts +2 -28
  150. package/lib/service/logger/index.js +12 -68
  151. package/lib/service/logger/logger.d.ts +29 -0
  152. package/lib/service/logger/logger.js +62 -0
  153. package/lib/service/logger/metricsLogger.d.ts +40 -0
  154. package/lib/service/logger/metricsLogger.js +150 -0
  155. package/lib/service/master.d.ts +2 -0
  156. package/lib/service/master.js +88 -0
  157. package/lib/service/metrics/requestMetricsMiddleware.d.ts +2 -0
  158. package/lib/service/metrics/requestMetricsMiddleware.js +45 -0
  159. package/lib/service/tracing/TracerSingleton.d.ts +7 -0
  160. package/lib/service/tracing/TracerSingleton.js +49 -0
  161. package/lib/service/tracing/metrics/MetricNames.d.ts +60 -0
  162. package/lib/service/tracing/metrics/MetricNames.js +45 -0
  163. package/lib/service/tracing/metrics/instruments.d.ts +9 -0
  164. package/lib/service/tracing/metrics/instruments.js +12 -0
  165. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +9 -0
  166. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +26 -0
  167. package/lib/service/tracing/tracingMiddlewares.d.ts +5 -0
  168. package/lib/service/tracing/tracingMiddlewares.js +114 -0
  169. package/lib/service/worker/index.d.ts +11 -0
  170. package/lib/service/worker/index.js +196 -0
  171. package/lib/service/worker/listeners.d.ts +3 -0
  172. package/lib/{utils/unhandled.js → service/worker/listeners.js} +10 -15
  173. package/lib/service/{Service.d.ts → worker/runtime/Service.d.ts} +5 -5
  174. package/lib/service/{Service.js → worker/runtime/Service.js} +3 -1
  175. package/lib/service/worker/runtime/builtIn/handlers.d.ts +4 -0
  176. package/lib/service/worker/runtime/builtIn/handlers.js +31 -0
  177. package/lib/service/worker/runtime/builtIn/middlewares.d.ts +4 -0
  178. package/lib/service/worker/runtime/builtIn/middlewares.js +41 -0
  179. package/lib/service/worker/runtime/events/index.d.ts +4 -0
  180. package/lib/service/worker/runtime/events/index.js +47 -0
  181. package/lib/service/worker/runtime/events/middlewares/body.d.ts +3 -0
  182. package/lib/service/worker/runtime/events/middlewares/body.js +26 -0
  183. package/lib/service/worker/runtime/events/middlewares/context.d.ts +3 -0
  184. package/lib/service/worker/runtime/events/middlewares/context.js +23 -0
  185. package/lib/service/worker/runtime/events/router.d.ts +2 -0
  186. package/lib/service/worker/runtime/events/router.js +28 -0
  187. package/lib/service/worker/runtime/graphql/index.d.ts +6 -0
  188. package/lib/service/worker/runtime/graphql/index.js +28 -0
  189. package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +2 -0
  190. package/lib/service/worker/runtime/graphql/middlewares/context.js +17 -0
  191. package/lib/service/worker/runtime/graphql/middlewares/error.js +97 -0
  192. package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +3 -0
  193. package/lib/service/worker/runtime/graphql/middlewares/query.js +53 -0
  194. package/lib/service/worker/runtime/graphql/middlewares/response.js +39 -0
  195. package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +2 -0
  196. package/lib/service/worker/runtime/graphql/middlewares/run.js +20 -0
  197. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +5 -0
  198. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +29 -0
  199. package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +4 -0
  200. package/lib/service/{graphql → worker/runtime/graphql}/middlewares/upload.js +1 -0
  201. package/lib/service/worker/runtime/graphql/schema/index.d.ts +7 -0
  202. package/lib/service/worker/runtime/graphql/schema/index.js +32 -0
  203. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +6 -0
  204. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +80 -0
  205. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.d.ts +1 -0
  206. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.js +17 -10
  207. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +7 -0
  208. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +38 -0
  209. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +11 -0
  210. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +62 -0
  211. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +7 -0
  212. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +41 -0
  213. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.d.ts +1 -0
  214. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.js +7 -0
  215. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +6 -0
  216. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +35 -0
  217. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.d.ts +1 -0
  218. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.js +9 -3
  219. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +7 -0
  220. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +40 -0
  221. package/lib/service/{graphql/schema/schemaDirectives/Translatable.d.ts → worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts} +2 -1
  222. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +34 -0
  223. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +22 -0
  224. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +37 -0
  225. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +8 -0
  226. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +13 -0
  227. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.js +1 -0
  228. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.js +6 -1
  229. package/lib/service/worker/runtime/graphql/typings.d.ts +31 -0
  230. package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +2 -0
  231. package/lib/service/worker/runtime/graphql/utils/cacheControl.js +33 -0
  232. package/lib/service/worker/runtime/graphql/utils/error.d.ts +2 -0
  233. package/lib/service/worker/runtime/graphql/utils/error.js +77 -0
  234. package/lib/service/{graphql → worker/runtime/graphql}/utils/pathname.js +1 -0
  235. package/lib/service/worker/runtime/graphql/utils/translations.d.ts +14 -0
  236. package/lib/service/worker/runtime/graphql/utils/translations.js +39 -0
  237. package/lib/service/worker/runtime/http/index.d.ts +5 -0
  238. package/lib/service/worker/runtime/http/index.js +59 -0
  239. package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +3 -0
  240. package/lib/service/{http → worker/runtime/http}/middlewares/authTokens.js +1 -0
  241. package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +3 -0
  242. package/lib/service/{http → worker/runtime/http}/middlewares/cancellationToken.js +3 -1
  243. package/lib/service/worker/runtime/http/middlewares/clients.d.ts +4 -0
  244. package/lib/service/{http → worker/runtime/http}/middlewares/clients.js +1 -0
  245. package/lib/service/worker/runtime/http/middlewares/context.d.ts +4 -0
  246. package/lib/service/worker/runtime/http/middlewares/context.js +37 -0
  247. package/lib/service/worker/runtime/http/middlewares/error.d.ts +2 -0
  248. package/lib/service/{http → worker/runtime/http}/middlewares/error.js +28 -15
  249. package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +6 -0
  250. package/lib/service/worker/runtime/http/middlewares/rateLimit.js +43 -0
  251. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.d.ts +3 -3
  252. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.js +1 -0
  253. package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +3 -0
  254. package/lib/service/{http → worker/runtime/http}/middlewares/setCookie.js +1 -0
  255. package/lib/service/worker/runtime/http/middlewares/settings.d.ts +9 -0
  256. package/lib/service/worker/runtime/http/middlewares/settings.js +45 -0
  257. package/lib/service/worker/runtime/http/middlewares/timings.d.ts +3 -0
  258. package/lib/service/{http → worker/runtime/http}/middlewares/timings.js +22 -8
  259. package/lib/service/worker/runtime/http/middlewares/vary.d.ts +3 -0
  260. package/lib/service/{http → worker/runtime/http}/middlewares/vary.js +4 -3
  261. package/lib/service/worker/runtime/http/router.d.ts +2 -0
  262. package/lib/service/worker/runtime/http/router.js +24 -0
  263. package/lib/service/worker/runtime/http/routes.d.ts +19 -0
  264. package/lib/service/worker/runtime/http/routes.js +13 -0
  265. package/lib/service/worker/runtime/method.d.ts +9 -0
  266. package/lib/service/{method.js → worker/runtime/method.js} +1 -0
  267. package/lib/service/worker/runtime/statusTrack.d.ts +14 -0
  268. package/lib/service/worker/runtime/statusTrack.js +38 -0
  269. package/lib/service/{typings.d.ts → worker/runtime/typings.d.ts} +70 -36
  270. package/lib/service/worker/runtime/utils/compose.d.ts +5 -0
  271. package/lib/service/{utils → worker/runtime/utils}/compose.js +3 -2
  272. package/lib/service/worker/runtime/utils/context.d.ts +5 -0
  273. package/lib/service/worker/runtime/utils/context.js +41 -0
  274. package/lib/service/worker/runtime/utils/diff.d.ts +12 -0
  275. package/lib/service/worker/runtime/utils/diff.js +22 -0
  276. package/lib/service/worker/runtime/utils/recorder.d.ts +8 -0
  277. package/lib/service/worker/runtime/utils/recorder.js +38 -0
  278. package/lib/service/{graphql/utils/array.js → worker/runtime/utils/toArray.js} +1 -0
  279. package/lib/service/worker/runtime/utils/tokenBucket.d.ts +2 -0
  280. package/lib/service/worker/runtime/utils/tokenBucket.js +17 -0
  281. package/lib/tracing/LogEvents.d.ts +31 -0
  282. package/lib/tracing/LogEvents.js +3 -0
  283. package/lib/tracing/LogFields.d.ts +66 -0
  284. package/lib/tracing/LogFields.js +3 -0
  285. package/lib/tracing/Tags.d.ts +81 -0
  286. package/lib/tracing/Tags.js +8 -0
  287. package/lib/tracing/UserLandTracer.d.ts +27 -0
  288. package/lib/tracing/UserLandTracer.js +57 -0
  289. package/lib/tracing/errorReporting/ErrorReport.d.ts +31 -0
  290. package/lib/tracing/errorReporting/ErrorReport.js +71 -0
  291. package/lib/tracing/index.d.ts +9 -0
  292. package/lib/tracing/index.js +20 -0
  293. package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +4 -0
  294. package/lib/tracing/spanReference/SpanReferenceTypes.js +8 -0
  295. package/lib/tracing/spanReference/createSpanReference.d.ts +3 -0
  296. package/lib/tracing/spanReference/createSpanReference.js +9 -0
  297. package/lib/tracing/utils.d.ts +13 -0
  298. package/lib/tracing/utils.js +41 -0
  299. package/lib/utils/MineWinsConflictsResolver.d.ts +6 -4
  300. package/lib/utils/MineWinsConflictsResolver.js +35 -17
  301. package/lib/utils/app.d.ts +3 -1
  302. package/lib/utils/app.js +4 -1
  303. package/lib/utils/appsStaleIfError.d.ts +1 -1
  304. package/lib/utils/appsStaleIfError.js +20 -7
  305. package/lib/utils/billingOptions.d.ts +36 -3
  306. package/lib/utils/billingOptions.js +8 -3
  307. package/lib/utils/binding.d.ts +3 -3
  308. package/lib/utils/binding.js +1 -0
  309. package/lib/utils/buildFullPath.d.ts +11 -0
  310. package/lib/utils/buildFullPath.js +54 -0
  311. package/lib/utils/cancel.d.ts +2 -2
  312. package/lib/utils/cancel.js +3 -1
  313. package/lib/utils/conflicts.mock.d.ts +17 -0
  314. package/lib/utils/conflicts.mock.js +28 -0
  315. package/lib/utils/domain.js +1 -0
  316. package/lib/utils/error.js +1 -0
  317. package/lib/utils/index.js +19 -12
  318. package/lib/utils/json.js +1 -0
  319. package/lib/utils/log.d.ts +1 -3
  320. package/lib/utils/log.js +3 -2
  321. package/lib/utils/message.js +5 -1
  322. package/lib/utils/renameBy.js +1 -0
  323. package/lib/utils/retry.js +3 -2
  324. package/lib/utils/status.js +1 -0
  325. package/lib/utils/tenant.d.ts +3 -3
  326. package/lib/utils/tenant.js +1 -0
  327. package/lib/utils/throwOnGraphQLErrors.js +1 -0
  328. package/lib/utils/time.d.ts +7 -7
  329. package/lib/utils/time.js +10 -2
  330. package/package.json +3 -3
  331. package/lib/HttpClient/IOClient.js +0 -14
  332. package/lib/HttpClient/factories/index.d.ts +0 -8
  333. package/lib/HttpClient/factories/index.js +0 -31
  334. package/lib/HttpClient/middlewares/request.d.ts +0 -10
  335. package/lib/HttpClient/middlewares/request.js +0 -87
  336. package/lib/IODataSource.d.ts +0 -27
  337. package/lib/IODataSource.js +0 -46
  338. package/lib/clients/Apps.d.ts +0 -84
  339. package/lib/clients/Apps.js +0 -326
  340. package/lib/clients/Assets.d.ts +0 -21
  341. package/lib/clients/Billing.d.ts +0 -11
  342. package/lib/clients/BillingMetrics.d.ts +0 -12
  343. package/lib/clients/BillingMetrics.js +0 -10
  344. package/lib/clients/Events.d.ts +0 -6
  345. package/lib/clients/Events.js +0 -19
  346. package/lib/clients/Housekeeper.d.ts +0 -11
  347. package/lib/clients/Housekeeper.js +0 -24
  348. package/lib/clients/ID.d.ts +0 -22
  349. package/lib/clients/ID.js +0 -48
  350. package/lib/clients/LicenseManager.d.ts +0 -6
  351. package/lib/clients/Logger.d.ts +0 -27
  352. package/lib/clients/Logger.js +0 -32
  353. package/lib/clients/Messages.d.ts +0 -18
  354. package/lib/clients/Messages.js +0 -20
  355. package/lib/clients/MessagesGraphQL.d.ts +0 -63
  356. package/lib/clients/MessagesGraphQL.js +0 -50
  357. package/lib/clients/Metadata.d.ts +0 -25
  358. package/lib/clients/Metadata.js +0 -53
  359. package/lib/clients/Registry.d.ts +0 -61
  360. package/lib/clients/Router.d.ts +0 -33
  361. package/lib/clients/Router.js +0 -50
  362. package/lib/clients/Segment.js +0 -69
  363. package/lib/clients/Sphinx.d.ts +0 -12
  364. package/lib/clients/Sphinx.js +0 -19
  365. package/lib/clients/Tenant.js +0 -13
  366. package/lib/clients/VBase.d.ts +0 -57
  367. package/lib/clients/VBase.js +0 -116
  368. package/lib/clients/Workspaces.d.ts +0 -17
  369. package/lib/clients/Workspaces.js +0 -38
  370. package/lib/service/Runtime.d.ts +0 -18
  371. package/lib/service/Runtime.js +0 -57
  372. package/lib/service/events/index.d.ts +0 -3
  373. package/lib/service/events/index.js +0 -21
  374. package/lib/service/graphql/index.d.ts +0 -7
  375. package/lib/service/graphql/index.js +0 -33
  376. package/lib/service/graphql/middlewares/error.js +0 -107
  377. package/lib/service/graphql/middlewares/formatters.d.ts +0 -2
  378. package/lib/service/graphql/middlewares/formatters.js +0 -64
  379. package/lib/service/graphql/middlewares/query.d.ts +0 -2
  380. package/lib/service/graphql/middlewares/query.js +0 -32
  381. package/lib/service/graphql/middlewares/response.js +0 -36
  382. package/lib/service/graphql/middlewares/run.d.ts +0 -4
  383. package/lib/service/graphql/middlewares/run.js +0 -55
  384. package/lib/service/graphql/middlewares/schema.d.ts +0 -2
  385. package/lib/service/graphql/middlewares/schema.js +0 -8
  386. package/lib/service/graphql/middlewares/timings.d.ts +0 -2
  387. package/lib/service/graphql/middlewares/timings.js +0 -10
  388. package/lib/service/graphql/middlewares/upload.d.ts +0 -7
  389. package/lib/service/graphql/schema/index.d.ts +0 -3
  390. package/lib/service/graphql/schema/index.js +0 -66
  391. package/lib/service/graphql/schema/messagesLoader.d.ts +0 -4
  392. package/lib/service/graphql/schema/messagesLoader.js +0 -41
  393. package/lib/service/graphql/schema/messagesLoaderV2.d.ts +0 -5
  394. package/lib/service/graphql/schema/messagesLoaderV2.js +0 -44
  395. package/lib/service/graphql/schema/schemaDirectives/Translatable.js +0 -54
  396. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.d.ts +0 -13
  397. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.js +0 -67
  398. package/lib/service/graphql/schema/schemaDirectives/index.d.ts +0 -13
  399. package/lib/service/graphql/schema/schemaDirectives/index.js +0 -17
  400. package/lib/service/graphql/schema/typeDefs/index.d.ts +0 -16
  401. package/lib/service/graphql/schema/typeDefs/index.js +0 -21
  402. package/lib/service/graphql/schema/typeDefs/ioMessage.d.ts +0 -8
  403. package/lib/service/graphql/schema/typeDefs/ioMessage.js +0 -33
  404. package/lib/service/graphql/typings.d.ts +0 -21
  405. package/lib/service/graphql/utils/cacheControl.d.ts +0 -6
  406. package/lib/service/graphql/utils/cacheControl.js +0 -38
  407. package/lib/service/graphql/utils/maxAgeEnum.d.ts +0 -6
  408. package/lib/service/graphql/utils/maxAgeEnum.js +0 -17
  409. package/lib/service/http/index.d.ts +0 -3
  410. package/lib/service/http/index.js +0 -18
  411. package/lib/service/http/middlewares/authTokens.d.ts +0 -3
  412. package/lib/service/http/middlewares/cancellationToken.d.ts +0 -3
  413. package/lib/service/http/middlewares/clients.d.ts +0 -4
  414. package/lib/service/http/middlewares/error.d.ts +0 -3
  415. package/lib/service/http/middlewares/setCookie.d.ts +0 -3
  416. package/lib/service/http/middlewares/timings.d.ts +0 -3
  417. package/lib/service/http/middlewares/vary.d.ts +0 -3
  418. package/lib/service/method.d.ts +0 -9
  419. package/lib/service/utils/compose.d.ts +0 -4
  420. package/lib/utils/MineWinsConflictsResolver.test.d.ts +0 -1
  421. package/lib/utils/MineWinsConflictsResolver.test.js +0 -134
  422. package/lib/utils/unhandled.d.ts +0 -1
  423. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/error.d.ts +0 -0
  424. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/response.d.ts +0 -0
  425. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.d.ts +0 -0
  426. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.d.ts +0 -0
  427. /package/lib/service/{graphql → worker/runtime/graphql}/typings.js +0 -0
  428. /package/lib/service/{graphql → worker/runtime/graphql}/utils/pathname.d.ts +0 -0
  429. /package/lib/service/{typings.js → worker/runtime/typings.js} +0 -0
  430. /package/lib/service/{graphql/utils/array.d.ts → worker/runtime/utils/toArray.d.ts} +0 -0
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clients = void 0;
3
4
  function clients(ClientsImpl, clientOptions) {
4
5
  return async function withClients(ctx, next) {
5
6
  if (ctx.serverTiming) {
@@ -0,0 +1,4 @@
1
+ import { IOClients } from '../../../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceContext, ServiceRoute } from './../../typings';
3
+ export declare const createPvtContextMiddleware: (routeId: string, { smartcache }: ServiceRoute) => <T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>) => Promise<void>;
4
+ export declare const createPubContextMiddleware: (routeId: string, { smartcache }: ServiceRoute) => <T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPubContextMiddleware = exports.createPvtContextMiddleware = void 0;
4
+ const querystring_1 = require("querystring");
5
+ const constants_1 = require("../../../../../constants");
6
+ const context_1 = require("../../utils/context");
7
+ exports.createPvtContextMiddleware = (routeId, { smartcache }) => {
8
+ return async function pvtContext(ctx, next) {
9
+ const { params, request: { header }, } = ctx;
10
+ ctx.vtex = {
11
+ ...context_1.prepareHandlerCtx(header, ctx.tracing),
12
+ ...(smartcache && { recorder: ctx.state.recorder }),
13
+ route: {
14
+ id: routeId,
15
+ params,
16
+ type: 'private',
17
+ },
18
+ };
19
+ await next();
20
+ };
21
+ };
22
+ exports.createPubContextMiddleware = (routeId, { smartcache }) => {
23
+ return async function pubContext(ctx, next) {
24
+ const { request: { header }, } = ctx;
25
+ ctx.vtex = {
26
+ ...context_1.prepareHandlerCtx(header, ctx.tracing),
27
+ ...(smartcache && { recorder: ctx.state.recorder }),
28
+ route: {
29
+ declarer: header[constants_1.COLOSSUS_ROUTE_DECLARER_HEADER],
30
+ id: routeId,
31
+ params: querystring_1.parse(header[constants_1.COLOSSUS_PARAMS_HEADER]),
32
+ type: 'public',
33
+ },
34
+ };
35
+ await next();
36
+ };
37
+ };
@@ -0,0 +1,2 @@
1
+ import { ServiceContext } from '../../typings';
2
+ export declare function error(ctx: ServiceContext, next: () => Promise<void>): Promise<void>;
@@ -1,23 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const Logger_1 = require("../../../clients/Logger");
4
- const constants_1 = require("../../../constants");
5
- const RequestCancelledError_1 = require("../../../errors/RequestCancelledError");
6
- const TooManyRequestsError_1 = require("../../../errors/TooManyRequestsError");
7
- const error_1 = require("../../../utils/error");
3
+ exports.error = void 0;
4
+ const axios_1 = require("axios");
5
+ const constants_1 = require("../../../../../constants");
6
+ const RequestCancelledError_1 = require("../../../../../errors/RequestCancelledError");
7
+ const TooManyRequestsError_1 = require("../../../../../errors/TooManyRequestsError");
8
+ const error_1 = require("../../../../../utils/error");
9
+ const logger_1 = require("../../../../logger");
8
10
  const CACHE_CONTROL_HEADER = 'cache-control';
9
11
  const META_HEADER = 'x-vtex-meta';
10
12
  const ETAG_HEADER = 'etag';
11
13
  const TWO_SECONDS_S = 2;
12
14
  const production = process.env.VTEX_PRODUCTION === 'true';
15
+ // todo: unify GraphQL and REST exception treatment
13
16
  const logAndRemoveSensitiveData = (ctx, err) => {
14
- const { method, status, query, vtex: { operationId, requestId, route: { id, params, }, }, headers: { 'x-forwarded-path': forwardedPath, 'x-forwarded-host': forwardedHost, 'x-forwarded-proto': forwardedProto, 'x-vtex-caller': caller, 'x-vtex-platform': platform, 'x-vtex-product': product, 'x-vtex-locale': locale, }, } = ctx;
17
+ const { method, status, query, vtex: { operationId, requestId, route: { id, params, }, serverTiming, }, headers: { 'x-forwarded-path': forwardedPath, 'x-forwarded-host': forwardedHost, 'x-forwarded-proto': forwardedProto, 'x-vtex-caller': caller, 'x-vtex-platform': platform, 'x-vtex-product': product, 'x-vtex-locale': locale, }, } = ctx;
15
18
  // Grab level from originalError, default to "error" level.
16
19
  let level = err && err.level;
17
- if (!level || !(level === Logger_1.LogLevel.Error || level === Logger_1.LogLevel.Warn)) {
18
- level = Logger_1.LogLevel.Error;
20
+ if (!level || !(level === logger_1.LogLevel.Error || level === logger_1.LogLevel.Warn)) {
21
+ level = logger_1.LogLevel.Error;
19
22
  }
20
- const log = Object.assign({}, err, { caller,
23
+ const log = {
24
+ ...err,
25
+ caller,
21
26
  forwardedHost,
22
27
  forwardedPath,
23
28
  forwardedProto,
@@ -28,7 +33,11 @@ const logAndRemoveSensitiveData = (ctx, err) => {
28
33
  platform,
29
34
  product,
30
35
  query,
31
- requestId, routeId: id, status });
36
+ requestId,
37
+ routeId: id,
38
+ serverTiming,
39
+ status,
40
+ };
32
41
  // Use sendLog directly to avoid cleaning error twice.
33
42
  ctx.vtex.logger.log(log, level);
34
43
  if (!constants_1.LINKED) {
@@ -38,6 +47,7 @@ const logAndRemoveSensitiveData = (ctx, err) => {
38
47
  }
39
48
  };
40
49
  async function error(ctx, next) {
50
+ var _a;
41
51
  try {
42
52
  await next();
43
53
  }
@@ -53,14 +63,17 @@ async function error(ctx, next) {
53
63
  console.error('[node-vtex-api error]', e);
54
64
  const err = error_1.cleanError(e);
55
65
  // Add response
56
- ctx.status = e && e.status >= 400 && e.status <= 599
57
- ? e.status
58
- : ctx.status >= 500 && ctx.status <= 599
59
- ? ctx.status
60
- : 500;
66
+ if (e instanceof axios_1.AxiosError) {
67
+ ctx.status = (e === null || e === void 0 ? void 0 : e.status) && e.status >= 400 && e.status <= 599
68
+ ? e.status
69
+ : ctx.status >= 500 && ctx.status <= 599
70
+ ? ctx.status
71
+ : 500;
72
+ }
61
73
  // Do not generate etag for errors
62
74
  ctx.remove(META_HEADER);
63
75
  ctx.remove(ETAG_HEADER);
76
+ (_a = ctx.vtex.recorder) === null || _a === void 0 ? void 0 : _a.clear();
64
77
  // In production errors, add two second cache
65
78
  if (production) {
66
79
  ctx.set(CACHE_CONTROL_HEADER, `public, max-age=${TWO_SECONDS_S}`);
@@ -0,0 +1,6 @@
1
+ import TokenBucket from 'tokenbucket';
2
+ import { ServiceContext } from '../../typings';
3
+ declare function noopMiddleware(_: ServiceContext, next: () => Promise<void>): Promise<void>;
4
+ export declare function perMinuteRateLimiter(rateLimit?: number, globalLimiter?: TokenBucket): typeof noopMiddleware;
5
+ export declare function concurrentRateLimiter(rateLimit?: number): typeof noopMiddleware;
6
+ export {};
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.concurrentRateLimiter = exports.perMinuteRateLimiter = void 0;
4
+ const errors_1 = require("../../../../../errors");
5
+ const tokenBucket_1 = require("../../utils/tokenBucket");
6
+ const responseMessageConcurrent = 'Rate Exceeded: Too many requests in execution';
7
+ const responseMessagePerMinute = 'Rate Exceeded: Too many requests per minute';
8
+ function noopMiddleware(_, next) {
9
+ return next();
10
+ }
11
+ function perMinuteRateLimiter(rateLimit, globalLimiter) {
12
+ if (!rateLimit && !globalLimiter) {
13
+ return noopMiddleware;
14
+ }
15
+ const tokenBucket = tokenBucket_1.createTokenBucket(rateLimit, globalLimiter);
16
+ return function perMinuteRateMiddleware(ctx, next) {
17
+ if (!tokenBucket.removeTokensSync(1)) {
18
+ throw new errors_1.TooManyRequestsError(responseMessagePerMinute);
19
+ }
20
+ return next();
21
+ };
22
+ }
23
+ exports.perMinuteRateLimiter = perMinuteRateLimiter;
24
+ function concurrentRateLimiter(rateLimit) {
25
+ if (!rateLimit) {
26
+ return noopMiddleware;
27
+ }
28
+ let reqsInExecution = 0;
29
+ const maxRequests = rateLimit;
30
+ return async function concurrentRateMiddleware(ctx, next) {
31
+ if (reqsInExecution >= maxRequests) {
32
+ throw new errors_1.TooManyRequestsError(responseMessageConcurrent);
33
+ }
34
+ reqsInExecution++;
35
+ try {
36
+ await next();
37
+ }
38
+ finally {
39
+ reqsInExecution--;
40
+ }
41
+ };
42
+ }
43
+ exports.concurrentRateLimiter = concurrentRateLimiter;
@@ -1,5 +1,5 @@
1
- import { IOClients } from '../../../clients/IOClients';
2
- import { ServiceContext } from '../../typings';
1
+ import { IOClients } from '../../../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceContext } from '../../typings';
3
3
  export declare const cancelMessage = "Request cancelled";
4
4
  declare class IncomingRequestStats {
5
5
  aborted: number;
@@ -13,5 +13,5 @@ declare class IncomingRequestStats {
13
13
  clear(): void;
14
14
  }
15
15
  export declare const incomingRequestStats: IncomingRequestStats;
16
- export declare function trackIncomingRequestStats<T extends IOClients, U, V>(ctx: ServiceContext<T, U, V>, next: () => Promise<any>): Promise<void>;
16
+ export declare function trackIncomingRequestStats<T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
17
17
  export {};
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.trackIncomingRequestStats = exports.incomingRequestStats = exports.cancelMessage = void 0;
3
4
  exports.cancelMessage = 'Request cancelled';
4
5
  class IncomingRequestStats {
5
6
  constructor() {
@@ -0,0 +1,3 @@
1
+ import { IOClients } from '../../../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceContext } from '../../typings';
3
+ export declare function removeSetCookie<T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeSetCookie = void 0;
3
4
  const ramda_1 = require("ramda");
4
5
  const BLACKLISTED_COOKIES = new Set(['checkout.vtex.com']);
5
6
  const warnMessage = (keys) => `Removing set-cookie from response since cache-control has as public scope.
@@ -0,0 +1,9 @@
1
+ import { AppMetaInfo, Apps } from '../../../../../clients/infra/Apps';
2
+ import { IOClients } from '../../../../../clients/IOClients';
3
+ import { RequestTracingConfig } from '../../../../../HttpClient';
4
+ import { Assets } from './../../../../../clients/infra/Assets';
5
+ import { ParamsContext, RecorderState, ServiceContext } from './../../typings';
6
+ export declare const getFilteredDependencies: (appAtMajor: string, dependencies: AppMetaInfo[]) => AppMetaInfo[];
7
+ export declare const getDependenciesHash: (dependencies: AppMetaInfo[]) => string;
8
+ export declare const getDependenciesSettings: (apps: Apps, assets: Assets, tracingConfig?: RequestTracingConfig | undefined) => Promise<Record<string, any>[]>;
9
+ export declare const getServiceSettings: () => <T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getServiceSettings = exports.getDependenciesSettings = exports.getDependenciesHash = exports.getFilteredDependencies = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const ramda_1 = require("ramda");
6
+ const constants_1 = require("../../../../../constants");
7
+ const app_1 = require("./../../../../../utils/app");
8
+ const joinIds = ramda_1.join('');
9
+ const dependsOnApp = (appAtMajor) => (a) => {
10
+ const [name, major] = appAtMajor.split('@');
11
+ const majorInt = major.includes('.') ? major.split('.')[0] : major;
12
+ const version = a._resolvedDependencies[name];
13
+ if (!version) {
14
+ return false;
15
+ }
16
+ const [depMajor] = version.split('.');
17
+ return majorInt === depMajor;
18
+ };
19
+ exports.getFilteredDependencies = (appAtMajor, dependencies) => {
20
+ const depends = dependsOnApp(appAtMajor);
21
+ return dependencies.filter(depends);
22
+ };
23
+ exports.getDependenciesHash = (dependencies) => {
24
+ const dependingApps = ramda_1.pluck('id', dependencies);
25
+ return crypto_1.createHash('md5')
26
+ .update(joinIds(dependingApps))
27
+ .digest('hex');
28
+ };
29
+ exports.getDependenciesSettings = async (apps, assets, tracingConfig) => {
30
+ const appId = constants_1.APP.ID;
31
+ const metaInfos = await apps.getAppsMetaInfos(undefined, undefined, tracingConfig);
32
+ const appAtMajor = app_1.appIdToAppAtMajor(appId);
33
+ return await assets.getSettings(metaInfos, appAtMajor, undefined, tracingConfig);
34
+ };
35
+ exports.getServiceSettings = () => {
36
+ return async function settingsContext(ctx, next) {
37
+ var _a;
38
+ const { clients: { apps, assets }, } = ctx;
39
+ const rootSpan = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan;
40
+ const dependenciesSettings = await exports.getDependenciesSettings(apps, assets, { tracing: { rootSpan } });
41
+ // TODO: for now returning all settings, but the ideia is to do merge
42
+ ctx.vtex.settings = dependenciesSettings;
43
+ await next();
44
+ };
45
+ };
@@ -0,0 +1,3 @@
1
+ import { IOClients } from '../../../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceContext } from '../../typings';
3
+ export declare function timings<T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
@@ -3,30 +3,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.timings = void 0;
6
7
  const chalk_1 = __importDefault(require("chalk"));
7
- const status_1 = require("../../../utils/status");
8
- const time_1 = require("../../../utils/time");
8
+ const constants_1 = require("../../../../../constants");
9
+ const status_1 = require("../../../../../utils/status");
10
+ const time_1 = require("../../../../../utils/time");
9
11
  const APP_ELAPSED_TIME_LOCATOR = time_1.shrinkTimings(time_1.formatTimingName({
10
12
  hopNumber: 0,
11
13
  source: process.env.VTEX_APP_NAME,
12
14
  target: '',
13
15
  }));
16
+ const pid = chalk_1.default.magenta('[' + constants_1.PID + ']');
14
17
  const formatDate = (date) => chalk_1.default.dim('[' + date.toISOString().split('T')[1] + ']');
15
18
  const formatStatus = (status) => status >= 500 ? chalk_1.default.red(status.toString()) : (status >= 200 && status < 300 ? chalk_1.default.green(status.toString()) : status);
16
19
  const formatMillis = (millis) => millis >= 500 ? chalk_1.default.red(millis.toString()) : millis >= 200 ? chalk_1.default.yellow(millis.toString()) : chalk_1.default.green(millis.toString());
17
- const log = ({ vtex: { account, workspace, route: { id } }, path, method, status }, millis) => `${formatDate(new Date())}\t${account}/${workspace}:${id}\t${formatStatus(status)}\t${method}\t${path}\t${formatMillis(millis)} ms`;
20
+ const log = ({ vtex: { account, workspace, route: { id } }, path, method, status }, millis) => `${formatDate(new Date())}\t${pid}\t${account}/${workspace}:${id}\t${formatStatus(status)}\t${method}\t${path}\t${formatMillis(millis)} ms`;
21
+ const logBillingInfo = ({ account, workspace, production, route: { id, type } }, millis) => JSON.stringify({
22
+ '__VTEX_IO_BILLING': 'true',
23
+ 'account': account,
24
+ 'app': constants_1.APP.ID,
25
+ 'handler': id,
26
+ 'isLink': constants_1.LINKED,
27
+ 'production': production,
28
+ 'routeType': type === 'public' ? 'public_route' : 'private_route',
29
+ 'timestamp': Date.now(),
30
+ 'type': 'process-time',
31
+ 'value': millis,
32
+ 'vendor': constants_1.APP.VENDOR,
33
+ 'workspace': workspace,
34
+ });
18
35
  async function timings(ctx, next) {
19
36
  // Errors will be caught by the next middleware so we don't have to catch.
20
37
  await next();
21
- const { status: statusCode, vtex: { route: { id } }, timings: { total } } = ctx;
38
+ const { status: statusCode, vtex: { route: { id } }, timings: { total }, vtex } = ctx;
22
39
  const totalMillis = time_1.hrToMillis(total);
23
40
  console.log(log(ctx, totalMillis));
41
+ console.log(logBillingInfo(vtex, totalMillis));
24
42
  const status = status_1.statusLabel(statusCode);
25
43
  // Only batch successful responses so metrics don't consider errors
26
44
  metrics.batch(`http-handler-${id}`, status === 'success' ? total : undefined, { [status]: 1 });
27
- if (ctx.serverTiming) {
28
- ctx.serverTiming[APP_ELAPSED_TIME_LOCATOR] = `${totalMillis}`;
29
- ctx.set('Server-Timing', time_1.reduceTimings(ctx.serverTiming));
30
- }
31
45
  }
32
46
  exports.timings = timings;
@@ -0,0 +1,3 @@
1
+ import { IOClients } from '../../../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, ServiceContext } from '../../typings';
3
+ export declare function vary<T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const constants_1 = require("../../../constants");
3
+ exports.vary = void 0;
4
+ const constants_1 = require("../../../../../constants");
4
5
  const cachingStrategies = [
5
6
  {
6
7
  forbidden: [],
@@ -29,9 +30,9 @@ const shouldVaryByHeader = (ctx, header, strategy) => {
29
30
  };
30
31
  async function vary(ctx, next) {
31
32
  const { method, path } = ctx;
32
- const strategy = cachingStrategies.find(cachingStrategy => path.indexOf(cachingStrategy.path) === 0);
33
+ const strategy = cachingStrategies.find((cachingStrategy) => path.indexOf(cachingStrategy.path) === 0);
33
34
  if (strategy) {
34
- strategy.forbidden.forEach(headerName => {
35
+ strategy.forbidden.forEach((headerName) => {
35
36
  delete ctx.headers[headerName];
36
37
  });
37
38
  }
@@ -0,0 +1,2 @@
1
+ import { HttpRoute, ServiceContext } from '../typings';
2
+ export declare const routerFromPublicHttpHandlers: (routes: Record<string, HttpRoute>) => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.routerFromPublicHttpHandlers = void 0;
4
+ const constants_1 = require("../../../../constants");
5
+ const logger_1 = require("../../../logger");
6
+ const console_1 = require("./../../../logger/console");
7
+ exports.routerFromPublicHttpHandlers = (routes) => {
8
+ return async (ctx, next) => {
9
+ var _a;
10
+ const routeId = ctx.get(constants_1.COLOSSUS_ROUTE_ID_HEADER);
11
+ if (!routeId) {
12
+ return next();
13
+ }
14
+ const handler = (_a = routes[routeId]) === null || _a === void 0 ? void 0 : _a.handler;
15
+ if (!handler) {
16
+ const msg = `Handler with id '${routeId}' not implemented.`;
17
+ ctx.status = 501;
18
+ ctx.body = msg;
19
+ console_1.logOnceToDevConsole(msg, logger_1.LogLevel.Error);
20
+ return;
21
+ }
22
+ await handler(ctx, next);
23
+ };
24
+ };
@@ -0,0 +1,19 @@
1
+ import { ServiceJSON } from '../typings';
2
+ interface PrivateRouteInfo {
3
+ protocol?: 'http' | 'https';
4
+ vendor: string;
5
+ name: string;
6
+ major: string | number;
7
+ account: string;
8
+ workspace: string;
9
+ path?: string;
10
+ }
11
+ export declare const formatPrivateRoute: ({ protocol, vendor, name, major, account, workspace, path }: PrivateRouteInfo) => string;
12
+ export declare const formatPublicRoute: ({ workspace, account, endpoint, path }: {
13
+ workspace: string;
14
+ account: string;
15
+ endpoint: string;
16
+ path: string;
17
+ }) => string;
18
+ export declare const logAvailableRoutes: (service: ServiceJSON) => void;
19
+ export {};
@@ -0,0 +1,13 @@
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
+ exports.formatPrivateRoute = ({ protocol = 'https', vendor, name, major, account, workspace, path }) => `${protocol}://app.io.vtex.com/${vendor}.${name}/v${major}/${account}/${workspace}${path || ''}`;
6
+ exports.formatPublicRoute = ({ workspace, account, endpoint, path }) => `https://${workspace}--${account}.${endpoint}${path}`;
7
+ const getPath = ({ public: publicRoute, path }) => publicRoute
8
+ ? exports.formatPublicRoute({ workspace: constants_1.WORKSPACE, account: constants_1.ACCOUNT, endpoint: constants_1.PUBLIC_ENDPOINT, path })
9
+ : 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 });
10
+ exports.logAvailableRoutes = (service) => {
11
+ const available = Object.values(service.routes || {}).reduce((acc, route) => `${acc}\n${getPath(route)}`, 'Available service routes:');
12
+ console.info(available);
13
+ };
@@ -0,0 +1,9 @@
1
+ import { IOClients } from '../../../clients/IOClients';
2
+ import { ParamsContext, RecorderState, RouteHandler, ServiceContext } from './typings';
3
+ declare type HTTPMethods = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH' | 'DEFAULT';
4
+ declare 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;
@@ -0,0 +1,14 @@
1
+ import { ServiceContext } from './typings';
2
+ export declare 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,38 @@
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
+ exports.isStatusTrack = (message) => message === STATUS_TRACK;
12
+ exports.isStatusTrackBroadcast = (message) => message === BROADCAST_STATUS_TRACK;
13
+ exports.statusTrackHandler = async (ctx) => {
14
+ var _a, _b, _c;
15
+ (_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName('builtin:status-track');
16
+ if (!constants_1.LINKED) {
17
+ (_c = process.send) === null || _c === void 0 ? void 0 : _c.call(process, BROADCAST_STATUS_TRACK);
18
+ }
19
+ ctx.body = [];
20
+ return;
21
+ };
22
+ exports.trackStatus = () => {
23
+ global.metrics.statusTrack().forEach(status => {
24
+ logStatus(status);
25
+ });
26
+ };
27
+ exports.broadcastStatusTrack = () => Object.values(cluster_1.default.workers).forEach(worker => worker === null || worker === void 0 ? void 0 : worker.send(STATUS_TRACK));
28
+ const logStatus = (status) => console.log(JSON.stringify({
29
+ __VTEX_IO_LOG: true,
30
+ account: constants_1.ACCOUNT,
31
+ app: constants_1.APP.ID,
32
+ isLink: constants_1.LINKED,
33
+ pid: process.pid,
34
+ production: constants_1.PRODUCTION,
35
+ status,
36
+ type: 'metric/status',
37
+ workspace: constants_1.WORKSPACE,
38
+ }));