@bitloops/bl-boilerplate-core
Version:
TypeScript boilerplate code for Bitloops Language generated projects
60 lines (59 loc) • 3.26 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrchestratorHandler = void 0;
const UUIDv4_js_1 = require("../domain/UUIDv4.js");
const asyncLocalStorage_js_1 = require("../helpers/asyncLocalStorage.js");
const CONTEXT = 'context';
class OrchestratorHandler {
get orchestratorNameId() {
return this.constructor.name;
}
isTriggerMessage(message) {
return message.metadata.name === this.triggerMessage.name;
}
trigger(message) {
return __awaiter(this, void 0, void 0, function* () {
const orchestratorName = this.constructor.name;
const orchestratorInstanceId = new UUIDv4_js_1.UUIDv4().toString() + '-' + orchestratorName;
const store = asyncLocalStorage_js_1.asyncLocalStorage.getStore();
if (!store) {
throw new Error('No store found, did you forget to attach correlation middleware?');
}
const ctx = store.get(CONTEXT);
const alreadyCreatedOrchestratorInstanceIds = ctx.orchestratorInstanceIds
? JSON.parse(ctx.orchestratorInstanceIds)
: {};
const ctxWithOrchestratorInstanceId = Object.assign(Object.assign({}, ctx), { orchestratorInstanceIds: JSON.stringify(Object.assign(Object.assign({}, alreadyCreatedOrchestratorInstanceIds), { [orchestratorName]: orchestratorInstanceId })) });
store.set(CONTEXT, ctxWithOrchestratorInstanceId);
if (!message.metadata.context.orchestratorInstanceIds) {
message.metadata.context.orchestratorInstanceIds = JSON.stringify({});
}
const orchestratorInstanceIds = JSON.parse(message.metadata.context.orchestratorInstanceIds);
orchestratorInstanceIds[orchestratorName] = orchestratorInstanceId;
message.metadata.context.orchestratorInstanceIds = JSON.stringify(orchestratorInstanceIds);
});
}
getOrchestratorNameId() {
return {
orchestratorNameId: this.orchestratorNameId,
};
}
isGeneratedByOrchestrator(message) {
const orchestratorInstanceIdStr = message.metadata.context.orchestratorInstanceIds;
if (!orchestratorInstanceIdStr) {
return true;
}
const orchestratorInstanceIds = JSON.parse(orchestratorInstanceIdStr);
return (orchestratorInstanceIds === null || orchestratorInstanceIds === void 0 ? void 0 : orchestratorInstanceIds[this.constructor.name]) !== undefined;
}
}
exports.OrchestratorHandler = OrchestratorHandler;