@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
|
@@ -4,7 +4,7 @@ exports.routerFromPublicHttpHandlers = void 0;
|
|
|
4
4
|
const constants_1 = require("../../../../constants");
|
|
5
5
|
const logger_1 = require("../../../logger");
|
|
6
6
|
const console_1 = require("./../../../logger/console");
|
|
7
|
-
|
|
7
|
+
const routerFromPublicHttpHandlers = (routes) => {
|
|
8
8
|
return async (ctx, next) => {
|
|
9
9
|
var _a;
|
|
10
10
|
const routeId = ctx.get(constants_1.COLOSSUS_ROUTE_ID_HEADER);
|
|
@@ -16,9 +16,10 @@ exports.routerFromPublicHttpHandlers = (routes) => {
|
|
|
16
16
|
const msg = `Handler with id '${routeId}' not implemented.`;
|
|
17
17
|
ctx.status = 501;
|
|
18
18
|
ctx.body = msg;
|
|
19
|
-
console_1.logOnceToDevConsole(msg, logger_1.LogLevel.Error);
|
|
19
|
+
(0, console_1.logOnceToDevConsole)(msg, logger_1.LogLevel.Error);
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
await handler(ctx, next);
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
|
+
exports.routerFromPublicHttpHandlers = routerFromPublicHttpHandlers;
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.logAvailableRoutes = exports.formatPublicRoute = exports.formatPrivateRoute = void 0;
|
|
4
4
|
const constants_1 = require("../../../../constants");
|
|
5
|
-
|
|
6
|
-
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;
|
|
7
9
|
const getPath = ({ public: publicRoute, path }) => publicRoute
|
|
8
|
-
? exports.formatPublicRoute({ workspace: constants_1.WORKSPACE, account: constants_1.ACCOUNT, endpoint: constants_1.PUBLIC_ENDPOINT, path })
|
|
9
|
-
: 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 });
|
|
10
|
-
|
|
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) => {
|
|
11
13
|
const available = Object.values(service.routes || {}).reduce((acc, route) => `${acc}\n${getPath(route)}`, 'Available service routes:');
|
|
12
14
|
console.info(available);
|
|
13
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;
|
|
@@ -9,7 +9,7 @@ function methodNotAllowed(ctx) {
|
|
|
9
9
|
ctx.set('cache-control', `public, max-age=${TEN_SECONDS_S}`);
|
|
10
10
|
}
|
|
11
11
|
function method(options) {
|
|
12
|
-
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);
|
|
13
13
|
const inner = async function forMethod(ctx, next) {
|
|
14
14
|
const verb = ctx.method.toUpperCase();
|
|
15
15
|
const handler = handlers[verb] || handlers.DEFAULT || methodNotAllowed;
|
|
@@ -8,9 +8,11 @@ const cluster_1 = __importDefault(require("cluster"));
|
|
|
8
8
|
const constants_1 = require("../../../constants");
|
|
9
9
|
const BROADCAST_STATUS_TRACK = 'broadcastStatusTrack';
|
|
10
10
|
const STATUS_TRACK = 'statusTrack';
|
|
11
|
-
|
|
12
|
-
exports.
|
|
13
|
-
|
|
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) => {
|
|
14
16
|
var _a, _b, _c;
|
|
15
17
|
(_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName('builtin:status-track');
|
|
16
18
|
if (!constants_1.LINKED) {
|
|
@@ -19,12 +21,15 @@ exports.statusTrackHandler = async (ctx) => {
|
|
|
19
21
|
ctx.body = [];
|
|
20
22
|
return;
|
|
21
23
|
};
|
|
22
|
-
exports.
|
|
24
|
+
exports.statusTrackHandler = statusTrackHandler;
|
|
25
|
+
const trackStatus = () => {
|
|
23
26
|
global.metrics.statusTrack().forEach(status => {
|
|
24
27
|
logStatus(status);
|
|
25
28
|
});
|
|
26
29
|
};
|
|
27
|
-
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;
|
|
28
33
|
const logStatus = (status) => console.log(JSON.stringify({
|
|
29
34
|
__VTEX_IO_LOG: true,
|
|
30
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
3
|
import { EventHandler, ParamsContext, RecorderState, RouteHandler } 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:
|
|
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>>;
|
|
@@ -8,5 +8,7 @@ const koa_compose_1 = __importDefault(require("koa-compose"));
|
|
|
8
8
|
const ramda_1 = require("ramda");
|
|
9
9
|
const cancel_1 = require("../../../../utils/cancel");
|
|
10
10
|
const time_1 = require("../../../../utils/time");
|
|
11
|
-
|
|
12
|
-
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,5 +1,5 @@
|
|
|
1
1
|
import { Context } from 'koa';
|
|
2
2
|
import { IOContext, TracingContext } from '../typings';
|
|
3
|
-
|
|
4
|
-
export declare const prepareHandlerCtx: (header: Context['request']['header'], tracingContext?: TracingContext
|
|
3
|
+
type HandlerContext = Omit<IOContext, 'route'>;
|
|
4
|
+
export declare const prepareHandlerCtx: (header: Context['request']['header'], tracingContext?: TracingContext) => HandlerContext;
|
|
5
5
|
export {};
|
|
@@ -13,15 +13,15 @@ const binding_1 = require("./../../../../utils/binding");
|
|
|
13
13
|
const getPlatform = (account) => {
|
|
14
14
|
return account.startsWith('gc-') ? 'gocommerce' : 'vtex';
|
|
15
15
|
};
|
|
16
|
-
|
|
16
|
+
const prepareHandlerCtx = (header, tracingContext) => {
|
|
17
17
|
var _a;
|
|
18
18
|
const partialContext = {
|
|
19
19
|
account: header[constants_1.ACCOUNT_HEADER],
|
|
20
20
|
authToken: header[constants_1.CREDENTIAL_HEADER],
|
|
21
|
-
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,
|
|
22
22
|
host: header[constants_1.FORWARDED_HOST_HEADER],
|
|
23
23
|
locale: header[constants_1.LOCALE_HEADER],
|
|
24
|
-
operationId: header[constants_1.OPERATION_ID_HEADER] || v4_1.default(),
|
|
24
|
+
operationId: header[constants_1.OPERATION_ID_HEADER] || (0, v4_1.default)(),
|
|
25
25
|
platform: header[constants_1.PLATFORM_HEADER] || getPlatform(header[constants_1.ACCOUNT_HEADER]),
|
|
26
26
|
product: header[constants_1.PRODUCT_HEADER],
|
|
27
27
|
production: ((_a = header[constants_1.WORKSPACE_IS_PRODUCTION_HEADER]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'true' || false,
|
|
@@ -29,7 +29,7 @@ exports.prepareHandlerCtx = (header, tracingContext) => {
|
|
|
29
29
|
requestId: header[constants_1.REQUEST_ID_HEADER],
|
|
30
30
|
segmentToken: header[constants_1.SEGMENT_HEADER],
|
|
31
31
|
sessionToken: header[constants_1.SESSION_HEADER],
|
|
32
|
-
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,
|
|
33
33
|
tracer: new UserLandTracer_1.UserLandTracer(tracingContext === null || tracingContext === void 0 ? void 0 : tracingContext.tracer, tracingContext === null || tracingContext === void 0 ? void 0 : tracingContext.currentSpan),
|
|
34
34
|
userAgent: process.env.VTEX_APP_ID || '',
|
|
35
35
|
workspace: header[constants_1.WORKSPACE_HEADER],
|
|
@@ -39,3 +39,4 @@ exports.prepareHandlerCtx = (header, tracingContext) => {
|
|
|
39
39
|
logger: new logger_1.Logger(partialContext),
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
|
+
exports.prepareHandlerCtx = prepareHandlerCtx;
|
|
@@ -27,7 +27,7 @@ class Recorder {
|
|
|
27
27
|
const newValueSet = new Set(this._record[headerName]);
|
|
28
28
|
const currentValue = ctx.response.get(headerName);
|
|
29
29
|
const parsedCurrentValue = typeof currentValue === 'string' ? currentValue.split(',') : currentValue;
|
|
30
|
-
parsedCurrentValue.forEach(cur => newValueSet.add(ramda_1.trim(cur)));
|
|
30
|
+
parsedCurrentValue.forEach(cur => newValueSet.add((0, ramda_1.trim)(cur)));
|
|
31
31
|
const deduped = Array.from(newValueSet).filter(x => !!x);
|
|
32
32
|
if (deduped.length > 0) {
|
|
33
33
|
ctx.set(headerName, deduped);
|
|
@@ -4,7 +4,7 @@ exports.UserLandTracer = exports.createTracingContextFromCarrier = void 0;
|
|
|
4
4
|
const opentracing_1 = require("opentracing");
|
|
5
5
|
const TracerSingleton_1 = require("../service/tracing/TracerSingleton");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
|
-
|
|
7
|
+
const createTracingContextFromCarrier = (newSpanName, carrier) => {
|
|
8
8
|
const tracer = TracerSingleton_1.TracerSingleton.getTracer();
|
|
9
9
|
const rootSpan = tracer.extract(opentracing_1.FORMAT_HTTP_HEADERS, carrier);
|
|
10
10
|
if (rootSpan == null) {
|
|
@@ -15,12 +15,13 @@ exports.createTracingContextFromCarrier = (newSpanName, carrier) => {
|
|
|
15
15
|
userlandTracer.lockFallbackSpan();
|
|
16
16
|
return { span, tracer: userlandTracer };
|
|
17
17
|
};
|
|
18
|
+
exports.createTracingContextFromCarrier = createTracingContextFromCarrier;
|
|
18
19
|
class UserLandTracer {
|
|
19
20
|
constructor(tracer, fallbackSpan) {
|
|
20
21
|
this.tracer = tracer;
|
|
21
22
|
this.fallbackSpan = fallbackSpan;
|
|
22
23
|
this.fallbackSpanLock = false;
|
|
23
|
-
const { traceId, isSampled } = utils_1.getTraceInfo(fallbackSpan);
|
|
24
|
+
const { traceId, isSampled } = (0, utils_1.getTraceInfo)(fallbackSpan);
|
|
24
25
|
this._traceId = traceId;
|
|
25
26
|
this._isSampled = isSampled;
|
|
26
27
|
}
|
|
@@ -27,7 +27,7 @@ class ErrorReport extends node_error_report_1.ErrorReportBase {
|
|
|
27
27
|
if (args.originalError instanceof ErrorReport) {
|
|
28
28
|
return args.originalError;
|
|
29
29
|
}
|
|
30
|
-
return new ErrorReport(node_error_report_1.createErrorReportBaseArgs(args));
|
|
30
|
+
return new ErrorReport((0, node_error_report_1.createErrorReportBaseArgs)(args));
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Inject information about the error wrapped by this ErrorReport
|
|
@@ -38,24 +38,24 @@ class ErrorReport extends node_error_report_1.ErrorReportBase {
|
|
|
38
38
|
var _a, _b, _c, _d;
|
|
39
39
|
span === null || span === void 0 ? void 0 : span.setTag(__1.TracingTags.ERROR, 'true');
|
|
40
40
|
const indexedLogs = {
|
|
41
|
-
["error.kind" /* ERROR_KIND */]: this.kind,
|
|
42
|
-
["error.id" /* ERROR_ID */]: this.metadata.errorId,
|
|
41
|
+
["error.kind" /* ErrorReportLogFields.ERROR_KIND */]: this.kind,
|
|
42
|
+
["error.id" /* ErrorReportLogFields.ERROR_ID */]: this.metadata.errorId,
|
|
43
43
|
};
|
|
44
|
-
if (node_error_report_1.isRequestInfo(this.parsedInfo) &&
|
|
44
|
+
if ((0, node_error_report_1.isRequestInfo)(this.parsedInfo) &&
|
|
45
45
|
this.parsedInfo.response &&
|
|
46
|
-
node_error_report_1.isInfraErrorData((_a = this.parsedInfo.response) === null || _a === void 0 ? void 0 : _a.data)) {
|
|
47
|
-
indexedLogs["error.server.code" /* ERROR_SERVER_CODE */] = this.parsedInfo.response.data.code;
|
|
48
|
-
indexedLogs["error.server.request_id" /* ERROR_SERVER_REQUEST_ID */] = this.parsedInfo.response.data.requestId;
|
|
46
|
+
(0, node_error_report_1.isInfraErrorData)((_a = this.parsedInfo.response) === null || _a === void 0 ? void 0 : _a.data)) {
|
|
47
|
+
indexedLogs["error.server.code" /* ErrorReportLogFields.ERROR_SERVER_CODE */] = this.parsedInfo.response.data.code;
|
|
48
|
+
indexedLogs["error.server.request_id" /* ErrorReportLogFields.ERROR_SERVER_REQUEST_ID */] = this.parsedInfo.response.data.requestId;
|
|
49
49
|
}
|
|
50
50
|
const serializableError = this.toObject();
|
|
51
51
|
span === null || span === void 0 ? void 0 : span.log({
|
|
52
52
|
event: 'error',
|
|
53
53
|
...indexedLogs,
|
|
54
|
-
["error.message" /* ERROR_MESSAGE */]: serializableError.message,
|
|
55
|
-
["error.metadata.metrics.InstantiationTime" /* ERROR_METADATA_METRICS_INSTANTIATION_TIME */]: (_b = serializableError.metadata) === null || _b === void 0 ? void 0 : _b.reportCount,
|
|
56
|
-
["error.metadata.reportCount" /* ERROR_METADATA_REPORT_COUNT */]: (_d = (_c = serializableError.metadata) === null || _c === void 0 ? void 0 : _c.metrics) === null || _d === void 0 ? void 0 : _d.instantiationTime,
|
|
57
|
-
["error.stack" /* ERROR_STACK */]: serializableError.stack,
|
|
58
|
-
["error.code" /* ERROR_CODE */]: serializableError.code,
|
|
54
|
+
["error.message" /* ErrorReportLogFields.ERROR_MESSAGE */]: serializableError.message,
|
|
55
|
+
["error.metadata.metrics.InstantiationTime" /* ErrorReportLogFields.ERROR_METADATA_METRICS_INSTANTIATION_TIME */]: (_b = serializableError.metadata) === null || _b === void 0 ? void 0 : _b.reportCount,
|
|
56
|
+
["error.metadata.reportCount" /* ErrorReportLogFields.ERROR_METADATA_REPORT_COUNT */]: (_d = (_c = serializableError.metadata) === null || _c === void 0 ? void 0 : _c.metrics) === null || _d === void 0 ? void 0 : _d.instantiationTime,
|
|
57
|
+
["error.stack" /* ErrorReportLogFields.ERROR_STACK */]: serializableError.stack,
|
|
58
|
+
["error.code" /* ErrorReportLogFields.ERROR_CODE */]: serializableError.code,
|
|
59
59
|
});
|
|
60
60
|
if (logger && this.shouldLogToSplunk(span)) {
|
|
61
61
|
logger.error(serializableError);
|
|
@@ -65,7 +65,7 @@ class ErrorReport extends node_error_report_1.ErrorReportBase {
|
|
|
65
65
|
}
|
|
66
66
|
shouldLogToSplunk(span) {
|
|
67
67
|
var _a;
|
|
68
|
-
return !this.isErrorReported() && ((_a = utils_1.getTraceInfo(span)) === null || _a === void 0 ? void 0 : _a.isSampled);
|
|
68
|
+
return !this.isErrorReported() && ((_a = (0, utils_1.getTraceInfo)(span)) === null || _a === void 0 ? void 0 : _a.isSampled);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
exports.ErrorReport = ErrorReport;
|
package/lib/tracing/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FORMAT_HTTP_HEADERS = exports.Span = void 0;
|
|
3
|
+
exports.FORMAT_HTTP_HEADERS = exports.Span = exports.getTraceInfo = exports.createTracingContextFromCarrier = exports.TracingTags = exports.SpanReferenceTypes = exports.createSpanReference = exports.ErrorReport = exports.ErrorKinds = void 0;
|
|
4
4
|
const opentracing_1 = require("opentracing");
|
|
5
5
|
Object.defineProperty(exports, "FORMAT_HTTP_HEADERS", { enumerable: true, get: function () { return opentracing_1.FORMAT_HTTP_HEADERS; } });
|
|
6
6
|
Object.defineProperty(exports, "Span", { enumerable: true, get: function () { return opentracing_1.Span; } });
|
package/lib/tracing/utils.js
CHANGED
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.cloneAndSanitizeHeaders = exports.getTraceInfo = void 0;
|
|
4
4
|
const node_error_report_1 = require("@vtex/node-error-report");
|
|
5
5
|
function getTraceInfo(span) {
|
|
6
|
-
var _a, _b
|
|
6
|
+
var _a, _b;
|
|
7
7
|
const spanContext = span === null || span === void 0 ? void 0 : span.context();
|
|
8
8
|
return {
|
|
9
|
-
isSampled: (
|
|
9
|
+
isSampled: (_b = (_a = spanContext === null || spanContext === void 0 ? void 0 : spanContext.isSampled) === null || _a === void 0 ? void 0 : _a.call(spanContext)) !== null && _b !== void 0 ? _b : false,
|
|
10
10
|
traceId: spanContext === null || spanContext === void 0 ? void 0 : spanContext.toTraceId(),
|
|
11
11
|
};
|
|
12
12
|
}
|
|
@@ -17,7 +17,7 @@ exports.getTraceInfo = getTraceInfo;
|
|
|
17
17
|
* @param headersObj The headers object
|
|
18
18
|
* @param resultFieldsPrefix The prefix that will be added to each field on the result object
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
const cloneAndSanitizeHeaders = (headersObj, resultFieldsPrefix = '') => {
|
|
21
21
|
const ret = {};
|
|
22
22
|
const entries = Object.entries(headersObj);
|
|
23
23
|
for (const [key, val] of entries) {
|
|
@@ -35,7 +35,8 @@ exports.cloneAndSanitizeHeaders = (headersObj, resultFieldsPrefix = '') => {
|
|
|
35
35
|
// },
|
|
36
36
|
// ```
|
|
37
37
|
// In those corner cases we probably won't have a sensitive string as key, so we don't treat them here
|
|
38
|
-
ret[`${resultFieldsPrefix}${key}`] = node_error_report_1.authFields.includes(key) ? node_error_report_1.sanitizeAuth(val) : val;
|
|
38
|
+
ret[`${resultFieldsPrefix}${key}`] = node_error_report_1.authFields.includes(key) ? (0, node_error_report_1.sanitizeAuth)(val) : val;
|
|
39
39
|
}
|
|
40
40
|
return ret;
|
|
41
41
|
};
|
|
42
|
+
exports.cloneAndSanitizeHeaders = cloneAndSanitizeHeaders;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Logger } from './../service/logger/logger';
|
|
2
2
|
import { ConflictsResolver, VBase } from '../clients/infra/VBase';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
type Configuration = Record<string, ConfigurationData | ConfigurationData[] | object> | ConfigurationData[];
|
|
4
|
+
type ConfigurationData = Record<string, object>;
|
|
5
5
|
export declare class MineWinsConflictsResolver<T> implements ConflictsResolver<T> {
|
|
6
6
|
/***
|
|
7
7
|
* Take mine and merge with master keys that have no conflict
|
|
@@ -13,8 +13,8 @@ export declare class MineWinsConflictsResolver<T> implements ConflictsResolver<T
|
|
|
13
13
|
private comparableKeys;
|
|
14
14
|
constructor(client: VBase, bucket: string, filePath: string, comparableKeys?: string[]);
|
|
15
15
|
resolve(logger?: Logger): Promise<any>;
|
|
16
|
-
resolveAll(): Promise<
|
|
17
|
-
protected mergeMineWins(base: Configuration, master: Configuration, mine: Configuration):
|
|
16
|
+
resolveAll(): Promise<Configuration[]>;
|
|
17
|
+
protected mergeMineWins(base: Configuration, master: Configuration, mine: Configuration): Configuration;
|
|
18
18
|
private parseConflict;
|
|
19
19
|
private serializeContentByMimetype;
|
|
20
20
|
private parseContentByMimetype;
|
|
@@ -40,10 +40,10 @@ class MineWinsConflictsResolver {
|
|
|
40
40
|
return resolvedConflicts;
|
|
41
41
|
}
|
|
42
42
|
mergeMineWins(base, master, mine) {
|
|
43
|
-
if (util_1.isArray(master)) {
|
|
43
|
+
if ((0, util_1.isArray)(master)) {
|
|
44
44
|
return this.mergeMineWinsArray((base || []), master, (mine || []));
|
|
45
45
|
}
|
|
46
|
-
else if (util_1.isObject(master)) {
|
|
46
|
+
else if ((0, util_1.isObject)(master)) {
|
|
47
47
|
return this.mergeMineWinsObject((base || {}), master, (mine || {}));
|
|
48
48
|
}
|
|
49
49
|
return mine ? mine : master;
|
|
@@ -85,16 +85,16 @@ class MineWinsConflictsResolver {
|
|
|
85
85
|
mergeMineWinsObject(base, master, mine) {
|
|
86
86
|
const merged = { ...master, ...mine };
|
|
87
87
|
Object.entries(merged).forEach(([key, value]) => {
|
|
88
|
-
if (master[key] == null && base && base[key] != null && ramda_1.equals(value, base[key])) {
|
|
88
|
+
if (master[key] == null && base && base[key] != null && (0, ramda_1.equals)(value, base[key])) {
|
|
89
89
|
delete merged[key]; // value deleted from master with no conflict
|
|
90
90
|
}
|
|
91
91
|
else if (base[key] && master[key] && !mine[key]) {
|
|
92
92
|
delete merged[key]; // value deleted from mine
|
|
93
93
|
}
|
|
94
|
-
else if (util_1.isArray(value)) {
|
|
94
|
+
else if ((0, util_1.isArray)(value)) {
|
|
95
95
|
merged[key] = this.mergeMineWinsArray((base[key] || []), (master[key] || []), value);
|
|
96
96
|
}
|
|
97
|
-
else if (util_1.isObject(value)) {
|
|
97
|
+
else if ((0, util_1.isObject)(value)) {
|
|
98
98
|
merged[key] = this.mergeMineWins((base[key] || {}), (master[key] || {}), (value || {}));
|
|
99
99
|
}
|
|
100
100
|
});
|
|
@@ -109,7 +109,7 @@ class MineWinsConflictsResolver {
|
|
|
109
109
|
base.forEach((baseItem) => {
|
|
110
110
|
const foundInMaster = this.isObjectInArray(baseItem, master);
|
|
111
111
|
if (!foundInMaster) {
|
|
112
|
-
const foundInMine = mine.findIndex((mineItem) => ramda_1.equals(mineItem, baseItem));
|
|
112
|
+
const foundInMine = mine.findIndex((mineItem) => (0, ramda_1.equals)(mineItem, baseItem));
|
|
113
113
|
if (foundInMine > -1) {
|
|
114
114
|
mine.splice(foundInMine, 1);
|
|
115
115
|
}
|
|
@@ -117,7 +117,7 @@ class MineWinsConflictsResolver {
|
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
isObjectInArray(obj, array) {
|
|
120
|
-
return array.find((item) => ramda_1.equals(item, obj));
|
|
120
|
+
return array.find((item) => (0, ramda_1.equals)(item, obj));
|
|
121
121
|
}
|
|
122
122
|
appendMasterAddedElements(base, master, mine) {
|
|
123
123
|
master.forEach((item) => {
|
|
@@ -128,10 +128,10 @@ class MineWinsConflictsResolver {
|
|
|
128
128
|
}
|
|
129
129
|
shouldAddToMine(item, base, mine) {
|
|
130
130
|
if (this.comparableKeys && Object.keys(item).some((key) => this.comparableKeys.includes(key))) {
|
|
131
|
-
return (!mine.some((mineItem) => this.comparableKeys.some((key) => ramda_1.eqProps(key, item, mineItem))) &&
|
|
132
|
-
!base.some((baseItem) => ramda_1.equals(baseItem, item)));
|
|
131
|
+
return (!mine.some((mineItem) => this.comparableKeys.some((key) => (0, ramda_1.eqProps)(key, item, mineItem))) &&
|
|
132
|
+
!base.some((baseItem) => (0, ramda_1.equals)(baseItem, item)));
|
|
133
133
|
}
|
|
134
|
-
return !mine.some((mineItem) => ramda_1.equals(mineItem, item)) && !base.some((baseItem) => ramda_1.equals(baseItem, item));
|
|
134
|
+
return !mine.some((mineItem) => (0, ramda_1.equals)(mineItem, item)) && !base.some((baseItem) => (0, ramda_1.equals)(baseItem, item));
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
exports.MineWinsConflictsResolver = MineWinsConflictsResolver;
|
package/lib/utils/app.js
CHANGED
|
@@ -7,43 +7,59 @@ exports.majorEqualAndGreaterThan = exports.sameMajor = exports.isValidAppIdOrLoc
|
|
|
7
7
|
const semver_1 = __importDefault(require("semver"));
|
|
8
8
|
// Note: The name that composes the part of the appId that precedes the
|
|
9
9
|
// character '@' includes the name given to the app and the vendor name.
|
|
10
|
-
|
|
11
|
-
exports.
|
|
12
|
-
|
|
13
|
-
exports.
|
|
14
|
-
|
|
15
|
-
exports.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
const removeBuild = (id) => id.split('+')[0];
|
|
11
|
+
exports.removeBuild = removeBuild;
|
|
12
|
+
const removeVersionFromAppId = (appId) => appId.split('@')[0];
|
|
13
|
+
exports.removeVersionFromAppId = removeVersionFromAppId;
|
|
14
|
+
const extractVersionFromAppId = (appId) => appId.split('@').slice(-1)[0];
|
|
15
|
+
exports.extractVersionFromAppId = extractVersionFromAppId;
|
|
16
|
+
const transformToLinkedLocator = (appId) => appId.replace(/\+build.*$/, '+linked');
|
|
17
|
+
exports.transformToLinkedLocator = transformToLinkedLocator;
|
|
18
|
+
const formatLocator = (name, versionAndBuild) => `${name}@${(0, exports.removeBuild)(versionAndBuild)}`;
|
|
19
|
+
exports.formatLocator = formatLocator;
|
|
20
|
+
const isLinkedApp = (app) => app.id.includes('+build');
|
|
21
|
+
exports.isLinkedApp = isLinkedApp;
|
|
22
|
+
const parseAppId = (appId) => {
|
|
23
|
+
const name = (0, exports.removeVersionFromAppId)(appId);
|
|
24
|
+
const version = (0, exports.extractVersionFromAppId)(appId);
|
|
19
25
|
const splittedVersion = version.split('+');
|
|
20
26
|
return {
|
|
21
27
|
build: splittedVersion[1],
|
|
22
|
-
locator: exports.formatLocator(name, version),
|
|
28
|
+
locator: (0, exports.formatLocator)(name, version),
|
|
23
29
|
name,
|
|
24
30
|
version: splittedVersion[0],
|
|
25
31
|
};
|
|
26
32
|
};
|
|
27
|
-
exports.
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
exports.parseAppId = parseAppId;
|
|
34
|
+
const formatAppId = ({ locator, build }) => (build ? `${locator}+${build}` : locator);
|
|
35
|
+
exports.formatAppId = formatAppId;
|
|
36
|
+
const satisfies = (appId, version) => {
|
|
37
|
+
const { version: appVer } = (0, exports.parseAppId)(appId);
|
|
30
38
|
return semver_1.default.satisfies(appVer, version);
|
|
31
39
|
};
|
|
32
|
-
exports.
|
|
33
|
-
|
|
34
|
-
exports.
|
|
35
|
-
|
|
40
|
+
exports.satisfies = satisfies;
|
|
41
|
+
const versionToMajor = (version) => version.split('.')[0];
|
|
42
|
+
exports.versionToMajor = versionToMajor;
|
|
43
|
+
const versionToMajorRange = (version) => `${(0, exports.versionToMajor)(version)}.x`;
|
|
44
|
+
exports.versionToMajorRange = versionToMajorRange;
|
|
45
|
+
const formatMajorLocator = (name, version) => {
|
|
46
|
+
const majorRange = (0, exports.versionToMajorRange)(version);
|
|
36
47
|
return `${name}@${majorRange}`;
|
|
37
48
|
};
|
|
38
|
-
exports.
|
|
39
|
-
|
|
40
|
-
const
|
|
49
|
+
exports.formatMajorLocator = formatMajorLocator;
|
|
50
|
+
const appIdToAppAtMajor = (appId) => {
|
|
51
|
+
const { name, version } = (0, exports.parseAppId)(appId);
|
|
52
|
+
const majorRange = (0, exports.versionToMajorRange)(version);
|
|
41
53
|
return `${name}@${majorRange}`;
|
|
42
54
|
};
|
|
55
|
+
exports.appIdToAppAtMajor = appIdToAppAtMajor;
|
|
43
56
|
// SemVer regex from https://github.com/sindresorhus/semver-regex
|
|
44
57
|
const APP_ID_REGEX = /^[\w\-]+\.[\w\-]+@(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?$/;
|
|
45
|
-
|
|
58
|
+
const isValidAppIdOrLocator = (appId) => {
|
|
46
59
|
return APP_ID_REGEX.test(appId);
|
|
47
60
|
};
|
|
48
|
-
exports.
|
|
49
|
-
|
|
61
|
+
exports.isValidAppIdOrLocator = isValidAppIdOrLocator;
|
|
62
|
+
const sameMajor = (v1, v2) => (0, exports.versionToMajor)(v1) === (0, exports.versionToMajor)(v2);
|
|
63
|
+
exports.sameMajor = sameMajor;
|
|
64
|
+
const majorEqualAndGreaterThan = (v1, v2) => (0, exports.sameMajor)(v1, v2) && semver_1.default.gt(v1, v2);
|
|
65
|
+
exports.majorEqualAndGreaterThan = majorEqualAndGreaterThan;
|
|
@@ -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,7 +18,7 @@ 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
|
};
|
|
@@ -26,16 +30,17 @@ exports.getFallbackFile = exports.saveVersion = exports.updateMetaInfoCache = ex
|
|
|
26
30
|
const crypto_1 = __importDefault(require("crypto"));
|
|
27
31
|
const ramda_1 = require("ramda");
|
|
28
32
|
const semver = __importStar(require("semver"));
|
|
29
|
-
|
|
33
|
+
const getMetaInfoKey = (account, workspace) => `${account}-${workspace}-meta-infos`;
|
|
34
|
+
exports.getMetaInfoKey = getMetaInfoKey;
|
|
30
35
|
const hashMD5 = (text) => crypto_1.default
|
|
31
36
|
.createHash('md5')
|
|
32
37
|
.update(text)
|
|
33
38
|
.digest('hex');
|
|
34
|
-
|
|
39
|
+
const updateMetaInfoCache = async (cacheStorage, account, workspace, dependencies, logger) => {
|
|
35
40
|
if (workspace !== 'master') {
|
|
36
41
|
return;
|
|
37
42
|
}
|
|
38
|
-
const key = exports.getMetaInfoKey(account, workspace);
|
|
43
|
+
const key = (0, exports.getMetaInfoKey)(account, workspace);
|
|
39
44
|
const hash = hashMD5(dependencies.toString());
|
|
40
45
|
try {
|
|
41
46
|
const storedDependencies = await cacheStorage.get(key) || '';
|
|
@@ -48,10 +53,11 @@ exports.updateMetaInfoCache = async (cacheStorage, account, workspace, dependenc
|
|
|
48
53
|
}
|
|
49
54
|
return;
|
|
50
55
|
};
|
|
56
|
+
exports.updateMetaInfoCache = updateMetaInfoCache;
|
|
51
57
|
const getFallbackKey = (appName, major) => `${appName}@${major}`;
|
|
52
|
-
|
|
58
|
+
const saveVersion = async (app, cacheStorage) => {
|
|
53
59
|
const [appName, version] = app.split('@');
|
|
54
|
-
const major = ramda_1.head(version.split('.')) || '';
|
|
60
|
+
const major = (0, ramda_1.head)(version.split('.')) || '';
|
|
55
61
|
const fallbackKey = getFallbackKey(appName, major);
|
|
56
62
|
if (cacheStorage.has(fallbackKey)) {
|
|
57
63
|
const savedVersion = await cacheStorage.get(fallbackKey);
|
|
@@ -63,9 +69,10 @@ exports.saveVersion = async (app, cacheStorage) => {
|
|
|
63
69
|
await cacheStorage.set(fallbackKey, version);
|
|
64
70
|
}
|
|
65
71
|
};
|
|
66
|
-
exports.
|
|
72
|
+
exports.saveVersion = saveVersion;
|
|
73
|
+
const getFallbackFile = async (app, path, cacheStorage, apps) => {
|
|
67
74
|
const [appName, version] = app.split('@');
|
|
68
|
-
const major = ramda_1.head(version.split('.')) || '';
|
|
75
|
+
const major = (0, ramda_1.head)(version.split('.')) || '';
|
|
69
76
|
const fallbackKey = getFallbackKey(appName, major);
|
|
70
77
|
const fallbackVersion = await cacheStorage.get(fallbackKey);
|
|
71
78
|
if (fallbackVersion) {
|
|
@@ -74,3 +81,4 @@ exports.getFallbackFile = async (app, path, cacheStorage, apps) => {
|
|
|
74
81
|
}
|
|
75
82
|
throw Error('Fallback version was not found');
|
|
76
83
|
};
|
|
84
|
+
exports.getFallbackFile = getFallbackFile;
|