@vtex/api
Version:
VTEX I/O API client
35 lines (34 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Events = void 0;
const util_1 = require("util");
const InfraClient_1 = require("./InfraClient");
const ANY_APP = '';
const eventRoute = (route) => `/events/${route}`;
const isResourceVRN = (appIdOrResource) => (0, util_1.isObject)(appIdOrResource) && !(0, util_1.isNullOrUndefined)(appIdOrResource.service);
class Events extends InfraClient_1.InfraClient {
constructor({ recorder, ...context }, options) {
super('courier@0.x', context, options);
this.sendEvent = (appIdOrResource, route, message, tracingConfig) => {
const resource = this.resourceFor(appIdOrResource);
return this.http.put(eventRoute(route), message, {
metric: 'events-send',
params: { resource },
tracing: {
requestSpanNameSuffix: 'events-send',
...tracingConfig === null || tracingConfig === void 0 ? void 0 : tracingConfig.tracing,
},
});
};
this.resourceFor = (appIdOrResource) => {
if (appIdOrResource === ANY_APP) {
return ANY_APP;
}
const { service, path } = isResourceVRN(appIdOrResource)
? appIdOrResource
: { service: 'apps', path: `/apps/${appIdOrResource}` };
return `vrn:${service}:${this.context.region}:${this.context.account}:${this.context.workspace}:${path}`;
};
}
}
exports.Events = Events;