@vtex/api 6.47.0 → 6.48.1-beta

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 (404) hide show
  1. package/gen/manifest.schema +0 -3
  2. package/lib/{clients/apps → HttpClient}/AppClient.d.ts +3 -3
  3. package/lib/{clients/apps → HttpClient}/AppClient.js +5 -10
  4. package/lib/{clients/apps → HttpClient}/AppGraphQLClient.d.ts +3 -3
  5. package/lib/{clients/apps → HttpClient}/AppGraphQLClient.js +5 -10
  6. package/lib/{clients/external → HttpClient}/ExternalClient.d.ts +3 -3
  7. package/lib/{clients/external → HttpClient}/ExternalClient.js +2 -9
  8. package/lib/HttpClient/GraphQLClient.d.ts +1 -2
  9. package/lib/HttpClient/GraphQLClient.js +1 -4
  10. package/lib/HttpClient/HttpClient.d.ts +5 -6
  11. package/lib/HttpClient/HttpClient.js +21 -63
  12. package/lib/{clients → HttpClient}/IOClient.d.ts +4 -4
  13. package/lib/HttpClient/IOClient.js +14 -0
  14. package/lib/{clients → HttpClient}/IOGraphQLClient.d.ts +4 -4
  15. package/lib/{clients → HttpClient}/IOGraphQLClient.js +2 -2
  16. package/lib/{clients/infra → HttpClient}/InfraClient.d.ts +3 -3
  17. package/lib/{clients/infra → HttpClient}/InfraClient.js +4 -9
  18. package/lib/{clients/janus → HttpClient}/JanusClient.d.ts +3 -3
  19. package/lib/{clients/janus → HttpClient}/JanusClient.js +3 -7
  20. package/lib/HttpClient/factories/index.d.ts +8 -0
  21. package/lib/HttpClient/factories/index.js +31 -0
  22. package/lib/HttpClient/index.d.ts +7 -1
  23. package/lib/HttpClient/index.js +7 -1
  24. package/lib/HttpClient/middlewares/cache.d.ts +2 -8
  25. package/lib/HttpClient/middlewares/cache.js +31 -120
  26. package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
  27. package/lib/HttpClient/middlewares/cancellationToken.js +1 -2
  28. package/lib/HttpClient/middlewares/memoization.js +1 -8
  29. package/lib/HttpClient/middlewares/metrics.js +31 -12
  30. package/lib/HttpClient/middlewares/recorder.d.ts +1 -1
  31. package/lib/HttpClient/middlewares/recorder.js +13 -16
  32. package/lib/HttpClient/middlewares/request.d.ts +10 -0
  33. package/lib/HttpClient/middlewares/request.js +87 -0
  34. package/lib/HttpClient/typings.d.ts +9 -43
  35. package/lib/IODataSource.d.ts +27 -0
  36. package/lib/IODataSource.js +46 -0
  37. package/lib/caches/LRUCache.js +1 -5
  38. package/lib/caches/LRUDiskCache.js +1 -5
  39. package/lib/clients/Apps.d.ts +84 -0
  40. package/lib/clients/Apps.js +326 -0
  41. package/lib/clients/Assets.d.ts +21 -0
  42. package/lib/clients/{infra/Assets.js → Assets.js} +19 -74
  43. package/lib/clients/Billing.d.ts +11 -0
  44. package/lib/clients/{apps/Billing.js → Billing.js} +3 -8
  45. package/lib/clients/BillingMetrics.d.ts +12 -0
  46. package/lib/clients/BillingMetrics.js +10 -0
  47. package/lib/clients/{apps/Builder.d.ts → Builder.d.ts} +11 -12
  48. package/lib/clients/{apps/Builder.js → Builder.js} +22 -49
  49. package/lib/clients/Events.d.ts +6 -0
  50. package/lib/clients/Events.js +19 -0
  51. package/lib/clients/Housekeeper.d.ts +11 -0
  52. package/lib/clients/Housekeeper.js +24 -0
  53. package/lib/clients/ID.d.ts +22 -0
  54. package/lib/clients/ID.js +48 -0
  55. package/lib/clients/IOClients.d.ts +24 -29
  56. package/lib/clients/IOClients.js +26 -36
  57. package/lib/clients/LicenseManager.d.ts +6 -0
  58. package/lib/clients/{janus/LicenseManager.js → LicenseManager.js} +8 -23
  59. package/lib/clients/Logger.d.ts +27 -0
  60. package/lib/clients/Logger.js +32 -0
  61. package/lib/clients/Messages.d.ts +18 -0
  62. package/lib/clients/Messages.js +20 -0
  63. package/lib/clients/MessagesGraphQL.d.ts +63 -0
  64. package/lib/clients/MessagesGraphQL.js +50 -0
  65. package/lib/clients/Metadata.d.ts +25 -0
  66. package/lib/clients/Metadata.js +53 -0
  67. package/lib/clients/Registry.d.ts +61 -0
  68. package/lib/clients/{infra/Registry.js → Registry.js} +33 -93
  69. package/lib/clients/Router.d.ts +33 -0
  70. package/lib/clients/Router.js +50 -0
  71. package/lib/clients/{janus/Segment.d.ts → Segment.d.ts} +11 -7
  72. package/lib/clients/Segment.js +69 -0
  73. package/lib/clients/{janus/Session.d.ts → Session.d.ts} +4 -4
  74. package/lib/clients/{janus/Session.js → Session.js} +13 -24
  75. package/lib/clients/{apps/Settings.d.ts → Settings.d.ts} +4 -5
  76. package/lib/clients/{apps/Settings.js → Settings.js} +20 -14
  77. package/lib/clients/Sphinx.d.ts +12 -0
  78. package/lib/clients/Sphinx.js +19 -0
  79. package/lib/clients/{janus/Tenant.d.ts → Tenant.d.ts} +7 -6
  80. package/lib/clients/Tenant.js +13 -0
  81. package/lib/clients/VBase.d.ts +57 -0
  82. package/lib/clients/VBase.js +116 -0
  83. package/lib/clients/Workspaces.d.ts +17 -0
  84. package/lib/clients/Workspaces.js +38 -0
  85. package/lib/clients/index.d.ts +21 -9
  86. package/lib/clients/index.js +21 -12
  87. package/lib/constants.d.ts +1 -49
  88. package/lib/constants.js +1 -54
  89. package/lib/errors/ResolverError.d.ts +1 -1
  90. package/lib/errors/ResolverError.js +2 -2
  91. package/lib/errors/ResolverWarning.d.ts +1 -1
  92. package/lib/errors/ResolverWarning.js +2 -2
  93. package/lib/index.d.ts +7 -9
  94. package/lib/index.js +6 -8
  95. package/lib/metrics/MetricsAccumulator.d.ts +18 -1
  96. package/lib/metrics/MetricsAccumulator.js +22 -38
  97. package/lib/responses.d.ts +44 -3
  98. package/lib/service/Runtime.d.ts +18 -0
  99. package/lib/service/Runtime.js +57 -0
  100. package/lib/service/{worker/runtime/Service.d.ts → Service.d.ts} +5 -5
  101. package/lib/service/{worker/runtime/Service.js → Service.js} +1 -2
  102. package/lib/service/events/index.d.ts +3 -0
  103. package/lib/service/events/index.js +21 -0
  104. package/lib/service/graphql/index.d.ts +7 -0
  105. package/lib/service/graphql/index.js +33 -0
  106. package/lib/service/graphql/middlewares/error.js +107 -0
  107. package/lib/service/graphql/middlewares/formatters.d.ts +2 -0
  108. package/lib/service/graphql/middlewares/formatters.js +64 -0
  109. package/lib/service/graphql/middlewares/query.d.ts +2 -0
  110. package/lib/service/graphql/middlewares/query.js +32 -0
  111. package/lib/service/graphql/middlewares/response.js +36 -0
  112. package/lib/service/graphql/middlewares/run.d.ts +4 -0
  113. package/lib/service/graphql/middlewares/run.js +55 -0
  114. package/lib/service/graphql/middlewares/schema.d.ts +2 -0
  115. package/lib/service/graphql/middlewares/schema.js +8 -0
  116. package/lib/service/graphql/middlewares/timings.d.ts +2 -0
  117. package/lib/service/graphql/middlewares/timings.js +10 -0
  118. package/lib/service/graphql/middlewares/upload.d.ts +7 -0
  119. package/lib/service/graphql/schema/index.d.ts +3 -0
  120. package/lib/service/graphql/schema/index.js +66 -0
  121. package/lib/service/graphql/schema/messagesLoader.d.ts +4 -0
  122. package/lib/service/graphql/schema/messagesLoader.js +41 -0
  123. package/lib/service/graphql/schema/messagesLoaderV2.d.ts +5 -0
  124. package/lib/service/graphql/schema/messagesLoaderV2.js +44 -0
  125. package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Auth.d.ts +0 -1
  126. package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Auth.js +5 -11
  127. package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Sanitize.d.ts +0 -1
  128. package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Sanitize.js +0 -6
  129. package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/SmartCacheDirective.d.ts +0 -1
  130. package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/SmartCacheDirective.js +3 -8
  131. package/lib/service/{worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts → graphql/schema/schemaDirectives/Translatable.d.ts} +1 -2
  132. package/lib/service/graphql/schema/schemaDirectives/Translatable.js +54 -0
  133. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.d.ts +13 -0
  134. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.js +67 -0
  135. package/lib/service/graphql/schema/schemaDirectives/index.d.ts +13 -0
  136. package/lib/service/graphql/schema/schemaDirectives/index.js +17 -0
  137. package/lib/service/graphql/schema/typeDefs/index.d.ts +16 -0
  138. package/lib/service/graphql/schema/typeDefs/index.js +21 -0
  139. package/lib/service/graphql/schema/typeDefs/ioMessage.d.ts +8 -0
  140. package/lib/service/graphql/schema/typeDefs/ioMessage.js +33 -0
  141. package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/sanitizedString.js +1 -5
  142. package/lib/service/graphql/typings.d.ts +21 -0
  143. package/lib/service/graphql/utils/cacheControl.d.ts +6 -0
  144. package/lib/service/graphql/utils/cacheControl.js +38 -0
  145. package/lib/service/graphql/utils/maxAgeEnum.d.ts +6 -0
  146. package/lib/service/graphql/utils/maxAgeEnum.js +17 -0
  147. package/lib/service/http/index.d.ts +3 -0
  148. package/lib/service/http/index.js +18 -0
  149. package/lib/service/http/middlewares/authTokens.d.ts +3 -0
  150. package/lib/service/http/middlewares/cancellationToken.d.ts +3 -0
  151. package/lib/service/{worker/runtime/http → http}/middlewares/cancellationToken.js +1 -2
  152. package/lib/service/http/middlewares/clients.d.ts +4 -0
  153. package/lib/service/http/middlewares/error.d.ts +3 -0
  154. package/lib/service/{worker/runtime/http → http}/middlewares/error.js +10 -19
  155. package/lib/service/{worker/runtime/http → http}/middlewares/requestStats.d.ts +3 -3
  156. package/lib/service/http/middlewares/setCookie.d.ts +3 -0
  157. package/lib/service/http/middlewares/timings.d.ts +3 -0
  158. package/lib/service/{worker/runtime/http → http}/middlewares/timings.js +8 -21
  159. package/lib/service/http/middlewares/vary.d.ts +3 -0
  160. package/lib/service/{worker/runtime/http → http}/middlewares/vary.js +3 -3
  161. package/lib/service/logger/index.d.ts +28 -2
  162. package/lib/service/logger/index.js +68 -5
  163. package/lib/service/method.d.ts +9 -0
  164. package/lib/service/{worker/runtime/typings.d.ts → typings.d.ts} +36 -70
  165. package/lib/service/utils/compose.d.ts +4 -0
  166. package/lib/service/{worker/runtime/utils → utils}/compose.js +2 -2
  167. package/lib/utils/MineWinsConflictsResolver.d.ts +4 -5
  168. package/lib/utils/MineWinsConflictsResolver.js +17 -23
  169. package/lib/utils/MineWinsConflictsResolver.test.d.ts +1 -0
  170. package/lib/utils/MineWinsConflictsResolver.test.js +134 -0
  171. package/lib/utils/app.d.ts +1 -3
  172. package/lib/utils/app.js +1 -3
  173. package/lib/utils/appsStaleIfError.d.ts +1 -1
  174. package/lib/utils/appsStaleIfError.js +2 -2
  175. package/lib/utils/billingOptions.d.ts +3 -36
  176. package/lib/utils/billingOptions.js +3 -7
  177. package/lib/utils/binding.d.ts +3 -3
  178. package/lib/utils/cancel.d.ts +2 -2
  179. package/lib/utils/cancel.js +1 -2
  180. package/lib/utils/log.d.ts +3 -1
  181. package/lib/utils/log.js +2 -2
  182. package/lib/utils/message.js +1 -4
  183. package/lib/utils/tenant.d.ts +3 -3
  184. package/lib/utils/time.d.ts +2 -4
  185. package/lib/utils/time.js +2 -9
  186. package/lib/utils/unhandled.d.ts +1 -0
  187. package/lib/{service/worker/listeners.js → utils/unhandled.js} +15 -9
  188. package/package.json +2 -2
  189. package/CHANGELOG.md +0 -1846
  190. package/lib/HttpClient/agents.d.ts +0 -3
  191. package/lib/HttpClient/agents.js +0 -24
  192. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +0 -11
  193. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +0 -30
  194. package/lib/HttpClient/middlewares/request/index.d.ts +0 -18
  195. package/lib/HttpClient/middlewares/request/index.js +0 -84
  196. package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +0 -1
  197. package/lib/HttpClient/middlewares/request/setupAxios/index.js +0 -20
  198. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +0 -2
  199. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +0 -53
  200. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +0 -2
  201. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +0 -7
  202. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +0 -8
  203. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +0 -53
  204. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +0 -4
  205. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +0 -29
  206. package/lib/HttpClient/middlewares/tracing.d.ts +0 -15
  207. package/lib/HttpClient/middlewares/tracing.js +0 -56
  208. package/lib/clients/IOClient.js +0 -19
  209. package/lib/clients/apps/Billing.d.ts +0 -12
  210. package/lib/clients/apps/MessagesGraphQL.d.ts +0 -61
  211. package/lib/clients/apps/MessagesGraphQL.js +0 -121
  212. package/lib/clients/apps/catalogGraphQL/brand.d.ts +0 -13
  213. package/lib/clients/apps/catalogGraphQL/brand.js +0 -18
  214. package/lib/clients/apps/catalogGraphQL/category.d.ts +0 -11
  215. package/lib/clients/apps/catalogGraphQL/category.js +0 -16
  216. package/lib/clients/apps/catalogGraphQL/index.d.ts +0 -22
  217. package/lib/clients/apps/catalogGraphQL/index.js +0 -88
  218. package/lib/clients/apps/catalogGraphQL/product.d.ts +0 -25
  219. package/lib/clients/apps/catalogGraphQL/product.js +0 -30
  220. package/lib/clients/apps/catalogGraphQL/sku.d.ts +0 -26
  221. package/lib/clients/apps/catalogGraphQL/sku.js +0 -30
  222. package/lib/clients/apps/index.d.ts +0 -7
  223. package/lib/clients/apps/index.js +0 -12
  224. package/lib/clients/external/ID.d.ts +0 -23
  225. package/lib/clients/external/ID.js +0 -60
  226. package/lib/clients/external/Masterdata.d.ts +0 -94
  227. package/lib/clients/external/Masterdata.js +0 -224
  228. package/lib/clients/external/PaymentProvider.d.ts +0 -31
  229. package/lib/clients/external/PaymentProvider.js +0 -42
  230. package/lib/clients/external/index.d.ts +0 -4
  231. package/lib/clients/external/index.js +0 -9
  232. package/lib/clients/infra/Apps.d.ts +0 -88
  233. package/lib/clients/infra/Apps.js +0 -508
  234. package/lib/clients/infra/Assets.d.ts +0 -34
  235. package/lib/clients/infra/BillingMetrics.d.ts +0 -13
  236. package/lib/clients/infra/BillingMetrics.js +0 -15
  237. package/lib/clients/infra/Events.d.ts +0 -12
  238. package/lib/clients/infra/Events.js +0 -33
  239. package/lib/clients/infra/Housekeeper.d.ts +0 -10
  240. package/lib/clients/infra/Housekeeper.js +0 -30
  241. package/lib/clients/infra/Metadata.d.ts +0 -26
  242. package/lib/clients/infra/Metadata.js +0 -83
  243. package/lib/clients/infra/Registry.d.ts +0 -59
  244. package/lib/clients/infra/Router.d.ts +0 -34
  245. package/lib/clients/infra/Router.js +0 -81
  246. package/lib/clients/infra/Sphinx.d.ts +0 -13
  247. package/lib/clients/infra/Sphinx.js +0 -29
  248. package/lib/clients/infra/VBase.d.ts +0 -60
  249. package/lib/clients/infra/VBase.js +0 -196
  250. package/lib/clients/infra/Workspaces.d.ts +0 -18
  251. package/lib/clients/infra/Workspaces.js +0 -65
  252. package/lib/clients/infra/index.d.ts +0 -12
  253. package/lib/clients/infra/index.js +0 -17
  254. package/lib/clients/janus/LicenseManager.d.ts +0 -7
  255. package/lib/clients/janus/Segment.js +0 -88
  256. package/lib/clients/janus/Tenant.js +0 -28
  257. package/lib/clients/janus/index.d.ts +0 -5
  258. package/lib/clients/janus/index.js +0 -10
  259. package/lib/service/index.d.ts +0 -2
  260. package/lib/service/index.js +0 -30
  261. package/lib/service/loaders.d.ts +0 -8
  262. package/lib/service/loaders.js +0 -54
  263. package/lib/service/logger/console.d.ts +0 -10
  264. package/lib/service/logger/console.js +0 -36
  265. package/lib/service/logger/logger.d.ts +0 -29
  266. package/lib/service/logger/logger.js +0 -61
  267. package/lib/service/logger/metricsLogger.d.ts +0 -40
  268. package/lib/service/logger/metricsLogger.js +0 -149
  269. package/lib/service/master.d.ts +0 -2
  270. package/lib/service/master.js +0 -87
  271. package/lib/service/metrics/requestMetricsMiddleware.d.ts +0 -2
  272. package/lib/service/metrics/requestMetricsMiddleware.js +0 -44
  273. package/lib/service/tracing/TracerSingleton.d.ts +0 -7
  274. package/lib/service/tracing/TracerSingleton.js +0 -48
  275. package/lib/service/tracing/metrics/MetricNames.d.ts +0 -60
  276. package/lib/service/tracing/metrics/MetricNames.js +0 -44
  277. package/lib/service/tracing/metrics/instruments.d.ts +0 -9
  278. package/lib/service/tracing/metrics/instruments.js +0 -11
  279. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +0 -9
  280. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +0 -25
  281. package/lib/service/tracing/tracingMiddlewares.d.ts +0 -5
  282. package/lib/service/tracing/tracingMiddlewares.js +0 -107
  283. package/lib/service/worker/index.d.ts +0 -11
  284. package/lib/service/worker/index.js +0 -195
  285. package/lib/service/worker/listeners.d.ts +0 -3
  286. package/lib/service/worker/runtime/builtIn/handlers.d.ts +0 -4
  287. package/lib/service/worker/runtime/builtIn/handlers.js +0 -30
  288. package/lib/service/worker/runtime/builtIn/middlewares.d.ts +0 -4
  289. package/lib/service/worker/runtime/builtIn/middlewares.js +0 -40
  290. package/lib/service/worker/runtime/events/index.d.ts +0 -4
  291. package/lib/service/worker/runtime/events/index.js +0 -46
  292. package/lib/service/worker/runtime/events/middlewares/body.d.ts +0 -3
  293. package/lib/service/worker/runtime/events/middlewares/body.js +0 -22
  294. package/lib/service/worker/runtime/events/middlewares/context.d.ts +0 -3
  295. package/lib/service/worker/runtime/events/middlewares/context.js +0 -22
  296. package/lib/service/worker/runtime/events/router.d.ts +0 -2
  297. package/lib/service/worker/runtime/events/router.js +0 -27
  298. package/lib/service/worker/runtime/graphql/index.d.ts +0 -6
  299. package/lib/service/worker/runtime/graphql/index.js +0 -27
  300. package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +0 -2
  301. package/lib/service/worker/runtime/graphql/middlewares/context.js +0 -16
  302. package/lib/service/worker/runtime/graphql/middlewares/error.js +0 -93
  303. package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +0 -2
  304. package/lib/service/worker/runtime/graphql/middlewares/query.js +0 -52
  305. package/lib/service/worker/runtime/graphql/middlewares/response.js +0 -38
  306. package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +0 -2
  307. package/lib/service/worker/runtime/graphql/middlewares/run.js +0 -19
  308. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +0 -4
  309. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +0 -28
  310. package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +0 -4
  311. package/lib/service/worker/runtime/graphql/schema/index.d.ts +0 -7
  312. package/lib/service/worker/runtime/graphql/schema/index.js +0 -31
  313. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +0 -6
  314. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +0 -79
  315. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +0 -7
  316. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +0 -37
  317. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +0 -11
  318. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +0 -61
  319. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +0 -7
  320. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +0 -40
  321. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +0 -6
  322. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +0 -34
  323. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +0 -7
  324. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +0 -39
  325. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +0 -33
  326. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +0 -22
  327. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +0 -36
  328. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +0 -7
  329. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +0 -12
  330. package/lib/service/worker/runtime/graphql/typings.d.ts +0 -31
  331. package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +0 -1
  332. package/lib/service/worker/runtime/graphql/utils/cacheControl.js +0 -32
  333. package/lib/service/worker/runtime/graphql/utils/error.d.ts +0 -1
  334. package/lib/service/worker/runtime/graphql/utils/error.js +0 -76
  335. package/lib/service/worker/runtime/graphql/utils/translations.d.ts +0 -14
  336. package/lib/service/worker/runtime/graphql/utils/translations.js +0 -38
  337. package/lib/service/worker/runtime/http/index.d.ts +0 -5
  338. package/lib/service/worker/runtime/http/index.js +0 -58
  339. package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +0 -3
  340. package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +0 -3
  341. package/lib/service/worker/runtime/http/middlewares/clients.d.ts +0 -4
  342. package/lib/service/worker/runtime/http/middlewares/context.d.ts +0 -4
  343. package/lib/service/worker/runtime/http/middlewares/context.js +0 -36
  344. package/lib/service/worker/runtime/http/middlewares/error.d.ts +0 -2
  345. package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +0 -6
  346. package/lib/service/worker/runtime/http/middlewares/rateLimit.js +0 -42
  347. package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +0 -3
  348. package/lib/service/worker/runtime/http/middlewares/settings.d.ts +0 -9
  349. package/lib/service/worker/runtime/http/middlewares/settings.js +0 -44
  350. package/lib/service/worker/runtime/http/middlewares/timings.d.ts +0 -3
  351. package/lib/service/worker/runtime/http/middlewares/vary.d.ts +0 -3
  352. package/lib/service/worker/runtime/http/router.d.ts +0 -2
  353. package/lib/service/worker/runtime/http/router.js +0 -23
  354. package/lib/service/worker/runtime/http/routes.d.ts +0 -19
  355. package/lib/service/worker/runtime/http/routes.js +0 -12
  356. package/lib/service/worker/runtime/method.d.ts +0 -9
  357. package/lib/service/worker/runtime/statusTrack.d.ts +0 -14
  358. package/lib/service/worker/runtime/statusTrack.js +0 -37
  359. package/lib/service/worker/runtime/utils/compose.d.ts +0 -5
  360. package/lib/service/worker/runtime/utils/context.d.ts +0 -2
  361. package/lib/service/worker/runtime/utils/context.js +0 -40
  362. package/lib/service/worker/runtime/utils/diff.d.ts +0 -12
  363. package/lib/service/worker/runtime/utils/diff.js +0 -21
  364. package/lib/service/worker/runtime/utils/recorder.d.ts +0 -8
  365. package/lib/service/worker/runtime/utils/recorder.js +0 -37
  366. package/lib/service/worker/runtime/utils/tokenBucket.d.ts +0 -2
  367. package/lib/service/worker/runtime/utils/tokenBucket.js +0 -16
  368. package/lib/tracing/LogEvents.d.ts +0 -31
  369. package/lib/tracing/LogEvents.js +0 -3
  370. package/lib/tracing/LogFields.d.ts +0 -66
  371. package/lib/tracing/LogFields.js +0 -3
  372. package/lib/tracing/Tags.d.ts +0 -81
  373. package/lib/tracing/Tags.js +0 -7
  374. package/lib/tracing/UserLandTracer.d.ts +0 -27
  375. package/lib/tracing/UserLandTracer.js +0 -56
  376. package/lib/tracing/errorReporting/ErrorReport.d.ts +0 -31
  377. package/lib/tracing/errorReporting/ErrorReport.js +0 -70
  378. package/lib/tracing/index.d.ts +0 -9
  379. package/lib/tracing/index.js +0 -19
  380. package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +0 -4
  381. package/lib/tracing/spanReference/SpanReferenceTypes.js +0 -7
  382. package/lib/tracing/spanReference/createSpanReference.d.ts +0 -3
  383. package/lib/tracing/spanReference/createSpanReference.js +0 -8
  384. package/lib/tracing/utils.d.ts +0 -13
  385. package/lib/tracing/utils.js +0 -40
  386. package/lib/utils/conflicts.mock.d.ts +0 -17
  387. package/lib/utils/conflicts.mock.js +0 -27
  388. /package/lib/service/{worker/runtime/graphql → graphql}/middlewares/error.d.ts +0 -0
  389. /package/lib/service/{worker/runtime/graphql → graphql}/middlewares/response.d.ts +0 -0
  390. /package/lib/service/{worker/runtime/graphql → graphql}/middlewares/upload.js +0 -0
  391. /package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/ioUpload.d.ts +0 -0
  392. /package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/ioUpload.js +0 -0
  393. /package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/sanitizedString.d.ts +0 -0
  394. /package/lib/service/{worker/runtime/graphql → graphql}/typings.js +0 -0
  395. /package/lib/service/{worker/runtime/utils/toArray.d.ts → graphql/utils/array.d.ts} +0 -0
  396. /package/lib/service/{worker/runtime/utils/toArray.js → graphql/utils/array.js} +0 -0
  397. /package/lib/service/{worker/runtime/graphql → graphql}/utils/pathname.d.ts +0 -0
  398. /package/lib/service/{worker/runtime/graphql → graphql}/utils/pathname.js +0 -0
  399. /package/lib/service/{worker/runtime/http → http}/middlewares/authTokens.js +0 -0
  400. /package/lib/service/{worker/runtime/http → http}/middlewares/clients.js +0 -0
  401. /package/lib/service/{worker/runtime/http → http}/middlewares/requestStats.js +0 -0
  402. /package/lib/service/{worker/runtime/http → http}/middlewares/setCookie.js +0 -0
  403. /package/lib/service/{worker/runtime/method.js → method.js} +0 -0
  404. /package/lib/service/{worker/runtime/typings.js → typings.js} +0 -0
@@ -1,22 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const url_1 = require("url");
3
4
  const constants_1 = require("../../constants");
4
- const tracing_1 = require("../../tracing");
5
+ const constants_2 = require("./../../constants");
5
6
  const RANGE_HEADER_QS_KEY = '__range_header';
6
7
  const cacheableStatusCodes = [200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501]; // https://tools.ietf.org/html/rfc7231#section-6.1
7
8
  exports.cacheKey = (config) => {
8
9
  const { baseURL = '', url = '', params, headers } = config;
9
- const locale = headers[constants_1.LOCALE_HEADER];
10
- const encodedBaseURL = baseURL.replace(/\//g, '\\');
11
- const encodedURL = url.replace(/\//g, '\\');
12
- let key = `${locale}--${encodedBaseURL}--${encodedURL}?`;
13
- if (params) {
14
- Object.keys(params).sort().forEach(p => key = key.concat(`--${p}=${params[p]}`));
10
+ const locale = headers[constants_2.LOCALE_HEADER];
11
+ const fullURL = [baseURL, url].filter(str => str).join('/');
12
+ const urlObject = new url_1.URL(fullURL);
13
+ if (headers && headers.range) {
14
+ urlObject.searchParams.append(RANGE_HEADER_QS_KEY, headers.range);
15
15
  }
16
- if (headers === null || headers === void 0 ? void 0 : headers.range) {
17
- key = key.concat(`--${RANGE_HEADER_QS_KEY}=${headers.range}`);
16
+ if (params) {
17
+ for (const [key, value] of Object.entries(params)) {
18
+ urlObject.searchParams.append(key, value);
19
+ }
18
20
  }
19
- return key;
21
+ // Replace forward slashes with backwards slashes for disk cache legibility
22
+ const encodedPath = `${locale}/${urlObject.pathname}${urlObject.search}`.replace(/\//g, '\\\\');
23
+ // Add hostname as top level directory on disk cache
24
+ return `${urlObject.hostname}/${encodedPath}`;
20
25
  };
21
26
  const parseCacheHeaders = (headers) => {
22
27
  const { 'cache-control': cacheControl = '', etag, age: ageStr } = headers;
@@ -46,77 +51,36 @@ var CacheType;
46
51
  CacheType[CacheType["Disk"] = 2] = "Disk";
47
52
  CacheType[CacheType["Any"] = 3] = "Any";
48
53
  })(CacheType = exports.CacheType || (exports.CacheType = {}));
49
- const CacheTypeNames = {
50
- [CacheType.None]: 'none',
51
- [CacheType.Memory]: 'memory',
52
- [CacheType.Disk]: 'disk',
53
- [CacheType.Any]: 'any',
54
- };
55
- exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
56
- const CACHE_RESULT_TAG = type === CacheType.Disk ? "http.cache.disk" /* HTTP_DISK_CACHE_RESULT */ : "http.cache.memory" /* HTTP_MEMORY_CACHE_RESULT */;
57
- const cacheType = CacheTypeNames[type];
54
+ exports.cacheMiddleware = ({ type, storage }) => {
58
55
  return async (ctx, next) => {
59
- var _a;
60
56
  if (!isLocallyCacheable(ctx.config, type)) {
61
57
  return await next();
62
58
  }
63
- const { rootSpan: span, tracer, logger } = (_a = ctx.tracing) !== null && _a !== void 0 ? _a : {};
64
59
  const key = exports.cacheKey(ctx.config);
65
60
  const segmentToken = ctx.config.headers[constants_1.SEGMENT_HEADER];
66
61
  const keyWithSegment = key + segmentToken;
67
- span === null || span === void 0 ? void 0 : span.log({
68
- event: "cache-key-created" /* CACHE_KEY_CREATE */,
69
- ["cache-type" /* CACHE_TYPE */]: cacheType,
70
- ["key" /* KEY */]: key,
71
- ["key-with-segment" /* KEY_WITH_SEGMENT */]: keyWithSegment,
72
- });
73
- const cacheReadSpan = createCacheSpan(cacheType, 'read', tracer, span);
74
- let cached;
75
- try {
76
- const cacheHasWithSegment = await storage.has(keyWithSegment);
77
- cached = cacheHasWithSegment ? await storage.get(keyWithSegment) : await storage.get(key);
78
- }
79
- catch (error) {
80
- tracing_1.ErrorReport.create({ originalError: error }).injectOnSpan(cacheReadSpan);
81
- logger === null || logger === void 0 ? void 0 : logger.warn({ message: 'Error reading from the HttpClient cache', error });
82
- }
83
- finally {
84
- cacheReadSpan === null || cacheReadSpan === void 0 ? void 0 : cacheReadSpan.finish();
85
- }
86
- if (cached && cached.response) {
62
+ const cacheHasWithSegment = await storage.has(keyWithSegment);
63
+ const cached = cacheHasWithSegment ? await storage.get(keyWithSegment) : await storage.get(key);
64
+ if (cached) {
87
65
  const { etag: cachedEtag, response, expiration, responseType, responseEncoding } = cached;
88
- if (type === CacheType.Disk && responseType === 'arraybuffer') {
89
- response.data = Buffer.from(response.data, responseEncoding);
90
- }
91
- const now = Date.now();
92
- span === null || span === void 0 ? void 0 : span.log({
93
- event: "local-cache-hit-info" /* LOCAL_CACHE_HIT_INFO */,
94
- ["cache-type" /* CACHE_TYPE */]: cacheType,
95
- ["etag" /* ETAG */]: cachedEtag,
96
- ["expiration-time" /* EXPIRATION_TIME */]: (expiration - now) / 1000,
97
- ["response-type" /* RESPONSE_TYPE */]: responseType,
98
- ["response-encoding" /* RESPONSE_ENCONDING */]: responseEncoding,
99
- });
100
- if (expiration > now) {
66
+ if (expiration > Date.now() && response) {
67
+ if (type === CacheType.Disk && responseType === 'arraybuffer') {
68
+ response.data = Buffer.from(response.data, responseEncoding);
69
+ }
101
70
  ctx.response = response;
102
71
  ctx.cacheHit = {
103
72
  memory: 1,
104
73
  revalidated: 0,
105
74
  router: 0,
106
75
  };
107
- span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "HIT" /* HIT */);
108
76
  return;
109
77
  }
110
- span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "STALE" /* STALE */);
111
78
  const validateStatus = addNotModified(ctx.config.validateStatus);
112
79
  if (cachedEtag && validateStatus(response.status)) {
113
80
  ctx.config.headers['if-none-match'] = cachedEtag;
114
81
  ctx.config.validateStatus = validateStatus;
115
82
  }
116
83
  }
117
- else {
118
- span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "MISS" /* MISS */);
119
- }
120
84
  await next();
121
85
  if (!ctx.response) {
122
86
  return;
@@ -134,81 +98,28 @@ exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
134
98
  const { age, etag, maxAge: headerMaxAge, noStore, noCache } = parseCacheHeaders(headers);
135
99
  const { forceMaxAge } = ctx.config;
136
100
  const maxAge = forceMaxAge && cacheableStatusCodes.includes(status) ? Math.max(forceMaxAge, headerMaxAge) : headerMaxAge;
137
- span === null || span === void 0 ? void 0 : span.log({
138
- event: "cache-config" /* CACHE_CONFIG */,
139
- ["cache-type" /* CACHE_TYPE */]: cacheType,
140
- ["age" /* AGE */]: age,
141
- ["calculated-max-age" /* CALCULATED_MAX_AGE */]: maxAge,
142
- ["max-age" /* MAX_AGE */]: headerMaxAge,
143
- ["force-max-age" /* FORCE_MAX_AGE */]: forceMaxAge,
144
- ["etag" /* ETAG */]: etag,
145
- ["no-cache" /* NO_CACHE */]: noCache,
146
- ["no-store" /* NO_STORE */]: noStore,
147
- });
148
101
  // Indicates this should NOT be cached and this request will not be considered a miss.
149
102
  if (!forceMaxAge && (noStore || (noCache && !etag))) {
150
- span === null || span === void 0 ? void 0 : span.log({ event: "no-local-cache-save" /* NO_LOCAL_CACHE_SAVE */, ["cache-type" /* CACHE_TYPE */]: cacheType });
151
103
  return;
152
104
  }
153
105
  const shouldCache = maxAge || etag;
154
106
  const varySession = ctx.response.headers.vary && ctx.response.headers.vary.includes(constants_1.SESSION_HEADER);
155
107
  if (shouldCache && !varySession) {
156
- const { responseType, responseEncoding: configResponseEncoding } = ctx.config;
108
+ const { responseType, responseEncoding } = ctx.config;
157
109
  const currentAge = revalidated ? 0 : age;
158
110
  const varySegment = ctx.response.headers.vary && ctx.response.headers.vary.includes(constants_1.SEGMENT_HEADER);
159
111
  const setKey = varySegment ? keyWithSegment : key;
160
- const responseEncoding = configResponseEncoding || (responseType === 'arraybuffer' ? 'base64' : undefined);
161
112
  const cacheableData = type === CacheType.Disk && responseType === 'arraybuffer'
162
113
  ? data.toString(responseEncoding)
163
114
  : data;
164
- const now = Date.now();
165
- const expiration = now + (maxAge - currentAge) * 1000;
166
- const alreadyExpired = expiration <= now;
167
- const reusingRevalidatedCache = cached && (ctx.response === cached.response);
168
- const shouldSkipCacheUpdate = alreadyExpired && reusingRevalidatedCache;
169
- if (shouldSkipCacheUpdate) {
170
- return;
171
- }
172
- const cacheWriteSpan = createCacheSpan(cacheType, 'write', tracer, span);
173
- try {
174
- const storageSet = () => storage.set(setKey, {
175
- etag,
176
- expiration,
177
- response: { data: cacheableData, headers, status },
178
- responseEncoding,
179
- responseType,
180
- });
181
- if (asyncSet) {
182
- storageSet();
183
- }
184
- else {
185
- await storageSet();
186
- span === null || span === void 0 ? void 0 : span.log({
187
- event: "local-cache-saved" /* LOCAL_CACHE_SAVED */,
188
- ["cache-type" /* CACHE_TYPE */]: cacheType,
189
- ["key-set" /* KEY_SET */]: setKey,
190
- ["age" /* AGE */]: currentAge,
191
- ["etag" /* ETAG */]: etag,
192
- ["expiration-time" /* EXPIRATION_TIME */]: (expiration - Date.now()) / 1000,
193
- ["response-encoding" /* RESPONSE_ENCONDING */]: responseEncoding,
194
- ["response-type" /* RESPONSE_TYPE */]: responseType,
195
- });
196
- }
197
- }
198
- catch (error) {
199
- tracing_1.ErrorReport.create({ originalError: error }).injectOnSpan(cacheWriteSpan);
200
- logger === null || logger === void 0 ? void 0 : logger.warn({ message: 'Error writing to the HttpClient cache', error });
201
- }
202
- finally {
203
- cacheWriteSpan === null || cacheWriteSpan === void 0 ? void 0 : cacheWriteSpan.finish();
204
- }
115
+ await storage.set(setKey, {
116
+ etag,
117
+ expiration: Date.now() + (maxAge - currentAge) * 1000,
118
+ response: { data: cacheableData, headers, status },
119
+ responseEncoding,
120
+ responseType,
121
+ });
205
122
  return;
206
123
  }
207
- span === null || span === void 0 ? void 0 : span.log({ event: "no-local-cache-save" /* NO_LOCAL_CACHE_SAVE */, ["cache-type" /* CACHE_TYPE */]: cacheType });
208
124
  };
209
125
  };
210
- const createCacheSpan = (cacheType, operation, tracer, parentSpan) => {
211
- if (tracer && tracer.isTraceSampled && cacheType === 'disk') {
212
- return tracer.startSpan(`${operation}-disk-cache`, { childOf: parentSpan });
213
- }
214
- };
@@ -1,3 +1,3 @@
1
- import { Cancellation } from '../../service/worker/runtime/typings';
1
+ import { Cancellation } from '../../service/typings';
2
2
  import { MiddlewareContext } from '../typings';
3
3
  export declare const cancellationToken: (cancellation?: Cancellation | undefined) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const axios_1 = __importDefault(require("axios"));
7
- const constants_1 = require("../../constants");
8
7
  const production = process.env.VTEX_PRODUCTION === 'true';
9
8
  const handleCancellation = (ctx, cancellation) => {
10
9
  let cancellable = true;
@@ -47,7 +46,7 @@ exports.cancellationToken = (cancellation) => async (ctx, next) => {
47
46
  if (!cancellation) {
48
47
  return await next();
49
48
  }
50
- if (method && !constants_1.cancellableMethods.has(method.toUpperCase())) {
49
+ if (method && method.toUpperCase() !== 'GET') {
51
50
  cancellation.cancelable = false;
52
51
  }
53
52
  if (!cancellation.cancelable || !cancellation.source) {
@@ -3,23 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const cache_1 = require("./cache");
4
4
  exports.memoizationMiddleware = ({ memoizedCache }) => {
5
5
  return async (ctx, next) => {
6
- var _a;
7
6
  if (!cache_1.isLocallyCacheable(ctx.config, cache_1.CacheType.Any) || !ctx.config.memoizable) {
8
- return next();
7
+ return await next();
9
8
  }
10
- const span = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.rootSpan;
11
9
  const key = cache_1.cacheKey(ctx.config);
12
10
  const isMemoized = !!memoizedCache.has(key);
13
- span === null || span === void 0 ? void 0 : span.log({ event: "cache-key-created" /* CACHE_KEY_CREATE */, ["cache-type" /* CACHE_TYPE */]: 'memoization', ["key" /* KEY */]: key });
14
11
  if (isMemoized) {
15
- span === null || span === void 0 ? void 0 : span.setTag("http.cache.memoization" /* HTTP_MEMOIZATION_CACHE_RESULT */, "HIT" /* HIT */);
16
12
  const memoized = await memoizedCache.get(key);
17
13
  ctx.memoizedHit = isMemoized;
18
14
  ctx.response = memoized.response;
19
15
  return;
20
16
  }
21
17
  else {
22
- span === null || span === void 0 ? void 0 : span.setTag("http.cache.memoization" /* HTTP_MEMOIZATION_CACHE_RESULT */, "MISS" /* MISS */);
23
18
  const promise = new Promise(async (resolve, reject) => {
24
19
  try {
25
20
  await next();
@@ -27,11 +22,9 @@ exports.memoizationMiddleware = ({ memoizedCache }) => {
27
22
  cacheHit: ctx.cacheHit,
28
23
  response: ctx.response,
29
24
  });
30
- span === null || span === void 0 ? void 0 : span.log({ event: "memoization-cache-saved" /* MEMOIZATION_CACHE_SAVED */, ["key-set" /* KEY_SET */]: key });
31
25
  }
32
26
  catch (err) {
33
27
  reject(err);
34
- span === null || span === void 0 ? void 0 : span.log({ event: "memoization-cache-saved-error" /* MEMOIZATION_CACHE_SAVED_ERROR */, ["key-set" /* KEY_SET */]: key });
35
28
  }
36
29
  });
37
30
  memoizedCache.set(key, promise);
@@ -1,10 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ramda_1 = require("ramda");
3
4
  const RequestCancelledError_1 = require("../../errors/RequestCancelledError");
4
- const requestStats_1 = require("../../service/worker/runtime/http/middlewares/requestStats");
5
+ const requestStats_1 = require("../../service/http/middlewares/requestStats");
5
6
  const utils_1 = require("../../utils");
6
7
  const retry_1 = require("../../utils/retry");
7
8
  const status_1 = require("../../utils/status");
9
+ const parseServerTiming = (serverTimingsHeaderValue) => ramda_1.compose(ramda_1.reduce((acc, rawHeader) => {
10
+ const [name, durStr] = rawHeader.split(';');
11
+ const [_, dur] = durStr ? durStr.split('=') : [null, null];
12
+ const { hopNumber, source, target } = utils_1.parseTimingName(name);
13
+ const formatted = utils_1.formatTimingName({
14
+ hopNumber: Number.isNaN(hopNumber) ? null : hopNumber + 1,
15
+ source,
16
+ target,
17
+ });
18
+ if (dur && formatted) {
19
+ acc.push([formatted, dur]);
20
+ }
21
+ return acc;
22
+ }, []), ramda_1.split(','), ramda_1.replace(/\s/g, ''))(serverTimingsHeaderValue);
8
23
  exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
9
24
  const serverTimingStart = process.hrtime();
10
25
  const serverTimingLabel = utils_1.shrinkTimings(utils_1.formatTimingName({
@@ -69,9 +84,9 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
69
84
  if (ctx.memoizedHit) {
70
85
  Object.assign(extensions, { [`${status}-memoized`]: 1 });
71
86
  }
72
- if (ctx.config.retryCount) {
73
- const retryCount = ctx.config.retryCount;
74
- if (retryCount > 0) {
87
+ if (ctx.config['axios-retry']) {
88
+ const { retryCount } = ctx.config['axios-retry'];
89
+ if (retryCount && retryCount > 0) {
75
90
  extensions[`retry-${status}-${retryCount}`] = 1;
76
91
  }
77
92
  }
@@ -80,17 +95,11 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
80
95
  : undefined;
81
96
  metrics.batch(label, end, extensions);
82
97
  if (ctx.config.verbose) {
83
- console.log(`VERBOSE: ${name}.${ctx.config.label}`, {
84
- ...extensions,
85
- ...errorCode || errorStatus ? { errorCode, errorStatus } : null,
86
- millis: end
98
+ console.log(`VERBOSE: ${name}.${ctx.config.label}`, Object.assign({}, extensions, errorCode || errorStatus ? { errorCode, errorStatus } : null, { millis: end
87
99
  ? utils_1.hrToMillis(end)
88
100
  : extensions.revalidated || extensions.router || status !== 'success'
89
101
  ? utils_1.hrToMillis(process.hrtime(start))
90
- : '(from cache)',
91
- status: ctx.response && ctx.response.status,
92
- headers: ctx.response && ctx.response.headers,
93
- });
102
+ : '(from cache)', status: ctx.response && ctx.response.status, headers: ctx.response && ctx.response.headers }));
94
103
  }
95
104
  }
96
105
  else {
@@ -104,6 +113,16 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
104
113
  if (!serverTiming[serverTimingLabel] || Number(serverTiming[serverTimingLabel]) < dur) {
105
114
  serverTiming[serverTimingLabel] = `${dur}`;
106
115
  }
116
+ // Forward server timings
117
+ const serverTimingsHeader = ramda_1.path(['response', 'headers', 'server-timing'], ctx);
118
+ if (!ctx.cacheHit && !ctx.inflightHit && !ctx.memoizedHit && serverTimingsHeader) {
119
+ const parsedServerTiming = parseServerTiming(serverTimingsHeader);
120
+ ramda_1.forEach(([timingsName, timingsDur]) => {
121
+ if (!serverTiming[timingsName] || Number(serverTiming[timingsName]) < Number(timingsDur)) {
122
+ serverTiming[timingsName] = timingsDur;
123
+ }
124
+ }, parsedServerTiming);
125
+ }
107
126
  }
108
127
  }
109
128
  };
@@ -1,3 +1,3 @@
1
1
  import { MiddlewareContext } from '../typings';
2
- import { Recorder } from './../../service/worker/runtime/utils/recorder';
3
2
  export declare const recorderMiddleware: (recorder: Recorder) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
3
+ export declare type Recorder = (headers: any) => void;
@@ -1,21 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.recorderMiddleware = (recorder) => async (ctx, next) => {
4
- var _a;
5
- if ((_a = ctx.config) === null || _a === void 0 ? void 0 : _a.ignoreRecorder) {
6
- await next();
7
- return;
8
- }
9
- try {
10
- await next();
11
- if (ctx.response) {
12
- recorder.record(ctx.response.headers);
3
+ exports.recorderMiddleware = (recorder) => {
4
+ return async (ctx, next) => {
5
+ try {
6
+ await next();
7
+ if (ctx.response) {
8
+ recorder(ctx.response.headers);
9
+ }
13
10
  }
14
- }
15
- catch (err) {
16
- if (err.response && err.response.headers && err.response.status === 404) {
17
- recorder.record(err.response.headers);
11
+ catch (err) {
12
+ if (err.response && err.response.headers && err.response.status === 404) {
13
+ recorder(err.response.headers);
14
+ }
15
+ throw err;
18
16
  }
19
- throw err;
20
- }
17
+ };
21
18
  };
@@ -0,0 +1,10 @@
1
+ import { Limit } from 'p-limit';
2
+ import { MiddlewareContext } from '../typings';
3
+ export declare const defaultsMiddleware: (baseURL: string | undefined, rawHeaders: Record<string, string>, params: Record<string, string> | undefined, timeout: number, retries?: number | undefined, verbose?: boolean | undefined) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
4
+ export declare const routerCacheMiddleware: (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
5
+ export declare const requestMiddleware: (limit?: Limit | undefined) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
6
+ export declare function httpAgentStats(): {
7
+ freeSockets: number;
8
+ pendingRequests: number;
9
+ sockets: number;
10
+ };
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ var __importStar = (this && this.__importStar) || function (mod) {
6
+ if (mod && mod.__esModule) return mod;
7
+ var result = {};
8
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
9
+ result["default"] = mod;
10
+ return result;
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const agentkeepalive_1 = __importDefault(require("agentkeepalive"));
14
+ const axios_1 = __importDefault(require("axios"));
15
+ const axios_retry_1 = __importStar(require("axios-retry"));
16
+ const qs_1 = require("qs");
17
+ const ramda_1 = require("ramda");
18
+ const renameBy_1 = require("../../utils/renameBy");
19
+ const retry_1 = require("../../utils/retry");
20
+ const httpAgent = new agentkeepalive_1.default({
21
+ freeSocketTimeout: 30 * 1000,
22
+ keepAlive: true,
23
+ maxFreeSockets: 256,
24
+ socketActiveTTL: 120 * 1000,
25
+ });
26
+ const http = axios_1.default.create({
27
+ httpAgent,
28
+ });
29
+ axios_retry_1.default(http, {
30
+ retries: 0,
31
+ retryCondition: retry_1.isAbortedOrNetworkErrorOrRouterTimeout,
32
+ retryDelay: axios_retry_1.exponentialDelay,
33
+ shouldResetTimeout: true,
34
+ });
35
+ const paramsSerializer = (params) => {
36
+ return qs_1.stringify(params, { arrayFormat: 'repeat' });
37
+ };
38
+ exports.defaultsMiddleware = (baseURL, rawHeaders, params, timeout, retries, verbose) => {
39
+ const countByMetric = {};
40
+ const headers = renameBy_1.renameBy(ramda_1.toLower, rawHeaders);
41
+ return async (ctx, next) => {
42
+ ctx.config = Object.assign({ 'axios-retry': retries ? { retries } : undefined, baseURL, maxRedirects: 0, timeout, validateStatus: status => (status >= 200 && status < 300), verbose }, ctx.config, { headers: Object.assign({}, headers, renameBy_1.renameBy(ramda_1.toLower, ctx.config.headers)), params: Object.assign({}, params, ctx.config.params), paramsSerializer });
43
+ if (ctx.config.verbose && ctx.config.metric) {
44
+ const current = countByMetric[ctx.config.metric];
45
+ countByMetric[ctx.config.metric] = (current || 0) + 1;
46
+ ctx.config.count = countByMetric[ctx.config.metric];
47
+ ctx.config.label = `${ctx.config.metric}#${ctx.config.count}`;
48
+ }
49
+ await next();
50
+ };
51
+ };
52
+ const ROUTER_CACHE_KEY = 'x-router-cache';
53
+ const ROUTER_CACHE_HIT = 'HIT';
54
+ const ROUTER_CACHE_REVALIDATED = 'REVALIDATED';
55
+ const ROUTER_CACHE_KEY_PATH = ['response', 'headers', ROUTER_CACHE_KEY];
56
+ const ROUTER_RESPONSE_STATUS_PATH = ['response', 'status'];
57
+ exports.routerCacheMiddleware = async (ctx, next) => {
58
+ await next();
59
+ const routerCacheHit = ramda_1.path(ROUTER_CACHE_KEY_PATH, ctx);
60
+ const status = ramda_1.path(ROUTER_RESPONSE_STATUS_PATH, ctx);
61
+ if (routerCacheHit === ROUTER_CACHE_HIT || (routerCacheHit === ROUTER_CACHE_REVALIDATED && status !== 304)) {
62
+ ctx.cacheHit = Object.assign({ memory: 0, revalidated: 0 }, ctx.cacheHit, { router: 1 });
63
+ }
64
+ };
65
+ exports.requestMiddleware = (limit) => async (ctx, next) => {
66
+ const makeRequest = () => http.request(ctx.config);
67
+ ctx.response = await (limit ? limit(makeRequest) : makeRequest());
68
+ };
69
+ function count(obj) {
70
+ try {
71
+ return Object.values(obj).reduce((acc, val) => acc += val.length, 0);
72
+ }
73
+ catch (_) {
74
+ return 0;
75
+ }
76
+ }
77
+ function httpAgentStats() {
78
+ const sockets = count(httpAgent.sockets);
79
+ const freeSockets = count(httpAgent.freeSockets);
80
+ const pendingRequests = count(httpAgent.requests);
81
+ return {
82
+ freeSockets,
83
+ pendingRequests,
84
+ sockets,
85
+ };
86
+ }
87
+ exports.httpAgentStats = httpAgentStats;
@@ -1,28 +1,13 @@
1
1
  /// <reference types="node" />
2
2
  import { AxiosRequestConfig, AxiosResponse } from 'axios';
3
+ import { IAxiosRetryConfig } from 'axios-retry';
3
4
  import { Middleware } from 'koa-compose';
4
- import { Span } from 'opentracing';
5
5
  import { CacheLayer } from '../caches/CacheLayer';
6
6
  import { MetricsAccumulator } from '../metrics/MetricsAccumulator';
7
- import { IOContext } from '../service/worker/runtime/typings';
8
- import { SpanReferenceTypes } from '../tracing';
9
- import { IUserLandTracer } from '../tracing/UserLandTracer';
10
7
  import { Cached, CacheType } from './middlewares/cache';
11
8
  export declare type InflightKeyGenerator = (x: RequestConfig) => string;
12
- interface RequestTracingUserConfig {
13
- rootSpan?: Span;
14
- referenceType?: SpanReferenceTypes;
15
- requestSpanNameSuffix?: string;
16
- }
17
- export interface RequestTracingConfig {
18
- tracing?: RequestTracingUserConfig;
19
- }
20
- export interface RequestConfig extends AxiosRequestConfig, RequestTracingConfig {
21
- retries?: number;
22
- exponentialTimeoutCoefficient?: number;
23
- initialBackoffDelay?: number;
24
- exponentialBackoffCoefficient?: number;
25
- retryCount?: number;
9
+ export interface RequestConfig extends AxiosRequestConfig {
10
+ 'axios-retry'?: IAxiosRetryConfig;
26
11
  /**
27
12
  * Identifies the type of request for metrification purposes. Should vary with client method.
28
13
  */
@@ -46,7 +31,6 @@ export interface RequestConfig extends AxiosRequestConfig, RequestTracingConfig
46
31
  forceMaxAge?: number;
47
32
  responseEncoding?: BufferEncoding;
48
33
  nullIfNotFound?: boolean;
49
- ignoreRecorder?: boolean;
50
34
  }
51
35
  export interface CacheHit {
52
36
  disk?: 0 | 1;
@@ -54,42 +38,27 @@ export interface CacheHit {
54
38
  revalidated?: 0 | 1;
55
39
  router?: 0 | 1;
56
40
  }
57
- export interface MiddlewaresTracingContext extends Omit<RequestTracingUserConfig, 'rootSpan'> {
58
- tracer: IUserLandTracer;
59
- logger: IOContext['logger'];
60
- rootSpan?: Span;
61
- isSampled: boolean;
62
- }
63
41
  export interface MiddlewareContext {
64
42
  config: RequestConfig;
65
- tracing?: MiddlewaresTracingContext;
66
43
  response?: AxiosResponse;
67
44
  cacheHit?: CacheHit;
68
45
  inflightHit?: boolean;
69
46
  memoizedHit?: boolean;
70
47
  }
71
48
  export declare type CacheStorage = CacheLayer<string, Cached>;
49
+ export { Recorder } from './middlewares/recorder';
72
50
  export interface InstanceOptions {
73
51
  authType?: AuthType;
74
52
  timeout?: number;
75
53
  memoryCache?: CacheLayer<string, Cached>;
76
54
  diskCache?: CacheLayer<string, Cached>;
77
- asyncSetCache?: boolean;
78
- /**
79
- * Enables memoization, ephemeral within each request, for all requests of this client.
80
- * Useful for services that makes recursive requests, like graphql resolvers, which
81
- * might fetch the same endpoint more than once.
82
- * If that's not the case for your service, disabling it might improve the CPU and
83
- * memory usage.
84
- *
85
- * Default value: true
86
- */
87
- memoizable?: boolean;
88
55
  baseURL?: string;
89
56
  retries?: number;
90
- exponentialTimeoutCoefficient?: number;
91
- initialBackoffDelay?: number;
92
- exponentialBackoffCoefficient?: number;
57
+ /**
58
+ * @deprecated use retries instead.
59
+ * @memberof InstanceOptions
60
+ */
61
+ retryConfig?: void;
93
62
  metrics?: MetricsAccumulator;
94
63
  /**
95
64
  * Maximum number of concurrent requests
@@ -116,8 +85,6 @@ export interface InstanceOptions {
116
85
  verbose?: boolean;
117
86
  name?: string;
118
87
  serverTimings?: Record<string, string>;
119
- httpsAgent?: AxiosRequestConfig['httpsAgent'];
120
- cacheableType?: CacheType;
121
88
  }
122
89
  export interface IOResponse<T> {
123
90
  data: T;
@@ -132,4 +99,3 @@ export declare enum AuthType {
132
99
  */
133
100
  token = "token"
134
101
  }
135
- export {};
@@ -0,0 +1,27 @@
1
+ import { DataSource, DataSourceConfig } from 'apollo-datasource';
2
+ import { HttpClient, InstanceOptions } from './HttpClient';
3
+ import { IOContext, ServiceContext } from './service/typings';
4
+ interface HttpClientFactoryOptions {
5
+ service: string | void;
6
+ context: IOContext | void;
7
+ options: InstanceOptions | void;
8
+ }
9
+ export declare type HttpClientFactory = (opts: HttpClientFactoryOptions) => HttpClient | void;
10
+ /**
11
+ * @deprecated Extend one of the subclasses of IOClient instead.
12
+ */
13
+ export declare abstract class IODataSource extends DataSource<ServiceContext> {
14
+ protected context?: IOContext | undefined;
15
+ private options;
16
+ protected abstract httpClientFactory: HttpClientFactory;
17
+ protected service: string | void;
18
+ private httpClient;
19
+ private initialized;
20
+ constructor(context?: IOContext | undefined, options?: InstanceOptions);
21
+ initialize(config: DataSourceConfig<ServiceContext>): void;
22
+ readonly http: HttpClient;
23
+ }
24
+ export declare const forWorkspace: HttpClientFactory;
25
+ export declare const forRoot: HttpClientFactory;
26
+ export declare const forExternal: HttpClientFactory;
27
+ export {};