UNPKG

redis-smq

Version:

A simple high-performance Redis message queue for Node.js.

137 lines 6.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.redisKeys = void 0; const index_js_1 = require("./errors/index.js"); const REDIS_KEY_CONFIG = { SEGMENT_SEPARATOR: ':', VERSION: '800.26', GLOBAL_NAMESPACE: 'global', }; const KEY_PREFIX = `redis-smq-${REDIS_KEY_CONFIG.VERSION}`; var ERedisKey; (function (ERedisKey) { ERedisKey[ERedisKey["QUEUE_PENDING"] = 1] = "QUEUE_PENDING"; ERedisKey[ERedisKey["QUEUE_PRIORITY_PENDING"] = 2] = "QUEUE_PRIORITY_PENDING"; ERedisKey[ERedisKey["QUEUE_DL"] = 3] = "QUEUE_DL"; ERedisKey[ERedisKey["QUEUE_PROCESSING"] = 4] = "QUEUE_PROCESSING"; ERedisKey[ERedisKey["QUEUE_ACKNOWLEDGED"] = 5] = "QUEUE_ACKNOWLEDGED"; ERedisKey[ERedisKey["QUEUE_SCHEDULED"] = 6] = "QUEUE_SCHEDULED"; ERedisKey[ERedisKey["QUEUE_DELAYED"] = 7] = "QUEUE_DELAYED"; ERedisKey[ERedisKey["QUEUE_REQUEUED"] = 8] = "QUEUE_REQUEUED"; ERedisKey[ERedisKey["QUEUE_CONSUMERS"] = 9] = "QUEUE_CONSUMERS"; ERedisKey[ERedisKey["QUEUE_PROCESSING_QUEUES"] = 10] = "QUEUE_PROCESSING_QUEUES"; ERedisKey[ERedisKey["QUEUE_WORKERS_LOCK"] = 11] = "QUEUE_WORKERS_LOCK"; ERedisKey[ERedisKey["QUEUE_RATE_LIMIT_COUNTER"] = 12] = "QUEUE_RATE_LIMIT_COUNTER"; ERedisKey[ERedisKey["QUEUE_PROPERTIES"] = 13] = "QUEUE_PROPERTIES"; ERedisKey[ERedisKey["QUEUE_MESSAGES"] = 14] = "QUEUE_MESSAGES"; ERedisKey[ERedisKey["QUEUE_MESSAGE_IDS"] = 15] = "QUEUE_MESSAGE_IDS"; ERedisKey[ERedisKey["QUEUE_CONSUMER_GROUPS"] = 16] = "QUEUE_CONSUMER_GROUPS"; ERedisKey[ERedisKey["QUEUES"] = 17] = "QUEUES"; ERedisKey[ERedisKey["CONSUMER_QUEUES"] = 18] = "CONSUMER_QUEUES"; ERedisKey[ERedisKey["CONSUMER_HEARTBEAT"] = 19] = "CONSUMER_HEARTBEAT"; ERedisKey[ERedisKey["NS_QUEUES"] = 20] = "NS_QUEUES"; ERedisKey[ERedisKey["NAMESPACES"] = 21] = "NAMESPACES"; ERedisKey[ERedisKey["EXCHANGE_BINDINGS"] = 22] = "EXCHANGE_BINDINGS"; ERedisKey[ERedisKey["FANOUT_EXCHANGES"] = 23] = "FANOUT_EXCHANGES"; ERedisKey[ERedisKey["MESSAGE"] = 24] = "MESSAGE"; })(ERedisKey || (ERedisKey = {})); function makeNamespacedKeys(keys, namespace, ...rest) { const result = {}; for (const keyName in keys) { result[keyName] = [KEY_PREFIX, namespace, keys[keyName], ...rest].join(REDIS_KEY_CONFIG.SEGMENT_SEPARATOR); } return result; } exports.redisKeys = { getNamespaceKeys(ns) { const keys = { keyNamespaceQueues: ERedisKey.NS_QUEUES, }; return Object.assign({}, makeNamespacedKeys(keys, ns)); }, getQueueKeys(queueParams, consumerGroupId) { const queueKeys = { keyQueueDL: ERedisKey.QUEUE_DL, keyQueueProcessingQueues: ERedisKey.QUEUE_PROCESSING_QUEUES, keyQueueAcknowledged: ERedisKey.QUEUE_ACKNOWLEDGED, keyQueueScheduled: ERedisKey.QUEUE_SCHEDULED, keyQueueRequeued: ERedisKey.QUEUE_REQUEUED, keyQueueDelayed: ERedisKey.QUEUE_DELAYED, keyQueueConsumers: ERedisKey.QUEUE_CONSUMERS, keyQueueRateLimitCounter: ERedisKey.QUEUE_RATE_LIMIT_COUNTER, keyQueueProperties: ERedisKey.QUEUE_PROPERTIES, keyQueueMessages: ERedisKey.QUEUE_MESSAGES, keyQueueMessageIds: ERedisKey.QUEUE_MESSAGE_IDS, keyQueueConsumerGroups: ERedisKey.QUEUE_CONSUMER_GROUPS, keyQueueWorkersLock: ERedisKey.QUEUE_WORKERS_LOCK, }; const pendingKeys = { keyQueuePending: ERedisKey.QUEUE_PENDING, keyQueuePriorityPending: ERedisKey.QUEUE_PRIORITY_PENDING, }; const payload = [queueParams.name]; const pendingPayload = [ ...payload, ...(consumerGroupId ? [consumerGroupId] : []), ]; return Object.assign(Object.assign({}, makeNamespacedKeys(queueKeys, queueParams.ns, ...payload)), makeNamespacedKeys(pendingKeys, queueParams.ns, ...pendingPayload)); }, getMessageKeys(messageId) { const messageKeys = { keyMessage: ERedisKey.MESSAGE, }; return Object.assign({}, makeNamespacedKeys(messageKeys, REDIS_KEY_CONFIG.GLOBAL_NAMESPACE, messageId)); }, getFanOutExchangeKeys(bindingKey) { const exchangeKeys = { keyExchangeBindings: ERedisKey.EXCHANGE_BINDINGS, }; return Object.assign({}, makeNamespacedKeys(exchangeKeys, REDIS_KEY_CONFIG.GLOBAL_NAMESPACE, bindingKey)); }, getConsumerKeys(instanceId) { const consumerKeys = { keyConsumerQueues: ERedisKey.CONSUMER_QUEUES, keyConsumerHeartbeat: ERedisKey.CONSUMER_HEARTBEAT, }; return Object.assign({}, makeNamespacedKeys(consumerKeys, REDIS_KEY_CONFIG.GLOBAL_NAMESPACE, instanceId)); }, getQueueConsumerKeys(queueParams, instanceId) { const keys = { keyQueueProcessing: ERedisKey.QUEUE_PROCESSING, }; return Object.assign({}, makeNamespacedKeys(keys, queueParams.ns, queueParams.name, instanceId)); }, getMainKeys() { const mainKeys = { keyQueues: ERedisKey.QUEUES, keyNamespaces: ERedisKey.NAMESPACES, keyFanOutExchanges: ERedisKey.FANOUT_EXCHANGES, }; return makeNamespacedKeys(mainKeys, REDIS_KEY_CONFIG.GLOBAL_NAMESPACE); }, validateNamespace(ns) { const validated = this.validateRedisKey(ns); if (validated instanceof index_js_1.RedisKeysInvalidKeyError) { return validated; } if (validated === REDIS_KEY_CONFIG.GLOBAL_NAMESPACE) { return new index_js_1.RedisKeysInvalidKeyError(); } return validated; }, validateRedisKey(key) { if (!key || !key.length) { return new index_js_1.RedisKeysInvalidKeyError(); } const lowerCase = key.toLowerCase(); const filtered = lowerCase.replace(/(?:[a-z][a-z0-9]?)+(?:[-_.]?[a-z0-9])*/g, ''); if (filtered.length) { return new index_js_1.RedisKeysInvalidKeyError(); } return lowerCase; }, getKeySegmentSeparator() { return REDIS_KEY_CONFIG.SEGMENT_SEPARATOR; }, }; //# sourceMappingURL=redis-keys.js.map