@vtex/api 6.48.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.
- package/gen/manifest.schema +0 -3
- package/lib/{clients/apps → HttpClient}/AppClient.d.ts +3 -3
- package/lib/{clients/apps → HttpClient}/AppClient.js +5 -10
- package/lib/{clients/apps → HttpClient}/AppGraphQLClient.d.ts +3 -3
- package/lib/{clients/apps → HttpClient}/AppGraphQLClient.js +5 -10
- package/lib/{clients/external → HttpClient}/ExternalClient.d.ts +3 -3
- package/lib/{clients/external → HttpClient}/ExternalClient.js +2 -9
- package/lib/HttpClient/GraphQLClient.d.ts +1 -2
- package/lib/HttpClient/GraphQLClient.js +1 -4
- package/lib/HttpClient/HttpClient.d.ts +5 -6
- package/lib/HttpClient/HttpClient.js +21 -63
- package/lib/{clients → HttpClient}/IOClient.d.ts +4 -4
- package/lib/HttpClient/IOClient.js +14 -0
- package/lib/{clients → HttpClient}/IOGraphQLClient.d.ts +4 -4
- package/lib/{clients → HttpClient}/IOGraphQLClient.js +2 -2
- package/lib/{clients/infra → HttpClient}/InfraClient.d.ts +3 -3
- package/lib/{clients/infra → HttpClient}/InfraClient.js +4 -9
- package/lib/{clients/janus → HttpClient}/JanusClient.d.ts +3 -3
- package/lib/{clients/janus → HttpClient}/JanusClient.js +3 -7
- package/lib/HttpClient/factories/index.d.ts +8 -0
- package/lib/HttpClient/factories/index.js +31 -0
- package/lib/HttpClient/index.d.ts +7 -1
- package/lib/HttpClient/index.js +7 -1
- package/lib/HttpClient/middlewares/cache.d.ts +2 -8
- package/lib/HttpClient/middlewares/cache.js +31 -120
- package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
- package/lib/HttpClient/middlewares/cancellationToken.js +1 -2
- package/lib/HttpClient/middlewares/memoization.js +1 -8
- package/lib/HttpClient/middlewares/metrics.js +31 -12
- package/lib/HttpClient/middlewares/recorder.d.ts +1 -1
- package/lib/HttpClient/middlewares/recorder.js +13 -16
- package/lib/HttpClient/middlewares/request.d.ts +10 -0
- package/lib/HttpClient/middlewares/request.js +87 -0
- package/lib/HttpClient/typings.d.ts +9 -43
- package/lib/IODataSource.d.ts +27 -0
- package/lib/IODataSource.js +46 -0
- package/lib/caches/LRUCache.js +1 -5
- package/lib/caches/LRUDiskCache.js +1 -5
- package/lib/clients/Apps.d.ts +84 -0
- package/lib/clients/Apps.js +326 -0
- package/lib/clients/Assets.d.ts +21 -0
- package/lib/clients/{infra/Assets.js → Assets.js} +19 -74
- package/lib/clients/Billing.d.ts +11 -0
- package/lib/clients/{apps/Billing.js → Billing.js} +3 -8
- package/lib/clients/BillingMetrics.d.ts +12 -0
- package/lib/clients/BillingMetrics.js +10 -0
- package/lib/clients/{apps/Builder.d.ts → Builder.d.ts} +11 -12
- package/lib/clients/{apps/Builder.js → Builder.js} +22 -49
- package/lib/clients/Events.d.ts +6 -0
- package/lib/clients/Events.js +19 -0
- package/lib/clients/Housekeeper.d.ts +11 -0
- package/lib/clients/Housekeeper.js +24 -0
- package/lib/clients/ID.d.ts +22 -0
- package/lib/clients/ID.js +48 -0
- package/lib/clients/IOClients.d.ts +24 -28
- package/lib/clients/IOClients.js +28 -35
- package/lib/clients/LicenseManager.d.ts +6 -0
- package/lib/clients/{janus/LicenseManager.js → LicenseManager.js} +8 -23
- package/lib/clients/Logger.d.ts +27 -0
- package/lib/clients/Logger.js +32 -0
- package/lib/clients/Messages.d.ts +18 -0
- package/lib/clients/Messages.js +20 -0
- package/lib/clients/MessagesGraphQL.d.ts +63 -0
- package/lib/clients/MessagesGraphQL.js +50 -0
- package/lib/clients/Metadata.d.ts +25 -0
- package/lib/clients/Metadata.js +53 -0
- package/lib/clients/Registry.d.ts +61 -0
- package/lib/clients/{infra/Registry.js → Registry.js} +33 -93
- package/lib/clients/Router.d.ts +33 -0
- package/lib/clients/Router.js +50 -0
- package/lib/clients/{janus/Segment.d.ts → Segment.d.ts} +11 -7
- package/lib/clients/Segment.js +69 -0
- package/lib/clients/{janus/Session.d.ts → Session.d.ts} +4 -4
- package/lib/clients/{janus/Session.js → Session.js} +13 -24
- package/lib/clients/{apps/Settings.d.ts → Settings.d.ts} +4 -5
- package/lib/clients/{apps/Settings.js → Settings.js} +20 -14
- package/lib/clients/Sphinx.d.ts +12 -0
- package/lib/clients/Sphinx.js +19 -0
- package/lib/clients/{janus/Tenant.d.ts → Tenant.d.ts} +7 -6
- package/lib/clients/Tenant.js +13 -0
- package/lib/clients/VBase.d.ts +57 -0
- package/lib/clients/VBase.js +116 -0
- package/lib/clients/Workspaces.d.ts +17 -0
- package/lib/clients/Workspaces.js +38 -0
- package/lib/clients/index.d.ts +21 -9
- package/lib/clients/index.js +21 -12
- package/lib/constants.d.ts +1 -49
- package/lib/constants.js +1 -54
- package/lib/errors/ResolverError.d.ts +1 -1
- package/lib/errors/ResolverError.js +2 -2
- package/lib/errors/ResolverWarning.d.ts +1 -1
- package/lib/errors/ResolverWarning.js +2 -2
- package/lib/index.d.ts +7 -9
- package/lib/index.js +6 -8
- package/lib/metrics/MetricsAccumulator.d.ts +18 -1
- package/lib/metrics/MetricsAccumulator.js +22 -38
- package/lib/responses.d.ts +44 -3
- package/lib/service/Runtime.d.ts +18 -0
- package/lib/service/Runtime.js +57 -0
- package/lib/service/{worker/runtime/Service.d.ts → Service.d.ts} +5 -5
- package/lib/service/{worker/runtime/Service.js → Service.js} +1 -2
- package/lib/service/events/index.d.ts +3 -0
- package/lib/service/events/index.js +21 -0
- package/lib/service/graphql/index.d.ts +7 -0
- package/lib/service/graphql/index.js +33 -0
- package/lib/service/graphql/middlewares/error.js +107 -0
- package/lib/service/graphql/middlewares/formatters.d.ts +2 -0
- package/lib/service/graphql/middlewares/formatters.js +64 -0
- package/lib/service/graphql/middlewares/query.d.ts +2 -0
- package/lib/service/graphql/middlewares/query.js +32 -0
- package/lib/service/graphql/middlewares/response.js +36 -0
- package/lib/service/graphql/middlewares/run.d.ts +4 -0
- package/lib/service/graphql/middlewares/run.js +55 -0
- package/lib/service/graphql/middlewares/schema.d.ts +2 -0
- package/lib/service/graphql/middlewares/schema.js +8 -0
- package/lib/service/graphql/middlewares/timings.d.ts +2 -0
- package/lib/service/graphql/middlewares/timings.js +10 -0
- package/lib/service/graphql/middlewares/upload.d.ts +7 -0
- package/lib/service/graphql/schema/index.d.ts +3 -0
- package/lib/service/graphql/schema/index.js +66 -0
- package/lib/service/graphql/schema/messagesLoader.d.ts +4 -0
- package/lib/service/graphql/schema/messagesLoader.js +41 -0
- package/lib/service/graphql/schema/messagesLoaderV2.d.ts +5 -0
- package/lib/service/graphql/schema/messagesLoaderV2.js +44 -0
- package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Auth.d.ts +0 -1
- package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Auth.js +10 -16
- package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Sanitize.d.ts +0 -1
- package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/Sanitize.js +0 -6
- package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/SmartCacheDirective.d.ts +0 -1
- package/lib/service/{worker/runtime/graphql → graphql}/schema/schemaDirectives/SmartCacheDirective.js +3 -8
- package/lib/service/{worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts → graphql/schema/schemaDirectives/Translatable.d.ts} +1 -2
- package/lib/service/graphql/schema/schemaDirectives/Translatable.js +54 -0
- package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.d.ts +13 -0
- package/lib/service/graphql/schema/schemaDirectives/TranslatableV2.js +67 -0
- package/lib/service/graphql/schema/schemaDirectives/index.d.ts +13 -0
- package/lib/service/graphql/schema/schemaDirectives/index.js +17 -0
- package/lib/service/graphql/schema/typeDefs/index.d.ts +16 -0
- package/lib/service/graphql/schema/typeDefs/index.js +21 -0
- package/lib/service/graphql/schema/typeDefs/ioMessage.d.ts +8 -0
- package/lib/service/graphql/schema/typeDefs/ioMessage.js +33 -0
- package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/sanitizedString.js +1 -5
- package/lib/service/graphql/typings.d.ts +21 -0
- package/lib/service/graphql/utils/cacheControl.d.ts +6 -0
- package/lib/service/graphql/utils/cacheControl.js +38 -0
- package/lib/service/graphql/utils/maxAgeEnum.d.ts +6 -0
- package/lib/service/graphql/utils/maxAgeEnum.js +17 -0
- package/lib/service/http/index.d.ts +3 -0
- package/lib/service/http/index.js +18 -0
- package/lib/service/http/middlewares/authTokens.d.ts +3 -0
- package/lib/service/http/middlewares/cancellationToken.d.ts +3 -0
- package/lib/service/{worker/runtime/http → http}/middlewares/cancellationToken.js +1 -2
- package/lib/service/http/middlewares/clients.d.ts +4 -0
- package/lib/service/http/middlewares/error.d.ts +3 -0
- package/lib/service/{worker/runtime/http → http}/middlewares/error.js +10 -19
- package/lib/service/{worker/runtime/http → http}/middlewares/requestStats.d.ts +3 -3
- package/lib/service/http/middlewares/setCookie.d.ts +3 -0
- package/lib/service/http/middlewares/timings.d.ts +3 -0
- package/lib/service/{worker/runtime/http → http}/middlewares/timings.js +8 -21
- package/lib/service/http/middlewares/vary.d.ts +3 -0
- package/lib/service/{worker/runtime/http → http}/middlewares/vary.js +3 -3
- package/lib/service/logger/index.d.ts +28 -2
- package/lib/service/logger/index.js +68 -5
- package/lib/service/method.d.ts +9 -0
- package/lib/service/{worker/runtime/typings.d.ts → typings.d.ts} +36 -70
- package/lib/service/utils/compose.d.ts +4 -0
- package/lib/service/{worker/runtime/utils → utils}/compose.js +2 -2
- package/lib/utils/MineWinsConflictsResolver.d.ts +4 -6
- package/lib/utils/MineWinsConflictsResolver.js +17 -34
- package/lib/utils/MineWinsConflictsResolver.test.d.ts +1 -0
- package/lib/utils/MineWinsConflictsResolver.test.js +134 -0
- package/lib/utils/app.d.ts +1 -3
- package/lib/utils/app.js +1 -3
- package/lib/utils/appsStaleIfError.d.ts +1 -1
- package/lib/utils/appsStaleIfError.js +2 -2
- package/lib/utils/billingOptions.d.ts +3 -36
- package/lib/utils/billingOptions.js +3 -7
- package/lib/utils/binding.d.ts +3 -3
- package/lib/utils/cancel.d.ts +2 -2
- package/lib/utils/cancel.js +1 -2
- package/lib/utils/log.d.ts +3 -1
- package/lib/utils/log.js +2 -2
- package/lib/utils/message.js +1 -4
- package/lib/utils/tenant.d.ts +3 -3
- package/lib/utils/time.d.ts +2 -4
- package/lib/utils/time.js +2 -9
- package/lib/utils/unhandled.d.ts +1 -0
- package/lib/{service/worker/listeners.js → utils/unhandled.js} +15 -9
- package/package.json +2 -2
- package/CHANGELOG.md +0 -1858
- package/lib/HttpClient/agents.d.ts +0 -3
- package/lib/HttpClient/agents.js +0 -24
- package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +0 -11
- package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +0 -30
- package/lib/HttpClient/middlewares/request/index.d.ts +0 -18
- package/lib/HttpClient/middlewares/request/index.js +0 -84
- package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +0 -1
- package/lib/HttpClient/middlewares/request/setupAxios/index.js +0 -20
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +0 -2
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +0 -53
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +0 -2
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +0 -7
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +0 -8
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +0 -53
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +0 -4
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +0 -29
- package/lib/HttpClient/middlewares/tracing.d.ts +0 -15
- package/lib/HttpClient/middlewares/tracing.js +0 -56
- package/lib/clients/IOClient.js +0 -19
- package/lib/clients/apps/Billing.d.ts +0 -12
- package/lib/clients/apps/MessagesGraphQL.d.ts +0 -61
- package/lib/clients/apps/MessagesGraphQL.js +0 -121
- package/lib/clients/apps/catalogGraphQL/brand.d.ts +0 -13
- package/lib/clients/apps/catalogGraphQL/brand.js +0 -18
- package/lib/clients/apps/catalogGraphQL/category.d.ts +0 -11
- package/lib/clients/apps/catalogGraphQL/category.js +0 -16
- package/lib/clients/apps/catalogGraphQL/index.d.ts +0 -22
- package/lib/clients/apps/catalogGraphQL/index.js +0 -88
- package/lib/clients/apps/catalogGraphQL/product.d.ts +0 -25
- package/lib/clients/apps/catalogGraphQL/product.js +0 -30
- package/lib/clients/apps/catalogGraphQL/sku.d.ts +0 -26
- package/lib/clients/apps/catalogGraphQL/sku.js +0 -30
- package/lib/clients/apps/index.d.ts +0 -7
- package/lib/clients/apps/index.js +0 -12
- package/lib/clients/external/ID.d.ts +0 -23
- package/lib/clients/external/ID.js +0 -60
- package/lib/clients/external/Masterdata.d.ts +0 -94
- package/lib/clients/external/Masterdata.js +0 -224
- package/lib/clients/external/PaymentProvider.d.ts +0 -31
- package/lib/clients/external/PaymentProvider.js +0 -42
- package/lib/clients/external/index.d.ts +0 -4
- package/lib/clients/external/index.js +0 -9
- package/lib/clients/infra/Apps.d.ts +0 -88
- package/lib/clients/infra/Apps.js +0 -508
- package/lib/clients/infra/Assets.d.ts +0 -34
- package/lib/clients/infra/BillingMetrics.d.ts +0 -13
- package/lib/clients/infra/BillingMetrics.js +0 -15
- package/lib/clients/infra/Events.d.ts +0 -12
- package/lib/clients/infra/Events.js +0 -33
- package/lib/clients/infra/Housekeeper.d.ts +0 -10
- package/lib/clients/infra/Housekeeper.js +0 -30
- package/lib/clients/infra/Registry.d.ts +0 -59
- package/lib/clients/infra/Router.d.ts +0 -34
- package/lib/clients/infra/Router.js +0 -81
- package/lib/clients/infra/Sphinx.d.ts +0 -13
- package/lib/clients/infra/Sphinx.js +0 -29
- package/lib/clients/infra/VBase.d.ts +0 -60
- package/lib/clients/infra/VBase.js +0 -196
- package/lib/clients/infra/Workspaces.d.ts +0 -18
- package/lib/clients/infra/Workspaces.js +0 -65
- package/lib/clients/infra/index.d.ts +0 -11
- package/lib/clients/infra/index.js +0 -16
- package/lib/clients/janus/LicenseManager.d.ts +0 -7
- package/lib/clients/janus/Segment.js +0 -88
- package/lib/clients/janus/Tenant.js +0 -28
- package/lib/clients/janus/index.d.ts +0 -5
- package/lib/clients/janus/index.js +0 -10
- package/lib/service/index.d.ts +0 -2
- package/lib/service/index.js +0 -30
- package/lib/service/loaders.d.ts +0 -8
- package/lib/service/loaders.js +0 -54
- package/lib/service/logger/console.d.ts +0 -10
- package/lib/service/logger/console.js +0 -36
- package/lib/service/logger/logger.d.ts +0 -29
- package/lib/service/logger/logger.js +0 -61
- package/lib/service/logger/metricsLogger.d.ts +0 -40
- package/lib/service/logger/metricsLogger.js +0 -149
- package/lib/service/master.d.ts +0 -2
- package/lib/service/master.js +0 -87
- package/lib/service/metrics/requestMetricsMiddleware.d.ts +0 -2
- package/lib/service/metrics/requestMetricsMiddleware.js +0 -44
- package/lib/service/tracing/TracerSingleton.d.ts +0 -7
- package/lib/service/tracing/TracerSingleton.js +0 -48
- package/lib/service/tracing/metrics/MetricNames.d.ts +0 -60
- package/lib/service/tracing/metrics/MetricNames.js +0 -44
- package/lib/service/tracing/metrics/instruments.d.ts +0 -9
- package/lib/service/tracing/metrics/instruments.js +0 -11
- package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +0 -9
- package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +0 -25
- package/lib/service/tracing/tracingMiddlewares.d.ts +0 -5
- package/lib/service/tracing/tracingMiddlewares.js +0 -107
- package/lib/service/worker/index.d.ts +0 -11
- package/lib/service/worker/index.js +0 -195
- package/lib/service/worker/listeners.d.ts +0 -3
- package/lib/service/worker/runtime/builtIn/handlers.d.ts +0 -4
- package/lib/service/worker/runtime/builtIn/handlers.js +0 -30
- package/lib/service/worker/runtime/builtIn/middlewares.d.ts +0 -4
- package/lib/service/worker/runtime/builtIn/middlewares.js +0 -40
- package/lib/service/worker/runtime/events/index.d.ts +0 -4
- package/lib/service/worker/runtime/events/index.js +0 -46
- package/lib/service/worker/runtime/events/middlewares/body.d.ts +0 -3
- package/lib/service/worker/runtime/events/middlewares/body.js +0 -22
- package/lib/service/worker/runtime/events/middlewares/context.d.ts +0 -3
- package/lib/service/worker/runtime/events/middlewares/context.js +0 -22
- package/lib/service/worker/runtime/events/router.d.ts +0 -2
- package/lib/service/worker/runtime/events/router.js +0 -27
- package/lib/service/worker/runtime/graphql/index.d.ts +0 -6
- package/lib/service/worker/runtime/graphql/index.js +0 -27
- package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +0 -2
- package/lib/service/worker/runtime/graphql/middlewares/context.js +0 -16
- package/lib/service/worker/runtime/graphql/middlewares/error.js +0 -93
- package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +0 -2
- package/lib/service/worker/runtime/graphql/middlewares/query.js +0 -52
- package/lib/service/worker/runtime/graphql/middlewares/response.js +0 -38
- package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +0 -2
- package/lib/service/worker/runtime/graphql/middlewares/run.js +0 -19
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +0 -4
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +0 -28
- package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +0 -4
- package/lib/service/worker/runtime/graphql/schema/index.d.ts +0 -7
- package/lib/service/worker/runtime/graphql/schema/index.js +0 -31
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +0 -6
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +0 -79
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +0 -7
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +0 -37
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +0 -11
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +0 -61
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +0 -7
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +0 -40
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +0 -6
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +0 -34
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +0 -7
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +0 -39
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +0 -33
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +0 -22
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +0 -36
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +0 -7
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +0 -12
- package/lib/service/worker/runtime/graphql/typings.d.ts +0 -31
- package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +0 -1
- package/lib/service/worker/runtime/graphql/utils/cacheControl.js +0 -32
- package/lib/service/worker/runtime/graphql/utils/error.d.ts +0 -1
- package/lib/service/worker/runtime/graphql/utils/error.js +0 -76
- package/lib/service/worker/runtime/graphql/utils/translations.d.ts +0 -14
- package/lib/service/worker/runtime/graphql/utils/translations.js +0 -38
- package/lib/service/worker/runtime/http/index.d.ts +0 -5
- package/lib/service/worker/runtime/http/index.js +0 -58
- package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +0 -3
- package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +0 -3
- package/lib/service/worker/runtime/http/middlewares/clients.d.ts +0 -4
- package/lib/service/worker/runtime/http/middlewares/context.d.ts +0 -4
- package/lib/service/worker/runtime/http/middlewares/context.js +0 -36
- package/lib/service/worker/runtime/http/middlewares/error.d.ts +0 -2
- package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +0 -6
- package/lib/service/worker/runtime/http/middlewares/rateLimit.js +0 -42
- package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +0 -3
- package/lib/service/worker/runtime/http/middlewares/settings.d.ts +0 -9
- package/lib/service/worker/runtime/http/middlewares/settings.js +0 -44
- package/lib/service/worker/runtime/http/middlewares/timings.d.ts +0 -3
- package/lib/service/worker/runtime/http/middlewares/vary.d.ts +0 -3
- package/lib/service/worker/runtime/http/router.d.ts +0 -2
- package/lib/service/worker/runtime/http/router.js +0 -23
- package/lib/service/worker/runtime/http/routes.d.ts +0 -19
- package/lib/service/worker/runtime/http/routes.js +0 -12
- package/lib/service/worker/runtime/method.d.ts +0 -9
- package/lib/service/worker/runtime/statusTrack.d.ts +0 -14
- package/lib/service/worker/runtime/statusTrack.js +0 -37
- package/lib/service/worker/runtime/utils/compose.d.ts +0 -5
- package/lib/service/worker/runtime/utils/context.d.ts +0 -2
- package/lib/service/worker/runtime/utils/context.js +0 -40
- package/lib/service/worker/runtime/utils/diff.d.ts +0 -12
- package/lib/service/worker/runtime/utils/diff.js +0 -21
- package/lib/service/worker/runtime/utils/recorder.d.ts +0 -8
- package/lib/service/worker/runtime/utils/recorder.js +0 -37
- package/lib/service/worker/runtime/utils/tokenBucket.d.ts +0 -2
- package/lib/service/worker/runtime/utils/tokenBucket.js +0 -16
- package/lib/tracing/LogEvents.d.ts +0 -31
- package/lib/tracing/LogEvents.js +0 -3
- package/lib/tracing/LogFields.d.ts +0 -66
- package/lib/tracing/LogFields.js +0 -3
- package/lib/tracing/Tags.d.ts +0 -81
- package/lib/tracing/Tags.js +0 -7
- package/lib/tracing/UserLandTracer.d.ts +0 -27
- package/lib/tracing/UserLandTracer.js +0 -56
- package/lib/tracing/errorReporting/ErrorReport.d.ts +0 -31
- package/lib/tracing/errorReporting/ErrorReport.js +0 -70
- package/lib/tracing/index.d.ts +0 -9
- package/lib/tracing/index.js +0 -19
- package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +0 -4
- package/lib/tracing/spanReference/SpanReferenceTypes.js +0 -7
- package/lib/tracing/spanReference/createSpanReference.d.ts +0 -3
- package/lib/tracing/spanReference/createSpanReference.js +0 -8
- package/lib/tracing/utils.d.ts +0 -13
- package/lib/tracing/utils.js +0 -40
- package/lib/utils/conflicts.mock.d.ts +0 -17
- package/lib/utils/conflicts.mock.js +0 -27
- /package/lib/service/{worker/runtime/graphql → graphql}/middlewares/error.d.ts +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/middlewares/response.d.ts +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/middlewares/upload.js +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/ioUpload.d.ts +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/ioUpload.js +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/schema/typeDefs/sanitizedString.d.ts +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/typings.js +0 -0
- /package/lib/service/{worker/runtime/utils/toArray.d.ts → graphql/utils/array.d.ts} +0 -0
- /package/lib/service/{worker/runtime/utils/toArray.js → graphql/utils/array.js} +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/utils/pathname.d.ts +0 -0
- /package/lib/service/{worker/runtime/graphql → graphql}/utils/pathname.js +0 -0
- /package/lib/service/{worker/runtime/http → http}/middlewares/authTokens.js +0 -0
- /package/lib/service/{worker/runtime/http → http}/middlewares/clients.js +0 -0
- /package/lib/service/{worker/runtime/http → http}/middlewares/requestStats.js +0 -0
- /package/lib/service/{worker/runtime/http → http}/middlewares/setCookie.js +0 -0
- /package/lib/service/{worker/runtime/method.js → method.js} +0 -0
- /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
|
|
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[
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
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 (
|
|
17
|
-
key
|
|
16
|
+
if (params) {
|
|
17
|
+
for (const [key, value] of Object.entries(params)) {
|
|
18
|
+
urlObject.searchParams.append(key, value);
|
|
19
|
+
}
|
|
18
20
|
}
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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 (
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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/
|
|
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 &&
|
|
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/
|
|
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
|
|
73
|
-
const retryCount = ctx.config
|
|
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) =>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
|
13
|
-
|
|
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
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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 {};
|