UNPKG

redis-smq

Version:

A high-performance, reliable, and scalable message queue for Node.js.

155 lines 5.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.propertyConfigs = void 0; exports._parseMessageState = _parseMessageState; const message_state_js_1 = require("../../message/message-state.js"); const index_js_1 = require("../../message/index.js"); const redis_smq_common_1 = require("redis-smq-common"); function number(value, required = false) { if (value === null || value === undefined || value === '') { if (required) throw new redis_smq_common_1.PanicError({ message: `Expected a required number value.` }); return null; } const num = Number(value); if (isNaN(num)) { if (required) throw new redis_smq_common_1.PanicError({ message: `Expected a numeric value, but got '${value}'.`, }); return null; } return num; } function boolean(value, required = false) { if (value === null || value === undefined || value === '') { if (required) throw new redis_smq_common_1.PanicError({ message: `Expected a required boolean value.` }); return null; } return Boolean(Number(value)); } function string(value, required = false) { if (value === null || value === undefined || value === '') { if (required) throw new redis_smq_common_1.PanicError({ message: `Expected a required string value.` }); return null; } return String(value); } function requiredNumber(value) { return number(value, true); } function requiredString(value) { return string(value, true); } function requiredBoolean(value) { return boolean(value, true); } exports.propertyConfigs = { [index_js_1.EMessageProperty.ID]: { parser: requiredString, setter: (s, v) => s.setId(v), }, [index_js_1.EMessageProperty.PUBLISHED_AT]: { parser: number, setter: (s, v) => s.setPublishedAt(v), }, [index_js_1.EMessageProperty.SCHEDULED_AT]: { parser: number, setter: (s, v) => s.setScheduledAt(v), }, [index_js_1.EMessageProperty.REQUEUED_AT]: { parser: number, setter: (s, v) => s.setRequeuedAt(v), }, [index_js_1.EMessageProperty.REQUEUE_COUNT]: { parser: requiredNumber, setter: (s, v) => s.setRequeueCount(v), }, [index_js_1.EMessageProperty.LAST_REQUEUED_AT]: { parser: number, setter: (s, v) => s.setLastRequeuedAt(v), }, [index_js_1.EMessageProperty.ACKNOWLEDGED_AT]: { parser: number, setter: (s, v) => s.setAcknowledgedAt(v), }, [index_js_1.EMessageProperty.UNACKNOWLEDGED_AT]: { parser: number, setter: (s, v) => s.setUnacknowledgedAt(v), }, [index_js_1.EMessageProperty.LAST_UNACKNOWLEDGED_AT]: { parser: number, setter: (s, v) => s.setLastUnacknowledgedAt(v), }, [index_js_1.EMessageProperty.DEAD_LETTERED_AT]: { parser: number, setter: (s, v) => s.setDeadLetteredAt(v), }, [index_js_1.EMessageProperty.PROCESSING_STARTED_AT]: { parser: number, setter: (s, v) => s.setProcessingStartedAt(v), }, [index_js_1.EMessageProperty.LAST_PROCESSED_AT]: { parser: number, setter: (s, v) => s.setLastProcessedAt(v), }, [index_js_1.EMessageProperty.LAST_SCHEDULED_AT]: { parser: number, setter: (s, v) => s.setLastScheduledAt(v), }, [index_js_1.EMessageProperty.LAST_RETRIED_ATTEMPT_AT]: { parser: number, setter: (s, v) => s.setLastRetriedAttemptAt(v), }, [index_js_1.EMessageProperty.SCHEDULED_CRON_FIRED]: { parser: requiredBoolean, setter: (s, v) => s.setScheduledCronFired(v), }, [index_js_1.EMessageProperty.ATTEMPTS]: { parser: requiredNumber, setter: (s, v) => s.setAttempts(v), }, [index_js_1.EMessageProperty.SCHEDULED_REPEAT_COUNT]: { parser: requiredNumber, setter: (s, v) => s.setScheduledRepeatCount(v), }, [index_js_1.EMessageProperty.EXPIRED]: { parser: requiredBoolean, setter: (s, v) => s.setExpired(v), }, [index_js_1.EMessageProperty.EFFECTIVE_SCHEDULED_DELAY]: { parser: requiredNumber, setter: (s, v) => s.setEffectiveScheduledDelay(v), }, [index_js_1.EMessageProperty.SCHEDULED_TIMES]: { parser: requiredNumber, setter: (s, v) => s.setScheduledTimes(v), }, [index_js_1.EMessageProperty.SCHEDULED_MESSAGE_PARENT_ID]: { parser: string, setter: (s, v) => s.setScheduledMessageParentId(v), }, [index_js_1.EMessageProperty.REQUEUED_MESSAGE_PARENT_ID]: { parser: string, setter: (s, v) => s.setRequeuedMessageParentId(v), }, }; function _parseMessageState(keyValue) { const msgState = new message_state_js_1.MessageState(); for (const key in keyValue) { const property = Number(key); if (property in exports.propertyConfigs) { const config = exports.propertyConfigs[property]; const rawValue = keyValue[key]; const parsedValue = config.parser(rawValue); if (parsedValue !== null && parsedValue !== '') { const setter = config.setter; setter(msgState, parsedValue); } } } return msgState; } //# sourceMappingURL=_parse-message-state.js.map