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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. package/gen/manifest.schema +5 -3
  2. package/lib/HttpClient/GraphQLClient.d.ts +3 -2
  3. package/lib/HttpClient/GraphQLClient.js +5 -1
  4. package/lib/HttpClient/HttpClient.d.ts +9 -7
  5. package/lib/HttpClient/HttpClient.js +70 -27
  6. package/lib/HttpClient/agents.d.ts +6 -0
  7. package/lib/HttpClient/agents.js +43 -0
  8. package/lib/HttpClient/index.d.ts +1 -7
  9. package/lib/HttpClient/index.js +22 -16
  10. package/lib/HttpClient/middlewares/cache.d.ts +9 -3
  11. package/lib/HttpClient/middlewares/cache.js +130 -35
  12. package/lib/HttpClient/middlewares/cancellationToken.d.ts +2 -2
  13. package/lib/HttpClient/middlewares/cancellationToken.js +5 -2
  14. package/lib/HttpClient/middlewares/inflight.d.ts +1 -1
  15. package/lib/HttpClient/middlewares/inflight.js +7 -3
  16. package/lib/HttpClient/middlewares/memoization.d.ts +1 -1
  17. package/lib/HttpClient/middlewares/memoization.js +13 -4
  18. package/lib/HttpClient/middlewares/metrics.js +25 -38
  19. package/lib/HttpClient/middlewares/notFound.d.ts +1 -1
  20. package/lib/HttpClient/middlewares/notFound.js +5 -2
  21. package/lib/HttpClient/middlewares/recorder.d.ts +1 -1
  22. package/lib/HttpClient/middlewares/recorder.js +21 -12
  23. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +11 -0
  24. package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +31 -0
  25. package/lib/HttpClient/middlewares/request/index.d.ts +18 -0
  26. package/lib/HttpClient/middlewares/request/index.js +88 -0
  27. package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +1 -0
  28. package/lib/HttpClient/middlewares/request/setupAxios/index.js +22 -0
  29. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +2 -0
  30. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +55 -0
  31. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +2 -0
  32. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +8 -0
  33. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +8 -0
  34. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +56 -0
  35. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +4 -0
  36. package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +32 -0
  37. package/lib/HttpClient/middlewares/tracing.d.ts +15 -0
  38. package/lib/HttpClient/middlewares/tracing.js +62 -0
  39. package/lib/HttpClient/typings.d.ts +46 -12
  40. package/lib/HttpClient/typings.js +1 -0
  41. package/lib/caches/DiskCache.d.ts +1 -1
  42. package/lib/caches/DiskCache.js +3 -2
  43. package/lib/caches/LRUCache.d.ts +3 -3
  44. package/lib/caches/LRUCache.js +6 -1
  45. package/lib/caches/LRUDiskCache.d.ts +2 -2
  46. package/lib/caches/LRUDiskCache.js +8 -3
  47. package/lib/caches/MultilayeredCache.d.ts +2 -2
  48. package/lib/caches/MultilayeredCache.js +8 -7
  49. package/lib/caches/index.js +20 -7
  50. package/lib/caches/typings.d.ts +5 -5
  51. package/lib/clients/IOClient.d.ts +13 -0
  52. package/lib/clients/IOClient.js +20 -0
  53. package/lib/clients/IOClients.d.ts +29 -25
  54. package/lib/clients/IOClients.js +36 -28
  55. package/lib/{HttpClient → clients}/IOGraphQLClient.d.ts +4 -4
  56. package/lib/{HttpClient → clients}/IOGraphQLClient.js +3 -2
  57. package/lib/{HttpClient → clients/apps}/AppClient.d.ts +3 -3
  58. package/lib/{HttpClient → clients/apps}/AppClient.js +11 -5
  59. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.d.ts +3 -3
  60. package/lib/{HttpClient → clients/apps}/AppGraphQLClient.js +11 -5
  61. package/lib/clients/apps/Billing.d.ts +12 -0
  62. package/lib/clients/{Billing.js → apps/Billing.js} +9 -3
  63. package/lib/clients/{Builder.d.ts → apps/Builder.d.ts} +12 -11
  64. package/lib/clients/{Builder.js → apps/Builder.js} +51 -23
  65. package/lib/clients/apps/MessagesGraphQL.d.ts +61 -0
  66. package/lib/clients/apps/MessagesGraphQL.js +122 -0
  67. package/lib/clients/{Settings.d.ts → apps/Settings.d.ts} +5 -4
  68. package/lib/clients/apps/Settings.js +39 -0
  69. package/lib/clients/apps/catalogGraphQL/brand.d.ts +13 -0
  70. package/lib/clients/apps/catalogGraphQL/brand.js +19 -0
  71. package/lib/clients/apps/catalogGraphQL/category.d.ts +11 -0
  72. package/lib/clients/apps/catalogGraphQL/category.js +17 -0
  73. package/lib/clients/apps/catalogGraphQL/index.d.ts +22 -0
  74. package/lib/clients/apps/catalogGraphQL/index.js +89 -0
  75. package/lib/clients/apps/catalogGraphQL/product.d.ts +25 -0
  76. package/lib/clients/apps/catalogGraphQL/product.js +31 -0
  77. package/lib/clients/apps/catalogGraphQL/sku.d.ts +26 -0
  78. package/lib/clients/apps/catalogGraphQL/sku.js +31 -0
  79. package/lib/clients/apps/index.d.ts +7 -0
  80. package/lib/clients/apps/index.js +23 -0
  81. package/lib/{HttpClient → clients/external}/ExternalClient.d.ts +3 -3
  82. package/lib/{HttpClient → clients/external}/ExternalClient.js +10 -2
  83. package/lib/clients/external/ID.d.ts +23 -0
  84. package/lib/clients/external/ID.js +61 -0
  85. package/lib/clients/external/Masterdata.d.ts +94 -0
  86. package/lib/clients/external/Masterdata.js +225 -0
  87. package/lib/clients/external/PaymentProvider.d.ts +31 -0
  88. package/lib/clients/external/PaymentProvider.js +43 -0
  89. package/lib/clients/external/index.d.ts +4 -0
  90. package/lib/clients/external/index.js +20 -0
  91. package/lib/clients/index.d.ts +9 -21
  92. package/lib/clients/index.js +27 -24
  93. package/lib/clients/infra/Apps.d.ts +93 -0
  94. package/lib/clients/infra/Apps.js +511 -0
  95. package/lib/clients/infra/Assets.d.ts +35 -0
  96. package/lib/clients/infra/Assets.js +166 -0
  97. package/lib/clients/infra/BillingMetrics.d.ts +13 -0
  98. package/lib/clients/infra/BillingMetrics.js +16 -0
  99. package/lib/clients/infra/Events.d.ts +12 -0
  100. package/lib/clients/infra/Events.js +34 -0
  101. package/lib/clients/infra/Housekeeper.d.ts +10 -0
  102. package/lib/clients/infra/Housekeeper.js +31 -0
  103. package/lib/{HttpClient → clients/infra}/InfraClient.d.ts +3 -3
  104. package/lib/{HttpClient → clients/infra}/InfraClient.js +10 -4
  105. package/lib/clients/infra/Registry.d.ts +65 -0
  106. package/lib/clients/infra/Registry.js +209 -0
  107. package/lib/clients/infra/Router.d.ts +34 -0
  108. package/lib/clients/infra/Router.js +82 -0
  109. package/lib/clients/infra/Sphinx.d.ts +13 -0
  110. package/lib/clients/infra/Sphinx.js +30 -0
  111. package/lib/clients/infra/VBase.d.ts +61 -0
  112. package/lib/clients/infra/VBase.js +197 -0
  113. package/lib/clients/infra/Workspaces.d.ts +18 -0
  114. package/lib/clients/infra/Workspaces.js +66 -0
  115. package/lib/clients/infra/index.d.ts +11 -0
  116. package/lib/clients/infra/index.js +27 -0
  117. package/lib/{HttpClient → clients/janus}/JanusClient.d.ts +4 -4
  118. package/lib/{HttpClient → clients/janus}/JanusClient.js +8 -3
  119. package/lib/clients/janus/LicenseManager.d.ts +7 -0
  120. package/lib/clients/janus/LicenseManager.js +59 -0
  121. package/lib/clients/{Segment.d.ts → janus/Segment.d.ts} +7 -11
  122. package/lib/clients/janus/Segment.js +89 -0
  123. package/lib/clients/{Session.d.ts → janus/Session.d.ts} +4 -4
  124. package/lib/clients/{Session.js → janus/Session.js} +25 -13
  125. package/lib/clients/{Tenant.d.ts → janus/Tenant.d.ts} +7 -8
  126. package/lib/clients/janus/Tenant.js +29 -0
  127. package/lib/clients/janus/index.d.ts +5 -0
  128. package/lib/clients/janus/index.js +21 -0
  129. package/lib/constants.d.ts +50 -2
  130. package/lib/constants.js +55 -1
  131. package/lib/errors/AuthenticationError.js +1 -0
  132. package/lib/errors/ForbiddenError.js +1 -0
  133. package/lib/errors/NotFoundError.js +1 -0
  134. package/lib/errors/RequestCancelledError.js +1 -0
  135. package/lib/errors/ResolverError.d.ts +1 -1
  136. package/lib/errors/ResolverError.js +4 -3
  137. package/lib/errors/ResolverWarning.d.ts +1 -1
  138. package/lib/errors/ResolverWarning.js +3 -2
  139. package/lib/errors/TooManyRequestsError.js +1 -0
  140. package/lib/errors/UserInputError.js +1 -0
  141. package/lib/errors/index.js +22 -11
  142. package/lib/index.d.ts +9 -7
  143. package/lib/index.js +31 -16
  144. package/lib/metrics/MetricsAccumulator.d.ts +3 -20
  145. package/lib/metrics/MetricsAccumulator.js +44 -27
  146. package/lib/responses.d.ts +5 -46
  147. package/lib/service/index.d.ts +2 -0
  148. package/lib/service/index.js +35 -0
  149. package/lib/service/loaders.d.ts +8 -0
  150. package/lib/service/loaders.js +57 -0
  151. package/lib/service/logger/console.d.ts +10 -0
  152. package/lib/service/logger/console.js +40 -0
  153. package/lib/service/logger/index.d.ts +2 -28
  154. package/lib/service/logger/index.js +16 -68
  155. package/lib/service/logger/logger.d.ts +29 -0
  156. package/lib/service/logger/logger.js +62 -0
  157. package/lib/service/logger/metricsLogger.d.ts +40 -0
  158. package/lib/service/logger/metricsLogger.js +150 -0
  159. package/lib/service/master.d.ts +2 -0
  160. package/lib/service/master.js +89 -0
  161. package/lib/service/metrics/requestMetricsMiddleware.d.ts +2 -0
  162. package/lib/service/metrics/requestMetricsMiddleware.js +46 -0
  163. package/lib/service/tracing/TracerSingleton.d.ts +7 -0
  164. package/lib/service/tracing/TracerSingleton.js +49 -0
  165. package/lib/service/tracing/metrics/MetricNames.d.ts +60 -0
  166. package/lib/service/tracing/metrics/MetricNames.js +45 -0
  167. package/lib/service/tracing/metrics/instruments.d.ts +9 -0
  168. package/lib/service/tracing/metrics/instruments.js +19 -0
  169. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +9 -0
  170. package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +26 -0
  171. package/lib/service/tracing/tracingMiddlewares.d.ts +5 -0
  172. package/lib/service/tracing/tracingMiddlewares.js +117 -0
  173. package/lib/service/worker/index.d.ts +11 -0
  174. package/lib/service/worker/index.js +197 -0
  175. package/lib/service/worker/listeners.d.ts +3 -0
  176. package/lib/{utils/unhandled.js → service/worker/listeners.js} +12 -16
  177. package/lib/service/{Service.d.ts → worker/runtime/Service.d.ts} +5 -5
  178. package/lib/service/{Service.js → worker/runtime/Service.js} +3 -1
  179. package/lib/service/worker/runtime/builtIn/handlers.d.ts +4 -0
  180. package/lib/service/worker/runtime/builtIn/handlers.js +34 -0
  181. package/lib/service/worker/runtime/builtIn/middlewares.d.ts +4 -0
  182. package/lib/service/worker/runtime/builtIn/middlewares.js +43 -0
  183. package/lib/service/worker/runtime/events/index.d.ts +4 -0
  184. package/lib/service/worker/runtime/events/index.js +48 -0
  185. package/lib/service/worker/runtime/events/middlewares/body.d.ts +3 -0
  186. package/lib/service/worker/runtime/events/middlewares/body.js +26 -0
  187. package/lib/service/worker/runtime/events/middlewares/context.d.ts +3 -0
  188. package/lib/service/worker/runtime/events/middlewares/context.js +23 -0
  189. package/lib/service/worker/runtime/events/router.d.ts +2 -0
  190. package/lib/service/worker/runtime/events/router.js +29 -0
  191. package/lib/service/worker/runtime/graphql/index.d.ts +6 -0
  192. package/lib/service/worker/runtime/graphql/index.js +29 -0
  193. package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +2 -0
  194. package/lib/service/worker/runtime/graphql/middlewares/context.js +17 -0
  195. package/lib/service/worker/runtime/graphql/middlewares/error.js +97 -0
  196. package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +3 -0
  197. package/lib/service/worker/runtime/graphql/middlewares/query.js +54 -0
  198. package/lib/service/worker/runtime/graphql/middlewares/response.js +39 -0
  199. package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +2 -0
  200. package/lib/service/worker/runtime/graphql/middlewares/run.js +21 -0
  201. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +5 -0
  202. package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +30 -0
  203. package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +4 -0
  204. package/lib/service/{graphql → worker/runtime/graphql}/middlewares/upload.js +2 -1
  205. package/lib/service/worker/runtime/graphql/schema/index.d.ts +7 -0
  206. package/lib/service/worker/runtime/graphql/schema/index.js +33 -0
  207. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +6 -0
  208. package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +81 -0
  209. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.d.ts +1 -0
  210. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Auth.js +17 -10
  211. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +7 -0
  212. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +38 -0
  213. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +11 -0
  214. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +62 -0
  215. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +7 -0
  216. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +41 -0
  217. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.d.ts +1 -0
  218. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/Sanitize.js +7 -0
  219. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +6 -0
  220. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +35 -0
  221. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.d.ts +1 -0
  222. package/lib/service/{graphql → worker/runtime/graphql}/schema/schemaDirectives/SmartCacheDirective.js +9 -3
  223. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +7 -0
  224. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +40 -0
  225. package/lib/service/{graphql/schema/schemaDirectives/Translatable.d.ts → worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts} +2 -1
  226. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +34 -0
  227. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +22 -0
  228. package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +37 -0
  229. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +8 -0
  230. package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +14 -0
  231. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.js +1 -0
  232. package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.js +8 -3
  233. package/lib/service/worker/runtime/graphql/typings.d.ts +31 -0
  234. package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +2 -0
  235. package/lib/service/worker/runtime/graphql/utils/cacheControl.js +34 -0
  236. package/lib/service/worker/runtime/graphql/utils/error.d.ts +2 -0
  237. package/lib/service/worker/runtime/graphql/utils/error.js +78 -0
  238. package/lib/service/worker/runtime/graphql/utils/pathname.js +9 -0
  239. package/lib/service/worker/runtime/graphql/utils/translations.d.ts +14 -0
  240. package/lib/service/worker/runtime/graphql/utils/translations.js +42 -0
  241. package/lib/service/worker/runtime/http/index.d.ts +5 -0
  242. package/lib/service/worker/runtime/http/index.js +61 -0
  243. package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +3 -0
  244. package/lib/service/{http → worker/runtime/http}/middlewares/authTokens.js +1 -0
  245. package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +3 -0
  246. package/lib/service/{http → worker/runtime/http}/middlewares/cancellationToken.js +3 -1
  247. package/lib/service/worker/runtime/http/middlewares/clients.d.ts +4 -0
  248. package/lib/service/{http → worker/runtime/http}/middlewares/clients.js +1 -0
  249. package/lib/service/worker/runtime/http/middlewares/context.d.ts +4 -0
  250. package/lib/service/worker/runtime/http/middlewares/context.js +39 -0
  251. package/lib/service/worker/runtime/http/middlewares/error.d.ts +2 -0
  252. package/lib/service/{http → worker/runtime/http}/middlewares/error.js +29 -16
  253. package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +6 -0
  254. package/lib/service/worker/runtime/http/middlewares/rateLimit.js +43 -0
  255. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.d.ts +3 -3
  256. package/lib/service/{http → worker/runtime/http}/middlewares/requestStats.js +1 -0
  257. package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +3 -0
  258. package/lib/service/{http → worker/runtime/http}/middlewares/setCookie.js +6 -5
  259. package/lib/service/worker/runtime/http/middlewares/settings.d.ts +9 -0
  260. package/lib/service/worker/runtime/http/middlewares/settings.js +49 -0
  261. package/lib/service/worker/runtime/http/middlewares/timings.d.ts +3 -0
  262. package/lib/service/{http → worker/runtime/http}/middlewares/timings.js +25 -11
  263. package/lib/service/worker/runtime/http/middlewares/vary.d.ts +3 -0
  264. package/lib/service/{http → worker/runtime/http}/middlewares/vary.js +4 -3
  265. package/lib/service/worker/runtime/http/router.d.ts +2 -0
  266. package/lib/service/worker/runtime/http/router.js +25 -0
  267. package/lib/service/worker/runtime/http/routes.d.ts +19 -0
  268. package/lib/service/worker/runtime/http/routes.js +16 -0
  269. package/lib/service/worker/runtime/method.d.ts +9 -0
  270. package/lib/service/{method.js → worker/runtime/method.js} +2 -1
  271. package/lib/service/worker/runtime/statusTrack.d.ts +14 -0
  272. package/lib/service/worker/runtime/statusTrack.js +43 -0
  273. package/lib/service/worker/runtime/typings.d.ts +173 -0
  274. package/lib/service/worker/runtime/utils/compose.d.ts +5 -0
  275. package/lib/service/worker/runtime/utils/compose.js +14 -0
  276. package/lib/service/worker/runtime/utils/context.d.ts +5 -0
  277. package/lib/service/worker/runtime/utils/context.js +42 -0
  278. package/lib/service/worker/runtime/utils/diff.d.ts +12 -0
  279. package/lib/service/worker/runtime/utils/diff.js +22 -0
  280. package/lib/service/worker/runtime/utils/recorder.d.ts +8 -0
  281. package/lib/service/worker/runtime/utils/recorder.js +38 -0
  282. package/lib/service/worker/runtime/utils/toArray.js +5 -0
  283. package/lib/service/worker/runtime/utils/tokenBucket.d.ts +2 -0
  284. package/lib/service/worker/runtime/utils/tokenBucket.js +17 -0
  285. package/lib/tracing/LogEvents.d.ts +31 -0
  286. package/lib/{service/graphql/utils/array.js → tracing/LogEvents.js} +1 -1
  287. package/lib/tracing/LogFields.d.ts +66 -0
  288. package/lib/tracing/LogFields.js +3 -0
  289. package/lib/tracing/Tags.d.ts +81 -0
  290. package/lib/tracing/Tags.js +8 -0
  291. package/lib/tracing/UserLandTracer.d.ts +27 -0
  292. package/lib/tracing/UserLandTracer.js +58 -0
  293. package/lib/tracing/errorReporting/ErrorReport.d.ts +31 -0
  294. package/lib/tracing/errorReporting/ErrorReport.js +71 -0
  295. package/lib/tracing/index.d.ts +9 -0
  296. package/lib/tracing/index.js +20 -0
  297. package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +4 -0
  298. package/lib/tracing/spanReference/SpanReferenceTypes.js +8 -0
  299. package/lib/tracing/spanReference/createSpanReference.d.ts +3 -0
  300. package/lib/tracing/spanReference/createSpanReference.js +9 -0
  301. package/lib/tracing/utils.d.ts +13 -0
  302. package/lib/tracing/utils.js +42 -0
  303. package/lib/utils/MineWinsConflictsResolver.d.ts +7 -5
  304. package/lib/utils/MineWinsConflictsResolver.js +40 -22
  305. package/lib/utils/app.d.ts +3 -1
  306. package/lib/utils/app.js +40 -21
  307. package/lib/utils/appsStaleIfError.d.ts +2 -1
  308. package/lib/utils/appsStaleIfError.js +33 -12
  309. package/lib/utils/billingOptions.d.ts +36 -3
  310. package/lib/utils/billingOptions.js +9 -3
  311. package/lib/utils/binding.d.ts +3 -3
  312. package/lib/utils/binding.js +5 -2
  313. package/lib/utils/cancel.d.ts +2 -2
  314. package/lib/utils/cancel.js +3 -1
  315. package/lib/utils/conflicts.mock.d.ts +17 -0
  316. package/lib/utils/conflicts.mock.js +28 -0
  317. package/lib/utils/domain.js +2 -1
  318. package/lib/utils/error.js +6 -4
  319. package/lib/utils/index.js +23 -12
  320. package/lib/utils/json.js +1 -0
  321. package/lib/utils/log.d.ts +1 -3
  322. package/lib/utils/log.js +6 -4
  323. package/lib/utils/message.js +11 -4
  324. package/lib/utils/renameBy.js +3 -1
  325. package/lib/utils/retry.js +10 -7
  326. package/lib/utils/status.js +3 -1
  327. package/lib/utils/tenant.d.ts +3 -3
  328. package/lib/utils/tenant.js +5 -2
  329. package/lib/utils/throwOnGraphQLErrors.js +1 -0
  330. package/lib/utils/time.d.ts +7 -7
  331. package/lib/utils/time.js +29 -12
  332. package/package.json +3 -3
  333. package/lib/HttpClient/IOClient.d.ts +0 -13
  334. package/lib/HttpClient/IOClient.js +0 -14
  335. package/lib/HttpClient/factories/index.d.ts +0 -8
  336. package/lib/HttpClient/factories/index.js +0 -31
  337. package/lib/HttpClient/middlewares/request.d.ts +0 -10
  338. package/lib/HttpClient/middlewares/request.js +0 -87
  339. package/lib/IODataSource.d.ts +0 -27
  340. package/lib/IODataSource.js +0 -46
  341. package/lib/clients/Apps.d.ts +0 -84
  342. package/lib/clients/Apps.js +0 -326
  343. package/lib/clients/Assets.d.ts +0 -21
  344. package/lib/clients/Assets.js +0 -110
  345. package/lib/clients/Billing.d.ts +0 -11
  346. package/lib/clients/BillingMetrics.d.ts +0 -12
  347. package/lib/clients/BillingMetrics.js +0 -10
  348. package/lib/clients/Events.d.ts +0 -6
  349. package/lib/clients/Events.js +0 -19
  350. package/lib/clients/Housekeeper.d.ts +0 -11
  351. package/lib/clients/Housekeeper.js +0 -24
  352. package/lib/clients/ID.d.ts +0 -22
  353. package/lib/clients/ID.js +0 -48
  354. package/lib/clients/LicenseManager.d.ts +0 -6
  355. package/lib/clients/LicenseManager.js +0 -43
  356. package/lib/clients/Logger.d.ts +0 -27
  357. package/lib/clients/Logger.js +0 -32
  358. package/lib/clients/Messages.d.ts +0 -18
  359. package/lib/clients/Messages.js +0 -20
  360. package/lib/clients/MessagesGraphQL.d.ts +0 -63
  361. package/lib/clients/MessagesGraphQL.js +0 -50
  362. package/lib/clients/Metadata.d.ts +0 -25
  363. package/lib/clients/Metadata.js +0 -53
  364. package/lib/clients/Registry.d.ts +0 -61
  365. package/lib/clients/Registry.js +0 -147
  366. package/lib/clients/Router.d.ts +0 -33
  367. package/lib/clients/Router.js +0 -50
  368. package/lib/clients/Segment.js +0 -69
  369. package/lib/clients/Settings.js +0 -44
  370. package/lib/clients/Sphinx.d.ts +0 -12
  371. package/lib/clients/Sphinx.js +0 -19
  372. package/lib/clients/Tenant.js +0 -13
  373. package/lib/clients/VBase.d.ts +0 -57
  374. package/lib/clients/VBase.js +0 -116
  375. package/lib/clients/Workspaces.d.ts +0 -17
  376. package/lib/clients/Workspaces.js +0 -38
  377. package/lib/service/Runtime.d.ts +0 -18
  378. package/lib/service/Runtime.js +0 -57
  379. package/lib/service/events/index.d.ts +0 -3
  380. package/lib/service/events/index.js +0 -21
  381. package/lib/service/graphql/index.d.ts +0 -7
  382. package/lib/service/graphql/index.js +0 -33
  383. package/lib/service/graphql/middlewares/error.js +0 -107
  384. package/lib/service/graphql/middlewares/formatters.d.ts +0 -2
  385. package/lib/service/graphql/middlewares/formatters.js +0 -64
  386. package/lib/service/graphql/middlewares/query.d.ts +0 -2
  387. package/lib/service/graphql/middlewares/query.js +0 -32
  388. package/lib/service/graphql/middlewares/response.js +0 -36
  389. package/lib/service/graphql/middlewares/run.d.ts +0 -4
  390. package/lib/service/graphql/middlewares/run.js +0 -55
  391. package/lib/service/graphql/middlewares/schema.d.ts +0 -2
  392. package/lib/service/graphql/middlewares/schema.js +0 -8
  393. package/lib/service/graphql/middlewares/timings.d.ts +0 -2
  394. package/lib/service/graphql/middlewares/timings.js +0 -10
  395. package/lib/service/graphql/middlewares/upload.d.ts +0 -7
  396. package/lib/service/graphql/schema/index.d.ts +0 -3
  397. package/lib/service/graphql/schema/index.js +0 -66
  398. package/lib/service/graphql/schema/messagesLoader.d.ts +0 -4
  399. package/lib/service/graphql/schema/messagesLoader.js +0 -41
  400. package/lib/service/graphql/schema/messagesLoaderV2.d.ts +0 -5
  401. package/lib/service/graphql/schema/messagesLoaderV2.js +0 -44
  402. package/lib/service/graphql/schema/schemaDirectives/Translatable.js +0 -54
  403. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.d.ts +0 -13
  404. package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.js +0 -67
  405. package/lib/service/graphql/schema/schemaDirectives/index.d.ts +0 -13
  406. package/lib/service/graphql/schema/schemaDirectives/index.js +0 -17
  407. package/lib/service/graphql/schema/typeDefs/index.d.ts +0 -16
  408. package/lib/service/graphql/schema/typeDefs/index.js +0 -21
  409. package/lib/service/graphql/schema/typeDefs/ioMessage.d.ts +0 -8
  410. package/lib/service/graphql/schema/typeDefs/ioMessage.js +0 -33
  411. package/lib/service/graphql/typings.d.ts +0 -21
  412. package/lib/service/graphql/utils/cacheControl.d.ts +0 -6
  413. package/lib/service/graphql/utils/cacheControl.js +0 -38
  414. package/lib/service/graphql/utils/maxAgeEnum.d.ts +0 -6
  415. package/lib/service/graphql/utils/maxAgeEnum.js +0 -17
  416. package/lib/service/graphql/utils/pathname.js +0 -7
  417. package/lib/service/http/index.d.ts +0 -3
  418. package/lib/service/http/index.js +0 -18
  419. package/lib/service/http/middlewares/authTokens.d.ts +0 -3
  420. package/lib/service/http/middlewares/cancellationToken.d.ts +0 -3
  421. package/lib/service/http/middlewares/clients.d.ts +0 -4
  422. package/lib/service/http/middlewares/error.d.ts +0 -3
  423. package/lib/service/http/middlewares/setCookie.d.ts +0 -3
  424. package/lib/service/http/middlewares/timings.d.ts +0 -3
  425. package/lib/service/http/middlewares/vary.d.ts +0 -3
  426. package/lib/service/method.d.ts +0 -9
  427. package/lib/service/typings.d.ts +0 -139
  428. package/lib/service/utils/compose.d.ts +0 -4
  429. package/lib/service/utils/compose.js +0 -11
  430. package/lib/utils/MineWinsConflictsResolver.test.d.ts +0 -1
  431. package/lib/utils/MineWinsConflictsResolver.test.js +0 -134
  432. package/lib/utils/unhandled.d.ts +0 -1
  433. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/error.d.ts +0 -0
  434. /package/lib/service/{graphql → worker/runtime/graphql}/middlewares/response.d.ts +0 -0
  435. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/ioUpload.d.ts +0 -0
  436. /package/lib/service/{graphql → worker/runtime/graphql}/schema/typeDefs/sanitizedString.d.ts +0 -0
  437. /package/lib/service/{graphql → worker/runtime/graphql}/typings.js +0 -0
  438. /package/lib/service/{graphql → worker/runtime/graphql}/utils/pathname.d.ts +0 -0
  439. /package/lib/service/{typings.js → worker/runtime/typings.js} +0 -0
  440. /package/lib/service/{graphql/utils/array.d.ts → worker/runtime/utils/toArray.d.ts} +0 -0
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.requestMiddleware = exports.routerCacheMiddleware = exports.defaultsMiddleware = void 0;
7
+ const buildFullPath_1 = __importDefault(require("axios/lib/core/buildFullPath"));
8
+ const qs_1 = require("qs");
9
+ const ramda_1 = require("ramda");
10
+ const Tags_1 = require("../../../tracing/Tags");
11
+ const renameBy_1 = require("../../../utils/renameBy");
12
+ const setupAxios_1 = require("./setupAxios");
13
+ const http = (0, setupAxios_1.getConfiguredAxios)();
14
+ const paramsSerializer = (params) => {
15
+ return (0, qs_1.stringify)(params, { arrayFormat: 'repeat' });
16
+ };
17
+ const defaultsMiddleware = ({ baseURL, rawHeaders, params, timeout, retries, verbose, exponentialTimeoutCoefficient, initialBackoffDelay, exponentialBackoffCoefficient, httpsAgent }) => {
18
+ const countByMetric = {};
19
+ const headers = (0, renameBy_1.renameBy)(ramda_1.toLower, rawHeaders);
20
+ return (ctx, next) => {
21
+ var _a, _b, _c;
22
+ ctx.config = {
23
+ baseURL,
24
+ exponentialBackoffCoefficient,
25
+ exponentialTimeoutCoefficient,
26
+ httpsAgent: ctx.config.httpsAgent || httpsAgent,
27
+ initialBackoffDelay,
28
+ maxRedirects: 0,
29
+ retries,
30
+ timeout,
31
+ validateStatus: status => (status >= 200 && status < 300),
32
+ verbose,
33
+ ...ctx.config,
34
+ headers: {
35
+ ...headers,
36
+ ...(0, renameBy_1.renameBy)(ramda_1.toLower, ctx.config.headers),
37
+ },
38
+ params: {
39
+ ...params,
40
+ ...ctx.config.params,
41
+ },
42
+ paramsSerializer,
43
+ retryCount: 0,
44
+ };
45
+ if (ctx.config.verbose && ctx.config.metric) {
46
+ const current = countByMetric[ctx.config.metric];
47
+ countByMetric[ctx.config.metric] = (current || 0) + 1;
48
+ ctx.config.count = countByMetric[ctx.config.metric];
49
+ ctx.config.label = `${ctx.config.metric}#${ctx.config.count}`;
50
+ }
51
+ if ((_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.isSampled) {
52
+ const { config } = ctx;
53
+ const fullUrl = (0, buildFullPath_1.default)(config.baseURL, http.getUri(config));
54
+ (_c = (_b = ctx.tracing) === null || _b === void 0 ? void 0 : _b.rootSpan) === null || _c === void 0 ? void 0 : _c.addTags({
55
+ [Tags_1.OpentracingTags.HTTP_METHOD]: config.method || 'get',
56
+ [Tags_1.OpentracingTags.HTTP_URL]: fullUrl,
57
+ });
58
+ }
59
+ return next();
60
+ };
61
+ };
62
+ exports.defaultsMiddleware = defaultsMiddleware;
63
+ const ROUTER_CACHE_KEY = 'x-router-cache';
64
+ const ROUTER_CACHE_HIT = 'HIT';
65
+ const ROUTER_CACHE_REVALIDATED = 'REVALIDATED';
66
+ const routerCacheMiddleware = async (ctx, next) => {
67
+ var _a, _b, _c, _d, _e;
68
+ await next();
69
+ const routerCacheHit = (_b = (_a = ctx.response) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b[ROUTER_CACHE_KEY];
70
+ const status = (_c = ctx.response) === null || _c === void 0 ? void 0 : _c.status;
71
+ if (routerCacheHit) {
72
+ (_e = (_d = ctx.tracing) === null || _d === void 0 ? void 0 : _d.rootSpan) === null || _e === void 0 ? void 0 : _e.setTag("http.cache.router" /* CustomHttpTags.HTTP_ROUTER_CACHE_RESULT */, routerCacheHit);
73
+ }
74
+ if (routerCacheHit === ROUTER_CACHE_HIT || (routerCacheHit === ROUTER_CACHE_REVALIDATED && status !== 304)) {
75
+ ctx.cacheHit = {
76
+ memory: 0,
77
+ revalidated: 0,
78
+ ...ctx.cacheHit,
79
+ router: 1,
80
+ };
81
+ }
82
+ };
83
+ exports.routerCacheMiddleware = routerCacheMiddleware;
84
+ const requestMiddleware = (limit) => async (ctx, next) => {
85
+ const makeRequest = () => http.request(ctx.config);
86
+ ctx.response = await (limit ? limit(makeRequest) : makeRequest());
87
+ };
88
+ exports.requestMiddleware = requestMiddleware;
@@ -0,0 +1 @@
1
+ export declare const getConfiguredAxios: () => import("axios").AxiosInstance;
@@ -0,0 +1,22 @@
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.getConfiguredAxios = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const HttpAgentSingleton_1 = require("../HttpAgentSingleton");
9
+ const interceptors_1 = require("./interceptors");
10
+ const getConfiguredAxios = () => {
11
+ const httpAgent = HttpAgentSingleton_1.HttpAgentSingleton.getHttpAgent();
12
+ const http = axios_1.default.create({
13
+ httpAgent,
14
+ });
15
+ (0, interceptors_1.addTracingPreRequestInterceptor)(http);
16
+ // Do not change this order, otherwise each request span will
17
+ // wait all retries to finish before finishing the span
18
+ (0, interceptors_1.addTracingResponseInterceptor)(http);
19
+ (0, interceptors_1.addExponentialBackoffResponseInterceptor)(http);
20
+ return http;
21
+ };
22
+ exports.getConfiguredAxios = getConfiguredAxios;
@@ -0,0 +1,2 @@
1
+ import { AxiosInstance } from 'axios';
2
+ export declare const addExponentialBackoffResponseInterceptor: (http: AxiosInstance) => void;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addExponentialBackoffResponseInterceptor = void 0;
4
+ const retry_1 = require("../../../../../utils/retry");
5
+ function fixConfig(axiosInstance, config) {
6
+ if (axiosInstance.defaults.httpAgent === config.httpAgent) {
7
+ delete config.httpAgent;
8
+ }
9
+ if (axiosInstance.defaults.httpsAgent === config.httpsAgent) {
10
+ delete config.httpsAgent;
11
+ }
12
+ }
13
+ const exponentialDelay = (initialBackoffDelay, exponentialBackoffCoefficient, retryNumber) => {
14
+ const delay = initialBackoffDelay *
15
+ Math.pow(exponentialBackoffCoefficient, retryNumber - 1);
16
+ const randomSum = delay * 0.2 * Math.random();
17
+ return delay + randomSum;
18
+ };
19
+ // A lot of this code is based on:
20
+ // https://github.com/softonic/axios-retry/blob/ffd4327f31d063522e58c525d28d4c5053d0ea7b/es/index.js#L109
21
+ const onResponseError = (http) => (error) => {
22
+ var _a, _b, _c, _d;
23
+ if (error.config == null) {
24
+ return Promise.reject(error);
25
+ }
26
+ const config = error.config;
27
+ if (config.retries == null || config.retries === 0) {
28
+ return Promise.reject(error);
29
+ }
30
+ const { initialBackoffDelay = 200, exponentialBackoffCoefficient = 2, exponentialTimeoutCoefficient, } = config;
31
+ const retryCount = config.retryCount || 0;
32
+ const shouldRetry = (0, retry_1.isAbortedOrNetworkErrorOrRouterTimeout)(error) && retryCount < config.retries;
33
+ if (shouldRetry) {
34
+ config.retryCount = retryCount + 1;
35
+ const delay = exponentialDelay(initialBackoffDelay, exponentialBackoffCoefficient, config.retryCount);
36
+ // Axios fails merging this configuration to the default configuration because it has an issue
37
+ // with circular structures: https://github.com/mzabriskie/axios/issues/370
38
+ fixConfig(http, config);
39
+ config.timeout = exponentialTimeoutCoefficient
40
+ ? config.timeout * exponentialTimeoutCoefficient
41
+ : config.timeout;
42
+ config.transformRequest = [data => data];
43
+ (_b = (_a = config.tracing) === null || _a === void 0 ? void 0 : _a.rootSpan) === null || _b === void 0 ? void 0 : _b.log({ event: "setup-request-retry" /* HttpLogEvents.SETUP_REQUEST_RETRY */, ["retry-number" /* HttpRetryLogFields.RETRY_NUMBER */]: config.retryCount, ["retry-in" /* HttpRetryLogFields.RETRY_IN */]: delay });
44
+ (_d = (_c = config.tracing) === null || _c === void 0 ? void 0 : _c.rootSpan) === null || _d === void 0 ? void 0 : _d.addTags({
45
+ ["http.retry.count" /* CustomHttpTags.HTTP_RETRY_COUNT */]: config.retryCount,
46
+ ["http.retry.error.code" /* CustomHttpTags.HTTP_RETRY_ERROR_CODE */]: error.code,
47
+ });
48
+ return new Promise(resolve => setTimeout(() => resolve(http(config)), delay));
49
+ }
50
+ return Promise.reject(error);
51
+ };
52
+ const addExponentialBackoffResponseInterceptor = (http) => {
53
+ http.interceptors.response.use(undefined, onResponseError(http));
54
+ };
55
+ exports.addExponentialBackoffResponseInterceptor = addExponentialBackoffResponseInterceptor;
@@ -0,0 +1,2 @@
1
+ export { addExponentialBackoffResponseInterceptor } from './exponentialBackoff';
2
+ export { addTracingPreRequestInterceptor, addTracingResponseInterceptor } from './tracing';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addTracingResponseInterceptor = exports.addTracingPreRequestInterceptor = exports.addExponentialBackoffResponseInterceptor = void 0;
4
+ var exponentialBackoff_1 = require("./exponentialBackoff");
5
+ Object.defineProperty(exports, "addExponentialBackoffResponseInterceptor", { enumerable: true, get: function () { return exponentialBackoff_1.addExponentialBackoffResponseInterceptor; } });
6
+ var tracing_1 = require("./tracing");
7
+ Object.defineProperty(exports, "addTracingPreRequestInterceptor", { enumerable: true, get: function () { return tracing_1.addTracingPreRequestInterceptor; } });
8
+ Object.defineProperty(exports, "addTracingResponseInterceptor", { enumerable: true, get: function () { return tracing_1.addTracingResponseInterceptor; } });
@@ -0,0 +1,8 @@
1
+ import { AxiosInstance } from 'axios';
2
+ export declare const requestSpanPrefix = "http-request";
3
+ export declare const addTracingPreRequestInterceptor: (http: AxiosInstance) => {
4
+ requestTracingInterceptor: number;
5
+ };
6
+ export declare const addTracingResponseInterceptor: (http: AxiosInstance) => {
7
+ responseTracingInterceptor: number;
8
+ };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addTracingResponseInterceptor = exports.addTracingPreRequestInterceptor = exports.requestSpanPrefix = void 0;
4
+ const opentracing_1 = require("opentracing");
5
+ const tracing_1 = require("../../../../../../tracing");
6
+ const SpanReferenceTypes_1 = require("../../../../../../tracing/spanReference/SpanReferenceTypes");
7
+ const spanSetup_1 = require("./spanSetup");
8
+ exports.requestSpanPrefix = 'http-request';
9
+ const preRequestInterceptor = (http) => (config) => {
10
+ var _a;
11
+ if (!config.tracing || !((_a = config.tracing) === null || _a === void 0 ? void 0 : _a.isSampled)) {
12
+ return config;
13
+ }
14
+ const { tracer, rootSpan, requestSpanNameSuffix } = config.tracing;
15
+ const spanName = requestSpanNameSuffix ? `${exports.requestSpanPrefix}:${requestSpanNameSuffix}` : exports.requestSpanPrefix;
16
+ const span = rootSpan
17
+ ? tracer.startSpan(spanName, {
18
+ references: [(0, tracing_1.createSpanReference)(rootSpan, SpanReferenceTypes_1.SpanReferenceTypes.CHILD_OF)],
19
+ })
20
+ : tracer.startSpan(spanName);
21
+ (0, spanSetup_1.injectRequestInfoOnSpan)(span, http, config);
22
+ config.tracing.requestSpan = span;
23
+ tracer.inject(span, opentracing_1.FORMAT_HTTP_HEADERS, config.headers);
24
+ return config;
25
+ };
26
+ const onResponseSuccess = (response) => {
27
+ var _a, _b;
28
+ if (!response.config.tracing || !((_a = response.config.tracing) === null || _a === void 0 ? void 0 : _a.isSampled)) {
29
+ return response;
30
+ }
31
+ const requestSpan = (_b = response.config.tracing) === null || _b === void 0 ? void 0 : _b.requestSpan;
32
+ (0, spanSetup_1.injectResponseInfoOnSpan)(requestSpan, response);
33
+ requestSpan === null || requestSpan === void 0 ? void 0 : requestSpan.finish();
34
+ return response;
35
+ };
36
+ const onResponseError = (err) => {
37
+ var _a, _b, _c;
38
+ if (!((_b = (_a = err === null || err === void 0 ? void 0 : err.config) === null || _a === void 0 ? void 0 : _a.tracing) === null || _b === void 0 ? void 0 : _b.requestSpan) || !((_c = err.config.tracing) === null || _c === void 0 ? void 0 : _c.isSampled)) {
39
+ return Promise.reject(err);
40
+ }
41
+ const { requestSpan } = err.config.tracing;
42
+ (0, spanSetup_1.injectResponseInfoOnSpan)(requestSpan, err.response);
43
+ tracing_1.ErrorReport.create({ originalError: err }).injectOnSpan(requestSpan, err.config.tracing.logger);
44
+ requestSpan.finish();
45
+ return Promise.reject(err);
46
+ };
47
+ const addTracingPreRequestInterceptor = (http) => {
48
+ const requestTracingInterceptor = http.interceptors.request.use(preRequestInterceptor(http), undefined);
49
+ return { requestTracingInterceptor };
50
+ };
51
+ exports.addTracingPreRequestInterceptor = addTracingPreRequestInterceptor;
52
+ const addTracingResponseInterceptor = (http) => {
53
+ const responseTracingInterceptor = http.interceptors.response.use(onResponseSuccess, onResponseError);
54
+ return { responseTracingInterceptor };
55
+ };
56
+ exports.addTracingResponseInterceptor = addTracingResponseInterceptor;
@@ -0,0 +1,4 @@
1
+ import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import { Span } from 'opentracing';
3
+ export declare const injectRequestInfoOnSpan: (span: Span | undefined, http: AxiosInstance, config: AxiosRequestConfig) => void;
4
+ export declare const injectResponseInfoOnSpan: (span: Span | undefined, response: AxiosResponse<any> | undefined) => void;
@@ -0,0 +1,32 @@
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.injectResponseInfoOnSpan = exports.injectRequestInfoOnSpan = void 0;
7
+ const buildFullPath_1 = __importDefault(require("axios/lib/core/buildFullPath"));
8
+ const constants_1 = require("../../../../../../constants");
9
+ const Tags_1 = require("../../../../../../tracing/Tags");
10
+ const utils_1 = require("../../../../../../tracing/utils");
11
+ const injectRequestInfoOnSpan = (span, http, config) => {
12
+ span === null || span === void 0 ? void 0 : span.addTags({
13
+ [Tags_1.OpentracingTags.SPAN_KIND]: Tags_1.OpentracingTags.SPAN_KIND_RPC_CLIENT,
14
+ [Tags_1.OpentracingTags.HTTP_METHOD]: config.method,
15
+ [Tags_1.OpentracingTags.HTTP_URL]: (0, buildFullPath_1.default)(config.baseURL, http.getUri(config)),
16
+ });
17
+ span === null || span === void 0 ? void 0 : span.log({ 'request-headers': (0, utils_1.cloneAndSanitizeHeaders)(config.headers) });
18
+ };
19
+ exports.injectRequestInfoOnSpan = injectRequestInfoOnSpan;
20
+ // Response may be undefined in case of client timeout, invalid URL, ...
21
+ const injectResponseInfoOnSpan = (span, response) => {
22
+ if (!response) {
23
+ span === null || span === void 0 ? void 0 : span.setTag("http.no_response" /* CustomHttpTags.HTTP_NO_RESPONSE */, 'true');
24
+ return;
25
+ }
26
+ span === null || span === void 0 ? void 0 : span.log({ 'response-headers': (0, utils_1.cloneAndSanitizeHeaders)(response.headers) });
27
+ span === null || span === void 0 ? void 0 : span.setTag(Tags_1.OpentracingTags.HTTP_STATUS_CODE, response.status);
28
+ if (response.headers[constants_1.ROUTER_CACHE_HEADER]) {
29
+ span === null || span === void 0 ? void 0 : span.setTag("http.cache.router" /* CustomHttpTags.HTTP_ROUTER_CACHE_RESULT */, response.headers[constants_1.ROUTER_CACHE_HEADER]);
30
+ }
31
+ };
32
+ exports.injectResponseInfoOnSpan = injectResponseInfoOnSpan;
@@ -0,0 +1,15 @@
1
+ import { MiddlewaresTracingContext, RequestConfig } from '..';
2
+ import { IOContext } from '../../service/worker/runtime/typings';
3
+ import { MiddlewareContext } from '../typings';
4
+ interface HttpClientTracingMiddlewareConfig {
5
+ clientName: string;
6
+ tracer: IOContext['tracer'];
7
+ logger: IOContext['logger'];
8
+ hasMemoryCacheMiddleware: boolean;
9
+ hasDiskCacheMiddleware: boolean;
10
+ }
11
+ export interface TraceableRequestConfig extends RequestConfig {
12
+ tracing: MiddlewaresTracingContext;
13
+ }
14
+ export declare const createHttpClientTracingMiddleware: ({ tracer, logger, clientName, hasMemoryCacheMiddleware, hasDiskCacheMiddleware, }: HttpClientTracingMiddlewareConfig) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
15
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createHttpClientTracingMiddleware = void 0;
4
+ const axios_1 = require("axios");
5
+ const tracing_1 = require("../../tracing");
6
+ const Tags_1 = require("../../tracing/Tags");
7
+ const cache_1 = require("./cache");
8
+ const createHttpClientTracingMiddleware = ({ tracer, logger, clientName, hasMemoryCacheMiddleware, hasDiskCacheMiddleware, }) => {
9
+ return async function tracingMiddleware(ctx, next) {
10
+ var _a;
11
+ if (!tracer.isTraceSampled) {
12
+ await next();
13
+ return;
14
+ }
15
+ const rootSpan = tracer.fallbackSpanContext();
16
+ const { requestSpanNameSuffix } = ctx.config.tracing || {};
17
+ const spanName = requestSpanNameSuffix ? `request:${requestSpanNameSuffix}` : 'request';
18
+ const span = tracer.startSpan(spanName, { childOf: rootSpan });
19
+ ctx.tracing = {
20
+ ...ctx.config.tracing,
21
+ isSampled: (0, tracing_1.getTraceInfo)(span).isSampled,
22
+ logger,
23
+ rootSpan: span,
24
+ tracer,
25
+ };
26
+ ctx.config.tracing = ctx.tracing;
27
+ const hasMemoCache = !(!(0, cache_1.isLocallyCacheable)(ctx.config, cache_1.CacheType.Any) || !ctx.config.memoizable);
28
+ const hasMemoryCache = hasMemoryCacheMiddleware && !!(0, cache_1.isLocallyCacheable)(ctx.config, cache_1.CacheType.Memory);
29
+ const hasDiskCache = hasDiskCacheMiddleware && !!(0, cache_1.isLocallyCacheable)(ctx.config, cache_1.CacheType.Disk);
30
+ span === null || span === void 0 ? void 0 : span.addTags({
31
+ ["http.cache.memoization.enabled" /* CustomHttpTags.HTTP_MEMOIZATION_CACHE_ENABLED */]: hasMemoCache,
32
+ ["http.cache.memory.enabled" /* CustomHttpTags.HTTP_MEMORY_CACHE_ENABLED */]: hasMemoryCache,
33
+ ["http.cache.disk.enabled" /* CustomHttpTags.HTTP_DISK_CACHE_ENABLED */]: hasDiskCache,
34
+ ["http.client.name" /* CustomHttpTags.HTTP_CLIENT_NAME */]: clientName,
35
+ });
36
+ let response;
37
+ try {
38
+ await next();
39
+ response = ctx.response;
40
+ }
41
+ catch (err) {
42
+ if (!(err instanceof axios_1.AxiosError)) {
43
+ throw err;
44
+ }
45
+ response = err.response;
46
+ if ((_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.isSampled) {
47
+ tracing_1.ErrorReport.create({ originalError: err }).injectOnSpan(span, logger);
48
+ }
49
+ throw err;
50
+ }
51
+ finally {
52
+ if (response) {
53
+ span === null || span === void 0 ? void 0 : span.setTag(Tags_1.OpentracingTags.HTTP_STATUS_CODE, response.status);
54
+ }
55
+ else {
56
+ span === null || span === void 0 ? void 0 : span.setTag("http.no_response" /* CustomHttpTags.HTTP_NO_RESPONSE */, true);
57
+ }
58
+ span === null || span === void 0 ? void 0 : span.finish();
59
+ }
60
+ };
61
+ };
62
+ exports.createHttpClientTracingMiddleware = createHttpClientTracingMiddleware;
@@ -1,13 +1,28 @@
1
1
  /// <reference types="node" />
2
2
  import { AxiosRequestConfig, AxiosResponse } from 'axios';
3
- import { IAxiosRetryConfig } from 'axios-retry';
4
3
  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';
7
10
  import { Cached, CacheType } from './middlewares/cache';
8
- export declare type InflightKeyGenerator = (x: RequestConfig) => string;
9
- export interface RequestConfig extends AxiosRequestConfig {
10
- 'axios-retry'?: IAxiosRetryConfig;
11
+ export 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;
11
26
  /**
12
27
  * Identifies the type of request for metrification purposes. Should vary with client method.
13
28
  */
@@ -29,8 +44,9 @@ export interface RequestConfig extends AxiosRequestConfig {
29
44
  memoizeable?: boolean;
30
45
  inflightKey?: InflightKeyGenerator;
31
46
  forceMaxAge?: number;
32
- responseEncoding?: BufferEncoding;
47
+ responseEncoding?: BufferEncoding | string;
33
48
  nullIfNotFound?: boolean;
49
+ ignoreRecorder?: boolean;
34
50
  }
35
51
  export interface CacheHit {
36
52
  disk?: 0 | 1;
@@ -38,27 +54,42 @@ export interface CacheHit {
38
54
  revalidated?: 0 | 1;
39
55
  router?: 0 | 1;
40
56
  }
57
+ export interface MiddlewaresTracingContext extends Omit<RequestTracingUserConfig, 'rootSpan'> {
58
+ tracer: IUserLandTracer;
59
+ logger: IOContext['logger'];
60
+ rootSpan?: Span;
61
+ isSampled: boolean;
62
+ }
41
63
  export interface MiddlewareContext {
42
64
  config: RequestConfig;
65
+ tracing?: MiddlewaresTracingContext;
43
66
  response?: AxiosResponse;
44
67
  cacheHit?: CacheHit;
45
68
  inflightHit?: boolean;
46
69
  memoizedHit?: boolean;
47
70
  }
48
- export declare type CacheStorage = CacheLayer<string, Cached>;
49
- export { Recorder } from './middlewares/recorder';
71
+ export type CacheStorage = CacheLayer<string, Cached>;
50
72
  export interface InstanceOptions {
51
73
  authType?: AuthType;
52
74
  timeout?: number;
53
75
  memoryCache?: CacheLayer<string, Cached>;
54
76
  diskCache?: CacheLayer<string, Cached>;
55
- baseURL?: string;
56
- retries?: number;
77
+ asyncSetCache?: boolean;
57
78
  /**
58
- * @deprecated use retries instead.
59
- * @memberof InstanceOptions
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
60
86
  */
61
- retryConfig?: void;
87
+ memoizable?: boolean;
88
+ baseURL?: string;
89
+ retries?: number;
90
+ exponentialTimeoutCoefficient?: number;
91
+ initialBackoffDelay?: number;
92
+ exponentialBackoffCoefficient?: number;
62
93
  metrics?: MetricsAccumulator;
63
94
  /**
64
95
  * Maximum number of concurrent requests
@@ -85,6 +116,8 @@ export interface InstanceOptions {
85
116
  verbose?: boolean;
86
117
  name?: string;
87
118
  serverTimings?: Record<string, string>;
119
+ httpsAgent?: AxiosRequestConfig['httpsAgent'];
120
+ cacheableType?: CacheType;
88
121
  }
89
122
  export interface IOResponse<T> {
90
123
  data: T;
@@ -99,3 +132,4 @@ export declare enum AuthType {
99
132
  */
100
133
  token = "token"
101
134
  }
135
+ export {};
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthType = void 0;
3
4
  var AuthType;
4
5
  (function (AuthType) {
5
6
  AuthType["basic"] = "Basic";
@@ -11,7 +11,7 @@ export declare class DiskCache<V> implements CacheLayer<string, V> {
11
11
  constructor(cachePath: string, readFile?: typeof readJSON, writeFile?: typeof outputJSON);
12
12
  has: (key: string) => boolean;
13
13
  getStats: (name?: string) => DiskStats;
14
- get: (key: string) => Promise<void | V>;
14
+ get: (key: string) => Promise<V | void>;
15
15
  set: (key: string, value: V) => Promise<boolean>;
16
16
  private getPathKey;
17
17
  }
@@ -3,6 +3,7 @@ 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.DiskCache = void 0;
6
7
  const fs_extra_1 = require("fs-extra");
7
8
  const path_1 = require("path");
8
9
  const rwlock_1 = __importDefault(require("rwlock"));
@@ -15,7 +16,7 @@ class DiskCache {
15
16
  this.total = 0;
16
17
  this.has = (key) => {
17
18
  const pathKey = this.getPathKey(key);
18
- return fs_extra_1.pathExistsSync(pathKey);
19
+ return (0, fs_extra_1.pathExistsSync)(pathKey);
19
20
  };
20
21
  this.getStats = (name = 'disk-cache') => {
21
22
  const stats = {
@@ -63,7 +64,7 @@ class DiskCache {
63
64
  });
64
65
  return !failure;
65
66
  };
66
- this.getPathKey = (key) => path_1.join(this.cachePath, key);
67
+ this.getPathKey = (key) => (0, path_1.join)(this.cachePath, key);
67
68
  this.lock = new rwlock_1.default();
68
69
  }
69
70
  }
@@ -8,9 +8,9 @@ export declare class LRUCache<K, V> implements CacheLayer<K, V> {
8
8
  private total;
9
9
  private disposed;
10
10
  constructor(options: LRU.Options<K, V>);
11
- get: (key: K) => void | V;
12
- getOrSet: (key: K, fetcher?: (() => Promise<FetchResult<V>>) | undefined) => Promise<void | V>;
13
- set: (key: K, value: V, maxAge?: number | undefined) => boolean;
11
+ get: (key: K) => V | void;
12
+ getOrSet: (key: K, fetcher?: () => Promise<FetchResult<V>>) => Promise<V | void>;
13
+ set: (key: K, value: V, maxAge?: number) => boolean;
14
14
  has: (key: K) => boolean;
15
15
  getStats: (name?: string) => LRUStats;
16
16
  }
@@ -3,6 +3,7 @@ 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.LRUCache = void 0;
6
7
  const lru_cache_1 = __importDefault(require("lru-cache"));
7
8
  const MultilayeredCache_1 = require("./MultilayeredCache");
8
9
  class LRUCache {
@@ -37,7 +38,11 @@ class LRUCache {
37
38
  this.hits = 0;
38
39
  this.total = 0;
39
40
  this.disposed = 0;
40
- this.storage = new lru_cache_1.default(Object.assign({}, options, { dispose: () => this.disposed += 1, noDisposeOnSet: true }));
41
+ this.storage = new lru_cache_1.default({
42
+ ...options,
43
+ dispose: () => this.disposed += 1,
44
+ noDisposeOnSet: true,
45
+ });
41
46
  this.multilayer = new MultilayeredCache_1.MultilayeredCache([this]);
42
47
  }
43
48
  }
@@ -14,8 +14,8 @@ export declare class LRUDiskCache<V> implements CacheLayer<string, V> {
14
14
  constructor(cachePath: string, options: LRUDiskCacheOptions, readFile?: typeof readJSON, writeFile?: typeof outputJSON);
15
15
  has: (key: string) => boolean;
16
16
  getStats: (name?: string) => LRUStats;
17
- get: (key: string) => Promise<void | V>;
18
- set: (key: string, value: V, maxAge?: number | undefined) => Promise<boolean>;
17
+ get: (key: string) => Promise<V | void>;
18
+ set: (key: string, value: V, maxAge?: number) => Promise<boolean>;
19
19
  private getPathKey;
20
20
  private deleteFile;
21
21
  }
@@ -3,6 +3,7 @@ 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.LRUDiskCache = void 0;
6
7
  const fs_extra_1 = require("fs-extra");
7
8
  const lru_cache_1 = __importDefault(require("lru-cache"));
8
9
  const path_1 = require("path");
@@ -92,7 +93,7 @@ class LRUDiskCache {
92
93
  return !failure;
93
94
  };
94
95
  this.getPathKey = (key) => {
95
- return path_1.join(this.cachePath, key);
96
+ return (0, path_1.join)(this.cachePath, key);
96
97
  };
97
98
  this.deleteFile = async (key) => {
98
99
  const pathKey = this.getPathKey(key);
@@ -100,7 +101,7 @@ class LRUDiskCache {
100
101
  const failure = new Promise(resolve => {
101
102
  this.lock.writeLock(key, async (release) => {
102
103
  try {
103
- const removePromise = await fs_extra_1.remove(pathKey);
104
+ const removePromise = await (0, fs_extra_1.remove)(pathKey);
104
105
  release();
105
106
  resolve(removePromise);
106
107
  }
@@ -121,7 +122,11 @@ class LRUDiskCache {
121
122
  this.keyToBeDeleted = key;
122
123
  this.disposed += 1;
123
124
  };
124
- const lruOptions = Object.assign({}, options, { dispose, noDisposeOnSet: true });
125
+ const lruOptions = {
126
+ ...options,
127
+ dispose,
128
+ noDisposeOnSet: true,
129
+ };
125
130
  this.lruStorage = new lru_cache_1.default(lruOptions);
126
131
  }
127
132
  }
@@ -5,8 +5,8 @@ export declare class MultilayeredCache<K, V> implements CacheLayer<K, V> {
5
5
  private hits;
6
6
  private total;
7
7
  constructor(caches: Array<CacheLayer<K, V>>);
8
- get: (key: K, fetcher?: (() => Promise<FetchResult<V>>) | undefined) => Promise<void | V>;
9
- set: (key: K, value: V, maxAge?: number | undefined) => Promise<boolean>;
8
+ get: (key: K, fetcher?: () => Promise<FetchResult<V>>) => Promise<V | void>;
9
+ set: (key: K, value: V, maxAge?: number) => Promise<boolean>;
10
10
  has: (key: K) => Promise<boolean>;
11
11
  getStats: (name?: string) => MultilayerStats;
12
12
  private findIndex;