@vtex/api 6.48.1-beta.3 → 6.49.0
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 +1 -1
- package/lib/HttpClient/GraphQLClient.d.ts +1 -1
- package/lib/HttpClient/HttpClient.d.ts +3 -2
- package/lib/HttpClient/HttpClient.js +14 -14
- package/lib/HttpClient/agents.d.ts +5 -2
- package/lib/HttpClient/agents.js +10 -4
- package/lib/HttpClient/index.js +7 -2
- package/lib/HttpClient/middlewares/cache.d.ts +1 -1
- package/lib/HttpClient/middlewares/cache.js +43 -44
- package/lib/HttpClient/middlewares/cancellationToken.d.ts +1 -1
- package/lib/HttpClient/middlewares/cancellationToken.js +2 -1
- package/lib/HttpClient/middlewares/inflight.d.ts +1 -1
- package/lib/HttpClient/middlewares/inflight.js +6 -3
- package/lib/HttpClient/middlewares/memoization.d.ts +1 -1
- package/lib/HttpClient/middlewares/memoization.js +9 -8
- package/lib/HttpClient/middlewares/metrics.js +8 -11
- package/lib/HttpClient/middlewares/notFound.d.ts +1 -1
- package/lib/HttpClient/middlewares/notFound.js +4 -2
- package/lib/HttpClient/middlewares/recorder.js +2 -5
- package/lib/HttpClient/middlewares/request/HttpAgentSingleton.js +1 -1
- package/lib/HttpClient/middlewares/request/index.d.ts +1 -1
- package/lib/HttpClient/middlewares/request/index.js +13 -10
- package/lib/HttpClient/middlewares/request/setupAxios/index.d.ts +0 -1
- package/lib/HttpClient/middlewares/request/setupAxios/index.js +5 -4
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/exponentialBackoff.js +6 -5
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/index.js +1 -0
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/index.js +8 -8
- package/lib/HttpClient/middlewares/request/setupAxios/interceptors/tracing/spanSetup.js +10 -8
- package/lib/HttpClient/middlewares/tracing.js +11 -14
- package/lib/HttpClient/typings.d.ts +3 -3
- package/lib/caches/DiskCache.js +3 -3
- package/lib/caches/LRUCache.d.ts +2 -2
- package/lib/caches/LRUDiskCache.d.ts +1 -1
- package/lib/caches/LRUDiskCache.js +3 -3
- package/lib/caches/MultilayeredCache.d.ts +2 -2
- package/lib/caches/MultilayeredCache.js +7 -7
- package/lib/caches/index.js +6 -2
- package/lib/caches/typings.d.ts +5 -5
- package/lib/clients/IOClient.d.ts +1 -1
- package/lib/clients/IOClients.d.ts +1 -1
- package/lib/clients/apps/AppClient.js +1 -1
- package/lib/clients/apps/AppGraphQLClient.js +1 -1
- package/lib/clients/apps/Billing.d.ts +1 -1
- package/lib/clients/apps/Builder.d.ts +7 -7
- package/lib/clients/apps/Builder.js +1 -1
- package/lib/clients/apps/MessagesGraphQL.d.ts +1 -1
- package/lib/clients/apps/MessagesGraphQL.js +3 -3
- package/lib/clients/apps/Settings.js +3 -3
- package/lib/clients/apps/catalogGraphQL/index.d.ts +4 -4
- package/lib/clients/apps/catalogGraphQL/index.js +4 -4
- package/lib/clients/apps/index.js +6 -2
- package/lib/clients/external/ID.d.ts +4 -4
- package/lib/clients/external/PaymentProvider.d.ts +2 -2
- package/lib/clients/external/index.js +6 -2
- package/lib/clients/index.js +6 -2
- package/lib/clients/infra/Apps.d.ts +32 -27
- package/lib/clients/infra/Apps.js +16 -18
- package/lib/clients/infra/Assets.d.ts +6 -5
- package/lib/clients/infra/Assets.js +11 -11
- package/lib/clients/infra/BillingMetrics.d.ts +1 -1
- package/lib/clients/infra/Events.d.ts +1 -1
- package/lib/clients/infra/Events.js +1 -1
- package/lib/clients/infra/Housekeeper.d.ts +3 -3
- package/lib/clients/infra/Registry.d.ts +23 -17
- package/lib/clients/infra/Registry.js +3 -4
- package/lib/clients/infra/Router.d.ts +8 -8
- package/lib/clients/infra/Sphinx.d.ts +2 -2
- package/lib/clients/infra/VBase.d.ts +15 -14
- package/lib/clients/infra/VBase.js +3 -3
- package/lib/clients/infra/Workspaces.d.ts +7 -7
- package/lib/clients/infra/index.js +6 -2
- package/lib/clients/janus/JanusClient.d.ts +1 -1
- package/lib/clients/janus/LicenseManager.js +1 -1
- package/lib/clients/janus/Segment.d.ts +3 -3
- package/lib/clients/janus/Segment.js +2 -2
- package/lib/clients/janus/Session.d.ts +2 -2
- package/lib/clients/janus/Tenant.d.ts +1 -1
- package/lib/clients/janus/index.js +6 -2
- package/lib/constants.d.ts +2 -1
- package/lib/constants.js +3 -2
- package/lib/errors/ResolverError.js +1 -1
- package/lib/errors/index.js +6 -2
- package/lib/index.js +6 -2
- package/lib/metrics/MetricsAccumulator.d.ts +2 -2
- package/lib/metrics/MetricsAccumulator.js +9 -9
- package/lib/responses.d.ts +4 -4
- package/lib/service/index.js +7 -9
- package/lib/service/loaders.js +8 -6
- package/lib/service/logger/client.d.ts +2 -0
- package/lib/service/logger/client.js +48 -0
- package/lib/service/logger/console.d.ts +1 -1
- package/lib/service/logger/console.js +7 -4
- package/lib/service/logger/index.d.ts +2 -0
- package/lib/service/logger/index.js +8 -2
- package/lib/service/logger/logger.d.ts +4 -15
- package/lib/service/logger/logger.js +61 -18
- package/lib/service/logger/loggerTypes.d.ts +14 -0
- package/lib/service/logger/loggerTypes.js +10 -0
- package/lib/service/logger/metricsLogger.js +10 -10
- package/lib/service/master.js +7 -6
- package/lib/service/metrics/requestMetricsMiddleware.js +14 -13
- package/lib/service/telemetry/client.d.ts +3 -0
- package/lib/service/telemetry/client.js +57 -0
- package/lib/service/telemetry/index.d.ts +1 -0
- package/lib/service/telemetry/index.js +17 -0
- package/lib/service/tracing/TracerSingleton.js +9 -9
- package/lib/service/tracing/metrics/MetricNames.js +12 -12
- package/lib/service/tracing/metrics/instruments.js +14 -7
- package/lib/service/tracing/metrics/measurers/EventLoopLagMeasurer.js +5 -5
- package/lib/service/tracing/tracingMiddlewares.js +18 -21
- package/lib/service/worker/index.js +25 -24
- package/lib/service/worker/listeners.js +2 -1
- package/lib/service/worker/runtime/Service.js +1 -1
- package/lib/service/worker/runtime/builtIn/handlers.js +6 -3
- package/lib/service/worker/runtime/builtIn/middlewares.js +5 -3
- package/lib/service/worker/runtime/events/index.d.ts +1 -1
- package/lib/service/worker/runtime/events/index.js +11 -10
- package/lib/service/worker/runtime/events/middlewares/body.js +3 -6
- package/lib/service/worker/runtime/events/middlewares/context.js +1 -1
- package/lib/service/worker/runtime/events/router.js +3 -2
- package/lib/service/worker/runtime/graphql/index.js +8 -7
- package/lib/service/worker/runtime/graphql/middlewares/error.js +5 -8
- package/lib/service/worker/runtime/graphql/middlewares/query.js +7 -6
- package/lib/service/worker/runtime/graphql/middlewares/response.js +1 -1
- package/lib/service/worker/runtime/graphql/middlewares/run.js +3 -2
- package/lib/service/worker/runtime/graphql/middlewares/updateSchema.js +4 -3
- package/lib/service/worker/runtime/graphql/middlewares/upload.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/index.d.ts +1 -1
- package/lib/service/worker/runtime/graphql/schema/index.js +8 -7
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.d.ts +2 -2
- package/lib/service/worker/runtime/graphql/schema/messagesLoaderV2.js +4 -3
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Auth.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Deprecated.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/Settings.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslatableV2.js +2 -2
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/TranslateTo.js +2 -2
- package/lib/service/worker/runtime/graphql/schema/schemaDirectives/index.js +1 -1
- package/lib/service/worker/runtime/graphql/schema/typeDefs/index.js +2 -1
- package/lib/service/worker/runtime/graphql/schema/typeDefs/sanitizedString.js +2 -2
- package/lib/service/worker/runtime/graphql/typings.d.ts +3 -3
- package/lib/service/worker/runtime/graphql/utils/cacheControl.js +2 -1
- package/lib/service/worker/runtime/graphql/utils/error.js +10 -9
- package/lib/service/worker/runtime/graphql/utils/pathname.js +3 -2
- package/lib/service/worker/runtime/graphql/utils/translations.d.ts +1 -1
- package/lib/service/worker/runtime/graphql/utils/translations.js +7 -4
- package/lib/service/worker/runtime/http/index.d.ts +2 -2
- package/lib/service/worker/runtime/http/index.js +22 -20
- package/lib/service/worker/runtime/http/middlewares/context.js +7 -5
- package/lib/service/worker/runtime/http/middlewares/error.js +6 -9
- package/lib/service/worker/runtime/http/middlewares/rateLimit.js +1 -1
- package/lib/service/worker/runtime/http/middlewares/setCookie.js +5 -5
- package/lib/service/worker/runtime/http/middlewares/settings.d.ts +1 -1
- package/lib/service/worker/runtime/http/middlewares/settings.js +13 -9
- package/lib/service/worker/runtime/http/middlewares/timings.js +3 -3
- package/lib/service/worker/runtime/http/router.js +3 -2
- package/lib/service/worker/runtime/http/routes.js +8 -5
- package/lib/service/worker/runtime/method.d.ts +2 -2
- package/lib/service/worker/runtime/method.js +1 -1
- package/lib/service/worker/runtime/statusTrack.d.ts +1 -1
- package/lib/service/worker/runtime/statusTrack.js +10 -5
- package/lib/service/worker/runtime/typings.d.ts +10 -10
- package/lib/service/worker/runtime/utils/compose.d.ts +2 -2
- package/lib/service/worker/runtime/utils/compose.js +4 -2
- package/lib/service/worker/runtime/utils/context.d.ts +2 -2
- package/lib/service/worker/runtime/utils/context.js +5 -4
- package/lib/service/worker/runtime/utils/recorder.js +1 -1
- package/lib/service/worker/runtime/utils/toArray.js +2 -1
- package/lib/tracing/UserLandTracer.js +3 -2
- package/lib/tracing/errorReporting/ErrorReport.js +13 -13
- package/lib/tracing/index.js +1 -1
- package/lib/tracing/utils.js +5 -4
- package/lib/utils/MineWinsConflictsResolver.d.ts +4 -4
- package/lib/utils/MineWinsConflictsResolver.js +10 -10
- package/lib/utils/app.js +39 -23
- package/lib/utils/appsStaleIfError.d.ts +1 -0
- package/lib/utils/appsStaleIfError.js +17 -9
- package/lib/utils/billingOptions.js +2 -1
- package/lib/utils/binding.js +4 -2
- package/lib/utils/domain.js +1 -1
- package/lib/utils/error.js +5 -4
- package/lib/utils/index.js +6 -2
- package/lib/utils/log.js +3 -2
- package/lib/utils/message.js +8 -5
- package/lib/utils/renameBy.js +2 -1
- package/lib/utils/retry.js +8 -6
- package/lib/utils/status.js +2 -1
- package/lib/utils/tenant.js +4 -2
- package/lib/utils/time.d.ts +1 -1
- package/lib/utils/time.js +23 -14
- package/package.json +27 -5
- package/lib/utils/buildFullPath.d.ts +0 -11
- package/lib/utils/buildFullPath.js +0 -54
package/gen/manifest.schema
CHANGED
|
@@ -13,7 +13,7 @@ interface MutateOptions<Variables extends object> {
|
|
|
13
13
|
variables: Variables;
|
|
14
14
|
throwOnError?: boolean;
|
|
15
15
|
}
|
|
16
|
-
export
|
|
16
|
+
export type Serializable = object | boolean | string | number;
|
|
17
17
|
export interface GraphQLResponse<T extends Serializable> {
|
|
18
18
|
data?: T;
|
|
19
19
|
errors?: GraphQLError[];
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
2
3
|
import { AxiosResponse } from 'axios';
|
|
3
4
|
import { IncomingMessage } from 'http';
|
|
4
5
|
import { IOContext } from '../service/worker/runtime/typings';
|
|
5
6
|
import { InstanceOptions, IOResponse, RequestConfig } from './typings';
|
|
6
|
-
|
|
7
|
+
type ClientOptions = IOContext & Partial<InstanceOptions>;
|
|
7
8
|
export declare class HttpClient {
|
|
8
9
|
name: string;
|
|
9
10
|
private logger;
|
|
@@ -25,7 +26,7 @@ export declare class HttpClient {
|
|
|
25
26
|
postRaw: <T = void>(url: string, data?: any, config?: RequestConfig) => Promise<IOResponse<T>>;
|
|
26
27
|
patch: <T = void>(url: string, data?: any, config?: RequestConfig) => Promise<T>;
|
|
27
28
|
head: (url: string, config?: RequestConfig) => Promise<IOResponse<void>>;
|
|
28
|
-
delete: <T = void>(url: string, config?: RequestConfig
|
|
29
|
+
delete: <T = void>(url: string, config?: RequestConfig) => Promise<IOResponse<T>>;
|
|
29
30
|
protected request: (config: RequestConfig) => Promise<AxiosResponse>;
|
|
30
31
|
private getConfig;
|
|
31
32
|
}
|
|
@@ -44,7 +44,7 @@ class HttpClient {
|
|
|
44
44
|
return v;
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
|
-
const bodyHash = crypto_1.createHash('md5').update(JSON.stringify(data, deterministicReplacer)).digest('hex');
|
|
47
|
+
const bodyHash = (0, crypto_1.createHash)('md5').update(JSON.stringify(data, deterministicReplacer)).digest('hex');
|
|
48
48
|
const cacheableConfig = this.getConfig(url, {
|
|
49
49
|
...config,
|
|
50
50
|
data,
|
|
@@ -107,14 +107,14 @@ class HttpClient {
|
|
|
107
107
|
this.logger = logger;
|
|
108
108
|
this.cacheableType = cacheableType;
|
|
109
109
|
this.memoizable = memoizable;
|
|
110
|
-
const limit = concurrency && concurrency > 0 && p_limit_1.default(concurrency) || undefined;
|
|
110
|
+
const limit = concurrency && concurrency > 0 && (0, p_limit_1.default)(concurrency) || undefined;
|
|
111
111
|
const headers = {
|
|
112
112
|
...defaultHeaders,
|
|
113
113
|
'Accept-Encoding': 'gzip',
|
|
114
114
|
'User-Agent': userAgent,
|
|
115
115
|
...host ? { [constants_1.FORWARDED_HOST_HEADER]: host } : null,
|
|
116
|
-
...tenant ? { [constants_1.TENANT_HEADER]: tenant_1.formatTenantHeaderValue(tenant) } : null,
|
|
117
|
-
...binding ? { [constants_1.BINDING_HEADER]: binding_1.formatBindingHeaderValue(binding) } : null,
|
|
116
|
+
...tenant ? { [constants_1.TENANT_HEADER]: (0, tenant_1.formatTenantHeaderValue)(tenant) } : null,
|
|
117
|
+
...binding ? { [constants_1.BINDING_HEADER]: (0, binding_1.formatBindingHeaderValue)(binding) } : null,
|
|
118
118
|
...locale ? { [constants_1.LOCALE_HEADER]: locale } : null,
|
|
119
119
|
...operationId ? { 'x-vtex-operation-id': operationId } : null,
|
|
120
120
|
...product ? { [constants_1.PRODUCT_HEADER]: product } : null,
|
|
@@ -125,21 +125,21 @@ class HttpClient {
|
|
|
125
125
|
headers['Authorization'] = `${authType} ${authToken}`; // tslint:disable-line
|
|
126
126
|
}
|
|
127
127
|
const memoizedCache = new Map();
|
|
128
|
-
this.runMiddlewares = koa_compose_1.default([
|
|
129
|
-
tracing_1.createHttpClientTracingMiddleware({ tracer, logger, clientName: this.name, hasDiskCacheMiddleware: !!diskCache, hasMemoryCacheMiddleware: !!memoryCache }),
|
|
128
|
+
this.runMiddlewares = (0, koa_compose_1.default)([
|
|
129
|
+
(0, tracing_1.createHttpClientTracingMiddleware)({ tracer, logger, clientName: this.name, hasDiskCacheMiddleware: !!diskCache, hasMemoryCacheMiddleware: !!memoryCache }),
|
|
130
130
|
...(opts.middlewares || []),
|
|
131
|
-
request_1.defaultsMiddleware({ baseURL, rawHeaders: headers, params, timeout, retries, verbose, exponentialTimeoutCoefficient, initialBackoffDelay, exponentialBackoffCoefficient, httpsAgent }),
|
|
132
|
-
metrics_1.metricsMiddleware({ metrics, serverTiming, name }),
|
|
133
|
-
memoization_1.memoizationMiddleware({ memoizedCache }),
|
|
134
|
-
...recorder ? [recorder_1.recorderMiddleware(recorder)] : [],
|
|
135
|
-
cancellationToken_1.cancellationToken(cancellation),
|
|
131
|
+
(0, request_1.defaultsMiddleware)({ baseURL, rawHeaders: headers, params, timeout, retries, verbose, exponentialTimeoutCoefficient, initialBackoffDelay, exponentialBackoffCoefficient, httpsAgent }),
|
|
132
|
+
(0, metrics_1.metricsMiddleware)({ metrics, serverTiming, name }),
|
|
133
|
+
(0, memoization_1.memoizationMiddleware)({ memoizedCache }),
|
|
134
|
+
...recorder ? [(0, recorder_1.recorderMiddleware)(recorder)] : [],
|
|
135
|
+
(0, cancellationToken_1.cancellationToken)(cancellation),
|
|
136
136
|
inflight_1.singleFlightMiddleware,
|
|
137
137
|
notFound_1.acceptNotFoundMiddleware,
|
|
138
|
-
...memoryCache ? [cache_1.cacheMiddleware({ type: cache_1.CacheType.Memory, storage: memoryCache, asyncSet: asyncSetCache })] : [],
|
|
139
|
-
...diskCache ? [cache_1.cacheMiddleware({ type: cache_1.CacheType.Disk, storage: diskCache, asyncSet: asyncSetCache })] : [],
|
|
138
|
+
...memoryCache ? [(0, cache_1.cacheMiddleware)({ type: cache_1.CacheType.Memory, storage: memoryCache, asyncSet: asyncSetCache })] : [],
|
|
139
|
+
...diskCache ? [(0, cache_1.cacheMiddleware)({ type: cache_1.CacheType.Disk, storage: diskCache, asyncSet: asyncSetCache })] : [],
|
|
140
140
|
notFound_1.notFoundFallbackMiddleware,
|
|
141
141
|
request_1.routerCacheMiddleware,
|
|
142
|
-
request_1.requestMiddleware(limit),
|
|
142
|
+
(0, request_1.requestMiddleware)(limit),
|
|
143
143
|
]);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import HttpAgent, { HttpOptions as AgentHttpOptions, HttpsAgent, HttpsOptions as AgentHttpsOptions } from 'agentkeepalive';
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
2
|
+
type HttpOptions = Omit<AgentHttpOptions, 'freeSocketTimeout' | 'keepAlive' | 'maxFreeSockets'>;
|
|
3
|
+
export declare const createHttpAgent: (opts?: HttpOptions) => HttpAgent;
|
|
4
|
+
type HttpsOptions = Omit<AgentHttpsOptions, 'freeSocketTimeout' | 'keepAlive' | 'maxFreeSockets'>;
|
|
5
|
+
export declare const createHttpsAgent: (opts?: HttpsOptions) => HttpsAgent;
|
|
6
|
+
export {};
|
package/lib/HttpClient/agents.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -14,24 +18,26 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
14
18
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
19
|
if (mod && mod.__esModule) return mod;
|
|
16
20
|
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
22
|
__setModuleDefault(result, mod);
|
|
19
23
|
return result;
|
|
20
24
|
};
|
|
21
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
26
|
exports.createHttpsAgent = exports.createHttpAgent = void 0;
|
|
23
27
|
const agentkeepalive_1 = __importStar(require("agentkeepalive"));
|
|
24
|
-
|
|
28
|
+
const createHttpAgent = (opts) => new agentkeepalive_1.default({
|
|
25
29
|
...opts,
|
|
26
30
|
freeSocketTimeout: 30 * 1000,
|
|
27
31
|
keepAlive: true,
|
|
28
32
|
maxFreeSockets: 256,
|
|
29
33
|
socketActiveTTL: 120 * 1000,
|
|
30
34
|
});
|
|
31
|
-
exports.
|
|
35
|
+
exports.createHttpAgent = createHttpAgent;
|
|
36
|
+
const createHttpsAgent = (opts) => new agentkeepalive_1.HttpsAgent({
|
|
32
37
|
...opts,
|
|
33
38
|
freeSocketTimeout: 30 * 1000,
|
|
34
39
|
keepAlive: true,
|
|
35
40
|
maxFreeSockets: 256,
|
|
36
41
|
socketActiveTTL: 120 * 1000,
|
|
37
42
|
});
|
|
43
|
+
exports.createHttpsAgent = createHttpsAgent;
|
package/lib/HttpClient/index.js
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
8
12
|
}));
|
|
9
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
15
|
};
|
|
12
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.inflightUrlWithQuery = exports.inflightURL = exports.CacheType = void 0;
|
|
13
18
|
__exportStar(require("./HttpClient"), exports);
|
|
14
19
|
__exportStar(require("./typings"), exports);
|
|
15
20
|
__exportStar(require("./GraphQLClient"), exports);
|
|
@@ -28,7 +28,7 @@ export interface Cached {
|
|
|
28
28
|
responseType?: string;
|
|
29
29
|
responseEncoding?: BufferEncoding;
|
|
30
30
|
}
|
|
31
|
-
export
|
|
31
|
+
export type CacheableRequestConfig = RequestConfig & {
|
|
32
32
|
url: string;
|
|
33
33
|
cacheable: CacheType;
|
|
34
34
|
memoizable: boolean;
|
|
@@ -5,9 +5,9 @@ const constants_1 = require("../../constants");
|
|
|
5
5
|
const tracing_1 = require("../../tracing");
|
|
6
6
|
const RANGE_HEADER_QS_KEY = '__range_header';
|
|
7
7
|
const cacheableStatusCodes = [200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501]; // https://tools.ietf.org/html/rfc7231#section-6.1
|
|
8
|
-
|
|
8
|
+
const cacheKey = (config) => {
|
|
9
9
|
const { baseURL = '', url = '', params, headers } = config;
|
|
10
|
-
const locale = headers
|
|
10
|
+
const locale = headers[constants_1.LOCALE_HEADER];
|
|
11
11
|
const encodedBaseURL = baseURL.replace(/\//g, '\\');
|
|
12
12
|
const encodedURL = url.replace(/\//g, '\\');
|
|
13
13
|
let key = `${locale}--${encodedBaseURL}--${encodedURL}?`;
|
|
@@ -19,6 +19,7 @@ exports.cacheKey = (config) => {
|
|
|
19
19
|
}
|
|
20
20
|
return key;
|
|
21
21
|
};
|
|
22
|
+
exports.cacheKey = cacheKey;
|
|
22
23
|
const parseCacheHeaders = (headers) => {
|
|
23
24
|
const { 'cache-control': cacheControl = '', etag, age: ageStr } = headers;
|
|
24
25
|
const cacheDirectives = cacheControl.split(',').map(d => d.trim());
|
|
@@ -53,23 +54,23 @@ const CacheTypeNames = {
|
|
|
53
54
|
[CacheType.Disk]: 'disk',
|
|
54
55
|
[CacheType.Any]: 'any',
|
|
55
56
|
};
|
|
56
|
-
|
|
57
|
-
const CACHE_RESULT_TAG = type === CacheType.Disk ? "http.cache.disk" /* HTTP_DISK_CACHE_RESULT */ : "http.cache.memory" /* HTTP_MEMORY_CACHE_RESULT */;
|
|
57
|
+
const cacheMiddleware = ({ type, storage, asyncSet }) => {
|
|
58
|
+
const CACHE_RESULT_TAG = type === CacheType.Disk ? "http.cache.disk" /* CustomHttpTags.HTTP_DISK_CACHE_RESULT */ : "http.cache.memory" /* CustomHttpTags.HTTP_MEMORY_CACHE_RESULT */;
|
|
58
59
|
const cacheType = CacheTypeNames[type];
|
|
59
60
|
return async (ctx, next) => {
|
|
60
|
-
var _a
|
|
61
|
+
var _a;
|
|
61
62
|
if (!isLocallyCacheable(ctx.config, type)) {
|
|
62
63
|
return await next();
|
|
63
64
|
}
|
|
64
65
|
const { rootSpan: span, tracer, logger } = (_a = ctx.tracing) !== null && _a !== void 0 ? _a : {};
|
|
65
|
-
const key = exports.cacheKey(ctx.config);
|
|
66
|
-
const segmentToken =
|
|
66
|
+
const key = (0, exports.cacheKey)(ctx.config);
|
|
67
|
+
const segmentToken = ctx.config.headers[constants_1.SEGMENT_HEADER];
|
|
67
68
|
const keyWithSegment = key + segmentToken;
|
|
68
69
|
span === null || span === void 0 ? void 0 : span.log({
|
|
69
|
-
event: "cache-key-created" /* CACHE_KEY_CREATE */,
|
|
70
|
-
["cache-type" /* CACHE_TYPE */]: cacheType,
|
|
71
|
-
["key" /* KEY */]: key,
|
|
72
|
-
["key-with-segment" /* KEY_WITH_SEGMENT */]: keyWithSegment,
|
|
70
|
+
event: "cache-key-created" /* HttpLogEvents.CACHE_KEY_CREATE */,
|
|
71
|
+
["cache-type" /* HttpCacheLogFields.CACHE_TYPE */]: cacheType,
|
|
72
|
+
["key" /* HttpCacheLogFields.KEY */]: key,
|
|
73
|
+
["key-with-segment" /* HttpCacheLogFields.KEY_WITH_SEGMENT */]: keyWithSegment,
|
|
73
74
|
});
|
|
74
75
|
const cacheReadSpan = createCacheSpan(cacheType, 'read', tracer, span);
|
|
75
76
|
let cached = undefined;
|
|
@@ -91,12 +92,12 @@ exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
|
|
|
91
92
|
}
|
|
92
93
|
const now = Date.now();
|
|
93
94
|
span === null || span === void 0 ? void 0 : span.log({
|
|
94
|
-
event: "local-cache-hit-info" /* LOCAL_CACHE_HIT_INFO */,
|
|
95
|
-
["cache-type" /* CACHE_TYPE */]: cacheType,
|
|
96
|
-
["etag" /* ETAG */]: cachedEtag,
|
|
97
|
-
["expiration-time" /* EXPIRATION_TIME */]: (expiration - now) / 1000,
|
|
98
|
-
["response-type" /* RESPONSE_TYPE */]: responseType,
|
|
99
|
-
["response-encoding" /* RESPONSE_ENCONDING */]: responseEncoding,
|
|
95
|
+
event: "local-cache-hit-info" /* HttpLogEvents.LOCAL_CACHE_HIT_INFO */,
|
|
96
|
+
["cache-type" /* HttpCacheLogFields.CACHE_TYPE */]: cacheType,
|
|
97
|
+
["etag" /* HttpCacheLogFields.ETAG */]: cachedEtag,
|
|
98
|
+
["expiration-time" /* HttpCacheLogFields.EXPIRATION_TIME */]: (expiration - now) / 1000,
|
|
99
|
+
["response-type" /* HttpCacheLogFields.RESPONSE_TYPE */]: responseType,
|
|
100
|
+
["response-encoding" /* HttpCacheLogFields.RESPONSE_ENCONDING */]: responseEncoding,
|
|
100
101
|
});
|
|
101
102
|
if (expiration > now) {
|
|
102
103
|
ctx.response = response;
|
|
@@ -105,21 +106,18 @@ exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
|
|
|
105
106
|
revalidated: 0,
|
|
106
107
|
router: 0,
|
|
107
108
|
};
|
|
108
|
-
span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "HIT" /* HIT */);
|
|
109
|
+
span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "HIT" /* CacheResult.HIT */);
|
|
109
110
|
return;
|
|
110
111
|
}
|
|
111
|
-
span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "STALE" /* STALE */);
|
|
112
|
+
span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "STALE" /* CacheResult.STALE */);
|
|
112
113
|
const validateStatus = addNotModified(ctx.config.validateStatus);
|
|
113
114
|
if (cachedEtag && validateStatus(response.status)) {
|
|
114
|
-
ctx.config.headers =
|
|
115
|
-
...ctx.config.headers,
|
|
116
|
-
'if-none-match': cachedEtag
|
|
117
|
-
};
|
|
115
|
+
ctx.config.headers['if-none-match'] = cachedEtag;
|
|
118
116
|
ctx.config.validateStatus = validateStatus;
|
|
119
117
|
}
|
|
120
118
|
}
|
|
121
119
|
else {
|
|
122
|
-
span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "MISS" /* MISS */);
|
|
120
|
+
span === null || span === void 0 ? void 0 : span.setTag(CACHE_RESULT_TAG, "MISS" /* CacheResult.MISS */);
|
|
123
121
|
}
|
|
124
122
|
await next();
|
|
125
123
|
if (!ctx.response) {
|
|
@@ -139,19 +137,19 @@ exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
|
|
|
139
137
|
const { forceMaxAge } = ctx.config;
|
|
140
138
|
const maxAge = forceMaxAge && cacheableStatusCodes.includes(status) ? Math.max(forceMaxAge, headerMaxAge) : headerMaxAge;
|
|
141
139
|
span === null || span === void 0 ? void 0 : span.log({
|
|
142
|
-
event: "cache-config" /* CACHE_CONFIG */,
|
|
143
|
-
["cache-type" /* CACHE_TYPE */]: cacheType,
|
|
144
|
-
["age" /* AGE */]: age,
|
|
145
|
-
["calculated-max-age" /* CALCULATED_MAX_AGE */]: maxAge,
|
|
146
|
-
["max-age" /* MAX_AGE */]: headerMaxAge,
|
|
147
|
-
["force-max-age" /* FORCE_MAX_AGE */]: forceMaxAge,
|
|
148
|
-
["etag" /* ETAG */]: etag,
|
|
149
|
-
["no-cache" /* NO_CACHE */]: noCache,
|
|
150
|
-
["no-store" /* NO_STORE */]: noStore,
|
|
140
|
+
event: "cache-config" /* HttpLogEvents.CACHE_CONFIG */,
|
|
141
|
+
["cache-type" /* HttpCacheLogFields.CACHE_TYPE */]: cacheType,
|
|
142
|
+
["age" /* HttpCacheLogFields.AGE */]: age,
|
|
143
|
+
["calculated-max-age" /* HttpCacheLogFields.CALCULATED_MAX_AGE */]: maxAge,
|
|
144
|
+
["max-age" /* HttpCacheLogFields.MAX_AGE */]: headerMaxAge,
|
|
145
|
+
["force-max-age" /* HttpCacheLogFields.FORCE_MAX_AGE */]: forceMaxAge,
|
|
146
|
+
["etag" /* HttpCacheLogFields.ETAG */]: etag,
|
|
147
|
+
["no-cache" /* HttpCacheLogFields.NO_CACHE */]: noCache,
|
|
148
|
+
["no-store" /* HttpCacheLogFields.NO_STORE */]: noStore,
|
|
151
149
|
});
|
|
152
150
|
// Indicates this should NOT be cached and this request will not be considered a miss.
|
|
153
151
|
if (!forceMaxAge && (noStore || (noCache && !etag))) {
|
|
154
|
-
span === null || span === void 0 ? void 0 : span.log({ event: "no-local-cache-save" /* NO_LOCAL_CACHE_SAVE */, ["cache-type" /* CACHE_TYPE */]: cacheType });
|
|
152
|
+
span === null || span === void 0 ? void 0 : span.log({ event: "no-local-cache-save" /* HttpLogEvents.NO_LOCAL_CACHE_SAVE */, ["cache-type" /* HttpCacheLogFields.CACHE_TYPE */]: cacheType });
|
|
155
153
|
return;
|
|
156
154
|
}
|
|
157
155
|
const shouldCache = maxAge || etag;
|
|
@@ -179,7 +177,7 @@ exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
|
|
|
179
177
|
etag,
|
|
180
178
|
expiration,
|
|
181
179
|
response: { data: cacheableData, headers, status },
|
|
182
|
-
responseEncoding
|
|
180
|
+
responseEncoding,
|
|
183
181
|
responseType,
|
|
184
182
|
});
|
|
185
183
|
if (asyncSet) {
|
|
@@ -188,14 +186,14 @@ exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
|
|
|
188
186
|
else {
|
|
189
187
|
await storageSet();
|
|
190
188
|
span === null || span === void 0 ? void 0 : span.log({
|
|
191
|
-
event: "local-cache-saved" /* LOCAL_CACHE_SAVED */,
|
|
192
|
-
["cache-type" /* CACHE_TYPE */]: cacheType,
|
|
193
|
-
["key-set" /* KEY_SET */]: setKey,
|
|
194
|
-
["age" /* AGE */]: currentAge,
|
|
195
|
-
["etag" /* ETAG */]: etag,
|
|
196
|
-
["expiration-time" /* EXPIRATION_TIME */]: (expiration - Date.now()) / 1000,
|
|
197
|
-
["response-encoding" /* RESPONSE_ENCONDING */]: responseEncoding,
|
|
198
|
-
["response-type" /* RESPONSE_TYPE */]: responseType,
|
|
189
|
+
event: "local-cache-saved" /* HttpLogEvents.LOCAL_CACHE_SAVED */,
|
|
190
|
+
["cache-type" /* HttpCacheLogFields.CACHE_TYPE */]: cacheType,
|
|
191
|
+
["key-set" /* HttpCacheLogFields.KEY_SET */]: setKey,
|
|
192
|
+
["age" /* HttpCacheLogFields.AGE */]: currentAge,
|
|
193
|
+
["etag" /* HttpCacheLogFields.ETAG */]: etag,
|
|
194
|
+
["expiration-time" /* HttpCacheLogFields.EXPIRATION_TIME */]: (expiration - Date.now()) / 1000,
|
|
195
|
+
["response-encoding" /* HttpCacheLogFields.RESPONSE_ENCONDING */]: responseEncoding,
|
|
196
|
+
["response-type" /* HttpCacheLogFields.RESPONSE_TYPE */]: responseType,
|
|
199
197
|
});
|
|
200
198
|
}
|
|
201
199
|
}
|
|
@@ -208,9 +206,10 @@ exports.cacheMiddleware = ({ type, storage, asyncSet }) => {
|
|
|
208
206
|
}
|
|
209
207
|
return;
|
|
210
208
|
}
|
|
211
|
-
span === null || span === void 0 ? void 0 : span.log({ event: "no-local-cache-save" /* NO_LOCAL_CACHE_SAVE */, ["cache-type" /* CACHE_TYPE */]: cacheType });
|
|
209
|
+
span === null || span === void 0 ? void 0 : span.log({ event: "no-local-cache-save" /* HttpLogEvents.NO_LOCAL_CACHE_SAVE */, ["cache-type" /* HttpCacheLogFields.CACHE_TYPE */]: cacheType });
|
|
212
210
|
};
|
|
213
211
|
};
|
|
212
|
+
exports.cacheMiddleware = cacheMiddleware;
|
|
214
213
|
const createCacheSpan = (cacheType, operation, tracer, parentSpan) => {
|
|
215
214
|
if (tracer && tracer.isTraceSampled && cacheType === 'disk') {
|
|
216
215
|
return tracer.startSpan(`${operation}-disk-cache`, { childOf: parentSpan });
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Cancellation } from '../../service/worker/runtime/typings';
|
|
2
2
|
import { MiddlewareContext } from '../typings';
|
|
3
|
-
export declare const cancellationToken: (cancellation?: Cancellation
|
|
3
|
+
export declare const cancellationToken: (cancellation?: Cancellation) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
|
|
@@ -43,7 +43,7 @@ const handleCancellation = (ctx, cancellation) => {
|
|
|
43
43
|
},
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
-
|
|
46
|
+
const cancellationToken = (cancellation) => async (ctx, next) => {
|
|
47
47
|
const { config: { method } } = ctx;
|
|
48
48
|
if (!cancellation) {
|
|
49
49
|
return await next();
|
|
@@ -71,3 +71,4 @@ exports.cancellationToken = (cancellation) => async (ctx, next) => {
|
|
|
71
71
|
onRequestFinish();
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
|
+
exports.cancellationToken = cancellationToken;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InflightKeyGenerator, MiddlewareContext } from '../typings';
|
|
2
|
-
export
|
|
2
|
+
export type Inflight = Required<Pick<MiddlewareContext, 'cacheHit' | 'response'>>;
|
|
3
3
|
export declare const singleFlightMiddleware: (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
|
|
4
4
|
export declare const inflightURL: InflightKeyGenerator;
|
|
5
5
|
export declare const inflightUrlWithQuery: InflightKeyGenerator;
|
|
@@ -4,7 +4,7 @@ exports.inflightUrlWithQuery = exports.inflightURL = exports.singleFlightMiddlew
|
|
|
4
4
|
const qs_1 = require("qs");
|
|
5
5
|
const inflight = new Map();
|
|
6
6
|
let metricsAdded = false;
|
|
7
|
-
|
|
7
|
+
const singleFlightMiddleware = async (ctx, next) => {
|
|
8
8
|
const { inflightKey } = ctx.config;
|
|
9
9
|
if (!inflightKey) {
|
|
10
10
|
return await next();
|
|
@@ -47,5 +47,8 @@ exports.singleFlightMiddleware = async (ctx, next) => {
|
|
|
47
47
|
await promise;
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
exports.
|
|
51
|
-
|
|
50
|
+
exports.singleFlightMiddleware = singleFlightMiddleware;
|
|
51
|
+
const inflightURL = ({ baseURL, url }) => baseURL + url;
|
|
52
|
+
exports.inflightURL = inflightURL;
|
|
53
|
+
const inflightUrlWithQuery = ({ baseURL, url, params }) => baseURL + url + (0, qs_1.stringify)(params, { arrayFormat: 'repeat', addQueryPrefix: true });
|
|
54
|
+
exports.inflightUrlWithQuery = inflightUrlWithQuery;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MiddlewareContext } from '../typings';
|
|
2
|
-
export
|
|
2
|
+
export type Memoized = Required<Pick<MiddlewareContext, 'cacheHit' | 'response'>>;
|
|
3
3
|
interface MemoizationOptions {
|
|
4
4
|
memoizedCache: Map<string, Promise<Memoized>>;
|
|
5
5
|
}
|
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.memoizationMiddleware = void 0;
|
|
4
4
|
const cache_1 = require("./cache");
|
|
5
|
-
|
|
5
|
+
const memoizationMiddleware = ({ memoizedCache }) => {
|
|
6
6
|
return async (ctx, next) => {
|
|
7
7
|
var _a;
|
|
8
|
-
if (!cache_1.isLocallyCacheable(ctx.config, cache_1.CacheType.Any) || !ctx.config.memoizable) {
|
|
8
|
+
if (!(0, cache_1.isLocallyCacheable)(ctx.config, cache_1.CacheType.Any) || !ctx.config.memoizable) {
|
|
9
9
|
return next();
|
|
10
10
|
}
|
|
11
11
|
const span = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.rootSpan;
|
|
12
|
-
const key = cache_1.cacheKey(ctx.config);
|
|
12
|
+
const key = (0, cache_1.cacheKey)(ctx.config);
|
|
13
13
|
const isMemoized = !!memoizedCache.has(key);
|
|
14
|
-
span === null || span === void 0 ? void 0 : span.log({ event: "cache-key-created" /* CACHE_KEY_CREATE */, ["cache-type" /* CACHE_TYPE */]: 'memoization', ["key" /* KEY */]: key });
|
|
14
|
+
span === null || span === void 0 ? void 0 : span.log({ event: "cache-key-created" /* HttpLogEvents.CACHE_KEY_CREATE */, ["cache-type" /* HttpCacheLogFields.CACHE_TYPE */]: 'memoization', ["key" /* HttpCacheLogFields.KEY */]: key });
|
|
15
15
|
if (isMemoized) {
|
|
16
|
-
span === null || span === void 0 ? void 0 : span.setTag("http.cache.memoization" /* HTTP_MEMOIZATION_CACHE_RESULT */, "HIT" /* HIT */);
|
|
16
|
+
span === null || span === void 0 ? void 0 : span.setTag("http.cache.memoization" /* CustomHttpTags.HTTP_MEMOIZATION_CACHE_RESULT */, "HIT" /* CacheResult.HIT */);
|
|
17
17
|
const memoized = await memoizedCache.get(key);
|
|
18
18
|
ctx.memoizedHit = isMemoized;
|
|
19
19
|
ctx.response = memoized.response;
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
|
-
span === null || span === void 0 ? void 0 : span.setTag("http.cache.memoization" /* HTTP_MEMOIZATION_CACHE_RESULT */, "MISS" /* MISS */);
|
|
23
|
+
span === null || span === void 0 ? void 0 : span.setTag("http.cache.memoization" /* CustomHttpTags.HTTP_MEMOIZATION_CACHE_RESULT */, "MISS" /* CacheResult.MISS */);
|
|
24
24
|
const promise = new Promise(async (resolve, reject) => {
|
|
25
25
|
try {
|
|
26
26
|
await next();
|
|
@@ -28,11 +28,11 @@ exports.memoizationMiddleware = ({ memoizedCache }) => {
|
|
|
28
28
|
cacheHit: ctx.cacheHit,
|
|
29
29
|
response: ctx.response,
|
|
30
30
|
});
|
|
31
|
-
span === null || span === void 0 ? void 0 : span.log({ event: "memoization-cache-saved" /* MEMOIZATION_CACHE_SAVED */, ["key-set" /* KEY_SET */]: key });
|
|
31
|
+
span === null || span === void 0 ? void 0 : span.log({ event: "memoization-cache-saved" /* HttpLogEvents.MEMOIZATION_CACHE_SAVED */, ["key-set" /* HttpCacheLogFields.KEY_SET */]: key });
|
|
32
32
|
}
|
|
33
33
|
catch (err) {
|
|
34
34
|
reject(err);
|
|
35
|
-
span === null || span === void 0 ? void 0 : span.log({ event: "memoization-cache-saved-error" /* MEMOIZATION_CACHE_SAVED_ERROR */, ["key-set" /* KEY_SET */]: key });
|
|
35
|
+
span === null || span === void 0 ? void 0 : span.log({ event: "memoization-cache-saved-error" /* HttpLogEvents.MEMOIZATION_CACHE_SAVED_ERROR */, ["key-set" /* HttpCacheLogFields.KEY_SET */]: key });
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
memoizedCache.set(key, promise);
|
|
@@ -40,3 +40,4 @@ exports.memoizationMiddleware = ({ memoizedCache }) => {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
};
|
|
43
|
+
exports.memoizationMiddleware = memoizationMiddleware;
|
|
@@ -6,10 +6,9 @@ const requestStats_1 = require("../../service/worker/runtime/http/middlewares/re
|
|
|
6
6
|
const utils_1 = require("../../utils");
|
|
7
7
|
const retry_1 = require("../../utils/retry");
|
|
8
8
|
const status_1 = require("../../utils/status");
|
|
9
|
-
const
|
|
10
|
-
exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
|
|
9
|
+
const metricsMiddleware = ({ metrics, serverTiming, name }) => {
|
|
11
10
|
const serverTimingStart = process.hrtime();
|
|
12
|
-
const serverTimingLabel = utils_1.shrinkTimings(utils_1.formatTimingName({
|
|
11
|
+
const serverTimingLabel = (0, utils_1.shrinkTimings)((0, utils_1.formatTimingName)({
|
|
13
12
|
hopNumber: 0,
|
|
14
13
|
source: process.env.VTEX_APP_NAME,
|
|
15
14
|
target: name || 'unknown',
|
|
@@ -25,13 +24,10 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
|
|
|
25
24
|
}
|
|
26
25
|
await next();
|
|
27
26
|
if (ctx.config.metric && ctx.response && ctx.response.status) {
|
|
28
|
-
status = status_1.statusLabel(ctx.response.status);
|
|
27
|
+
status = (0, status_1.statusLabel)(ctx.response.status);
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
catch (err) {
|
|
32
|
-
if (!(err instanceof axios_1.AxiosError)) {
|
|
33
|
-
throw err;
|
|
34
|
-
}
|
|
35
31
|
const isCancelled = (err.message === requestStats_1.cancelMessage);
|
|
36
32
|
if (ctx.config.metric) {
|
|
37
33
|
errorCode = err.code;
|
|
@@ -43,7 +39,7 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
|
|
|
43
39
|
status = 'timeout';
|
|
44
40
|
}
|
|
45
41
|
else if (err.response && err.response.status) {
|
|
46
|
-
status = status_1.statusLabel(err.response.status);
|
|
42
|
+
status = (0, status_1.statusLabel)(err.response.status);
|
|
47
43
|
}
|
|
48
44
|
else if (isCancelled) {
|
|
49
45
|
status = 'cancelled';
|
|
@@ -89,9 +85,9 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
|
|
|
89
85
|
...extensions,
|
|
90
86
|
...errorCode || errorStatus ? { errorCode, errorStatus } : null,
|
|
91
87
|
millis: end
|
|
92
|
-
? utils_1.hrToMillis(end)
|
|
88
|
+
? (0, utils_1.hrToMillis)(end)
|
|
93
89
|
: extensions.revalidated || extensions.router || status !== 'success'
|
|
94
|
-
? utils_1.hrToMillis(process.hrtime(start))
|
|
90
|
+
? (0, utils_1.hrToMillis)(process.hrtime(start))
|
|
95
91
|
: '(from cache)',
|
|
96
92
|
status: ctx.response && ctx.response.status,
|
|
97
93
|
headers: ctx.response && ctx.response.headers,
|
|
@@ -105,7 +101,7 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
|
|
|
105
101
|
}
|
|
106
102
|
if (serverTiming) {
|
|
107
103
|
// Timings in the client's perspective
|
|
108
|
-
const dur = utils_1.hrToMillis(process.hrtime(serverTimingStart));
|
|
104
|
+
const dur = (0, utils_1.hrToMillis)(process.hrtime(serverTimingStart));
|
|
109
105
|
if (!serverTiming[serverTimingLabel] || Number(serverTiming[serverTimingLabel]) < dur) {
|
|
110
106
|
serverTiming[serverTimingLabel] = `${dur}`;
|
|
111
107
|
}
|
|
@@ -113,3 +109,4 @@ exports.metricsMiddleware = ({ metrics, serverTiming, name }) => {
|
|
|
113
109
|
}
|
|
114
110
|
};
|
|
115
111
|
};
|
|
112
|
+
exports.metricsMiddleware = metricsMiddleware;
|
|
@@ -2,6 +2,6 @@ import { AxiosRequestConfig } from 'axios';
|
|
|
2
2
|
import { MiddlewareContext } from '../typings';
|
|
3
3
|
export declare const acceptNotFoundMiddleware: (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
|
|
4
4
|
export declare const notFoundFallbackMiddleware: (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
|
|
5
|
-
export
|
|
5
|
+
export type IgnoreNotFoundRequestConfig = AxiosRequestConfig & {
|
|
6
6
|
nullIfNotFound?: boolean;
|
|
7
7
|
};
|
|
@@ -5,17 +5,19 @@ const addNotFound = (validateStatus) => (status) => validateStatus(status) || st
|
|
|
5
5
|
function nullIfNotFound(config) {
|
|
6
6
|
return config && config.nullIfNotFound;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
const acceptNotFoundMiddleware = async (ctx, next) => {
|
|
9
9
|
const { config } = ctx;
|
|
10
10
|
if (nullIfNotFound(config)) {
|
|
11
11
|
ctx.config.validateStatus = addNotFound(config.validateStatus);
|
|
12
12
|
}
|
|
13
13
|
await next();
|
|
14
14
|
};
|
|
15
|
-
exports.
|
|
15
|
+
exports.acceptNotFoundMiddleware = acceptNotFoundMiddleware;
|
|
16
|
+
const notFoundFallbackMiddleware = async (ctx, next) => {
|
|
16
17
|
await next();
|
|
17
18
|
const { config } = ctx;
|
|
18
19
|
if (nullIfNotFound(config) && ctx.response && ctx.response.status === 404) {
|
|
19
20
|
ctx.response.data = null;
|
|
20
21
|
}
|
|
21
22
|
};
|
|
23
|
+
exports.notFoundFallbackMiddleware = notFoundFallbackMiddleware;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.recorderMiddleware = void 0;
|
|
4
|
-
const
|
|
5
|
-
exports.recorderMiddleware = (recorder) => async (ctx, next) => {
|
|
4
|
+
const recorderMiddleware = (recorder) => async (ctx, next) => {
|
|
6
5
|
var _a;
|
|
7
6
|
if ((_a = ctx.config) === null || _a === void 0 ? void 0 : _a.ignoreRecorder) {
|
|
8
7
|
await next();
|
|
@@ -15,12 +14,10 @@ exports.recorderMiddleware = (recorder) => async (ctx, next) => {
|
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
16
|
catch (err) {
|
|
18
|
-
if (!(err instanceof axios_1.AxiosError)) {
|
|
19
|
-
throw err;
|
|
20
|
-
}
|
|
21
17
|
if (err.response && err.response.headers && err.response.status === 404) {
|
|
22
18
|
recorder.record(err.response.headers);
|
|
23
19
|
}
|
|
24
20
|
throw err;
|
|
25
21
|
}
|
|
26
22
|
};
|
|
23
|
+
exports.recorderMiddleware = recorderMiddleware;
|
|
@@ -5,7 +5,7 @@ const agents_1 = require("../../agents");
|
|
|
5
5
|
class HttpAgentSingleton {
|
|
6
6
|
static getHttpAgent() {
|
|
7
7
|
if (!HttpAgentSingleton.httpAgent) {
|
|
8
|
-
HttpAgentSingleton.httpAgent = agents_1.createHttpAgent();
|
|
8
|
+
HttpAgentSingleton.httpAgent = (0, agents_1.createHttpAgent)();
|
|
9
9
|
}
|
|
10
10
|
return HttpAgentSingleton.httpAgent;
|
|
11
11
|
}
|
|
@@ -15,4 +15,4 @@ export interface DefaultMiddlewareArgs {
|
|
|
15
15
|
}
|
|
16
16
|
export declare const defaultsMiddleware: ({ baseURL, rawHeaders, params, timeout, retries, verbose, exponentialTimeoutCoefficient, initialBackoffDelay, exponentialBackoffCoefficient, httpsAgent }: DefaultMiddlewareArgs) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
|
|
17
17
|
export declare const routerCacheMiddleware: (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
|
|
18
|
-
export declare const requestMiddleware: (limit?: Limit
|
|
18
|
+
export declare const requestMiddleware: (limit?: Limit) => (ctx: MiddlewareContext, next: () => Promise<void>) => Promise<void>;
|