@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,31 @@
|
|
|
1
|
+
import { ErrorReportBase, ErrorReportCreateArgs } from '@vtex/node-error-report';
|
|
2
|
+
import { Span } from 'opentracing';
|
|
3
|
+
import { IOContext } from '../../service/worker/runtime/typings';
|
|
4
|
+
export declare class ErrorReport extends ErrorReportBase {
|
|
5
|
+
/**
|
|
6
|
+
* Create a new ErrorReport wrapping args.originalError
|
|
7
|
+
*
|
|
8
|
+
* In case the args.originalError argument is already an ErrorReport
|
|
9
|
+
* instance, then ErrorReport.create just returns it. If it's not,
|
|
10
|
+
* it returns a new ErrorReport wrapping the error. This way you can
|
|
11
|
+
* use ErrorReport.create on a catchAll, e.g.:
|
|
12
|
+
*
|
|
13
|
+
* ```
|
|
14
|
+
* try {
|
|
15
|
+
* await next()
|
|
16
|
+
* } catch(err) {
|
|
17
|
+
* ErrorReport.create({ originalError: err }).injectOnSpan(span)
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* More docs on the ErrorReport available on: https://github.com/vtex/node-error-report
|
|
22
|
+
*/
|
|
23
|
+
static create(args: ErrorReportCreateArgs): ErrorReport;
|
|
24
|
+
/**
|
|
25
|
+
* Inject information about the error wrapped by this ErrorReport
|
|
26
|
+
* instance on the provided Span. If a logger is provided and the
|
|
27
|
+
* span is part of a **sampled** trace, then the error will be logged.
|
|
28
|
+
*/
|
|
29
|
+
injectOnSpan(span: Span, logger?: IOContext['logger']): this;
|
|
30
|
+
private shouldLogToSplunk;
|
|
31
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const node_error_report_1 = require("@vtex/node-error-report");
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
class ErrorReport extends node_error_report_1.ErrorReportBase {
|
|
7
|
+
/**
|
|
8
|
+
* Create a new ErrorReport wrapping args.originalError
|
|
9
|
+
*
|
|
10
|
+
* In case the args.originalError argument is already an ErrorReport
|
|
11
|
+
* instance, then ErrorReport.create just returns it. If it's not,
|
|
12
|
+
* it returns a new ErrorReport wrapping the error. This way you can
|
|
13
|
+
* use ErrorReport.create on a catchAll, e.g.:
|
|
14
|
+
*
|
|
15
|
+
* ```
|
|
16
|
+
* try {
|
|
17
|
+
* await next()
|
|
18
|
+
* } catch(err) {
|
|
19
|
+
* ErrorReport.create({ originalError: err }).injectOnSpan(span)
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* More docs on the ErrorReport available on: https://github.com/vtex/node-error-report
|
|
24
|
+
*/
|
|
25
|
+
static create(args) {
|
|
26
|
+
if (args.originalError instanceof ErrorReport) {
|
|
27
|
+
return args.originalError;
|
|
28
|
+
}
|
|
29
|
+
return new ErrorReport(node_error_report_1.createErrorReportBaseArgs(args));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Inject information about the error wrapped by this ErrorReport
|
|
33
|
+
* instance on the provided Span. If a logger is provided and the
|
|
34
|
+
* span is part of a **sampled** trace, then the error will be logged.
|
|
35
|
+
*/
|
|
36
|
+
injectOnSpan(span, logger) {
|
|
37
|
+
var _a;
|
|
38
|
+
span.setTag(__1.TracingTags.ERROR, 'true');
|
|
39
|
+
const indexedLogs = {
|
|
40
|
+
["error.kind" /* ERROR_KIND */]: this.kind,
|
|
41
|
+
["error.id" /* ERROR_ID */]: this.metadata.errorId,
|
|
42
|
+
};
|
|
43
|
+
if (node_error_report_1.isRequestInfo(this.parsedInfo) &&
|
|
44
|
+
this.parsedInfo.response &&
|
|
45
|
+
node_error_report_1.isInfraErrorData((_a = this.parsedInfo.response) === null || _a === void 0 ? void 0 : _a.data)) {
|
|
46
|
+
indexedLogs["error.server.code" /* ERROR_SERVER_CODE */] = this.parsedInfo.response.data.code;
|
|
47
|
+
indexedLogs["error.server.request_id" /* ERROR_SERVER_REQUEST_ID */] = this.parsedInfo.response.data.requestId;
|
|
48
|
+
}
|
|
49
|
+
const serializableError = this.toObject();
|
|
50
|
+
span.log({ event: 'error', ...indexedLogs, error: serializableError });
|
|
51
|
+
if (logger && this.shouldLogToSplunk(span)) {
|
|
52
|
+
logger.error(serializableError);
|
|
53
|
+
this.markErrorAsReported();
|
|
54
|
+
}
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
shouldLogToSplunk(span) {
|
|
58
|
+
return !this.isErrorReported() && utils_1.getTraceInfo(span).isSampled;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.ErrorReport = ErrorReport;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FORMAT_HTTP_HEADERS, Span } from 'opentracing';
|
|
2
|
+
export { ErrorKindsBase as ErrorKinds } from '@vtex/node-error-report';
|
|
3
|
+
export { ErrorReport } from './errorReporting/ErrorReport';
|
|
4
|
+
export { createSpanReference } from './spanReference/createSpanReference';
|
|
5
|
+
export { SpanReferenceTypes } from './spanReference/SpanReferenceTypes';
|
|
6
|
+
export { UserlandTags as TracingTags } from './Tags';
|
|
7
|
+
export { createTracingContextFromCarrier, IUserLandTracer } from './UserLandTracer';
|
|
8
|
+
export { getTraceInfo, TraceInfo } from './utils';
|
|
9
|
+
export { Span, FORMAT_HTTP_HEADERS };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const opentracing_1 = require("opentracing");
|
|
4
|
+
exports.FORMAT_HTTP_HEADERS = opentracing_1.FORMAT_HTTP_HEADERS;
|
|
5
|
+
exports.Span = opentracing_1.Span;
|
|
6
|
+
var node_error_report_1 = require("@vtex/node-error-report");
|
|
7
|
+
exports.ErrorKinds = node_error_report_1.ErrorKindsBase;
|
|
8
|
+
var ErrorReport_1 = require("./errorReporting/ErrorReport");
|
|
9
|
+
exports.ErrorReport = ErrorReport_1.ErrorReport;
|
|
10
|
+
var createSpanReference_1 = require("./spanReference/createSpanReference");
|
|
11
|
+
exports.createSpanReference = createSpanReference_1.createSpanReference;
|
|
12
|
+
var SpanReferenceTypes_1 = require("./spanReference/SpanReferenceTypes");
|
|
13
|
+
exports.SpanReferenceTypes = SpanReferenceTypes_1.SpanReferenceTypes;
|
|
14
|
+
var Tags_1 = require("./Tags");
|
|
15
|
+
exports.TracingTags = Tags_1.UserlandTags;
|
|
16
|
+
var UserLandTracer_1 = require("./UserLandTracer");
|
|
17
|
+
exports.createTracingContextFromCarrier = UserLandTracer_1.createTracingContextFromCarrier;
|
|
18
|
+
var utils_1 = require("./utils");
|
|
19
|
+
exports.getTraceInfo = utils_1.getTraceInfo;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var SpanReferenceTypes;
|
|
4
|
+
(function (SpanReferenceTypes) {
|
|
5
|
+
SpanReferenceTypes[SpanReferenceTypes["CHILD_OF"] = 0] = "CHILD_OF";
|
|
6
|
+
SpanReferenceTypes[SpanReferenceTypes["FOLLOWS_FROM"] = 1] = "FOLLOWS_FROM";
|
|
7
|
+
})(SpanReferenceTypes = exports.SpanReferenceTypes || (exports.SpanReferenceTypes = {}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const opentracing_1 = require("opentracing");
|
|
4
|
+
const SpanReferenceTypes_1 = require("./SpanReferenceTypes");
|
|
5
|
+
function createSpanReference(span, type) {
|
|
6
|
+
return new opentracing_1.Reference(type === SpanReferenceTypes_1.SpanReferenceTypes.CHILD_OF ? opentracing_1.REFERENCE_CHILD_OF : opentracing_1.REFERENCE_FOLLOWS_FROM, span.context());
|
|
7
|
+
}
|
|
8
|
+
exports.createSpanReference = createSpanReference;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Span } from 'opentracing';
|
|
2
|
+
export interface TraceInfo {
|
|
3
|
+
traceId: string;
|
|
4
|
+
isSampled: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function getTraceInfo(span: Span): TraceInfo;
|
|
7
|
+
/**
|
|
8
|
+
* Do a shallow copy of a headers object and redacts sensitive information.
|
|
9
|
+
*
|
|
10
|
+
* @param headersObj The headers object
|
|
11
|
+
* @param resultFieldsPrefix The prefix that will be added to each field on the result object
|
|
12
|
+
*/
|
|
13
|
+
export declare const cloneAndSanitizeHeaders: (headersObj: Record<string, any>, resultFieldsPrefix?: string) => Record<string, string>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const node_error_report_1 = require("@vtex/node-error-report");
|
|
4
|
+
function getTraceInfo(span) {
|
|
5
|
+
var _a, _b, _c;
|
|
6
|
+
const spanContext = span.context();
|
|
7
|
+
return {
|
|
8
|
+
isSampled: (_c = (_b = (_a = spanContext).isSampled) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : false,
|
|
9
|
+
traceId: spanContext.toTraceId(),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
exports.getTraceInfo = getTraceInfo;
|
|
13
|
+
/**
|
|
14
|
+
* Do a shallow copy of a headers object and redacts sensitive information.
|
|
15
|
+
*
|
|
16
|
+
* @param headersObj The headers object
|
|
17
|
+
* @param resultFieldsPrefix The prefix that will be added to each field on the result object
|
|
18
|
+
*/
|
|
19
|
+
exports.cloneAndSanitizeHeaders = (headersObj, resultFieldsPrefix = '') => {
|
|
20
|
+
const ret = {};
|
|
21
|
+
const entries = Object.entries(headersObj);
|
|
22
|
+
for (const [key, val] of entries) {
|
|
23
|
+
// Most of the time val is a string, but there are some cases, for example when we do a axios interceptor,
|
|
24
|
+
// that a header field can contain an object, for example:
|
|
25
|
+
// ```
|
|
26
|
+
// "common": {
|
|
27
|
+
// "Accept": "application/json, text/plain, */*"
|
|
28
|
+
// },
|
|
29
|
+
// "delete": { },
|
|
30
|
+
// "get": { },
|
|
31
|
+
// "head": { },
|
|
32
|
+
// "post": {
|
|
33
|
+
// "Content-Type": "application/x-www-form-urlencoded"
|
|
34
|
+
// },
|
|
35
|
+
// ```
|
|
36
|
+
// In those corner cases we probably won't have a sensitive string as key, so we don't treat them here
|
|
37
|
+
ret[`${resultFieldsPrefix}${key}`] = node_error_report_1.authFields.includes(key) ? node_error_report_1.sanitizeAuth(val) : val;
|
|
38
|
+
}
|
|
39
|
+
return ret;
|
|
40
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Logger } from './../service/logger/logger';
|
|
2
|
+
import { ConflictsResolver, VBase } from '../clients/infra/VBase';
|
|
3
|
+
declare type Configuration = Record<string, ConfigurationData | ConfigurationData[] | object> | ConfigurationData[];
|
|
4
|
+
declare type ConfigurationData = Record<string, object>;
|
|
5
|
+
export declare class MineWinsConflictsResolver<T> implements ConflictsResolver<T> {
|
|
6
|
+
/***
|
|
7
|
+
* Take mine and merge with master keys that have no conflict
|
|
8
|
+
* We use base to decide wether a key was deleted or not
|
|
9
|
+
*/
|
|
10
|
+
private client;
|
|
11
|
+
private bucket;
|
|
12
|
+
private filePath;
|
|
13
|
+
private comparableKeys;
|
|
14
|
+
constructor(client: VBase, bucket: string, filePath: string, comparableKeys?: string[]);
|
|
15
|
+
resolve(logger?: Logger): Promise<T>;
|
|
16
|
+
protected mergeMineWins(base: Configuration, master: Configuration, mine: Configuration): Configuration;
|
|
17
|
+
private parseConflict;
|
|
18
|
+
private serializeContentByMimetype;
|
|
19
|
+
private parseContentByMimetype;
|
|
20
|
+
private resolveConflictMineWins;
|
|
21
|
+
private mergeMineWinsObject;
|
|
22
|
+
private mergeMineWinsArray;
|
|
23
|
+
private removeMasterDeletedElements;
|
|
24
|
+
private isObjectInArray;
|
|
25
|
+
private appendMasterAddedElements;
|
|
26
|
+
private shouldAddToMine;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const js_base64_1 = require("js-base64");
|
|
4
|
+
const ramda_1 = require("ramda");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
class MineWinsConflictsResolver {
|
|
7
|
+
constructor(client, bucket, filePath, comparableKeys) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
this.bucket = bucket;
|
|
10
|
+
this.filePath = filePath;
|
|
11
|
+
this.comparableKeys = comparableKeys;
|
|
12
|
+
}
|
|
13
|
+
async resolve(logger) {
|
|
14
|
+
return await this.client.getConflicts(this.bucket).then(data => {
|
|
15
|
+
const { data: conflicts } = data;
|
|
16
|
+
const selectedConflict = conflicts.find(conflict => conflict.path === this.filePath);
|
|
17
|
+
if (!selectedConflict) {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
selectedConflict.base.parsedContent = this.parseConflict(selectedConflict.base);
|
|
21
|
+
selectedConflict.master.parsedContent = this.parseConflict(selectedConflict.master);
|
|
22
|
+
selectedConflict.mine.parsedContent = this.parseConflict(selectedConflict.mine);
|
|
23
|
+
const resolved = this.resolveConflictMineWins(selectedConflict);
|
|
24
|
+
if (logger) {
|
|
25
|
+
logger.info({
|
|
26
|
+
base: selectedConflict.base.parsedContent,
|
|
27
|
+
bucket: this.bucket,
|
|
28
|
+
conflictsResolution: MineWinsConflictsResolver.constructor.name,
|
|
29
|
+
filePath: this.filePath,
|
|
30
|
+
master: selectedConflict.master.parsedContent,
|
|
31
|
+
mine: selectedConflict.mine.parsedContent,
|
|
32
|
+
resolved,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return resolved;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
mergeMineWins(base, master, mine) {
|
|
39
|
+
if (util_1.isArray(master)) {
|
|
40
|
+
return this.mergeMineWinsArray((base || []), master, (mine || []));
|
|
41
|
+
}
|
|
42
|
+
else if (util_1.isObject(master)) {
|
|
43
|
+
return this.mergeMineWinsObject((base || {}), master, (mine || {}));
|
|
44
|
+
}
|
|
45
|
+
return mine ? mine : master;
|
|
46
|
+
}
|
|
47
|
+
parseConflict(conflict) {
|
|
48
|
+
if (!conflict || !conflict.content) {
|
|
49
|
+
return {};
|
|
50
|
+
}
|
|
51
|
+
return this.parseContentByMimetype(js_base64_1.Base64.decode(conflict.content), conflict.mimeType);
|
|
52
|
+
}
|
|
53
|
+
serializeContentByMimetype(content, mimetype) {
|
|
54
|
+
if (mimetype === 'application/json') {
|
|
55
|
+
return JSON.stringify(content);
|
|
56
|
+
}
|
|
57
|
+
return content;
|
|
58
|
+
}
|
|
59
|
+
parseContentByMimetype(content, mimetype) {
|
|
60
|
+
if (mimetype === 'application/json') {
|
|
61
|
+
return JSON.parse(content);
|
|
62
|
+
}
|
|
63
|
+
return content;
|
|
64
|
+
}
|
|
65
|
+
resolveConflictMineWins(conflict) {
|
|
66
|
+
if (!conflict) {
|
|
67
|
+
return {};
|
|
68
|
+
}
|
|
69
|
+
const { base, master, mine, path } = conflict;
|
|
70
|
+
this.mergeMineWins(base.parsedContent, master.parsedContent, mine.parsedContent);
|
|
71
|
+
const mergedContent = {
|
|
72
|
+
content: js_base64_1.Base64.encode(this.serializeContentByMimetype(mine.parsedContent, conflict.mine.mimeType)),
|
|
73
|
+
mimeType: conflict.mine.mimeType,
|
|
74
|
+
};
|
|
75
|
+
this.client.resolveConflict(this.bucket, path, mergedContent);
|
|
76
|
+
return mine.parsedContent;
|
|
77
|
+
}
|
|
78
|
+
mergeMineWinsObject(base, master, mine) {
|
|
79
|
+
const merged = { ...master, ...mine };
|
|
80
|
+
Object.entries(merged).forEach(([key, value]) => {
|
|
81
|
+
if (master[key] == null && base && base[key] != null && ramda_1.equals(value, base[key])) {
|
|
82
|
+
delete merged[key]; // value deleted from master with no conflict
|
|
83
|
+
}
|
|
84
|
+
else if (base[key] && master[key] && !mine[key]) {
|
|
85
|
+
delete merged[key]; // value deleted from mine
|
|
86
|
+
}
|
|
87
|
+
else if (util_1.isArray(value)) {
|
|
88
|
+
merged[key] = this.mergeMineWinsArray((base[key] || []), (master[key] || []), value);
|
|
89
|
+
}
|
|
90
|
+
else if (util_1.isObject(value)) {
|
|
91
|
+
merged[key] = this.mergeMineWins((base[key] || {}), (master[key] || {}), (value || {}));
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return merged;
|
|
95
|
+
}
|
|
96
|
+
mergeMineWinsArray(base, master, mine) {
|
|
97
|
+
this.removeMasterDeletedElements(base, master, mine);
|
|
98
|
+
this.appendMasterAddedElements(base, master, mine);
|
|
99
|
+
return mine;
|
|
100
|
+
}
|
|
101
|
+
removeMasterDeletedElements(base, master, mine) {
|
|
102
|
+
base.forEach(baseItem => {
|
|
103
|
+
const foundInMaster = this.isObjectInArray(baseItem, master);
|
|
104
|
+
if (!foundInMaster) {
|
|
105
|
+
const foundInMine = mine.findIndex(mineItem => ramda_1.equals(mineItem, baseItem));
|
|
106
|
+
if (foundInMine > -1) {
|
|
107
|
+
mine.splice(foundInMine, 1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
isObjectInArray(obj, array) {
|
|
113
|
+
return array.find(item => ramda_1.equals(item, obj));
|
|
114
|
+
}
|
|
115
|
+
appendMasterAddedElements(base, master, mine) {
|
|
116
|
+
master.forEach(item => {
|
|
117
|
+
if (this.shouldAddToMine(item, base, mine)) {
|
|
118
|
+
mine.push(item);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
shouldAddToMine(item, base, mine) {
|
|
123
|
+
if (this.comparableKeys && Object.keys(item).some((key) => this.comparableKeys.includes(key))) {
|
|
124
|
+
return (!mine.some((mineItem) => this.comparableKeys.some((key) => ramda_1.eqProps(key, item, mineItem))) &&
|
|
125
|
+
!base.some((baseItem) => ramda_1.equals(baseItem, item)));
|
|
126
|
+
}
|
|
127
|
+
return !mine.some((mineItem) => ramda_1.equals(mineItem, item)) && !base.some((baseItem) => ramda_1.equals(baseItem, item));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.MineWinsConflictsResolver = MineWinsConflictsResolver;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AppMetaInfo } from '../clients/infra/Apps';
|
|
2
|
+
export declare const removeBuild: (id: string) => string;
|
|
3
|
+
export declare const removeVersionFromAppId: (appId: string) => string;
|
|
4
|
+
export declare const extractVersionFromAppId: (appId: string) => string;
|
|
5
|
+
export declare const transformToLinkedLocator: (appId: string) => string;
|
|
6
|
+
export declare const formatLocator: (name: string, versionAndBuild: string) => string;
|
|
7
|
+
export declare const isLinkedApp: (app: AppMetaInfo) => boolean;
|
|
8
|
+
export declare const parseAppId: (appId: string) => ParsedLocator;
|
|
9
|
+
export declare const formatAppId: ({ locator, build }: ParsedLocator) => string;
|
|
10
|
+
export declare const satisfies: (appId: string, version: string) => boolean;
|
|
11
|
+
export declare const versionToMajor: (version: string) => string;
|
|
12
|
+
export declare const versionToMajorRange: (version: string) => string;
|
|
13
|
+
export declare const formatMajorLocator: (name: string, version: string) => string;
|
|
14
|
+
export declare const appIdToAppAtMajor: (appId: string) => string;
|
|
15
|
+
export declare const isValidAppIdOrLocator: (appId: string) => boolean;
|
|
16
|
+
export declare const sameMajor: (v1: string, v2: string) => boolean;
|
|
17
|
+
export declare const majorEqualAndGreaterThan: (v1: string, v2: string) => boolean;
|
|
18
|
+
export interface ParsedLocator {
|
|
19
|
+
name: string;
|
|
20
|
+
version: string;
|
|
21
|
+
locator: string;
|
|
22
|
+
build?: string;
|
|
23
|
+
}
|
package/lib/utils/app.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const semver_1 = __importDefault(require("semver"));
|
|
7
|
+
// Note: The name that composes the part of the appId that precedes the
|
|
8
|
+
// character '@' includes the name given to the app and the vendor name.
|
|
9
|
+
exports.removeBuild = (id) => id.split('+')[0];
|
|
10
|
+
exports.removeVersionFromAppId = (appId) => appId.split('@')[0];
|
|
11
|
+
exports.extractVersionFromAppId = (appId) => appId.split('@').slice(-1)[0];
|
|
12
|
+
exports.transformToLinkedLocator = (appId) => appId.replace(/\+build.*$/, '+linked');
|
|
13
|
+
exports.formatLocator = (name, versionAndBuild) => `${name}@${exports.removeBuild(versionAndBuild)}`;
|
|
14
|
+
exports.isLinkedApp = (app) => app.id.includes('+build');
|
|
15
|
+
exports.parseAppId = (appId) => {
|
|
16
|
+
const name = exports.removeVersionFromAppId(appId);
|
|
17
|
+
const version = exports.extractVersionFromAppId(appId);
|
|
18
|
+
const splittedVersion = version.split('+');
|
|
19
|
+
return {
|
|
20
|
+
build: splittedVersion[1],
|
|
21
|
+
locator: exports.formatLocator(name, version),
|
|
22
|
+
name,
|
|
23
|
+
version: splittedVersion[0],
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.formatAppId = ({ locator, build }) => (build ? `${locator}+${build}` : locator);
|
|
27
|
+
exports.satisfies = (appId, version) => {
|
|
28
|
+
const { version: appVer } = exports.parseAppId(appId);
|
|
29
|
+
return semver_1.default.satisfies(appVer, version);
|
|
30
|
+
};
|
|
31
|
+
exports.versionToMajor = (version) => version.split('.')[0];
|
|
32
|
+
exports.versionToMajorRange = (version) => `${exports.versionToMajor(version)}.x`;
|
|
33
|
+
exports.formatMajorLocator = (name, version) => {
|
|
34
|
+
const majorRange = exports.versionToMajorRange(version);
|
|
35
|
+
return `${name}@${majorRange}`;
|
|
36
|
+
};
|
|
37
|
+
exports.appIdToAppAtMajor = (appId) => {
|
|
38
|
+
const { name, version } = exports.parseAppId(appId);
|
|
39
|
+
const majorRange = exports.versionToMajorRange(version);
|
|
40
|
+
return `${name}@${majorRange}`;
|
|
41
|
+
};
|
|
42
|
+
// SemVer regex from https://github.com/sindresorhus/semver-regex
|
|
43
|
+
const APP_ID_REGEX = /^[\w\-]+\.[\w\-]+@(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?$/;
|
|
44
|
+
exports.isValidAppIdOrLocator = (appId) => {
|
|
45
|
+
return APP_ID_REGEX.test(appId);
|
|
46
|
+
};
|
|
47
|
+
exports.sameMajor = (v1, v2) => exports.versionToMajor(v1) === exports.versionToMajor(v2);
|
|
48
|
+
exports.majorEqualAndGreaterThan = (v1, v2) => exports.sameMajor(v1, v2) && semver_1.default.gt(v1, v2);
|