@vtex/api 6.45.4
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/CHANGELOG.md +1685 -0
- package/README.md +65 -0
- package/gen/manifest.schema +189 -0
- package/lib/HttpClient/GraphQLClient.d.ts +28 -0
- package/lib/HttpClient/GraphQLClient.js +30 -0
- package/lib/HttpClient/HttpClient.d.ts +29 -0
- package/lib/HttpClient/HttpClient.js +130 -0
- package/lib/HttpClient/agents.d.ts +3 -0
- package/lib/HttpClient/agents.js +24 -0
- package/lib/HttpClient/index.d.ts +6 -0
- package/lib/HttpClient/index.js +14 -0
- package/lib/HttpClient/middlewares/cache.d.ts +35 -0
- package/lib/HttpClient/middlewares/cache.js +173 -0
- package/lib/HttpClient/middlewares/cancellationToken.d.ts +3 -0
- package/lib/HttpClient/middlewares/cancellationToken.js +72 -0
- package/lib/HttpClient/middlewares/inflight.d.ts +5 -0
- package/lib/HttpClient/middlewares/inflight.js +50 -0
- package/lib/HttpClient/middlewares/memoization.d.ts +7 -0
- package/lib/HttpClient/middlewares/memoization.js +40 -0
- package/lib/HttpClient/middlewares/metrics.d.ts +9 -0
- package/lib/HttpClient/middlewares/metrics.js +110 -0
- package/lib/HttpClient/middlewares/notFound.d.ts +7 -0
- package/lib/HttpClient/middlewares/notFound.js +20 -0
- package/lib/HttpClient/middlewares/recorder.d.ts +3 -0
- package/lib/HttpClient/middlewares/recorder.js +21 -0
- package/lib/HttpClient/middlewares/request/HttpAgentSingleton.d.ts +14 -0
- package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +37 -0
- package/lib/HttpClient/middlewares/request/index.d.ts +18 -0
- package/lib/HttpClient/middlewares/request/index.js +83 -0
- package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +1 -0
- package/lib/HttpClient/middlewares/request/setupAxios/index.js +20 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.d.ts +2 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +48 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.d.ts +2 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +7 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.d.ts +8 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +51 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.d.ts +4 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +29 -0
- package/lib/HttpClient/middlewares/tracing.d.ts +15 -0
- package/lib/HttpClient/middlewares/tracing.js +54 -0
- package/lib/HttpClient/typings.d.ts +123 -0
- package/lib/HttpClient/typings.js +11 -0
- package/lib/caches/CacheLayer.d.ts +7 -0
- package/lib/caches/CacheLayer.js +2 -0
- package/lib/caches/DiskCache.d.ts +17 -0
- package/lib/caches/DiskCache.js +70 -0
- package/lib/caches/LRUCache.d.ts +16 -0
- package/lib/caches/LRUCache.js +48 -0
- package/lib/caches/LRUDiskCache.d.ts +21 -0
- package/lib/caches/LRUDiskCache.js +132 -0
- package/lib/caches/MultilayeredCache.d.ts +14 -0
- package/lib/caches/MultilayeredCache.js +68 -0
- package/lib/caches/index.d.ts +6 -0
- package/lib/caches/index.js +9 -0
- package/lib/caches/typings.d.ts +48 -0
- package/lib/caches/typings.js +2 -0
- package/lib/clients/IOClient.d.ts +13 -0
- package/lib/clients/IOClient.js +19 -0
- package/lib/clients/IOClients.d.ts +37 -0
- package/lib/clients/IOClients.js +89 -0
- package/lib/clients/IOGraphQLClient.d.ts +13 -0
- package/lib/clients/IOGraphQLClient.js +16 -0
- package/lib/clients/apps/AppClient.d.ts +9 -0
- package/lib/clients/apps/AppClient.js +34 -0
- package/lib/clients/apps/AppGraphQLClient.d.ts +9 -0
- package/lib/clients/apps/AppGraphQLClient.js +34 -0
- package/lib/clients/apps/Billing.d.ts +12 -0
- package/lib/clients/apps/Billing.js +21 -0
- package/lib/clients/apps/Builder.d.ts +45 -0
- package/lib/clients/apps/Builder.js +114 -0
- package/lib/clients/apps/MessagesGraphQL.d.ts +61 -0
- package/lib/clients/apps/MessagesGraphQL.js +121 -0
- package/lib/clients/apps/Settings.d.ts +14 -0
- package/lib/clients/apps/Settings.js +38 -0
- package/lib/clients/apps/catalogGraphQL/brand.d.ts +13 -0
- package/lib/clients/apps/catalogGraphQL/brand.js +18 -0
- package/lib/clients/apps/catalogGraphQL/category.d.ts +11 -0
- package/lib/clients/apps/catalogGraphQL/category.js +16 -0
- package/lib/clients/apps/catalogGraphQL/index.d.ts +22 -0
- package/lib/clients/apps/catalogGraphQL/index.js +88 -0
- package/lib/clients/apps/catalogGraphQL/product.d.ts +25 -0
- package/lib/clients/apps/catalogGraphQL/product.js +30 -0
- package/lib/clients/apps/catalogGraphQL/sku.d.ts +26 -0
- package/lib/clients/apps/catalogGraphQL/sku.js +30 -0
- package/lib/clients/apps/index.d.ts +7 -0
- package/lib/clients/apps/index.js +12 -0
- package/lib/clients/external/ExternalClient.d.ts +9 -0
- package/lib/clients/external/ExternalClient.js +21 -0
- package/lib/clients/external/ID.d.ts +23 -0
- package/lib/clients/external/ID.js +60 -0
- package/lib/clients/external/Masterdata.d.ts +93 -0
- package/lib/clients/external/Masterdata.js +223 -0
- package/lib/clients/external/PaymentProvider.d.ts +31 -0
- package/lib/clients/external/PaymentProvider.js +42 -0
- package/lib/clients/external/index.d.ts +4 -0
- package/lib/clients/external/index.js +9 -0
- package/lib/clients/index.d.ts +9 -0
- package/lib/clients/index.js +17 -0
- package/lib/clients/infra/Apps.d.ts +88 -0
- package/lib/clients/infra/Apps.js +508 -0
- package/lib/clients/infra/Assets.d.ts +34 -0
- package/lib/clients/infra/Assets.js +165 -0
- package/lib/clients/infra/BillingMetrics.d.ts +13 -0
- package/lib/clients/infra/BillingMetrics.js +15 -0
- package/lib/clients/infra/Events.d.ts +12 -0
- package/lib/clients/infra/Events.js +33 -0
- package/lib/clients/infra/Housekeeper.d.ts +10 -0
- package/lib/clients/infra/Housekeeper.js +30 -0
- package/lib/clients/infra/InfraClient.d.ts +9 -0
- package/lib/clients/infra/InfraClient.js +34 -0
- package/lib/clients/infra/Metadata.d.ts +26 -0
- package/lib/clients/infra/Metadata.js +83 -0
- package/lib/clients/infra/Registry.d.ts +59 -0
- package/lib/clients/infra/Registry.js +207 -0
- package/lib/clients/infra/Router.d.ts +34 -0
- package/lib/clients/infra/Router.js +81 -0
- package/lib/clients/infra/Sphinx.d.ts +13 -0
- package/lib/clients/infra/Sphinx.js +29 -0
- package/lib/clients/infra/VBase.d.ts +60 -0
- package/lib/clients/infra/VBase.js +171 -0
- package/lib/clients/infra/Workspaces.d.ts +18 -0
- package/lib/clients/infra/Workspaces.js +65 -0
- package/lib/clients/infra/index.d.ts +12 -0
- package/lib/clients/infra/index.js +17 -0
- package/lib/clients/janus/JanusClient.d.ts +21 -0
- package/lib/clients/janus/JanusClient.js +30 -0
- package/lib/clients/janus/LicenseManager.d.ts +7 -0
- package/lib/clients/janus/LicenseManager.js +58 -0
- package/lib/clients/janus/Segment.d.ts +36 -0
- package/lib/clients/janus/Segment.js +79 -0
- package/lib/clients/janus/Session.d.ts +15 -0
- package/lib/clients/janus/Session.js +75 -0
- package/lib/clients/janus/Tenant.d.ts +29 -0
- package/lib/clients/janus/Tenant.js +28 -0
- package/lib/clients/janus/index.d.ts +5 -0
- package/lib/clients/janus/index.js +10 -0
- package/lib/constants.d.ts +59 -0
- package/lib/constants.js +65 -0
- package/lib/errors/AuthenticationError.d.ts +18 -0
- package/lib/errors/AuthenticationError.js +24 -0
- package/lib/errors/ForbiddenError.d.ts +18 -0
- package/lib/errors/ForbiddenError.js +24 -0
- package/lib/errors/NotFoundError.d.ts +18 -0
- package/lib/errors/NotFoundError.js +24 -0
- package/lib/errors/RequestCancelledError.d.ts +6 -0
- package/lib/errors/RequestCancelledError.js +11 -0
- package/lib/errors/ResolverError.d.ts +29 -0
- package/lib/errors/ResolverError.js +35 -0
- package/lib/errors/ResolverWarning.d.ts +21 -0
- package/lib/errors/ResolverWarning.js +28 -0
- package/lib/errors/TooManyRequestsError.d.ts +4 -0
- package/lib/errors/TooManyRequestsError.js +9 -0
- package/lib/errors/UserInputError.d.ts +18 -0
- package/lib/errors/UserInputError.js +24 -0
- package/lib/errors/customGraphQLError.d.ts +4 -0
- package/lib/errors/customGraphQLError.js +9 -0
- package/lib/errors/index.d.ts +8 -0
- package/lib/errors/index.js +13 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.js +21 -0
- package/lib/metrics/MetricsAccumulator.d.ts +35 -0
- package/lib/metrics/MetricsAccumulator.js +125 -0
- package/lib/responses.d.ts +79 -0
- package/lib/responses.js +2 -0
- package/lib/service/index.d.ts +2 -0
- package/lib/service/index.js +30 -0
- package/lib/service/loaders.d.ts +8 -0
- package/lib/service/loaders.js +54 -0
- package/lib/service/logger/console.d.ts +10 -0
- package/lib/service/logger/console.js +36 -0
- package/lib/service/logger/index.d.ts +2 -0
- package/lib/service/logger/index.js +7 -0
- package/lib/service/logger/logger.d.ts +35 -0
- package/lib/service/logger/logger.js +73 -0
- package/lib/service/logger/metricsLogger.d.ts +40 -0
- package/lib/service/logger/metricsLogger.js +149 -0
- package/lib/service/master.d.ts +2 -0
- package/lib/service/master.js +91 -0
- package/lib/service/tracing/TracerSingleton.d.ts +7 -0
- package/lib/service/tracing/TracerSingleton.js +54 -0
- package/lib/service/tracing/metrics/MetricNames.d.ts +60 -0
- package/lib/service/tracing/metrics/MetricNames.js +44 -0
- package/lib/service/tracing/metrics/instruments.d.ts +9 -0
- package/lib/service/tracing/metrics/instruments.js +11 -0
- package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.d.ts +9 -0
- package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +25 -0
- package/lib/service/tracing/tracingMiddlewares.d.ts +5 -0
- package/lib/service/tracing/tracingMiddlewares.js +119 -0
- package/lib/service/worker/index.d.ts +11 -0
- package/lib/service/worker/index.js +193 -0
- package/lib/service/worker/listeners.d.ts +3 -0
- package/lib/service/worker/listeners.js +43 -0
- package/lib/service/worker/runtime/Service.d.ts +17 -0
- package/lib/service/worker/runtime/Service.js +23 -0
- package/lib/service/worker/runtime/builtIn/handlers.d.ts +4 -0
- package/lib/service/worker/runtime/builtIn/handlers.js +27 -0
- package/lib/service/worker/runtime/builtIn/middlewares.d.ts +4 -0
- package/lib/service/worker/runtime/builtIn/middlewares.js +40 -0
- package/lib/service/worker/runtime/events/index.d.ts +4 -0
- package/lib/service/worker/runtime/events/index.js +46 -0
- package/lib/service/worker/runtime/events/middlewares/body.d.ts +3 -0
- package/lib/service/worker/runtime/events/middlewares/body.js +22 -0
- package/lib/service/worker/runtime/events/middlewares/context.d.ts +3 -0
- package/lib/service/worker/runtime/events/middlewares/context.js +22 -0
- package/lib/service/worker/runtime/events/router.d.ts +2 -0
- package/lib/service/worker/runtime/events/router.js +27 -0
- package/lib/service/worker/runtime/graphql/index.d.ts +6 -0
- package/lib/service/worker/runtime/graphql/index.js +27 -0
- package/lib/service/worker/runtime/graphql/middlewares/context.d.ts +2 -0
- package/lib/service/worker/runtime/graphql/middlewares/context.js +16 -0
- package/lib/service/worker/runtime/graphql/middlewares/error.d.ts +2 -0
- package/lib/service/worker/runtime/graphql/middlewares/error.js +93 -0
- package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +2 -0
- package/lib/service/worker/runtime/graphql/middlewares/query.js +52 -0
- package/lib/service/worker/runtime/graphql/middlewares/response.d.ts +2 -0
- package/lib/service/worker/runtime/graphql/middlewares/response.js +38 -0
- package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +2 -0
- package/lib/service/worker/runtime/graphql/middlewares/run.js +19 -0
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +4 -0
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +28 -0
- package/lib/service/worker/runtime/graphql/middlewares/upload.d.ts +4 -0
- package/lib/service/worker/runtime/graphql/middlewares/upload.js +12 -0
- package/lib/service/worker/runtime/graphql/schema/index.d.ts +7 -0
- package/lib/service/worker/runtime/graphql/schema/index.js +31 -0
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +6 -0
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +79 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.d.ts +6 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.js +73 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.d.ts +7 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +37 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.d.ts +11 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +61 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.d.ts +7 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +40 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Sanitize.d.ts +9 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Sanitize.js +35 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.d.ts +6 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +34 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/SmartCacheDirective.d.ts +6 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/SmartCacheDirective.js +29 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.d.ts +7 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +39 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.d.ts +7 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +33 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.d.ts +22 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +36 -0
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +7 -0
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +12 -0
- package/lib/service/worker/runtime/graphql/schema/typeDefs/ioUpload.d.ts +3 -0
- package/lib/service/worker/runtime/graphql/schema/typeDefs/ioUpload.js +16 -0
- package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.d.ts +10 -0
- package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.js +39 -0
- package/lib/service/worker/runtime/graphql/typings.d.ts +31 -0
- package/lib/service/worker/runtime/graphql/typings.js +2 -0
- package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +1 -0
- package/lib/service/worker/runtime/graphql/utils/cacheControl.js +32 -0
- package/lib/service/worker/runtime/graphql/utils/error.d.ts +1 -0
- package/lib/service/worker/runtime/graphql/utils/error.js +76 -0
- package/lib/service/worker/runtime/graphql/utils/pathname.d.ts +1 -0
- package/lib/service/worker/runtime/graphql/utils/pathname.js +7 -0
- package/lib/service/worker/runtime/graphql/utils/translations.d.ts +14 -0
- package/lib/service/worker/runtime/graphql/utils/translations.js +38 -0
- package/lib/service/worker/runtime/http/index.d.ts +5 -0
- package/lib/service/worker/runtime/http/index.js +58 -0
- package/lib/service/worker/runtime/http/middlewares/authTokens.d.ts +3 -0
- package/lib/service/worker/runtime/http/middlewares/authTokens.js +12 -0
- package/lib/service/worker/runtime/http/middlewares/cancellationToken.d.ts +3 -0
- package/lib/service/worker/runtime/http/middlewares/cancellationToken.js +18 -0
- package/lib/service/worker/runtime/http/middlewares/clients.d.ts +4 -0
- package/lib/service/worker/runtime/http/middlewares/clients.js +12 -0
- package/lib/service/worker/runtime/http/middlewares/context.d.ts +4 -0
- package/lib/service/worker/runtime/http/middlewares/context.js +36 -0
- package/lib/service/worker/runtime/http/middlewares/error.d.ts +2 -0
- package/lib/service/worker/runtime/http/middlewares/error.js +84 -0
- package/lib/service/worker/runtime/http/middlewares/rateLimit.d.ts +6 -0
- package/lib/service/worker/runtime/http/middlewares/rateLimit.js +42 -0
- package/lib/service/worker/runtime/http/middlewares/requestStats.d.ts +17 -0
- package/lib/service/worker/runtime/http/middlewares/requestStats.js +40 -0
- package/lib/service/worker/runtime/http/middlewares/setCookie.d.ts +3 -0
- package/lib/service/worker/runtime/http/middlewares/setCookie.js +52 -0
- package/lib/service/worker/runtime/http/middlewares/settings.d.ts +9 -0
- package/lib/service/worker/runtime/http/middlewares/settings.js +43 -0
- package/lib/service/worker/runtime/http/middlewares/timings.d.ts +3 -0
- package/lib/service/worker/runtime/http/middlewares/timings.js +45 -0
- package/lib/service/worker/runtime/http/middlewares/vary.d.ts +3 -0
- package/lib/service/worker/runtime/http/middlewares/vary.js +52 -0
- package/lib/service/worker/runtime/http/router.d.ts +2 -0
- package/lib/service/worker/runtime/http/router.js +23 -0
- package/lib/service/worker/runtime/http/routes.d.ts +19 -0
- package/lib/service/worker/runtime/http/routes.js +12 -0
- package/lib/service/worker/runtime/method.d.ts +9 -0
- package/lib/service/worker/runtime/method.js +23 -0
- package/lib/service/worker/runtime/statusTrack.d.ts +14 -0
- package/lib/service/worker/runtime/statusTrack.js +37 -0
- package/lib/service/worker/runtime/typings.d.ts +172 -0
- package/lib/service/worker/runtime/typings.js +2 -0
- package/lib/service/worker/runtime/utils/compose.d.ts +5 -0
- package/lib/service/worker/runtime/utils/compose.js +11 -0
- package/lib/service/worker/runtime/utils/context.d.ts +2 -0
- package/lib/service/worker/runtime/utils/context.js +40 -0
- package/lib/service/worker/runtime/utils/diff.d.ts +12 -0
- package/lib/service/worker/runtime/utils/diff.js +21 -0
- package/lib/service/worker/runtime/utils/recorder.d.ts +8 -0
- package/lib/service/worker/runtime/utils/recorder.js +37 -0
- package/lib/service/worker/runtime/utils/toArray.d.ts +1 -0
- package/lib/service/worker/runtime/utils/toArray.js +3 -0
- package/lib/service/worker/runtime/utils/tokenBucket.d.ts +2 -0
- package/lib/service/worker/runtime/utils/tokenBucket.js +16 -0
- package/lib/tracing/LogEvents.d.ts +31 -0
- package/lib/tracing/LogEvents.js +3 -0
- package/lib/tracing/LogFields.d.ts +61 -0
- package/lib/tracing/LogFields.js +3 -0
- package/lib/tracing/Tags.d.ts +79 -0
- package/lib/tracing/Tags.js +7 -0
- package/lib/tracing/UserLandTracer.d.ts +27 -0
- package/lib/tracing/UserLandTracer.js +55 -0
- package/lib/tracing/errorReporting/ErrorReport.d.ts +31 -0
- package/lib/tracing/errorReporting/ErrorReport.js +61 -0
- package/lib/tracing/index.d.ts +9 -0
- package/lib/tracing/index.js +19 -0
- package/lib/tracing/spanReference/SpanReferenceTypes.d.ts +4 -0
- package/lib/tracing/spanReference/SpanReferenceTypes.js +7 -0
- package/lib/tracing/spanReference/createSpanReference.d.ts +3 -0
- package/lib/tracing/spanReference/createSpanReference.js +8 -0
- package/lib/tracing/utils.d.ts +13 -0
- package/lib/tracing/utils.js +40 -0
- package/lib/utils/MineWinsConflictsResolver.d.ts +28 -0
- package/lib/utils/MineWinsConflictsResolver.js +130 -0
- package/lib/utils/app.d.ts +23 -0
- package/lib/utils/app.js +48 -0
- package/lib/utils/appsStaleIfError.d.ts +11 -0
- package/lib/utils/appsStaleIfError.js +63 -0
- package/lib/utils/billingOptions.d.ts +36 -0
- package/lib/utils/billingOptions.js +9 -0
- package/lib/utils/binding.d.ts +13 -0
- package/lib/utils/binding.js +38 -0
- package/lib/utils/cancel.d.ts +3 -0
- package/lib/utils/cancel.js +12 -0
- package/lib/utils/domain.d.ts +1 -0
- package/lib/utils/domain.js +5 -0
- package/lib/utils/error.d.ts +8 -0
- package/lib/utils/error.js +94 -0
- package/lib/utils/index.d.ts +9 -0
- package/lib/utils/index.js +14 -0
- package/lib/utils/message.d.ts +25 -0
- package/lib/utils/message.js +23 -0
- package/lib/utils/renameBy.d.ts +1 -0
- package/lib/utils/renameBy.js +4 -0
- package/lib/utils/retry.d.ts +4 -0
- package/lib/utils/retry.js +32 -0
- package/lib/utils/status.d.ts +1 -0
- package/lib/utils/status.js +11 -0
- package/lib/utils/tenant.d.ts +5 -0
- package/lib/utils/tenant.js +6 -0
- package/lib/utils/throwOnGraphQLErrors.d.ts +2 -0
- package/lib/utils/throwOnGraphQLErrors.js +15 -0
- package/lib/utils/time.d.ts +31 -0
- package/lib/utils/time.js +118 -0
- package/package.json +127 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { IOClients } from '../../../../../clients/IOClients';
|
|
2
|
+
import { ParamsContext, RecorderState, ServiceContext } from '../../typings';
|
|
3
|
+
export declare function eventContextMiddleware<T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../../../../../constants");
|
|
4
|
+
const context_1 = require("../../utils/context");
|
|
5
|
+
async function eventContextMiddleware(ctx, next) {
|
|
6
|
+
const { request: { header } } = ctx;
|
|
7
|
+
ctx.vtex = {
|
|
8
|
+
...context_1.prepareHandlerCtx(header, ctx.tracing),
|
|
9
|
+
eventInfo: {
|
|
10
|
+
key: header[constants_1.EVENT_KEY_HEADER],
|
|
11
|
+
sender: header[constants_1.EVENT_SENDER_HEADER],
|
|
12
|
+
subject: header[constants_1.EVENT_SUBJECT_HEADER],
|
|
13
|
+
},
|
|
14
|
+
route: {
|
|
15
|
+
id: header[constants_1.EVENT_HANDLER_ID_HEADER],
|
|
16
|
+
params: {},
|
|
17
|
+
type: 'event',
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
await next();
|
|
21
|
+
}
|
|
22
|
+
exports.eventContextMiddleware = eventContextMiddleware;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ServiceContext } from '../typings';
|
|
2
|
+
export declare const routerFromEventHandlers: (events: Record<string, import("koa-compose").Middleware<ServiceContext<import("../../../..").IOClients, import("../typings").RecorderState, import("../typings").ParamsContext>>> | null) => (ctx: ServiceContext<import("../../../..").IOClients, import("../typings").RecorderState, import("../typings").ParamsContext>, next: () => Promise<void>) => Promise<void>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../../../../constants");
|
|
4
|
+
const logger_1 = require("../../../logger");
|
|
5
|
+
const console_1 = require("./../../../logger/console");
|
|
6
|
+
exports.routerFromEventHandlers = (events) => {
|
|
7
|
+
return async (ctx, next) => {
|
|
8
|
+
const handlerId = ctx.get(constants_1.EVENT_HANDLER_ID_HEADER);
|
|
9
|
+
if (!handlerId || !events) {
|
|
10
|
+
return next();
|
|
11
|
+
}
|
|
12
|
+
if (handlerId == null) {
|
|
13
|
+
ctx.response.status = 400;
|
|
14
|
+
ctx.response.body = `Request header doesn't have the field x-event-handler-id`;
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const handler = events[handlerId];
|
|
18
|
+
if (!handler) {
|
|
19
|
+
const msg = `Event handler not found for ${handlerId}`;
|
|
20
|
+
ctx.response.status = 404;
|
|
21
|
+
ctx.response.body = msg;
|
|
22
|
+
console_1.logOnceToDevConsole(msg, logger_1.LogLevel.Error);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
await handler(ctx, next);
|
|
26
|
+
};
|
|
27
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import TokenBucket from 'tokenbucket';
|
|
2
|
+
import { IOClients } from '../../../../clients/IOClients';
|
|
3
|
+
import { ClientsConfig, GraphQLOptions, ParamsContext, RecorderState, ServiceRoute } from '../typings';
|
|
4
|
+
import { GraphQLContext } from './typings';
|
|
5
|
+
export declare const GRAPHQL_ROUTE = "__graphql";
|
|
6
|
+
export declare const createGraphQLRoute: <T extends IOClients, U extends RecorderState, V extends ParamsContext>(graphql: GraphQLOptions<T, U, V>, clientsConfig: ClientsConfig<T>, serviceRoute: ServiceRoute, routeId: string, globalLimiter: TokenBucket | undefined) => import("koa-compose").ComposedMiddleware<import("../typings").ServiceContext<T, U, V & GraphQLContext>>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tracingMiddlewares_1 = require("../../../tracing/tracingMiddlewares");
|
|
4
|
+
const http_1 = require("../http");
|
|
5
|
+
const context_1 = require("./middlewares/context");
|
|
6
|
+
const error_1 = require("./middlewares/error");
|
|
7
|
+
const query_1 = require("./middlewares/query");
|
|
8
|
+
const response_1 = require("./middlewares/response");
|
|
9
|
+
const run_1 = require("./middlewares/run");
|
|
10
|
+
const updateSchema_1 = require("./middlewares/updateSchema");
|
|
11
|
+
const upload_1 = require("./middlewares/upload");
|
|
12
|
+
const schema_1 = require("./schema");
|
|
13
|
+
exports.GRAPHQL_ROUTE = '__graphql';
|
|
14
|
+
exports.createGraphQLRoute = (graphql, clientsConfig, serviceRoute, routeId, globalLimiter) => {
|
|
15
|
+
const executableSchema = schema_1.makeSchema(graphql);
|
|
16
|
+
const pipeline = [
|
|
17
|
+
tracingMiddlewares_1.nameSpanOperationMiddleware('graphql-handler', exports.GRAPHQL_ROUTE),
|
|
18
|
+
updateSchema_1.updateSchema(graphql, executableSchema),
|
|
19
|
+
context_1.injectGraphqlContext,
|
|
20
|
+
response_1.response,
|
|
21
|
+
error_1.graphqlError,
|
|
22
|
+
upload_1.upload,
|
|
23
|
+
query_1.extractQuery(executableSchema),
|
|
24
|
+
run_1.run(executableSchema),
|
|
25
|
+
];
|
|
26
|
+
return http_1.createPrivateHttpRoute(clientsConfig, pipeline, serviceRoute, routeId, globalLimiter);
|
|
27
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../../../../../constants");
|
|
4
|
+
async function injectGraphqlContext(ctx, next) {
|
|
5
|
+
ctx.graphql = {
|
|
6
|
+
cacheControl: {
|
|
7
|
+
maxAge: constants_1.MAX_AGE.LONG,
|
|
8
|
+
noCache: false,
|
|
9
|
+
noStore: false,
|
|
10
|
+
scope: 'public',
|
|
11
|
+
},
|
|
12
|
+
status: 'success',
|
|
13
|
+
};
|
|
14
|
+
await next();
|
|
15
|
+
}
|
|
16
|
+
exports.injectGraphqlContext = injectGraphqlContext;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const apollo_server_errors_1 = require("apollo-server-errors");
|
|
4
|
+
const ramda_1 = require("ramda");
|
|
5
|
+
const constants_1 = require("../../../../../constants");
|
|
6
|
+
const RequestCancelledError_1 = require("../../../../../errors/RequestCancelledError");
|
|
7
|
+
const logger_1 = require("../../../../logger");
|
|
8
|
+
const error_1 = require("../utils/error");
|
|
9
|
+
const pathname_1 = require("../utils/pathname");
|
|
10
|
+
const TWO_SECONDS_S = 2;
|
|
11
|
+
const uniqErrorsByPath = (errors) => ramda_1.uniqBy(e => e.extensions && e.extensions.exception && e.extensions.exception.request
|
|
12
|
+
? e.extensions.exception.request.path
|
|
13
|
+
: e, errors);
|
|
14
|
+
const createLogErrorToSplunk = (vtex) => (err) => {
|
|
15
|
+
var _a, _b, _c, _d, _e, _f;
|
|
16
|
+
const { route: { id }, logger, } = vtex;
|
|
17
|
+
try {
|
|
18
|
+
// Prevent logging cancellation error (it's not an error)
|
|
19
|
+
if (((_b = (_a = err === null || err === void 0 ? void 0 : err.extensions) === null || _a === void 0 ? void 0 : _a.exception) === null || _b === void 0 ? void 0 : _b.code) === RequestCancelledError_1.cancelledErrorCode) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// Add pathName to each error
|
|
23
|
+
if (err.path) {
|
|
24
|
+
err.pathName = pathname_1.generatePathName(err.path);
|
|
25
|
+
}
|
|
26
|
+
const log = {
|
|
27
|
+
...err,
|
|
28
|
+
routeId: id,
|
|
29
|
+
};
|
|
30
|
+
// Grab level from originalError, default to "error" level.
|
|
31
|
+
let level = (_d = (_c = err === null || err === void 0 ? void 0 : err.extensions) === null || _c === void 0 ? void 0 : _c.exception) === null || _d === void 0 ? void 0 : _d.level;
|
|
32
|
+
if (!level || !(level === logger_1.LogLevel.Error || level === logger_1.LogLevel.Warn)) {
|
|
33
|
+
level = logger_1.LogLevel.Error;
|
|
34
|
+
}
|
|
35
|
+
logger.log(log, level);
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
if (!constants_1.LINKED && ((_f = (_e = err === null || err === void 0 ? void 0 : err.extensions) === null || _e === void 0 ? void 0 : _e.exception) === null || _f === void 0 ? void 0 : _f.sensitive)) {
|
|
39
|
+
delete err.extensions.exception.sensitive;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
async function graphqlError(ctx, next) {
|
|
44
|
+
const { vtex: { production }, } = ctx;
|
|
45
|
+
let graphQLErrors = null;
|
|
46
|
+
try {
|
|
47
|
+
await next();
|
|
48
|
+
const response = ctx.graphql.graphqlResponse;
|
|
49
|
+
if (response && Array.isArray(response.errors)) {
|
|
50
|
+
const formatter = error_1.createFormatError(ctx);
|
|
51
|
+
graphQLErrors = apollo_server_errors_1.formatApolloErrors(response.errors, { formatter });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
if (e.code === RequestCancelledError_1.cancelledErrorCode) {
|
|
56
|
+
ctx.status = RequestCancelledError_1.cancelledRequestStatus;
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const formatError = error_1.createFormatError(ctx);
|
|
60
|
+
graphQLErrors = Array.isArray(e)
|
|
61
|
+
? e.map(formatError)
|
|
62
|
+
: [formatError(e)];
|
|
63
|
+
// Add response
|
|
64
|
+
ctx.status = e.statusCode || 500;
|
|
65
|
+
if (e.headers) {
|
|
66
|
+
ctx.set(e.headers);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
if (graphQLErrors) {
|
|
71
|
+
ctx.graphql.status = 'error';
|
|
72
|
+
// Filter errors from the same path in the query. This should
|
|
73
|
+
// avoid logging multiple errors from an array for example
|
|
74
|
+
const uniqueErrors = uniqErrorsByPath(graphQLErrors);
|
|
75
|
+
// Log each error to splunk individually
|
|
76
|
+
const logToSplunk = createLogErrorToSplunk(ctx.vtex);
|
|
77
|
+
uniqueErrors.forEach(logToSplunk);
|
|
78
|
+
// In production errors, add two second cache
|
|
79
|
+
if (production) {
|
|
80
|
+
ctx.graphql.cacheControl.maxAge = TWO_SECONDS_S;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
ctx.graphql.cacheControl.noCache = true;
|
|
84
|
+
ctx.graphql.cacheControl.noStore = true;
|
|
85
|
+
}
|
|
86
|
+
ctx.graphql.graphqlResponse = {
|
|
87
|
+
...ctx.graphql.graphqlResponse,
|
|
88
|
+
errors: uniqueErrors,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.graphqlError = graphqlError;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ExecutableSchema } from './../typings';
|
|
2
|
+
export declare const extractQuery: (executableSchema: ExecutableSchema) => (ctx: import("../../typings").ServiceContext<import("../../../../..").IOClients, import("../../typings").RecorderState, import("../typings").GraphQLContext>, next: () => Promise<void>) => Promise<void>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const co_body_1 = require("co-body");
|
|
4
|
+
const graphql_1 = require("graphql");
|
|
5
|
+
const url_1 = require("url");
|
|
6
|
+
const constants_1 = require("../../../../../constants");
|
|
7
|
+
const LRUCache_1 = require("./../../../../../caches/LRUCache");
|
|
8
|
+
const documentStorage = new LRUCache_1.LRUCache({
|
|
9
|
+
max: 500,
|
|
10
|
+
});
|
|
11
|
+
const queryFromUrl = (url) => {
|
|
12
|
+
const parsedUrl = url_1.parse(url, true);
|
|
13
|
+
const { query: querystringObj } = parsedUrl;
|
|
14
|
+
// Having a BODY_HASH means the query is in the body
|
|
15
|
+
if (querystringObj && querystringObj[constants_1.BODY_HASH]) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
// We need to JSON.parse the variables since they are a stringified
|
|
19
|
+
// in the querystring
|
|
20
|
+
if (querystringObj && typeof querystringObj.variables === 'string') {
|
|
21
|
+
querystringObj.variables = JSON.parse(querystringObj.variables);
|
|
22
|
+
}
|
|
23
|
+
return querystringObj;
|
|
24
|
+
};
|
|
25
|
+
const parseAndValidateQueryToSchema = (query, schema) => {
|
|
26
|
+
const document = graphql_1.parse(query);
|
|
27
|
+
const validation = graphql_1.validate(schema, document);
|
|
28
|
+
if (Array.isArray(validation) && validation.length > 0) {
|
|
29
|
+
throw validation;
|
|
30
|
+
}
|
|
31
|
+
return document;
|
|
32
|
+
};
|
|
33
|
+
exports.extractQuery = (executableSchema) => async function parseAndValidateQuery(ctx, next) {
|
|
34
|
+
const { request, req } = ctx;
|
|
35
|
+
let query;
|
|
36
|
+
if (request.is('multipart/form-data')) {
|
|
37
|
+
query = request.body;
|
|
38
|
+
}
|
|
39
|
+
else if (request.method.toUpperCase() === 'POST') {
|
|
40
|
+
query = await co_body_1.json(req, { limit: '3mb' });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
query = queryFromUrl(request.url) || (await co_body_1.json(req, { limit: '3mb' }));
|
|
44
|
+
}
|
|
45
|
+
// Assign the query before setting the query.document because if the
|
|
46
|
+
// validation fails we don't loose the query in our error log
|
|
47
|
+
ctx.graphql.query = query;
|
|
48
|
+
query.document = (await documentStorage.getOrSet(query.query, async () => ({
|
|
49
|
+
value: parseAndValidateQueryToSchema(query.query, executableSchema.schema),
|
|
50
|
+
})));
|
|
51
|
+
await next();
|
|
52
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../../../../../constants");
|
|
4
|
+
const cacheControl_1 = require("../utils/cacheControl");
|
|
5
|
+
function setVaryHeaders(ctx, cacheControl) {
|
|
6
|
+
ctx.vary(constants_1.FORWARDED_HOST_HEADER);
|
|
7
|
+
if (cacheControl.scope === 'segment') {
|
|
8
|
+
ctx.vary(constants_1.SEGMENT_HEADER);
|
|
9
|
+
}
|
|
10
|
+
if (cacheControl.scope === 'private' || ctx.query.scope === 'private') {
|
|
11
|
+
ctx.vary(constants_1.SEGMENT_HEADER);
|
|
12
|
+
ctx.vary(constants_1.SESSION_HEADER);
|
|
13
|
+
}
|
|
14
|
+
else if (ctx.vtex.sessionToken) {
|
|
15
|
+
ctx.vtex.logger.warn({
|
|
16
|
+
message: 'GraphQL resolver receiving session token without private scope',
|
|
17
|
+
userAgent: ctx.get('user-agent'),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function response(ctx, next) {
|
|
22
|
+
var _a;
|
|
23
|
+
await next();
|
|
24
|
+
const { cacheControl, status, graphqlResponse, } = ctx.graphql;
|
|
25
|
+
const cacheControlHeader = cacheControl_1.cacheControlHTTP(ctx);
|
|
26
|
+
ctx.set(constants_1.CACHE_CONTROL_HEADER, cacheControlHeader);
|
|
27
|
+
if (status === 'error') {
|
|
28
|
+
// Do not generate etag for errors
|
|
29
|
+
ctx.remove(constants_1.META_HEADER);
|
|
30
|
+
ctx.remove(constants_1.ETAG_HEADER);
|
|
31
|
+
(_a = ctx.vtex.recorder) === null || _a === void 0 ? void 0 : _a.clear();
|
|
32
|
+
}
|
|
33
|
+
if (ctx.method.toUpperCase() === 'GET') {
|
|
34
|
+
setVaryHeaders(ctx, cacheControl);
|
|
35
|
+
}
|
|
36
|
+
ctx.body = graphqlResponse;
|
|
37
|
+
}
|
|
38
|
+
exports.response = response;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ExecutableSchema } from '../typings';
|
|
2
|
+
export declare const run: (executableSchema: ExecutableSchema) => (ctx: import("../../typings").ServiceContext<import("../../../../..").IOClients, import("../../typings").RecorderState, import("../typings").GraphQLContext>, next: () => Promise<void>) => Promise<void>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const graphql_1 = require("graphql");
|
|
4
|
+
exports.run = (executableSchema) => async function runHttpQuery(ctx, next) {
|
|
5
|
+
const { graphql: { query }, } = ctx;
|
|
6
|
+
const { document, operationName, variables: variableValues } = query;
|
|
7
|
+
const schema = executableSchema.schema;
|
|
8
|
+
const response = await graphql_1.execute({
|
|
9
|
+
contextValue: ctx,
|
|
10
|
+
document,
|
|
11
|
+
fieldResolver: (root, _, __, info) => root[info.fieldName],
|
|
12
|
+
operationName,
|
|
13
|
+
rootValue: null,
|
|
14
|
+
schema,
|
|
15
|
+
variableValues,
|
|
16
|
+
});
|
|
17
|
+
ctx.graphql.graphqlResponse = response;
|
|
18
|
+
await next();
|
|
19
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { IOClients } from '../../../../../clients';
|
|
2
|
+
import { GraphQLOptions, ParamsContext, RecorderState } from '../../typings';
|
|
3
|
+
import { ExecutableSchema } from '../typings';
|
|
4
|
+
export declare const updateSchema: <T extends IOClients, U extends RecorderState, V extends ParamsContext>(graphql: GraphQLOptions<T, U, V>, executableSchema: ExecutableSchema) => (ctx: import("../../typings").ServiceContext<IOClients, RecorderState, import("../typings").GraphQLContext>, next: () => Promise<void>) => Promise<void>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../../../../../constants");
|
|
4
|
+
const utils_1 = require("../../../../../utils");
|
|
5
|
+
const index_1 = require("../schema/index");
|
|
6
|
+
exports.updateSchema = (graphql, executableSchema) => async function updateRunnableSchema(ctx, next) {
|
|
7
|
+
const { clients: { apps }, vtex: { logger }, app, } = ctx;
|
|
8
|
+
if (!ctx.headers[constants_1.PROVIDER_HEADER]) {
|
|
9
|
+
await next();
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
// fetches the new schema and generate a new runnable schema, updates the provider app,
|
|
13
|
+
if (executableSchema.hasProvider &&
|
|
14
|
+
(!executableSchema.provider ||
|
|
15
|
+
utils_1.majorEqualAndGreaterThan(utils_1.parseAppId(ctx.headers[constants_1.PROVIDER_HEADER]).version, utils_1.parseAppId(executableSchema.provider).version))) {
|
|
16
|
+
try {
|
|
17
|
+
const newSchema = (await apps.getAppFile(ctx.headers[constants_1.PROVIDER_HEADER], 'public/schema.graphql')).data.toString('utf-8');
|
|
18
|
+
graphql.schema = newSchema;
|
|
19
|
+
const newRunnableSchema = index_1.makeSchema(graphql);
|
|
20
|
+
executableSchema.schema = newRunnableSchema.schema;
|
|
21
|
+
executableSchema.provider = ctx.headers[constants_1.PROVIDER_HEADER];
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
logger.error({ error, message: 'Update schema failed', app });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
await next();
|
|
28
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const graphql_upload_1 = require("graphql-upload");
|
|
4
|
+
const graphqlUpload = graphql_upload_1.graphqlUploadKoa({
|
|
5
|
+
maxFieldSize: 1e6,
|
|
6
|
+
maxFileSize: 4 * 1e6,
|
|
7
|
+
maxFiles: 10,
|
|
8
|
+
});
|
|
9
|
+
function graphqlUploadKoaMiddleware(ctx, next) {
|
|
10
|
+
return graphqlUpload(ctx, next);
|
|
11
|
+
}
|
|
12
|
+
exports.upload = graphqlUploadKoaMiddleware;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IOClients } from '../../../../../clients/IOClients';
|
|
2
|
+
import { GraphQLOptions, ParamsContext, RecorderState } from '../../typings';
|
|
3
|
+
export declare type SchemaMetaData = Record<string, boolean>;
|
|
4
|
+
export declare const makeSchema: <ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext>(options: GraphQLOptions<ClientsT, StateT, CustomT>) => {
|
|
5
|
+
schema: import("graphql").GraphQLSchema;
|
|
6
|
+
hasProvider: boolean;
|
|
7
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs_extra_1 = require("fs-extra");
|
|
4
|
+
const graphql_tools_1 = require("graphql-tools");
|
|
5
|
+
const ramda_1 = require("ramda");
|
|
6
|
+
const schemaDirectives_1 = require("./schemaDirectives");
|
|
7
|
+
const typeDefs_1 = require("./typeDefs");
|
|
8
|
+
const mergeTypeDefs = (appTypeDefs, schemaMetaData) => [appTypeDefs, typeDefs_1.nativeTypeDefs(schemaMetaData), schemaDirectives_1.nativeSchemaDirectivesTypeDefs].join('\n\n');
|
|
9
|
+
const hasScalar = (typeDefs) => (scalar) => new RegExp(`scalar(\\s)+${scalar}(\\s\\n)+`).test(typeDefs);
|
|
10
|
+
const extractSchemaMetaData = (typeDefs) => {
|
|
11
|
+
const scalars = ramda_1.keys(typeDefs_1.nativeResolvers);
|
|
12
|
+
const scalarsPresentInSchema = ramda_1.map(hasScalar(typeDefs), scalars);
|
|
13
|
+
return ramda_1.zipObj(scalars, scalarsPresentInSchema);
|
|
14
|
+
};
|
|
15
|
+
exports.makeSchema = (options) => {
|
|
16
|
+
const { resolvers: appResolvers, schema: appSchema, schemaDirectives: appDirectives } = options;
|
|
17
|
+
const appTypeDefs = appSchema || fs_extra_1.readFileSync('./service/schema.graphql', 'utf8');
|
|
18
|
+
const schemaMetaData = extractSchemaMetaData(appTypeDefs);
|
|
19
|
+
const executableSchema = graphql_tools_1.makeExecutableSchema({
|
|
20
|
+
resolvers: {
|
|
21
|
+
...appResolvers,
|
|
22
|
+
...typeDefs_1.nativeResolvers,
|
|
23
|
+
},
|
|
24
|
+
schemaDirectives: {
|
|
25
|
+
...appDirectives,
|
|
26
|
+
...schemaDirectives_1.nativeSchemaDirectives,
|
|
27
|
+
},
|
|
28
|
+
typeDefs: mergeTypeDefs(appTypeDefs, schemaMetaData),
|
|
29
|
+
});
|
|
30
|
+
return { schema: executableSchema, hasProvider: appSchema ? true : false };
|
|
31
|
+
};
|