UNPKG

@cumulus/message

Version:

Utilities for building and parsing Cumulus messages

90 lines 3.48 kB
'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildQueueMessageFromTemplate = exports.buildCumulusMeta = void 0; /** * Utility functions for building Cumulus messages * * @module Build * * @example * const Build = require('@cumulus/message/Build'); */ const merge_1 = __importDefault(require("lodash/merge")); const uuid_1 = require("uuid"); /** * Generate an execution name. * * @param {string} [prefix] * @returns {string} * @private */ const createExecutionName = (prefix) => (prefix ? `${prefix}-${(0, uuid_1.v4)()}` : (0, uuid_1.v4)()); /** * Build base message.cumulus_meta for a queued execution. * * @param {Object} params * @param {string} params.stateMachine - State machine name * @param {string} [params.asyncOperationId] - Async operation ID * @param {string} [params.parentExecutionArn] - Parent execution ARN * @param {string} [params.executionNamePrefix] - Prefix to apply to the name * of the enqueued execution * @returns {Message.CumulusMeta} * * @private */ const buildCumulusMeta = ({ stateMachine, asyncOperationId, parentExecutionArn, templateCumulusMeta, executionNamePrefix, }) => { const cumulusMeta = { ...templateCumulusMeta, execution_name: createExecutionName(executionNamePrefix), state_machine: stateMachine, }; if (parentExecutionArn) cumulusMeta.parentExecutionArn = parentExecutionArn; if (asyncOperationId) cumulusMeta.asyncOperationId = asyncOperationId; return cumulusMeta; }; exports.buildCumulusMeta = buildCumulusMeta; /** * Build an SQS message from a workflow template for queueing executions. * * @param {Object} params * @param {Object} params.provider - A provider object * @param {Object} params.collection - A collection object * @param {string} params.parentExecutionArn - ARN for parent execution * @param {Object} params.messageTemplate - Message template for the workflow * @param {Object} params.payload - Payload for the workflow * @param {Object} params.workflow - workflow name & arn object * @param {string} [params.asyncOperationId] - Async operation ID * @param {Object} [params.customCumulusMeta] - Custom data for message.cumulus_meta * @param {Object} [params.customMeta] - Custom data for message.meta * @param {string} [params.executionNamePrefix] - Prefix to apply to the name * of the enqueued execution * * @returns {Message.CumulusMessage} A Cumulus message object * * @alias module:Build */ const buildQueueMessageFromTemplate = ({ parentExecutionArn, asyncOperationId, messageTemplate, payload, workflow, customCumulusMeta = {}, customMeta = {}, executionNamePrefix, }) => { const cumulusMeta = (0, exports.buildCumulusMeta)({ asyncOperationId, parentExecutionArn, stateMachine: workflow.arn, templateCumulusMeta: messageTemplate.cumulus_meta, executionNamePrefix, }); const message = { ...messageTemplate, meta: (0, merge_1.default)(messageTemplate.meta, customMeta, { workflow_name: workflow.name, }), cumulus_meta: (0, merge_1.default)(customCumulusMeta, cumulusMeta), payload, }; return message; }; exports.buildQueueMessageFromTemplate = buildQueueMessageFromTemplate; //# sourceMappingURL=Build.js.map