@vtex/api 6.48.0 → 6.48.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/gen/manifest.schema +2 -3
- package/lib/HttpClient/GraphQLClient.d.ts +1 -1
- package/lib/HttpClient/GraphQLClient.js +1 -0
- package/lib/HttpClient/HttpClient.d.ts +4 -3
- package/lib/HttpClient/HttpClient.js +15 -14
- package/lib/HttpClient/agents.d.ts +5 -2
- package/lib/HttpClient/agents.js +23 -4
- package/lib/HttpClient/index.js +22 -10
- package/lib/HttpClient/middlewares/cache.d.ts +1 -1
- package/lib/HttpClient/middlewares/cache.js +48 -42
- package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
- package/lib/HttpClient/middlewares/cancellationToken.js +3 -1
- package/lib/HttpClient/middlewares/inflight.d.ts +1 -1
- package/lib/HttpClient/middlewares/inflight.js +7 -3
- package/lib/HttpClient/middlewares/memoization.d.ts +1 -1
- package/lib/HttpClient/middlewares/memoization.js +10 -8
- package/lib/HttpClient/middlewares/metrics.js +13 -7
- package/lib/HttpClient/middlewares/notFound.d.ts +1 -1
- package/lib/HttpClient/middlewares/notFound.js +5 -2
- package/lib/HttpClient/middlewares/recorder.js +7 -1
- package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +2 -1
- package/lib/HttpClient/middlewares/request/index.d.ts +1 -1
- package/lib/HttpClient/middlewares/request/index.js +13 -9
- package/lib/HttpClient/middlewares/request/setupAxios/index.js +6 -4
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +7 -5
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +4 -3
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +9 -6
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +10 -7
- package/lib/HttpClient/middlewares/tracing.js +16 -10
- package/lib/HttpClient/typings.d.ts +3 -3
- package/lib/HttpClient/typings.js +1 -0
- package/lib/caches/DiskCache.d.ts +1 -1
- package/lib/caches/DiskCache.js +3 -2
- package/lib/caches/LRUCache.d.ts +3 -3
- package/lib/caches/LRUCache.js +1 -0
- package/lib/caches/LRUDiskCache.d.ts +2 -2
- package/lib/caches/LRUDiskCache.js +3 -2
- package/lib/caches/MultilayeredCache.d.ts +2 -2
- package/lib/caches/MultilayeredCache.js +8 -7
- package/lib/caches/index.js +20 -7
- package/lib/caches/typings.d.ts +5 -5
- package/lib/clients/IOClient.d.ts +1 -1
- package/lib/clients/IOClient.js +1 -0
- package/lib/clients/IOClients.d.ts +1 -1
- package/lib/clients/IOClients.js +1 -0
- package/lib/clients/IOGraphQLClient.js +1 -0
- package/lib/clients/apps/AppClient.js +2 -1
- package/lib/clients/apps/AppGraphQLClient.js +2 -1
- package/lib/clients/apps/Billing.d.ts +1 -1
- package/lib/clients/apps/Billing.js +1 -0
- package/lib/clients/apps/Builder.d.ts +7 -7
- package/lib/clients/apps/Builder.js +2 -1
- package/lib/clients/apps/MessagesGraphQL.d.ts +1 -1
- package/lib/clients/apps/MessagesGraphQL.js +4 -3
- package/lib/clients/apps/Settings.js +4 -3
- package/lib/clients/apps/catalogGraphQL/brand.js +1 -0
- package/lib/clients/apps/catalogGraphQL/category.js +1 -0
- package/lib/clients/apps/catalogGraphQL/index.d.ts +4 -4
- package/lib/clients/apps/catalogGraphQL/index.js +5 -4
- package/lib/clients/apps/catalogGraphQL/product.js +1 -0
- package/lib/clients/apps/catalogGraphQL/sku.js +1 -0
- package/lib/clients/apps/index.js +21 -10
- package/lib/clients/external/ExternalClient.js +1 -0
- package/lib/clients/external/ID.d.ts +4 -4
- package/lib/clients/external/ID.js +1 -0
- package/lib/clients/external/Masterdata.js +1 -0
- package/lib/clients/external/PaymentProvider.d.ts +2 -2
- package/lib/clients/external/PaymentProvider.js +1 -0
- package/lib/clients/external/index.js +18 -7
- package/lib/clients/index.js +22 -10
- package/lib/clients/infra/Apps.d.ts +32 -27
- package/lib/clients/infra/Apps.js +19 -16
- package/lib/clients/infra/Assets.d.ts +6 -5
- package/lib/clients/infra/Assets.js +12 -11
- package/lib/clients/infra/BillingMetrics.d.ts +1 -1
- package/lib/clients/infra/BillingMetrics.js +1 -0
- package/lib/clients/infra/Events.d.ts +1 -1
- package/lib/clients/infra/Events.js +2 -1
- package/lib/clients/infra/Housekeeper.d.ts +3 -3
- package/lib/clients/infra/Housekeeper.js +1 -0
- package/lib/clients/infra/InfraClient.js +1 -0
- package/lib/clients/infra/Registry.d.ts +23 -17
- package/lib/clients/infra/Registry.js +5 -3
- package/lib/clients/infra/Router.d.ts +8 -8
- package/lib/clients/infra/Router.js +1 -0
- package/lib/clients/infra/Sphinx.d.ts +2 -2
- package/lib/clients/infra/Sphinx.js +1 -0
- package/lib/clients/infra/VBase.d.ts +15 -14
- package/lib/clients/infra/VBase.js +4 -3
- package/lib/clients/infra/Workspaces.d.ts +7 -7
- package/lib/clients/infra/Workspaces.js +1 -0
- package/lib/clients/infra/index.js +25 -14
- package/lib/clients/janus/JanusClient.d.ts +1 -1
- package/lib/clients/janus/JanusClient.js +1 -0
- package/lib/clients/janus/LicenseManager.js +2 -1
- package/lib/clients/janus/Segment.d.ts +3 -3
- package/lib/clients/janus/Segment.js +3 -2
- package/lib/clients/janus/Session.d.ts +2 -2
- package/lib/clients/janus/Session.js +1 -0
- package/lib/clients/janus/Tenant.d.ts +1 -1
- package/lib/clients/janus/Tenant.js +1 -0
- package/lib/clients/janus/index.js +19 -8
- package/lib/constants.d.ts +1 -1
- package/lib/constants.js +2 -1
- package/lib/errors/AuthenticationError.js +1 -0
- package/lib/errors/ForbiddenError.js +1 -0
- package/lib/errors/NotFoundError.js +1 -0
- package/lib/errors/RequestCancelledError.js +1 -0
- package/lib/errors/ResolverError.js +2 -1
- package/lib/errors/ResolverWarning.js +1 -0
- package/lib/errors/TooManyRequestsError.js +1 -0
- package/lib/errors/UserInputError.js +1 -0
- package/lib/errors/index.js +22 -11
- package/lib/index.js +31 -18
- package/lib/metrics/MetricsAccumulator.d.ts +2 -2
- package/lib/metrics/MetricsAccumulator.js +10 -9
- package/lib/responses.d.ts +4 -4
- package/lib/service/index.js +11 -6
- package/lib/service/loaders.js +9 -6
- package/lib/service/logger/console.js +8 -4
- package/lib/service/logger/index.js +16 -5
- package/lib/service/logger/logger.js +3 -2
- package/lib/service/logger/metricsLogger.js +11 -10
- package/lib/service/master.js +8 -6
- package/lib/service/metrics/requestMetricsMiddleware.d.ts +1 -1
- package/lib/service/metrics/requestMetricsMiddleware.js +15 -13
- package/lib/service/tracing/TracerSingleton.js +10 -9
- package/lib/service/tracing/metrics/MetricNames.js +13 -12
- package/lib/service/tracing/metrics/instruments.js +15 -7
- package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +6 -5
- package/lib/service/tracing/tracingMiddlewares.d.ts +3 -3
- package/lib/service/tracing/tracingMiddlewares.js +25 -15
- package/lib/service/worker/index.js +25 -23
- package/lib/service/worker/listeners.js +3 -1
- package/lib/service/worker/runtime/Service.js +2 -1
- package/lib/service/worker/runtime/builtIn/handlers.d.ts +3 -3
- package/lib/service/worker/runtime/builtIn/handlers.js +7 -3
- package/lib/service/worker/runtime/builtIn/middlewares.d.ts +2 -2
- package/lib/service/worker/runtime/builtIn/middlewares.js +6 -3
- package/lib/service/worker/runtime/events/index.d.ts +2 -2
- package/lib/service/worker/runtime/events/index.js +12 -10
- package/lib/service/worker/runtime/events/middlewares/body.js +6 -2
- package/lib/service/worker/runtime/events/middlewares/context.js +2 -1
- package/lib/service/worker/runtime/events/router.d.ts +2 -2
- package/lib/service/worker/runtime/events/router.js +4 -2
- package/lib/service/worker/runtime/graphql/index.js +9 -7
- package/lib/service/worker/runtime/graphql/middlewares/context.js +1 -0
- package/lib/service/worker/runtime/graphql/middlewares/error.js +9 -5
- package/lib/service/worker/runtime/graphql/middlewares/query.d.ts +2 -1
- package/lib/service/worker/runtime/graphql/middlewares/query.js +8 -6
- package/lib/service/worker/runtime/graphql/middlewares/response.js +2 -1
- package/lib/service/worker/runtime/graphql/middlewares/run.d.ts +2 -2
- package/lib/service/worker/runtime/graphql/middlewares/run.js +4 -2
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.d.ts +2 -1
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +5 -3
- package/lib/service/worker/runtime/graphql/middlewares/upload.js +2 -1
- package/lib/service/worker/runtime/graphql/schema/index.d.ts +1 -1
- package/lib/service/worker/runtime/graphql/schema/index.js +9 -7
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +2 -2
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +5 -3
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.js +2 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/CacheControl.js +1 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +2 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Metric.js +1 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Sanitize.js +1 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +2 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/SmartCacheDirective.js +1 -0
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +3 -2
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +3 -2
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +3 -2
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.d.ts +2 -1
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +3 -1
- package/lib/service/worker/runtime/graphql/schema/typeDefs/ioUpload.js +1 -0
- package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.js +3 -2
- package/lib/service/worker/runtime/graphql/typings.d.ts +3 -3
- package/lib/service/worker/runtime/graphql/utils/cacheControl.d.ts +2 -1
- package/lib/service/worker/runtime/graphql/utils/cacheControl.js +3 -1
- package/lib/service/worker/runtime/graphql/utils/error.d.ts +2 -1
- package/lib/service/worker/runtime/graphql/utils/error.js +11 -9
- package/lib/service/worker/runtime/graphql/utils/pathname.js +4 -2
- package/lib/service/worker/runtime/graphql/utils/translations.d.ts +1 -1
- package/lib/service/worker/runtime/graphql/utils/translations.js +8 -4
- package/lib/service/worker/runtime/http/index.d.ts +3 -3
- package/lib/service/worker/runtime/http/index.js +23 -20
- package/lib/service/worker/runtime/http/middlewares/authTokens.js +1 -0
- package/lib/service/worker/runtime/http/middlewares/cancellationToken.js +1 -0
- package/lib/service/worker/runtime/http/middlewares/clients.js +1 -0
- package/lib/service/worker/runtime/http/middlewares/context.js +8 -5
- package/lib/service/worker/runtime/http/middlewares/error.js +10 -6
- package/lib/service/worker/runtime/http/middlewares/rateLimit.js +2 -1
- package/lib/service/worker/runtime/http/middlewares/requestStats.js +1 -0
- package/lib/service/worker/runtime/http/middlewares/setCookie.js +6 -5
- package/lib/service/worker/runtime/http/middlewares/settings.d.ts +1 -1
- package/lib/service/worker/runtime/http/middlewares/settings.js +14 -9
- package/lib/service/worker/runtime/http/middlewares/timings.js +4 -3
- package/lib/service/worker/runtime/http/middlewares/vary.js +1 -0
- package/lib/service/worker/runtime/http/router.d.ts +1 -1
- package/lib/service/worker/runtime/http/router.js +4 -2
- package/lib/service/worker/runtime/http/routes.js +9 -5
- package/lib/service/worker/runtime/method.d.ts +2 -2
- package/lib/service/worker/runtime/method.js +2 -1
- package/lib/service/worker/runtime/statusTrack.d.ts +2 -2
- package/lib/service/worker/runtime/statusTrack.js +11 -5
- package/lib/service/worker/runtime/typings.d.ts +10 -10
- package/lib/service/worker/runtime/utils/compose.d.ts +3 -3
- package/lib/service/worker/runtime/utils/compose.js +5 -2
- package/lib/service/worker/runtime/utils/context.d.ts +4 -1
- package/lib/service/worker/runtime/utils/context.js +6 -4
- package/lib/service/worker/runtime/utils/diff.js +1 -0
- package/lib/service/worker/runtime/utils/recorder.js +2 -1
- package/lib/service/worker/runtime/utils/toArray.js +3 -1
- package/lib/service/worker/runtime/utils/tokenBucket.js +1 -0
- package/lib/tracing/Tags.js +2 -1
- package/lib/tracing/UserLandTracer.js +4 -2
- package/lib/tracing/errorReporting/ErrorReport.js +14 -13
- package/lib/tracing/index.js +10 -9
- package/lib/tracing/spanReference/SpanReferenceTypes.js +1 -0
- package/lib/tracing/spanReference/createSpanReference.js +1 -0
- package/lib/tracing/utils.js +6 -4
- package/lib/utils/MineWinsConflictsResolver.d.ts +4 -4
- package/lib/utils/MineWinsConflictsResolver.js +11 -10
- package/lib/utils/app.js +40 -23
- package/lib/utils/appsStaleIfError.d.ts +1 -0
- package/lib/utils/appsStaleIfError.js +33 -12
- package/lib/utils/billingOptions.js +3 -1
- package/lib/utils/binding.js +5 -2
- package/lib/utils/cancel.js +1 -0
- package/lib/utils/conflicts.mock.js +1 -0
- package/lib/utils/domain.js +2 -1
- package/lib/utils/error.js +6 -4
- package/lib/utils/index.js +23 -12
- package/lib/utils/json.js +1 -0
- package/lib/utils/log.js +4 -2
- package/lib/utils/message.js +9 -5
- package/lib/utils/renameBy.js +3 -1
- package/lib/utils/retry.js +10 -7
- package/lib/utils/status.js +3 -1
- package/lib/utils/tenant.js +5 -2
- package/lib/utils/throwOnGraphQLErrors.js +1 -0
- package/lib/utils/time.d.ts +3 -5
- package/lib/utils/time.js +24 -14
- package/package.json +4 -4
- package/CHANGELOG.md +0 -1858
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startWorker = void 0;
|
|
6
7
|
const http_1 = require("http");
|
|
7
8
|
const koa_1 = __importDefault(require("koa"));
|
|
8
9
|
const koa_compress_1 = __importDefault(require("koa-compress"));
|
|
@@ -40,7 +41,7 @@ const upSignal = () => {
|
|
|
40
41
|
path: '/_up',
|
|
41
42
|
port: 5000,
|
|
42
43
|
};
|
|
43
|
-
const req = http_1.request(options);
|
|
44
|
+
const req = (0, http_1.request)(options);
|
|
44
45
|
req.write(data);
|
|
45
46
|
req.end();
|
|
46
47
|
};
|
|
@@ -48,10 +49,10 @@ const isUpSignal = (message) => message === constants_1.UP_SIGNAL;
|
|
|
48
49
|
const onMessage = (service) => (message) => {
|
|
49
50
|
if (isUpSignal(message)) {
|
|
50
51
|
upSignal();
|
|
51
|
-
routes_1.logAvailableRoutes(service);
|
|
52
|
+
(0, routes_1.logAvailableRoutes)(service);
|
|
52
53
|
}
|
|
53
|
-
else if (statusTrack_1.isStatusTrack(message)) {
|
|
54
|
-
statusTrack_1.trackStatus();
|
|
54
|
+
else if ((0, statusTrack_1.isStatusTrack)(message)) {
|
|
55
|
+
(0, statusTrack_1.trackStatus)();
|
|
55
56
|
}
|
|
56
57
|
else {
|
|
57
58
|
listeners_1.logger.warn({
|
|
@@ -72,13 +73,13 @@ const createAppHttpHandlers = ({ config: { routes, clients } }, serviceJSON, glo
|
|
|
72
73
|
const { path: servicePath, public: publicRoute = false, extensible = false, } = serviceRoute;
|
|
73
74
|
if (publicRoute || extensible) {
|
|
74
75
|
acc.pub[routeId] = {
|
|
75
|
-
handler: http_2.createPublicHttpRoute(clients, routes[routeId], serviceRoute, routeId, globalLimiter),
|
|
76
|
+
handler: (0, http_2.createPublicHttpRoute)(clients, routes[routeId], serviceRoute, routeId, globalLimiter),
|
|
76
77
|
path: servicePath,
|
|
77
78
|
};
|
|
78
79
|
}
|
|
79
80
|
else {
|
|
80
81
|
acc.pvt[routeId] = {
|
|
81
|
-
handler: http_2.createPrivateHttpRoute(clients, routes[routeId], serviceRoute, routeId, globalLimiter),
|
|
82
|
+
handler: (0, http_2.createPrivateHttpRoute)(clients, routes[routeId], serviceRoute, routeId, globalLimiter),
|
|
82
83
|
path: `/:account/:workspace${servicePath.replace(/\*([^/]*)/g, ':$1*')}`,
|
|
83
84
|
};
|
|
84
85
|
}
|
|
@@ -97,7 +98,7 @@ const createAppGraphQLHandler = ({ config: { graphql, clients } }, { routes }, g
|
|
|
97
98
|
return {
|
|
98
99
|
pvt: {
|
|
99
100
|
[graphql_1.GRAPHQL_ROUTE]: {
|
|
100
|
-
handler: graphql_1.createGraphQLRoute(graphql, clients, route, graphql_1.GRAPHQL_ROUTE, globalLimiter),
|
|
101
|
+
handler: (0, graphql_1.createGraphQLRoute)(graphql, clients, route, graphql_1.GRAPHQL_ROUTE, globalLimiter),
|
|
101
102
|
path: `/:account/:workspace${route.path}`,
|
|
102
103
|
},
|
|
103
104
|
},
|
|
@@ -110,7 +111,7 @@ const createAppEventHandlers = ({ config: { events, clients } }, serviceJSON, gl
|
|
|
110
111
|
return Object.keys(events).reduce((acc, eventId) => {
|
|
111
112
|
var _a;
|
|
112
113
|
const serviceEvent = (_a = serviceJSON.events) === null || _a === void 0 ? void 0 : _a[eventId];
|
|
113
|
-
acc[eventId] = events_1.createEventHandler(clients, eventId, events[eventId], serviceEvent, globalLimiter);
|
|
114
|
+
acc[eventId] = (0, events_1.createEventHandler)(clients, eventId, events[eventId], serviceEvent, globalLimiter);
|
|
114
115
|
return acc;
|
|
115
116
|
}, {});
|
|
116
117
|
}
|
|
@@ -119,11 +120,11 @@ const createAppEventHandlers = ({ config: { events, clients } }, serviceJSON, gl
|
|
|
119
120
|
const createRuntimeHttpHandlers = (appEventHandlers, serviceJSON) => ({
|
|
120
121
|
pvt: {
|
|
121
122
|
__events: {
|
|
122
|
-
handler: router_1.routerFromEventHandlers(appEventHandlers),
|
|
123
|
+
handler: (0, router_1.routerFromEventHandlers)(appEventHandlers),
|
|
123
124
|
path: '/:account/:workspace/_events',
|
|
124
125
|
},
|
|
125
126
|
__healthCheck: {
|
|
126
|
-
handler: handlers_1.healthcheckHandler(serviceJSON),
|
|
127
|
+
handler: (0, handlers_1.healthcheckHandler)(serviceJSON),
|
|
127
128
|
path: '/healthcheck',
|
|
128
129
|
},
|
|
129
130
|
__metricsLogger: {
|
|
@@ -135,7 +136,7 @@ const createRuntimeHttpHandlers = (appEventHandlers, serviceJSON) => ({
|
|
|
135
136
|
path: '/_status',
|
|
136
137
|
},
|
|
137
138
|
__whoami: {
|
|
138
|
-
handler: handlers_1.whoAmIHandler(serviceJSON),
|
|
139
|
+
handler: (0, handlers_1.whoAmIHandler)(serviceJSON),
|
|
139
140
|
path: '/:account/:workspace/_whoami',
|
|
140
141
|
},
|
|
141
142
|
},
|
|
@@ -145,30 +146,30 @@ const scaleClientCaches = (scaleFactor, options) => Object.entries(options || {}
|
|
|
145
146
|
const previous = opts.memoryCache.storage.max;
|
|
146
147
|
const current = previous / scaleFactor;
|
|
147
148
|
opts.memoryCache.storage.max = current;
|
|
148
|
-
console_1.logOnceToDevConsole(`Scaling ${name} cache capacity from ${previous} to ${current}`, logger_1.LogLevel.Warn);
|
|
149
|
+
(0, console_1.logOnceToDevConsole)(`Scaling ${name} cache capacity from ${previous} to ${current}`, logger_1.LogLevel.Warn);
|
|
149
150
|
}
|
|
150
151
|
});
|
|
151
|
-
|
|
152
|
+
const startWorker = (serviceJSON) => {
|
|
152
153
|
var _a, _b;
|
|
153
|
-
listeners_1.addProcessListeners();
|
|
154
|
+
(0, listeners_1.addProcessListeners)();
|
|
154
155
|
const tracer = TracerSingleton_1.TracerSingleton.getTracer();
|
|
155
156
|
const app = new koa_1.default();
|
|
156
157
|
app.proxy = true;
|
|
157
158
|
app
|
|
158
159
|
.use(error_1.error)
|
|
159
|
-
.use(middlewares_1.prometheusLoggerMiddleware())
|
|
160
|
-
.use(tracingMiddlewares_1.addTracingMiddleware(tracer))
|
|
161
|
-
.use(requestMetricsMiddleware_1.addRequestMetricsMiddleware())
|
|
162
|
-
.use(middlewares_1.addMetricsLoggerMiddleware())
|
|
163
|
-
.use(rateLimit_1.concurrentRateLimiter((_a = serviceJSON === null || serviceJSON === void 0 ? void 0 : serviceJSON.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent))
|
|
164
|
-
.use(koa_compress_1.default())
|
|
160
|
+
.use((0, middlewares_1.prometheusLoggerMiddleware)())
|
|
161
|
+
.use((0, tracingMiddlewares_1.addTracingMiddleware)(tracer))
|
|
162
|
+
.use((0, requestMetricsMiddleware_1.addRequestMetricsMiddleware)())
|
|
163
|
+
.use((0, middlewares_1.addMetricsLoggerMiddleware)())
|
|
164
|
+
.use((0, rateLimit_1.concurrentRateLimiter)((_a = serviceJSON === null || serviceJSON === void 0 ? void 0 : serviceJSON.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent))
|
|
165
|
+
.use((0, koa_compress_1.default)())
|
|
165
166
|
.use(middlewares_1.recorderMiddleware);
|
|
166
|
-
const service = loaders_1.getService();
|
|
167
|
+
const service = (0, loaders_1.getService)();
|
|
167
168
|
const { config: { clients } } = service;
|
|
168
169
|
if (clients) {
|
|
169
170
|
scaleClientCaches(serviceJSON.workers, clients.options);
|
|
170
171
|
}
|
|
171
|
-
const globalLimiter = tokenBucket_1.createTokenBucket((_b = serviceJSON === null || serviceJSON === void 0 ? void 0 : serviceJSON.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute);
|
|
172
|
+
const globalLimiter = (0, tokenBucket_1.createTokenBucket)((_b = serviceJSON === null || serviceJSON === void 0 ? void 0 : serviceJSON.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute);
|
|
172
173
|
const appHttpHandlers = createAppHttpHandlers(service, serviceJSON, globalLimiter);
|
|
173
174
|
const appEventHandlers = createAppEventHandlers(service, serviceJSON, globalLimiter);
|
|
174
175
|
const appGraphQLHandlers = createAppGraphQLHandler(service, serviceJSON, globalLimiter);
|
|
@@ -182,7 +183,7 @@ exports.startWorker = (serviceJSON) => {
|
|
|
182
183
|
// TODO: Fix ramda typings. Apparently there was an update that broke things
|
|
183
184
|
.reduce(ramda_1.mergeDeepRight);
|
|
184
185
|
if (httpHandlers === null || httpHandlers === void 0 ? void 0 : httpHandlers.pub) {
|
|
185
|
-
const publicHandlersRouter = router_2.routerFromPublicHttpHandlers(httpHandlers.pub);
|
|
186
|
+
const publicHandlersRouter = (0, router_2.routerFromPublicHttpHandlers)(httpHandlers.pub);
|
|
186
187
|
app.use(publicHandlersRouter);
|
|
187
188
|
}
|
|
188
189
|
if (httpHandlers === null || httpHandlers === void 0 ? void 0 : httpHandlers.pvt) {
|
|
@@ -192,4 +193,5 @@ exports.startWorker = (serviceJSON) => {
|
|
|
192
193
|
process.on('message', onMessage(serviceJSON));
|
|
193
194
|
return app;
|
|
194
195
|
};
|
|
196
|
+
exports.startWorker = startWorker;
|
|
195
197
|
global.metrics = new MetricsAccumulator_1.MetricsAccumulator();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addProcessListeners = exports.logger = void 0;
|
|
3
4
|
const os_1 = require("os");
|
|
4
5
|
const RequestCancelledError_1 = require("../../errors/RequestCancelledError");
|
|
5
6
|
const logger_1 = require("../logger");
|
|
@@ -8,7 +9,7 @@ let watched;
|
|
|
8
9
|
const handleSignal = signal => {
|
|
9
10
|
process.exit(os_1.constants.signals[signal]);
|
|
10
11
|
};
|
|
11
|
-
|
|
12
|
+
const addProcessListeners = () => {
|
|
12
13
|
// Listeners already set up
|
|
13
14
|
if (watched) {
|
|
14
15
|
return;
|
|
@@ -37,3 +38,4 @@ exports.addProcessListeners = () => {
|
|
|
37
38
|
process.on('SIGINT', handleSignal);
|
|
38
39
|
process.on('SIGTERM', handleSignal);
|
|
39
40
|
};
|
|
41
|
+
exports.addProcessListeners = addProcessListeners;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Service = void 0;
|
|
3
4
|
const logger_1 = require("../../logger");
|
|
4
5
|
/**
|
|
5
6
|
* This is the client definition to allow type checking on code editors.
|
|
@@ -16,7 +17,7 @@ class Service {
|
|
|
16
17
|
constructor(config) {
|
|
17
18
|
this.config = config;
|
|
18
19
|
if (config.routes && config.routes.graphql) {
|
|
19
|
-
logger_1.logOnceToDevConsole(`Route id "graphql" is reserved and apps containing this routes will stop working in the near future. To create a GraphQL app, export a "graphql" key with {resolvers}.`, logger_1.LogLevel.Warn);
|
|
20
|
+
(0, logger_1.logOnceToDevConsole)(`Route id "graphql" is reserved and apps containing this routes will stop working in the near future. To create a GraphQL app, export a "graphql" key with {resolvers}.`, logger_1.LogLevel.Warn);
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ServiceContext, ServiceJSON } from '../typings';
|
|
2
|
-
export declare const whoAmIHandler: ({ events, routes, }: ServiceJSON) => (ctx: ServiceContext
|
|
3
|
-
export declare const healthcheckHandler: ({ events, routes, }: ServiceJSON) => (ctx: ServiceContext
|
|
4
|
-
export declare const metricsLoggerHandler: (ctx: ServiceContext
|
|
2
|
+
export declare const whoAmIHandler: ({ events, routes, }: ServiceJSON) => (ctx: ServiceContext) => void;
|
|
3
|
+
export declare const healthcheckHandler: ({ events, routes, }: ServiceJSON) => (ctx: ServiceContext) => void;
|
|
4
|
+
export declare const metricsLoggerHandler: (ctx: ServiceContext) => void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.metricsLoggerHandler = exports.healthcheckHandler = exports.whoAmIHandler = void 0;
|
|
4
|
+
const whoAmIHandler = ({ events, routes, }) => (ctx) => {
|
|
4
5
|
var _a, _b;
|
|
5
6
|
ctx.requestHandlerName = 'builtin:whoami';
|
|
6
7
|
(_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
|
|
@@ -11,7 +12,8 @@ exports.whoAmIHandler = ({ events, routes, }) => (ctx) => {
|
|
|
11
12
|
};
|
|
12
13
|
ctx.set('Cache-Control', 'public, max-age=86400'); // cache for 24 hours
|
|
13
14
|
};
|
|
14
|
-
exports.
|
|
15
|
+
exports.whoAmIHandler = whoAmIHandler;
|
|
16
|
+
const healthcheckHandler = ({ events, routes, }) => (ctx) => {
|
|
15
17
|
var _a, _b;
|
|
16
18
|
ctx.requestHandlerName = 'builtin:healthcheck';
|
|
17
19
|
(_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
|
|
@@ -21,10 +23,12 @@ exports.healthcheckHandler = ({ events, routes, }) => (ctx) => {
|
|
|
21
23
|
routes,
|
|
22
24
|
};
|
|
23
25
|
};
|
|
24
|
-
exports.
|
|
26
|
+
exports.healthcheckHandler = healthcheckHandler;
|
|
27
|
+
const metricsLoggerHandler = (ctx) => {
|
|
25
28
|
var _a, _b;
|
|
26
29
|
ctx.requestHandlerName = 'builtin:metrics-logger';
|
|
27
30
|
(_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName(ctx.requestHandlerName);
|
|
28
31
|
ctx.status = 200;
|
|
29
32
|
ctx.body = ctx.metricsLogger.getSummaries();
|
|
30
33
|
};
|
|
34
|
+
exports.metricsLoggerHandler = metricsLoggerHandler;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ServiceContext } from '../typings';
|
|
2
2
|
export declare function recorderMiddleware(ctx: ServiceContext, next: () => Promise<void>): Promise<void>;
|
|
3
|
-
export declare const addMetricsLoggerMiddleware: () => (ctx: ServiceContext
|
|
4
|
-
export declare const prometheusLoggerMiddleware: () => (ctx: ServiceContext
|
|
3
|
+
export declare const addMetricsLoggerMiddleware: () => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
|
|
4
|
+
export declare const prometheusLoggerMiddleware: () => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prometheusLoggerMiddleware = exports.addMetricsLoggerMiddleware = exports.recorderMiddleware = void 0;
|
|
3
4
|
const prom_client_1 = require("prom-client");
|
|
4
5
|
const constants_1 = require("../../../../constants");
|
|
5
6
|
const metricsLogger_1 = require("../../../logger/metricsLogger");
|
|
@@ -13,15 +14,16 @@ async function recorderMiddleware(ctx, next) {
|
|
|
13
14
|
return;
|
|
14
15
|
}
|
|
15
16
|
exports.recorderMiddleware = recorderMiddleware;
|
|
16
|
-
|
|
17
|
+
const addMetricsLoggerMiddleware = () => {
|
|
17
18
|
const metricsLogger = new metricsLogger_1.MetricsLogger();
|
|
18
19
|
return (ctx, next) => {
|
|
19
20
|
ctx.metricsLogger = metricsLogger;
|
|
20
21
|
return next();
|
|
21
22
|
};
|
|
22
23
|
};
|
|
23
|
-
exports.
|
|
24
|
-
|
|
24
|
+
exports.addMetricsLoggerMiddleware = addMetricsLoggerMiddleware;
|
|
25
|
+
const prometheusLoggerMiddleware = () => {
|
|
26
|
+
(0, prom_client_1.collectDefaultMetrics)();
|
|
25
27
|
const eventLoopLagMeasurer = new EventLoopLagMeasurer_1.EventLoopLagMeasurer();
|
|
26
28
|
eventLoopLagMeasurer.start();
|
|
27
29
|
return async (ctx, next) => {
|
|
@@ -38,3 +40,4 @@ exports.prometheusLoggerMiddleware = () => {
|
|
|
38
40
|
ctx.status = 200;
|
|
39
41
|
};
|
|
40
42
|
};
|
|
43
|
+
exports.prometheusLoggerMiddleware = prometheusLoggerMiddleware;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import TokenBucket from 'tokenbucket';
|
|
2
2
|
import { IOClients } from '../../../../clients/IOClients';
|
|
3
|
-
import { ClientsConfig, ParamsContext, RecorderState, ServiceContext, ServiceEvent } from '../typings';
|
|
4
|
-
export declare const createEventHandler: <T extends IOClients, U extends RecorderState, V extends ParamsContext>(clientsConfig: ClientsConfig<T>, eventId: string, handler:
|
|
3
|
+
import { ClientsConfig, EventHandler, ParamsContext, RecorderState, ServiceContext, ServiceEvent } from '../typings';
|
|
4
|
+
export declare const createEventHandler: <T extends IOClients, U extends RecorderState, V extends ParamsContext>(clientsConfig: ClientsConfig<T>, eventId: string, handler: EventHandler<T, U> | EventHandler<T, U>[], serviceEvent: ServiceEvent | undefined, globalLimiter: TokenBucket | undefined) => import("koa-compose").ComposedMiddleware<ServiceContext<T, U, V>>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createEventHandler = void 0;
|
|
3
4
|
const tracingMiddlewares_1 = require("../../../tracing/tracingMiddlewares");
|
|
4
5
|
const clients_1 = require("../http/middlewares/clients");
|
|
5
6
|
const rateLimit_1 = require("../http/middlewares/rateLimit");
|
|
@@ -9,24 +10,25 @@ const compose_1 = require("../utils/compose");
|
|
|
9
10
|
const toArray_1 = require("../utils/toArray");
|
|
10
11
|
const body_1 = require("./middlewares/body");
|
|
11
12
|
const context_1 = require("./middlewares/context");
|
|
12
|
-
|
|
13
|
+
const createEventHandler = (clientsConfig, eventId, handler, serviceEvent, globalLimiter) => {
|
|
13
14
|
var _a, _b;
|
|
14
15
|
const { implementation, options } = clientsConfig;
|
|
15
|
-
const middlewares = toArray_1.toArray(handler);
|
|
16
|
+
const middlewares = (0, toArray_1.toArray)(handler);
|
|
16
17
|
const pipeline = [
|
|
17
|
-
tracingMiddlewares_1.nameSpanOperationMiddleware('event-handler', eventId),
|
|
18
|
+
(0, tracingMiddlewares_1.nameSpanOperationMiddleware)('event-handler', eventId),
|
|
18
19
|
context_1.eventContextMiddleware,
|
|
19
20
|
body_1.parseBodyMiddleware,
|
|
20
|
-
clients_1.clients(implementation, options),
|
|
21
|
-
...((serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.settingsType) === 'workspace' || (serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.settingsType) === 'userAndWorkspace' ? [settings_1.getServiceSettings()] : []),
|
|
21
|
+
(0, clients_1.clients)(implementation, options),
|
|
22
|
+
...((serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.settingsType) === 'workspace' || (serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.settingsType) === 'userAndWorkspace' ? [(0, settings_1.getServiceSettings)()] : []),
|
|
22
23
|
timings_1.timings,
|
|
23
|
-
rateLimit_1.concurrentRateLimiter((_a = serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent),
|
|
24
|
-
rateLimit_1.perMinuteRateLimiter((_b = serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute, globalLimiter),
|
|
25
|
-
tracingMiddlewares_1.traceUserLandRemainingPipelineMiddleware(),
|
|
24
|
+
(0, rateLimit_1.concurrentRateLimiter)((_a = serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent),
|
|
25
|
+
(0, rateLimit_1.perMinuteRateLimiter)((_b = serviceEvent === null || serviceEvent === void 0 ? void 0 : serviceEvent.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute, globalLimiter),
|
|
26
|
+
(0, tracingMiddlewares_1.traceUserLandRemainingPipelineMiddleware)(),
|
|
26
27
|
contextAdapter(middlewares),
|
|
27
28
|
];
|
|
28
|
-
return compose_1.compose(pipeline);
|
|
29
|
+
return (0, compose_1.compose)(pipeline);
|
|
29
30
|
};
|
|
31
|
+
exports.createEventHandler = createEventHandler;
|
|
30
32
|
function contextAdapter(middlewares) {
|
|
31
33
|
return async function middlewareCascade(ctx) {
|
|
32
34
|
const ctxEvent = {
|
|
@@ -40,7 +42,7 @@ function contextAdapter(middlewares) {
|
|
|
40
42
|
timings: ctx.timings,
|
|
41
43
|
vtex: ctx.vtex,
|
|
42
44
|
};
|
|
43
|
-
await compose_1.composeForEvents(middlewares)(ctxEvent);
|
|
45
|
+
await (0, compose_1.composeForEvents)(middlewares)(ctxEvent);
|
|
44
46
|
ctx.status = 204;
|
|
45
47
|
};
|
|
46
48
|
}
|
|
@@ -3,18 +3,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseBodyMiddleware = void 0;
|
|
6
7
|
const co_body_1 = __importDefault(require("co-body"));
|
|
7
8
|
const logger_1 = require("../../../../logger");
|
|
8
9
|
const console_1 = require("./../../../../logger/console");
|
|
9
10
|
async function parseBodyMiddleware(ctx, next) {
|
|
10
11
|
try {
|
|
11
|
-
ctx.state.body = await co_body_1.default(ctx.req);
|
|
12
|
+
ctx.state.body = await (0, co_body_1.default)(ctx.req);
|
|
12
13
|
}
|
|
13
14
|
catch (err) {
|
|
15
|
+
if (!(err instanceof Error)) {
|
|
16
|
+
throw err;
|
|
17
|
+
}
|
|
14
18
|
const msg = `Error parsing event body: ${err.message || err}`;
|
|
15
19
|
ctx.status = 500;
|
|
16
20
|
ctx.body = msg;
|
|
17
|
-
console_1.logOnceToDevConsole(msg, logger_1.LogLevel.Error);
|
|
21
|
+
(0, console_1.logOnceToDevConsole)(msg, logger_1.LogLevel.Error);
|
|
18
22
|
return;
|
|
19
23
|
}
|
|
20
24
|
await next();
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.eventContextMiddleware = void 0;
|
|
3
4
|
const constants_1 = require("../../../../../constants");
|
|
4
5
|
const context_1 = require("../../utils/context");
|
|
5
6
|
async function eventContextMiddleware(ctx, next) {
|
|
6
7
|
const { request: { header } } = ctx;
|
|
7
8
|
ctx.vtex = {
|
|
8
|
-
...context_1.prepareHandlerCtx(header, ctx.tracing),
|
|
9
|
+
...(0, context_1.prepareHandlerCtx)(header, ctx.tracing),
|
|
9
10
|
eventInfo: {
|
|
10
11
|
key: header[constants_1.EVENT_KEY_HEADER],
|
|
11
12
|
sender: header[constants_1.EVENT_SENDER_HEADER],
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ServiceContext } from '../typings';
|
|
2
|
-
export declare const routerFromEventHandlers: (events: Record<string,
|
|
1
|
+
import { RouteHandler, ServiceContext } from '../typings';
|
|
2
|
+
export declare const routerFromEventHandlers: (events: Record<string, RouteHandler> | null) => (ctx: ServiceContext, next: () => Promise<void>) => Promise<void>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routerFromEventHandlers = void 0;
|
|
3
4
|
const constants_1 = require("../../../../constants");
|
|
4
5
|
const logger_1 = require("../../../logger");
|
|
5
6
|
const console_1 = require("./../../../logger/console");
|
|
6
|
-
|
|
7
|
+
const routerFromEventHandlers = (events) => {
|
|
7
8
|
return async (ctx, next) => {
|
|
8
9
|
const handlerId = ctx.get(constants_1.EVENT_HANDLER_ID_HEADER);
|
|
9
10
|
if (!handlerId || !events) {
|
|
@@ -19,9 +20,10 @@ exports.routerFromEventHandlers = (events) => {
|
|
|
19
20
|
const msg = `Event handler not found for ${handlerId}`;
|
|
20
21
|
ctx.response.status = 404;
|
|
21
22
|
ctx.response.body = msg;
|
|
22
|
-
console_1.logOnceToDevConsole(msg, logger_1.LogLevel.Error);
|
|
23
|
+
(0, console_1.logOnceToDevConsole)(msg, logger_1.LogLevel.Error);
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
25
26
|
await handler(ctx, next);
|
|
26
27
|
};
|
|
27
28
|
};
|
|
29
|
+
exports.routerFromEventHandlers = routerFromEventHandlers;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGraphQLRoute = exports.GRAPHQL_ROUTE = void 0;
|
|
3
4
|
const tracingMiddlewares_1 = require("../../../tracing/tracingMiddlewares");
|
|
4
5
|
const http_1 = require("../http");
|
|
5
6
|
const context_1 = require("./middlewares/context");
|
|
@@ -11,17 +12,18 @@ const updateSchema_1 = require("./middlewares/updateSchema");
|
|
|
11
12
|
const upload_1 = require("./middlewares/upload");
|
|
12
13
|
const schema_1 = require("./schema");
|
|
13
14
|
exports.GRAPHQL_ROUTE = '__graphql';
|
|
14
|
-
|
|
15
|
-
const executableSchema = schema_1.makeSchema(graphql);
|
|
15
|
+
const createGraphQLRoute = (graphql, clientsConfig, serviceRoute, routeId, globalLimiter) => {
|
|
16
|
+
const executableSchema = (0, schema_1.makeSchema)(graphql);
|
|
16
17
|
const pipeline = [
|
|
17
|
-
tracingMiddlewares_1.nameSpanOperationMiddleware('graphql-handler', exports.GRAPHQL_ROUTE),
|
|
18
|
-
updateSchema_1.updateSchema(graphql, executableSchema),
|
|
18
|
+
(0, tracingMiddlewares_1.nameSpanOperationMiddleware)('graphql-handler', exports.GRAPHQL_ROUTE),
|
|
19
|
+
(0, updateSchema_1.updateSchema)(graphql, executableSchema),
|
|
19
20
|
context_1.injectGraphqlContext,
|
|
20
21
|
response_1.response,
|
|
21
22
|
error_1.graphqlError,
|
|
22
23
|
upload_1.upload,
|
|
23
|
-
query_1.extractQuery(executableSchema),
|
|
24
|
-
run_1.run(executableSchema),
|
|
24
|
+
(0, query_1.extractQuery)(executableSchema),
|
|
25
|
+
(0, run_1.run)(executableSchema),
|
|
25
26
|
];
|
|
26
|
-
return http_1.createPrivateHttpRoute(clientsConfig, pipeline, serviceRoute, routeId, globalLimiter);
|
|
27
|
+
return (0, http_1.createPrivateHttpRoute)(clientsConfig, pipeline, serviceRoute, routeId, globalLimiter);
|
|
27
28
|
};
|
|
29
|
+
exports.createGraphQLRoute = createGraphQLRoute;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.graphqlError = void 0;
|
|
3
4
|
const apollo_server_errors_1 = require("apollo-server-errors");
|
|
4
5
|
const ramda_1 = require("ramda");
|
|
5
6
|
const constants_1 = require("../../../../../constants");
|
|
@@ -8,7 +9,7 @@ const logger_1 = require("../../../../logger");
|
|
|
8
9
|
const error_1 = require("../utils/error");
|
|
9
10
|
const pathname_1 = require("../utils/pathname");
|
|
10
11
|
const TWO_SECONDS_S = 2;
|
|
11
|
-
const uniqErrorsByPath = (errors) => ramda_1.uniqBy(e => e.extensions && e.extensions.exception && e.extensions.exception.request
|
|
12
|
+
const uniqErrorsByPath = (errors) => (0, ramda_1.uniqBy)(e => e.extensions && e.extensions.exception && e.extensions.exception.request
|
|
12
13
|
? e.extensions.exception.request.path
|
|
13
14
|
: e, errors);
|
|
14
15
|
const createLogErrorToSplunk = (vtex) => (err) => {
|
|
@@ -21,7 +22,7 @@ const createLogErrorToSplunk = (vtex) => (err) => {
|
|
|
21
22
|
}
|
|
22
23
|
// Add pathName to each error
|
|
23
24
|
if (err.path) {
|
|
24
|
-
err.pathName = pathname_1.generatePathName(err.path);
|
|
25
|
+
err.pathName = (0, pathname_1.generatePathName)(err.path);
|
|
25
26
|
}
|
|
26
27
|
const log = {
|
|
27
28
|
...err,
|
|
@@ -47,16 +48,19 @@ async function graphqlError(ctx, next) {
|
|
|
47
48
|
await next();
|
|
48
49
|
const response = ctx.graphql.graphqlResponse;
|
|
49
50
|
if (response && Array.isArray(response.errors)) {
|
|
50
|
-
const formatter = error_1.createFormatError(ctx);
|
|
51
|
-
graphQLErrors = apollo_server_errors_1.formatApolloErrors(response.errors, { formatter });
|
|
51
|
+
const formatter = (0, error_1.createFormatError)(ctx);
|
|
52
|
+
graphQLErrors = (0, apollo_server_errors_1.formatApolloErrors)(response.errors, { formatter });
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
catch (e) {
|
|
56
|
+
if (!(e instanceof apollo_server_errors_1.ApolloError)) {
|
|
57
|
+
throw e;
|
|
58
|
+
}
|
|
55
59
|
if (e.code === RequestCancelledError_1.cancelledErrorCode) {
|
|
56
60
|
ctx.status = RequestCancelledError_1.cancelledRequestStatus;
|
|
57
61
|
return;
|
|
58
62
|
}
|
|
59
|
-
const formatError = error_1.createFormatError(ctx);
|
|
63
|
+
const formatError = (0, error_1.createFormatError)(ctx);
|
|
60
64
|
graphQLErrors = Array.isArray(e)
|
|
61
65
|
? e.map(formatError)
|
|
62
66
|
: [formatError(e)];
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { ExecutableSchema } from './../typings';
|
|
2
|
-
|
|
2
|
+
import { GraphQLServiceContext } from '../typings';
|
|
3
|
+
export declare const extractQuery: (executableSchema: ExecutableSchema) => (ctx: GraphQLServiceContext, next: () => Promise<void>) => Promise<void>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractQuery = void 0;
|
|
3
4
|
const co_body_1 = require("co-body");
|
|
4
5
|
const graphql_1 = require("graphql");
|
|
5
6
|
const url_1 = require("url");
|
|
@@ -9,7 +10,7 @@ const documentStorage = new LRUCache_1.LRUCache({
|
|
|
9
10
|
max: 500,
|
|
10
11
|
});
|
|
11
12
|
const queryFromUrl = (url) => {
|
|
12
|
-
const parsedUrl = url_1.parse(url, true);
|
|
13
|
+
const parsedUrl = (0, url_1.parse)(url, true);
|
|
13
14
|
const { query: querystringObj } = parsedUrl;
|
|
14
15
|
// Having a BODY_HASH means the query is in the body
|
|
15
16
|
if (querystringObj && querystringObj[constants_1.BODY_HASH]) {
|
|
@@ -23,24 +24,24 @@ const queryFromUrl = (url) => {
|
|
|
23
24
|
return querystringObj;
|
|
24
25
|
};
|
|
25
26
|
const parseAndValidateQueryToSchema = (query, schema) => {
|
|
26
|
-
const document = graphql_1.parse(query);
|
|
27
|
-
const validation = graphql_1.validate(schema, document);
|
|
27
|
+
const document = (0, graphql_1.parse)(query);
|
|
28
|
+
const validation = (0, graphql_1.validate)(schema, document);
|
|
28
29
|
if (Array.isArray(validation) && validation.length > 0) {
|
|
29
30
|
throw validation;
|
|
30
31
|
}
|
|
31
32
|
return document;
|
|
32
33
|
};
|
|
33
|
-
|
|
34
|
+
const extractQuery = (executableSchema) => async function parseAndValidateQuery(ctx, next) {
|
|
34
35
|
const { request, req } = ctx;
|
|
35
36
|
let query;
|
|
36
37
|
if (request.is('multipart/form-data')) {
|
|
37
38
|
query = request.body;
|
|
38
39
|
}
|
|
39
40
|
else if (request.method.toUpperCase() === 'POST') {
|
|
40
|
-
query = await co_body_1.json(req, { limit: '3mb' });
|
|
41
|
+
query = await (0, co_body_1.json)(req, { limit: '3mb' });
|
|
41
42
|
}
|
|
42
43
|
else {
|
|
43
|
-
query = queryFromUrl(request.url) || (await co_body_1.json(req, { limit: '3mb' }));
|
|
44
|
+
query = queryFromUrl(request.url) || (await (0, co_body_1.json)(req, { limit: '3mb' }));
|
|
44
45
|
}
|
|
45
46
|
// Assign the query before setting the query.document because if the
|
|
46
47
|
// validation fails we don't loose the query in our error log
|
|
@@ -50,3 +51,4 @@ exports.extractQuery = (executableSchema) => async function parseAndValidateQuer
|
|
|
50
51
|
})));
|
|
51
52
|
await next();
|
|
52
53
|
};
|
|
54
|
+
exports.extractQuery = extractQuery;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.response = void 0;
|
|
3
4
|
const constants_1 = require("../../../../../constants");
|
|
4
5
|
const cacheControl_1 = require("../utils/cacheControl");
|
|
5
6
|
function setVaryHeaders(ctx, cacheControl) {
|
|
@@ -22,7 +23,7 @@ async function response(ctx, next) {
|
|
|
22
23
|
var _a;
|
|
23
24
|
await next();
|
|
24
25
|
const { cacheControl, status, graphqlResponse, } = ctx.graphql;
|
|
25
|
-
const cacheControlHeader = cacheControl_1.cacheControlHTTP(ctx);
|
|
26
|
+
const cacheControlHeader = (0, cacheControl_1.cacheControlHTTP)(ctx);
|
|
26
27
|
ctx.set(constants_1.CACHE_CONTROL_HEADER, cacheControlHeader);
|
|
27
28
|
if (status === 'error') {
|
|
28
29
|
// Do not generate etag for errors
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ExecutableSchema } from '../typings';
|
|
2
|
-
export declare const run: (executableSchema: ExecutableSchema) => (ctx:
|
|
1
|
+
import { ExecutableSchema, GraphQLServiceContext } from '../typings';
|
|
2
|
+
export declare const run: (executableSchema: ExecutableSchema) => (ctx: GraphQLServiceContext, next: () => Promise<void>) => Promise<void>;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.run = void 0;
|
|
3
4
|
const graphql_1 = require("graphql");
|
|
4
|
-
|
|
5
|
+
const run = (executableSchema) => async function runHttpQuery(ctx, next) {
|
|
5
6
|
const { graphql: { query }, } = ctx;
|
|
6
7
|
const { document, operationName, variables: variableValues } = query;
|
|
7
8
|
const schema = executableSchema.schema;
|
|
8
|
-
const response = await graphql_1.execute({
|
|
9
|
+
const response = await (0, graphql_1.execute)({
|
|
9
10
|
contextValue: ctx,
|
|
10
11
|
document,
|
|
11
12
|
fieldResolver: (root, _, __, info) => root[info.fieldName],
|
|
@@ -17,3 +18,4 @@ exports.run = (executableSchema) => async function runHttpQuery(ctx, next) {
|
|
|
17
18
|
ctx.graphql.graphqlResponse = response;
|
|
18
19
|
await next();
|
|
19
20
|
};
|
|
21
|
+
exports.run = run;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IOClients } from '../../../../../clients';
|
|
2
2
|
import { GraphQLOptions, ParamsContext, RecorderState } from '../../typings';
|
|
3
3
|
import { ExecutableSchema } from '../typings';
|
|
4
|
-
|
|
4
|
+
import { GraphQLServiceContext } from '../typings';
|
|
5
|
+
export declare const updateSchema: <T extends IOClients, U extends RecorderState, V extends ParamsContext>(graphql: GraphQLOptions<T, U, V>, executableSchema: ExecutableSchema) => (ctx: GraphQLServiceContext, next: () => Promise<void>) => Promise<void>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateSchema = void 0;
|
|
3
4
|
const constants_1 = require("../../../../../constants");
|
|
4
5
|
const utils_1 = require("../../../../../utils");
|
|
5
6
|
const index_1 = require("../schema/index");
|
|
6
|
-
|
|
7
|
+
const updateSchema = (graphql, executableSchema) => async function updateRunnableSchema(ctx, next) {
|
|
7
8
|
const { clients: { apps }, vtex: { logger }, app, } = ctx;
|
|
8
9
|
if (!ctx.headers[constants_1.PROVIDER_HEADER]) {
|
|
9
10
|
await next();
|
|
@@ -12,11 +13,11 @@ exports.updateSchema = (graphql, executableSchema) => async function updateRunna
|
|
|
12
13
|
// fetches the new schema and generate a new runnable schema, updates the provider app,
|
|
13
14
|
if (executableSchema.hasProvider &&
|
|
14
15
|
(!executableSchema.provider ||
|
|
15
|
-
utils_1.majorEqualAndGreaterThan(utils_1.parseAppId(ctx.headers[constants_1.PROVIDER_HEADER]).version, utils_1.parseAppId(executableSchema.provider).version))) {
|
|
16
|
+
(0, utils_1.majorEqualAndGreaterThan)((0, utils_1.parseAppId)(ctx.headers[constants_1.PROVIDER_HEADER]).version, (0, utils_1.parseAppId)(executableSchema.provider).version))) {
|
|
16
17
|
try {
|
|
17
18
|
const newSchema = (await apps.getAppFile(ctx.headers[constants_1.PROVIDER_HEADER], 'public/schema.graphql')).data.toString('utf-8');
|
|
18
19
|
graphql.schema = newSchema;
|
|
19
|
-
const newRunnableSchema = index_1.makeSchema(graphql);
|
|
20
|
+
const newRunnableSchema = (0, index_1.makeSchema)(graphql);
|
|
20
21
|
executableSchema.schema = newRunnableSchema.schema;
|
|
21
22
|
executableSchema.provider = ctx.headers[constants_1.PROVIDER_HEADER];
|
|
22
23
|
}
|
|
@@ -26,3 +27,4 @@ exports.updateSchema = (graphql, executableSchema) => async function updateRunna
|
|
|
26
27
|
}
|
|
27
28
|
await next();
|
|
28
29
|
};
|
|
30
|
+
exports.updateSchema = updateSchema;
|