UNPKG

@cumulus/message

Version:

Utilities for building and parsing Cumulus messages

68 lines 2.28 kB
'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasQueueAndExecutionLimit = exports.getMaximumExecutions = exports.getQueueUrl = void 0; /** * Utility functions for parsing queue information from a Cumulus message * @module Queue * * @example * const Queue = require('@cumulus/message/Queue'); */ const isNil_1 = __importDefault(require("lodash/isNil")); /** * Get the queue URL from a workflow message. * * @param {MessageWithQueueInfo} message - A workflow message object * @returns {string} A queue URL * * @alias module:Queue */ const getQueueUrl = (message) => { const queueUrl = message.cumulus_meta.queueUrl; if ((0, isNil_1.default)(queueUrl)) { throw new Error('Could not find queue URL at cumulus_meta.queueUrl in message'); } return queueUrl; }; exports.getQueueUrl = getQueueUrl; /** * Get the maximum executions for a queue. * * @param {Message.CumulusMessage} message - A workflow message object * @param {string} queueUrl - A queue URL * @returns {number} Count of the maximum executions for the queue * @throws {Error} if no maximum executions can be found * * @alias module:Queue */ const getMaximumExecutions = (message, queueUrl) => { const maxExecutions = message.cumulus_meta.queueExecutionLimits?.[queueUrl]; if ((0, isNil_1.default)(maxExecutions)) { throw new Error(`Could not determine maximum executions for queue ${queueUrl}`); } return maxExecutions; }; exports.getMaximumExecutions = getMaximumExecutions; /** * Determine if there is a queue and queue execution limit in the message. * * @param {MessageWithQueueInfo} message - A workflow message object * @returns {boolean} True if there is a queue and execution limit. * * @alias module:Queue */ const hasQueueAndExecutionLimit = (message) => { try { const queueUrl = (0, exports.getQueueUrl)(message); (0, exports.getMaximumExecutions)(message, queueUrl); } catch (error) { return false; } return true; }; exports.hasQueueAndExecutionLimit = hasQueueAndExecutionLimit; //# sourceMappingURL=Queue.js.map