@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
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPubContextMiddleware = exports.createPvtContextMiddleware = void 0;
|
|
3
4
|
const querystring_1 = require("querystring");
|
|
4
5
|
const constants_1 = require("../../../../../constants");
|
|
5
6
|
const context_1 = require("../../utils/context");
|
|
6
|
-
|
|
7
|
+
const createPvtContextMiddleware = (routeId, { smartcache }) => {
|
|
7
8
|
return async function pvtContext(ctx, next) {
|
|
8
9
|
const { params, request: { header }, } = ctx;
|
|
9
10
|
ctx.vtex = {
|
|
10
|
-
...context_1.prepareHandlerCtx(header, ctx.tracing),
|
|
11
|
+
...(0, context_1.prepareHandlerCtx)(header, ctx.tracing),
|
|
11
12
|
...(smartcache && { recorder: ctx.state.recorder }),
|
|
12
13
|
route: {
|
|
13
14
|
id: routeId,
|
|
@@ -18,19 +19,21 @@ exports.createPvtContextMiddleware = (routeId, { smartcache }) => {
|
|
|
18
19
|
await next();
|
|
19
20
|
};
|
|
20
21
|
};
|
|
21
|
-
exports.
|
|
22
|
+
exports.createPvtContextMiddleware = createPvtContextMiddleware;
|
|
23
|
+
const createPubContextMiddleware = (routeId, { smartcache }) => {
|
|
22
24
|
return async function pubContext(ctx, next) {
|
|
23
25
|
const { request: { header }, } = ctx;
|
|
24
26
|
ctx.vtex = {
|
|
25
|
-
...context_1.prepareHandlerCtx(header, ctx.tracing),
|
|
27
|
+
...(0, context_1.prepareHandlerCtx)(header, ctx.tracing),
|
|
26
28
|
...(smartcache && { recorder: ctx.state.recorder }),
|
|
27
29
|
route: {
|
|
28
30
|
declarer: header[constants_1.COLOSSUS_ROUTE_DECLARER_HEADER],
|
|
29
31
|
id: routeId,
|
|
30
|
-
params: querystring_1.parse(header[constants_1.COLOSSUS_PARAMS_HEADER]),
|
|
32
|
+
params: (0, querystring_1.parse)(header[constants_1.COLOSSUS_PARAMS_HEADER]),
|
|
31
33
|
type: 'public',
|
|
32
34
|
},
|
|
33
35
|
};
|
|
34
36
|
await next();
|
|
35
37
|
};
|
|
36
38
|
};
|
|
39
|
+
exports.createPubContextMiddleware = createPubContextMiddleware;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.error = void 0;
|
|
4
|
+
const axios_1 = require("axios");
|
|
3
5
|
const constants_1 = require("../../../../../constants");
|
|
4
6
|
const RequestCancelledError_1 = require("../../../../../errors/RequestCancelledError");
|
|
5
7
|
const TooManyRequestsError_1 = require("../../../../../errors/TooManyRequestsError");
|
|
@@ -59,13 +61,15 @@ async function error(ctx, next) {
|
|
|
59
61
|
return;
|
|
60
62
|
}
|
|
61
63
|
console.error('[node-vtex-api error]', e);
|
|
62
|
-
const err = error_1.cleanError(e);
|
|
64
|
+
const err = (0, error_1.cleanError)(e);
|
|
63
65
|
// Add response
|
|
64
|
-
|
|
65
|
-
? e.status
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
if (e instanceof axios_1.AxiosError) {
|
|
67
|
+
ctx.status = (e === null || e === void 0 ? void 0 : e.status) && e.status >= 400 && e.status <= 599
|
|
68
|
+
? e.status
|
|
69
|
+
: ctx.status >= 500 && ctx.status <= 599
|
|
70
|
+
? ctx.status
|
|
71
|
+
: 500;
|
|
72
|
+
}
|
|
69
73
|
// Do not generate etag for errors
|
|
70
74
|
ctx.remove(META_HEADER);
|
|
71
75
|
ctx.remove(ETAG_HEADER);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.concurrentRateLimiter = exports.perMinuteRateLimiter = void 0;
|
|
3
4
|
const errors_1 = require("../../../../../errors");
|
|
4
5
|
const tokenBucket_1 = require("../../utils/tokenBucket");
|
|
5
6
|
const responseMessageConcurrent = 'Rate Exceeded: Too many requests in execution';
|
|
@@ -11,7 +12,7 @@ function perMinuteRateLimiter(rateLimit, globalLimiter) {
|
|
|
11
12
|
if (!rateLimit && !globalLimiter) {
|
|
12
13
|
return noopMiddleware;
|
|
13
14
|
}
|
|
14
|
-
const tokenBucket = tokenBucket_1.createTokenBucket(rateLimit, globalLimiter);
|
|
15
|
+
const tokenBucket = (0, tokenBucket_1.createTokenBucket)(rateLimit, globalLimiter);
|
|
15
16
|
return function perMinuteRateMiddleware(ctx, next) {
|
|
16
17
|
if (!tokenBucket.removeTokensSync(1)) {
|
|
17
18
|
throw new errors_1.TooManyRequestsError(responseMessagePerMinute);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trackIncomingRequestStats = exports.incomingRequestStats = exports.cancelMessage = void 0;
|
|
3
4
|
exports.cancelMessage = 'Request cancelled';
|
|
4
5
|
class IncomingRequestStats {
|
|
5
6
|
constructor() {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeSetCookie = void 0;
|
|
3
4
|
const ramda_1 = require("ramda");
|
|
4
5
|
const BLACKLISTED_COOKIES = new Set(['checkout.vtex.com']);
|
|
5
6
|
const warnMessage = (keys) => `Removing set-cookie from response since cache-control has as public scope.
|
|
@@ -8,26 +9,26 @@ Cookies dropped:
|
|
|
8
9
|
|
|
9
10
|
${keys.join('\n\t')}
|
|
10
11
|
`;
|
|
11
|
-
const findStr = (target, set) => ramda_1.find((a) => a.toLocaleLowerCase() === target, set);
|
|
12
|
+
const findStr = (target, set) => (0, ramda_1.find)((a) => a.toLocaleLowerCase() === target, set);
|
|
12
13
|
const findScopeInCacheControl = (cacheControl) => {
|
|
13
14
|
const splitted = cacheControl && cacheControl.split(/\s*,\s*/g);
|
|
14
15
|
const scopePublic = splitted && findStr('public', splitted);
|
|
15
16
|
return scopePublic;
|
|
16
17
|
};
|
|
17
|
-
const cookieKey = (cookie) => ramda_1.compose(ramda_1.head, ramda_1.split('='))(cookie);
|
|
18
|
-
const indexCookieByKeys = (setCookie) => ramda_1.map((cookie) => [cookieKey(cookie), cookie], setCookie);
|
|
18
|
+
const cookieKey = (cookie) => (0, ramda_1.compose)(ramda_1.head, (0, ramda_1.split)('='))(cookie);
|
|
19
|
+
const indexCookieByKeys = (setCookie) => (0, ramda_1.map)((cookie) => [cookieKey(cookie), cookie], setCookie);
|
|
19
20
|
async function removeSetCookie(ctx, next) {
|
|
20
21
|
const { vtex: { logger } } = ctx;
|
|
21
22
|
await next();
|
|
22
23
|
const setCookie = ctx.response.headers['set-cookie'];
|
|
23
|
-
if (!setCookie || ramda_1.isEmpty(setCookie)) {
|
|
24
|
+
if (!setCookie || (0, ramda_1.isEmpty)(setCookie)) {
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
27
|
const cacheControl = ctx.response.headers['cache-control'];
|
|
27
28
|
const scope = findScopeInCacheControl(cacheControl);
|
|
28
29
|
if (scope === 'public') {
|
|
29
30
|
const indexedCookies = indexCookieByKeys(setCookie);
|
|
30
|
-
const cookies = ramda_1.reduce((acc, [key, payload]) => {
|
|
31
|
+
const cookies = (0, ramda_1.reduce)((acc, [key, payload]) => {
|
|
31
32
|
if (BLACKLISTED_COOKIES.has(key)) {
|
|
32
33
|
acc.droppedKeys.push(key);
|
|
33
34
|
}
|
|
@@ -5,5 +5,5 @@ import { Assets } from './../../../../../clients/infra/Assets';
|
|
|
5
5
|
import { ParamsContext, RecorderState, ServiceContext } from './../../typings';
|
|
6
6
|
export declare const getFilteredDependencies: (appAtMajor: string, dependencies: AppMetaInfo[]) => AppMetaInfo[];
|
|
7
7
|
export declare const getDependenciesHash: (dependencies: AppMetaInfo[]) => string;
|
|
8
|
-
export declare const getDependenciesSettings: (apps: Apps, assets: Assets, tracingConfig?: RequestTracingConfig
|
|
8
|
+
export declare const getDependenciesSettings: (apps: Apps, assets: Assets, tracingConfig?: RequestTracingConfig) => Promise<Record<string, any>[]>;
|
|
9
9
|
export declare const getServiceSettings: () => <T extends IOClients, U extends RecorderState, V extends ParamsContext>(ctx: ServiceContext<T, U, V>, next: () => Promise<void>) => Promise<void>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getServiceSettings = exports.getDependenciesSettings = exports.getDependenciesHash = exports.getFilteredDependencies = void 0;
|
|
3
4
|
const crypto_1 = require("crypto");
|
|
4
5
|
const ramda_1 = require("ramda");
|
|
5
6
|
const constants_1 = require("../../../../../constants");
|
|
6
7
|
const app_1 = require("./../../../../../utils/app");
|
|
7
|
-
const joinIds = ramda_1.join('');
|
|
8
|
+
const joinIds = (0, ramda_1.join)('');
|
|
8
9
|
const dependsOnApp = (appAtMajor) => (a) => {
|
|
9
10
|
const [name, major] = appAtMajor.split('@');
|
|
10
11
|
const majorInt = major.includes('.') ? major.split('.')[0] : major;
|
|
@@ -15,30 +16,34 @@ const dependsOnApp = (appAtMajor) => (a) => {
|
|
|
15
16
|
const [depMajor] = version.split('.');
|
|
16
17
|
return majorInt === depMajor;
|
|
17
18
|
};
|
|
18
|
-
|
|
19
|
+
const getFilteredDependencies = (appAtMajor, dependencies) => {
|
|
19
20
|
const depends = dependsOnApp(appAtMajor);
|
|
20
21
|
return dependencies.filter(depends);
|
|
21
22
|
};
|
|
22
|
-
exports.
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
exports.getFilteredDependencies = getFilteredDependencies;
|
|
24
|
+
const getDependenciesHash = (dependencies) => {
|
|
25
|
+
const dependingApps = (0, ramda_1.pluck)('id', dependencies);
|
|
26
|
+
return (0, crypto_1.createHash)('md5')
|
|
25
27
|
.update(joinIds(dependingApps))
|
|
26
28
|
.digest('hex');
|
|
27
29
|
};
|
|
28
|
-
exports.
|
|
30
|
+
exports.getDependenciesHash = getDependenciesHash;
|
|
31
|
+
const getDependenciesSettings = async (apps, assets, tracingConfig) => {
|
|
29
32
|
const appId = constants_1.APP.ID;
|
|
30
33
|
const metaInfos = await apps.getAppsMetaInfos(undefined, undefined, tracingConfig);
|
|
31
|
-
const appAtMajor = app_1.appIdToAppAtMajor(appId);
|
|
34
|
+
const appAtMajor = (0, app_1.appIdToAppAtMajor)(appId);
|
|
32
35
|
return await assets.getSettings(metaInfos, appAtMajor, undefined, tracingConfig);
|
|
33
36
|
};
|
|
34
|
-
exports.
|
|
37
|
+
exports.getDependenciesSettings = getDependenciesSettings;
|
|
38
|
+
const getServiceSettings = () => {
|
|
35
39
|
return async function settingsContext(ctx, next) {
|
|
36
40
|
var _a;
|
|
37
41
|
const { clients: { apps, assets }, } = ctx;
|
|
38
42
|
const rootSpan = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan;
|
|
39
|
-
const dependenciesSettings = await exports.getDependenciesSettings(apps, assets, { tracing: { rootSpan } });
|
|
43
|
+
const dependenciesSettings = await (0, exports.getDependenciesSettings)(apps, assets, { tracing: { rootSpan } });
|
|
40
44
|
// TODO: for now returning all settings, but the ideia is to do merge
|
|
41
45
|
ctx.vtex.settings = dependenciesSettings;
|
|
42
46
|
await next();
|
|
43
47
|
};
|
|
44
48
|
};
|
|
49
|
+
exports.getServiceSettings = getServiceSettings;
|
|
@@ -3,11 +3,12 @@ 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.timings = void 0;
|
|
6
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
7
8
|
const constants_1 = require("../../../../../constants");
|
|
8
9
|
const status_1 = require("../../../../../utils/status");
|
|
9
10
|
const time_1 = require("../../../../../utils/time");
|
|
10
|
-
const APP_ELAPSED_TIME_LOCATOR = time_1.shrinkTimings(time_1.formatTimingName({
|
|
11
|
+
const APP_ELAPSED_TIME_LOCATOR = (0, time_1.shrinkTimings)((0, time_1.formatTimingName)({
|
|
11
12
|
hopNumber: 0,
|
|
12
13
|
source: process.env.VTEX_APP_NAME,
|
|
13
14
|
target: '',
|
|
@@ -35,10 +36,10 @@ async function timings(ctx, next) {
|
|
|
35
36
|
// Errors will be caught by the next middleware so we don't have to catch.
|
|
36
37
|
await next();
|
|
37
38
|
const { status: statusCode, vtex: { route: { id } }, timings: { total }, vtex } = ctx;
|
|
38
|
-
const totalMillis = time_1.hrToMillis(total);
|
|
39
|
+
const totalMillis = (0, time_1.hrToMillis)(total);
|
|
39
40
|
console.log(log(ctx, totalMillis));
|
|
40
41
|
console.log(logBillingInfo(vtex, totalMillis));
|
|
41
|
-
const status = status_1.statusLabel(statusCode);
|
|
42
|
+
const status = (0, status_1.statusLabel)(statusCode);
|
|
42
43
|
// Only batch successful responses so metrics don't consider errors
|
|
43
44
|
metrics.batch(`http-handler-${id}`, status === 'success' ? total : undefined, { [status]: 1 });
|
|
44
45
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { HttpRoute, ServiceContext } from '../typings';
|
|
2
|
-
export declare const routerFromPublicHttpHandlers: (routes: Record<string, HttpRoute>) => (ctx: ServiceContext
|
|
2
|
+
export declare const routerFromPublicHttpHandlers: (routes: Record<string, HttpRoute>) => (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.routerFromPublicHttpHandlers = 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 routerFromPublicHttpHandlers = (routes) => {
|
|
7
8
|
return async (ctx, next) => {
|
|
8
9
|
var _a;
|
|
9
10
|
const routeId = ctx.get(constants_1.COLOSSUS_ROUTE_ID_HEADER);
|
|
@@ -15,9 +16,10 @@ exports.routerFromPublicHttpHandlers = (routes) => {
|
|
|
15
16
|
const msg = `Handler with id '${routeId}' not implemented.`;
|
|
16
17
|
ctx.status = 501;
|
|
17
18
|
ctx.body = msg;
|
|
18
|
-
console_1.logOnceToDevConsole(msg, logger_1.LogLevel.Error);
|
|
19
|
+
(0, console_1.logOnceToDevConsole)(msg, logger_1.LogLevel.Error);
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
22
|
await handler(ctx, next);
|
|
22
23
|
};
|
|
23
24
|
};
|
|
25
|
+
exports.routerFromPublicHttpHandlers = routerFromPublicHttpHandlers;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logAvailableRoutes = exports.formatPublicRoute = exports.formatPrivateRoute = void 0;
|
|
3
4
|
const constants_1 = require("../../../../constants");
|
|
4
|
-
|
|
5
|
-
exports.
|
|
5
|
+
const formatPrivateRoute = ({ protocol = 'https', vendor, name, major, account, workspace, path }) => `${protocol}://app.io.vtex.com/${vendor}.${name}/v${major}/${account}/${workspace}${path || ''}`;
|
|
6
|
+
exports.formatPrivateRoute = formatPrivateRoute;
|
|
7
|
+
const formatPublicRoute = ({ workspace, account, endpoint, path }) => `https://${workspace}--${account}.${endpoint}${path}`;
|
|
8
|
+
exports.formatPublicRoute = formatPublicRoute;
|
|
6
9
|
const getPath = ({ public: publicRoute, path }) => publicRoute
|
|
7
|
-
? exports.formatPublicRoute({ workspace: constants_1.WORKSPACE, account: constants_1.ACCOUNT, endpoint: constants_1.PUBLIC_ENDPOINT, path })
|
|
8
|
-
: exports.formatPrivateRoute({ protocol: 'https', vendor: constants_1.APP.VENDOR, name: constants_1.APP.NAME, major: constants_1.APP.MAJOR, account: constants_1.ACCOUNT, workspace: constants_1.WORKSPACE, path });
|
|
9
|
-
|
|
10
|
+
? (0, exports.formatPublicRoute)({ workspace: constants_1.WORKSPACE, account: constants_1.ACCOUNT, endpoint: constants_1.PUBLIC_ENDPOINT, path })
|
|
11
|
+
: (0, exports.formatPrivateRoute)({ protocol: 'https', vendor: constants_1.APP.VENDOR, name: constants_1.APP.NAME, major: constants_1.APP.MAJOR, account: constants_1.ACCOUNT, workspace: constants_1.WORKSPACE, path });
|
|
12
|
+
const logAvailableRoutes = (service) => {
|
|
10
13
|
const available = Object.values(service.routes || {}).reduce((acc, route) => `${acc}\n${getPath(route)}`, 'Available service routes:');
|
|
11
14
|
console.info(available);
|
|
12
15
|
};
|
|
16
|
+
exports.logAvailableRoutes = logAvailableRoutes;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IOClients } from '../../../clients/IOClients';
|
|
2
2
|
import { ParamsContext, RecorderState, RouteHandler, ServiceContext } from './typings';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
type HTTPMethods = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH' | 'DEFAULT';
|
|
4
|
+
type MethodOptions<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = Partial<Record<HTTPMethods, RouteHandler<ClientsT, StateT, CustomT> | Array<RouteHandler<ClientsT, StateT, CustomT>>>>;
|
|
5
5
|
export declare function method<T extends IOClients, U extends RecorderState, V extends ParamsContext>(options: MethodOptions<T, U, V>): {
|
|
6
6
|
(ctx: ServiceContext<T, U, V>, next: () => Promise<void>): Promise<void>;
|
|
7
7
|
skipTimer: boolean;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.method = void 0;
|
|
3
4
|
const ramda_1 = require("ramda");
|
|
4
5
|
const compose_1 = require("./utils/compose");
|
|
5
6
|
const TEN_SECONDS_S = 10;
|
|
@@ -8,7 +9,7 @@ function methodNotAllowed(ctx) {
|
|
|
8
9
|
ctx.set('cache-control', `public, max-age=${TEN_SECONDS_S}`);
|
|
9
10
|
}
|
|
10
11
|
function method(options) {
|
|
11
|
-
const handlers = ramda_1.mapObjIndexed(handler => compose_1.compose(Array.isArray(handler) ? handler : [handler]), options);
|
|
12
|
+
const handlers = (0, ramda_1.mapObjIndexed)(handler => (0, compose_1.compose)(Array.isArray(handler) ? handler : [handler]), options);
|
|
12
13
|
const inner = async function forMethod(ctx, next) {
|
|
13
14
|
const verb = ctx.method.toUpperCase();
|
|
14
15
|
const handler = handlers[verb] || handlers.DEFAULT || methodNotAllowed;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ServiceContext } from './typings';
|
|
2
|
-
export
|
|
2
|
+
export type StatusTrack = () => EnvMetric[];
|
|
3
3
|
export interface NamedMetric {
|
|
4
4
|
name: string;
|
|
5
5
|
[key: string]: any;
|
|
@@ -9,6 +9,6 @@ export interface EnvMetric extends NamedMetric {
|
|
|
9
9
|
}
|
|
10
10
|
export declare const isStatusTrack: (message: any) => message is "statusTrack";
|
|
11
11
|
export declare const isStatusTrackBroadcast: (message: any) => message is "broadcastStatusTrack";
|
|
12
|
-
export declare const statusTrackHandler: (ctx: ServiceContext
|
|
12
|
+
export declare const statusTrackHandler: (ctx: ServiceContext) => Promise<void>;
|
|
13
13
|
export declare const trackStatus: () => void;
|
|
14
14
|
export declare const broadcastStatusTrack: () => void;
|
|
@@ -3,13 +3,16 @@ 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.broadcastStatusTrack = exports.trackStatus = exports.statusTrackHandler = exports.isStatusTrackBroadcast = exports.isStatusTrack = void 0;
|
|
6
7
|
const cluster_1 = __importDefault(require("cluster"));
|
|
7
8
|
const constants_1 = require("../../../constants");
|
|
8
9
|
const BROADCAST_STATUS_TRACK = 'broadcastStatusTrack';
|
|
9
10
|
const STATUS_TRACK = 'statusTrack';
|
|
10
|
-
|
|
11
|
-
exports.
|
|
12
|
-
|
|
11
|
+
const isStatusTrack = (message) => message === STATUS_TRACK;
|
|
12
|
+
exports.isStatusTrack = isStatusTrack;
|
|
13
|
+
const isStatusTrackBroadcast = (message) => message === BROADCAST_STATUS_TRACK;
|
|
14
|
+
exports.isStatusTrackBroadcast = isStatusTrackBroadcast;
|
|
15
|
+
const statusTrackHandler = async (ctx) => {
|
|
13
16
|
var _a, _b, _c;
|
|
14
17
|
(_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName('builtin:status-track');
|
|
15
18
|
if (!constants_1.LINKED) {
|
|
@@ -18,12 +21,15 @@ exports.statusTrackHandler = async (ctx) => {
|
|
|
18
21
|
ctx.body = [];
|
|
19
22
|
return;
|
|
20
23
|
};
|
|
21
|
-
exports.
|
|
24
|
+
exports.statusTrackHandler = statusTrackHandler;
|
|
25
|
+
const trackStatus = () => {
|
|
22
26
|
global.metrics.statusTrack().forEach(status => {
|
|
23
27
|
logStatus(status);
|
|
24
28
|
});
|
|
25
29
|
};
|
|
26
|
-
exports.
|
|
30
|
+
exports.trackStatus = trackStatus;
|
|
31
|
+
const broadcastStatusTrack = () => Object.values(cluster_1.default.workers).forEach(worker => worker === null || worker === void 0 ? void 0 : worker.send(STATUS_TRACK));
|
|
32
|
+
exports.broadcastStatusTrack = broadcastStatusTrack;
|
|
27
33
|
const logStatus = (status) => console.log(JSON.stringify({
|
|
28
34
|
__VTEX_IO_LOG: true,
|
|
29
35
|
account: constants_1.ACCOUNT,
|
|
@@ -17,8 +17,8 @@ import { Logger } from '../../logger';
|
|
|
17
17
|
import { MetricsLogger } from '../../logger/metricsLogger';
|
|
18
18
|
import { MessagesLoaderV2 } from './graphql/schema/messagesLoaderV2';
|
|
19
19
|
import { Recorder } from './utils/recorder';
|
|
20
|
-
|
|
21
|
-
export
|
|
20
|
+
type ServerTiming = Record<string, string>;
|
|
21
|
+
export type Maybe<T> = T | null | undefined;
|
|
22
22
|
export interface TracingContext {
|
|
23
23
|
tracer: Tracer;
|
|
24
24
|
currentSpan: Span | undefined;
|
|
@@ -44,7 +44,7 @@ export interface EventContext<T extends IOClients, StateT = any> {
|
|
|
44
44
|
sender: string;
|
|
45
45
|
subject: string;
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
type KnownKeys<T> = {
|
|
48
48
|
[K in keyof T]: string extends K ? never : number extends K ? never : K;
|
|
49
49
|
} extends {
|
|
50
50
|
[_ in keyof T]: infer U;
|
|
@@ -54,13 +54,13 @@ interface Loaders {
|
|
|
54
54
|
messagesV2?: MessagesLoaderV2;
|
|
55
55
|
immutableMessagesV2?: MessagesLoaderV2;
|
|
56
56
|
}
|
|
57
|
-
export
|
|
57
|
+
export type ServiceContext<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = Pick<ParameterizedContext<StateT, Context<ClientsT>>, KnownKeys<ParameterizedContext<StateT, Context<ClientsT>>>> & CustomT & {
|
|
58
58
|
loaders?: Loaders;
|
|
59
59
|
};
|
|
60
|
-
export
|
|
61
|
-
export
|
|
62
|
-
export
|
|
63
|
-
export
|
|
60
|
+
export type RouteHandler<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = Middleware<ServiceContext<ClientsT, StateT, CustomT>>;
|
|
61
|
+
export type EventHandler<ClientsT extends IOClients = IOClients, StateT = void> = Middleware<EventContext<ClientsT, StateT>>;
|
|
62
|
+
export type Resolver<ClientsT extends IOClients = IOClients, StateT extends RecorderState = RecorderState, CustomT extends ParamsContext = ParamsContext> = GraphQLFieldResolver<any, ServiceContext<ClientsT, StateT, CustomT>, any> | GraphQLFieldConfig<any, ServiceContext<ClientsT, StateT, CustomT>, any>;
|
|
63
|
+
export type Handler = RouteHandler<IOClients, RecorderState, ParamsContext>;
|
|
64
64
|
export interface HttpRoute {
|
|
65
65
|
handler: RouteHandler;
|
|
66
66
|
path: string;
|
|
@@ -132,7 +132,7 @@ export interface EventBody {
|
|
|
132
132
|
subject: string;
|
|
133
133
|
key: string;
|
|
134
134
|
}
|
|
135
|
-
export
|
|
135
|
+
export type RouteSettingsType = 'pure' | 'workspace' | 'userAndWorkspace';
|
|
136
136
|
export interface ServiceRoute {
|
|
137
137
|
path: string;
|
|
138
138
|
public?: boolean;
|
|
@@ -169,5 +169,5 @@ export interface RawServiceJSON {
|
|
|
169
169
|
export interface ServiceJSON extends RawServiceJSON {
|
|
170
170
|
workers: number;
|
|
171
171
|
}
|
|
172
|
-
export
|
|
172
|
+
export type JanusEnv = string;
|
|
173
173
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import koaCompose from 'koa-compose';
|
|
2
2
|
import { IOClients } from '../../../../clients/IOClients';
|
|
3
|
-
import { ParamsContext, RecorderState } from '../typings';
|
|
4
|
-
export declare const compose: <ClientsT extends IOClients, StateT extends RecorderState, CustomT extends ParamsContext>(middlewares:
|
|
5
|
-
export declare const composeForEvents: <ClientsT extends IOClients, StateT extends RecorderState>(middlewares:
|
|
3
|
+
import { EventHandler, ParamsContext, RecorderState, RouteHandler } from '../typings';
|
|
4
|
+
export declare const compose: <ClientsT extends IOClients, StateT extends RecorderState, CustomT extends ParamsContext>(middlewares: RouteHandler<ClientsT, StateT, CustomT>[]) => koaCompose.ComposedMiddleware<import("../typings").ServiceContext<ClientsT, StateT, CustomT>>;
|
|
5
|
+
export declare const composeForEvents: <ClientsT extends IOClients, StateT extends RecorderState>(middlewares: EventHandler<ClientsT, StateT>[]) => koaCompose.ComposedMiddleware<import("../typings").EventContext<ClientsT, StateT>>;
|
|
@@ -3,9 +3,12 @@ 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.composeForEvents = exports.compose = void 0;
|
|
6
7
|
const koa_compose_1 = __importDefault(require("koa-compose"));
|
|
7
8
|
const ramda_1 = require("ramda");
|
|
8
9
|
const cancel_1 = require("../../../../utils/cancel");
|
|
9
10
|
const time_1 = require("../../../../utils/time");
|
|
10
|
-
|
|
11
|
-
exports.
|
|
11
|
+
const compose = (middlewares) => (0, koa_compose_1.default)(middlewares.map((0, ramda_1.pipe)(time_1.timer, cancel_1.cancel)));
|
|
12
|
+
exports.compose = compose;
|
|
13
|
+
const composeForEvents = (middlewares) => (0, koa_compose_1.default)(middlewares.map(time_1.timerForEvents));
|
|
14
|
+
exports.composeForEvents = composeForEvents;
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
+
import { Context } from 'koa';
|
|
1
2
|
import { IOContext, TracingContext } from '../typings';
|
|
2
|
-
|
|
3
|
+
type HandlerContext = Omit<IOContext, 'route'>;
|
|
4
|
+
export declare const prepareHandlerCtx: (header: Context['request']['header'], tracingContext?: TracingContext) => HandlerContext;
|
|
5
|
+
export {};
|
|
@@ -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.prepareHandlerCtx = void 0;
|
|
6
7
|
const v4_1 = __importDefault(require("uuid/v4"));
|
|
7
8
|
const constants_1 = require("../../../../constants");
|
|
8
9
|
const UserLandTracer_1 = require("../../../../tracing/UserLandTracer");
|
|
@@ -12,15 +13,15 @@ const binding_1 = require("./../../../../utils/binding");
|
|
|
12
13
|
const getPlatform = (account) => {
|
|
13
14
|
return account.startsWith('gc-') ? 'gocommerce' : 'vtex';
|
|
14
15
|
};
|
|
15
|
-
|
|
16
|
+
const prepareHandlerCtx = (header, tracingContext) => {
|
|
16
17
|
var _a;
|
|
17
18
|
const partialContext = {
|
|
18
19
|
account: header[constants_1.ACCOUNT_HEADER],
|
|
19
20
|
authToken: header[constants_1.CREDENTIAL_HEADER],
|
|
20
|
-
binding: header[constants_1.BINDING_HEADER] ? binding_1.parseBindingHeaderValue(header[constants_1.BINDING_HEADER]) : undefined,
|
|
21
|
+
binding: header[constants_1.BINDING_HEADER] ? (0, binding_1.parseBindingHeaderValue)(header[constants_1.BINDING_HEADER]) : undefined,
|
|
21
22
|
host: header[constants_1.FORWARDED_HOST_HEADER],
|
|
22
23
|
locale: header[constants_1.LOCALE_HEADER],
|
|
23
|
-
operationId: header[constants_1.OPERATION_ID_HEADER] || v4_1.default(),
|
|
24
|
+
operationId: header[constants_1.OPERATION_ID_HEADER] || (0, v4_1.default)(),
|
|
24
25
|
platform: header[constants_1.PLATFORM_HEADER] || getPlatform(header[constants_1.ACCOUNT_HEADER]),
|
|
25
26
|
product: header[constants_1.PRODUCT_HEADER],
|
|
26
27
|
production: ((_a = header[constants_1.WORKSPACE_IS_PRODUCTION_HEADER]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'true' || false,
|
|
@@ -28,7 +29,7 @@ exports.prepareHandlerCtx = (header, tracingContext) => {
|
|
|
28
29
|
requestId: header[constants_1.REQUEST_ID_HEADER],
|
|
29
30
|
segmentToken: header[constants_1.SEGMENT_HEADER],
|
|
30
31
|
sessionToken: header[constants_1.SESSION_HEADER],
|
|
31
|
-
tenant: header[constants_1.TENANT_HEADER] ? tenant_1.parseTenantHeaderValue(header[constants_1.TENANT_HEADER]) : undefined,
|
|
32
|
+
tenant: header[constants_1.TENANT_HEADER] ? (0, tenant_1.parseTenantHeaderValue)(header[constants_1.TENANT_HEADER]) : undefined,
|
|
32
33
|
tracer: new UserLandTracer_1.UserLandTracer(tracingContext === null || tracingContext === void 0 ? void 0 : tracingContext.tracer, tracingContext === null || tracingContext === void 0 ? void 0 : tracingContext.currentSpan),
|
|
33
34
|
userAgent: process.env.VTEX_APP_ID || '',
|
|
34
35
|
workspace: header[constants_1.WORKSPACE_HEADER],
|
|
@@ -38,3 +39,4 @@ exports.prepareHandlerCtx = (header, tracingContext) => {
|
|
|
38
39
|
logger: new logger_1.Logger(partialContext),
|
|
39
40
|
};
|
|
40
41
|
};
|
|
42
|
+
exports.prepareHandlerCtx = prepareHandlerCtx;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Recorder = void 0;
|
|
3
4
|
const ramda_1 = require("ramda");
|
|
4
5
|
const constants_1 = require("./../../../../constants");
|
|
5
6
|
const HEADERS = [constants_1.META_HEADER, constants_1.META_HEADER_BUCKET];
|
|
@@ -26,7 +27,7 @@ class Recorder {
|
|
|
26
27
|
const newValueSet = new Set(this._record[headerName]);
|
|
27
28
|
const currentValue = ctx.response.get(headerName);
|
|
28
29
|
const parsedCurrentValue = typeof currentValue === 'string' ? currentValue.split(',') : currentValue;
|
|
29
|
-
parsedCurrentValue.forEach(cur => newValueSet.add(ramda_1.trim(cur)));
|
|
30
|
+
parsedCurrentValue.forEach(cur => newValueSet.add((0, ramda_1.trim)(cur)));
|
|
30
31
|
const deduped = Array.from(newValueSet).filter(x => !!x);
|
|
31
32
|
if (deduped.length > 0) {
|
|
32
33
|
ctx.set(headerName, deduped);
|
|
@@ -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.createTokenBucket = void 0;
|
|
6
7
|
const tokenbucket_1 = __importDefault(require("tokenbucket"));
|
|
7
8
|
function createTokenBucket(rateLimit, globalRateTokenBucket) {
|
|
8
9
|
return rateLimit ? new tokenbucket_1.default({
|
package/lib/tracing/Tags.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserlandTags = exports.OpentracingTags = void 0;
|
|
3
4
|
const opentracing_1 = require("opentracing");
|
|
4
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "OpentracingTags", { enumerable: true, get: function () { return opentracing_1.Tags; } });
|
|
5
6
|
exports.UserlandTags = {
|
|
6
7
|
...opentracing_1.Tags,
|
|
7
8
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserLandTracer = exports.createTracingContextFromCarrier = void 0;
|
|
3
4
|
const opentracing_1 = require("opentracing");
|
|
4
5
|
const TracerSingleton_1 = require("../service/tracing/TracerSingleton");
|
|
5
6
|
const utils_1 = require("./utils");
|
|
6
|
-
|
|
7
|
+
const createTracingContextFromCarrier = (newSpanName, carrier) => {
|
|
7
8
|
const tracer = TracerSingleton_1.TracerSingleton.getTracer();
|
|
8
9
|
const rootSpan = tracer.extract(opentracing_1.FORMAT_HTTP_HEADERS, carrier);
|
|
9
10
|
if (rootSpan == null) {
|
|
@@ -14,12 +15,13 @@ exports.createTracingContextFromCarrier = (newSpanName, carrier) => {
|
|
|
14
15
|
userlandTracer.lockFallbackSpan();
|
|
15
16
|
return { span, tracer: userlandTracer };
|
|
16
17
|
};
|
|
18
|
+
exports.createTracingContextFromCarrier = createTracingContextFromCarrier;
|
|
17
19
|
class UserLandTracer {
|
|
18
20
|
constructor(tracer, fallbackSpan) {
|
|
19
21
|
this.tracer = tracer;
|
|
20
22
|
this.fallbackSpan = fallbackSpan;
|
|
21
23
|
this.fallbackSpanLock = false;
|
|
22
|
-
const { traceId, isSampled } = utils_1.getTraceInfo(fallbackSpan);
|
|
24
|
+
const { traceId, isSampled } = (0, utils_1.getTraceInfo)(fallbackSpan);
|
|
23
25
|
this._traceId = traceId;
|
|
24
26
|
this._isSampled = isSampled;
|
|
25
27
|
}
|