redis-smq
Version:
A high-performance, reliable, and scalable message queue for Node.js.
155 lines • 5.4 kB
JavaScript
;
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