UNPKG

@golevelup/nestjs-rabbitmq

Version:
50 lines 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assertRabbitMqUri = exports.matchesRoutingKey = void 0; function matchesRoutingKey(routingKey, pattern) { // An empty string is a valid pattern therefore // we should only exclude null values and empty array if (pattern === undefined || (Array.isArray(pattern) && pattern.length === 0)) return false; const patterns = Array.isArray(pattern) ? pattern : [pattern]; for (const p of patterns) { if (routingKey === p) return true; const splitKey = routingKey.split('.'); const splitPattern = p.split('.'); let starFailed = false; for (let i = 0; i < splitPattern.length; i++) { if (splitPattern[i] === '#') return true; if (splitPattern[i] !== '*' && splitPattern[i] !== splitKey[i]) { starFailed = true; break; } } if (!starFailed && splitKey.length === splitPattern.length) return true; } return false; } exports.matchesRoutingKey = matchesRoutingKey; const rabbitMQRegex = /^amqps?:\/\/(([^:]+):([^@]+)@)?([^:/]+)(:[0-9]+)?(\/.*)?$/; /** * Validates a rabbitmq uri * @see https://www.rabbitmq.com/docs/uri-spec#the-amqps-uri-scheme * @param uri * @returns */ const assertRabbitMqUri = (uri) => { if (Array.isArray(uri)) { for (const u of uri) { (0, exports.assertRabbitMqUri)(u); } return; } const valid = rabbitMQRegex.test(uri); if (!valid) { throw new Error(`Invalid RabbitMQ connection uri, received: ${uri}`); } }; exports.assertRabbitMqUri = assertRabbitMqUri; //# sourceMappingURL=utils.js.map