UNPKG

@bitloops/bl-boilerplate-core

Version:

TypeScript boilerplate code for Bitloops Language generated projects

60 lines (59 loc) 3.26 kB
"use strict"; 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;