redis-smq
Version:
A high-performance, reliable, and scalable message queue for Node.js.
67 lines • 2.41 kB
JavaScript
import { defaultConfig } from './default-config.js';
import { ConfigurationMessageAuditExpireError, InvalidMessageAuditHistorySizeError, InvalidMessageAuditQueueSizeError, } from '../errors/index.js';
function validateNumericValue(value) {
const numericValue = Number(value);
if (isNaN(numericValue) || numericValue < 0)
return false;
return numericValue;
}
function parseMessageAuditMessagesConfig(config, defaultConfigOptions) {
if (typeof config === 'undefined') {
return { ...defaultConfigOptions };
}
if (typeof config === 'boolean') {
return {
...defaultConfigOptions,
enabled: config,
};
}
const cfg = {
...defaultConfigOptions,
...config,
};
if (validateNumericValue(cfg.queueSize) === false)
throw new InvalidMessageAuditQueueSizeError();
if (validateNumericValue(cfg.expire) === false)
throw new ConfigurationMessageAuditExpireError();
return cfg;
}
function parseUnacknowledgementHistoryConfig(config, defaultConfigOptions) {
if (typeof config === 'undefined') {
return { ...defaultConfigOptions };
}
if (typeof config === 'boolean') {
return {
...defaultConfigOptions,
enabled: config,
};
}
const cfg = {
...defaultConfigOptions,
...config,
};
if (validateNumericValue(cfg.maxSize) === false) {
throw new InvalidMessageAuditHistorySizeError();
}
return cfg;
}
export function parseMessageAuditConfig(config = {}) {
let userConfig;
if (typeof config === 'boolean') {
userConfig = {
acknowledgedMessages: config,
deadLetteredMessages: config,
unacknowledgementHistory: config,
};
}
else {
userConfig = config;
}
const defaultMessageAudit = defaultConfig.messageAudit;
return {
acknowledgedMessages: parseMessageAuditMessagesConfig(userConfig.acknowledgedMessages, defaultMessageAudit.acknowledgedMessages),
deadLetteredMessages: parseMessageAuditMessagesConfig(userConfig.deadLetteredMessages, defaultMessageAudit.deadLetteredMessages),
unacknowledgementHistory: parseUnacknowledgementHistoryConfig(userConfig.unacknowledgementHistory, defaultMessageAudit.unacknowledgementHistory),
};
}
//# sourceMappingURL=parse-message-audit-config.js.map