Socket
Socket
Sign inDemoInstall

redis-smq

Package Overview
Dependencies
48
Maintainers
1
Versions
149
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 8.0.0-rc.20 to 8.0.0-rc.21

31

CHANGELOG.md
## [8.0.0-rc.21](https://github.com/weyoss/redis-smq/compare/v8.0.0-rc.20...v8.0.0-rc.21) (2024-04-29)
### Bug Fixes
* **message:** correct logic for deleting multiple messages by IDs ([fdb39d6](https://github.com/weyoss/redis-smq/commit/fdb39d66f3cea59decf8ad29b5efdf827780ba73))
### Documentation
* improve RC release status description, clean up ([98910dc](https://github.com/weyoss/redis-smq/commit/98910dcef215494ccee4de01879d0e2f8037213d))
* update examples ([d80beb2](https://github.com/weyoss/redis-smq/commit/d80beb2af2472ac596a88531786a0ba2681e09dd))
### Codebase Refactoring
* optimize imports ([29a0efb](https://github.com/weyoss/redis-smq/commit/29a0efb9e46ce23a6fb14c44222cf987a05ee22a))
* remove unused error classes and clean up ([15bd959](https://github.com/weyoss/redis-smq/commit/15bd9591d58b5717ee5a8e8191df7388e65a768b))
* shorten imports ([3bfb8f1](https://github.com/weyoss/redis-smq/commit/3bfb8f1e39011e2f48039b2c534f0fe936b67759))
### Tests
* increase code coverage ([e9d84e8](https://github.com/weyoss/redis-smq/commit/e9d84e8b4a9a239246473ca770ce035ce8e66831))
### Misc
* clean up package.json ([ff9ff3d](https://github.com/weyoss/redis-smq/commit/ff9ff3d06f61c20f70bd55c34a545278713847d5))
* update LICENSE ([cb18d44](https://github.com/weyoss/redis-smq/commit/cb18d4449f851df803a0e2cd84410257cbfcfdfd))
## [8.0.0-rc.20](https://github.com/weyoss/redis-smq/compare/v8.0.0-rc.19...v8.0.0-rc.20) (2024-03-24)

@@ -4,0 +35,0 @@

15

dist/cjs/src/lib/consumer-groups/_/_save-consumer-group.js

@@ -5,15 +5,6 @@ "use strict";

const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const index_js_1 = require("../../consumer/index.js");
function validateGroupId(groupId) {
const lowerCase = groupId.toLowerCase();
const filtered = lowerCase.replace(/(?:[a-z][a-z0-9]?)+(?:[-_]?[a-z0-9])*/, '');
if (filtered.length) {
return false;
}
return lowerCase;
}
function _saveConsumerGroup(redisClient, eventBus, queue, groupId, cb) {
const gid = validateGroupId(groupId);
if (!gid)
cb(new index_js_1.ConsumerInvalidGroupIdError());
const gid = redis_keys_js_1.redisKeys.validateRedisKey(groupId);
if (gid instanceof Error)
cb(gid);
else {

@@ -20,0 +11,0 @@ const { keyQueueConsumerGroups } = redis_keys_js_1.redisKeys.getQueueKeys(queue, gid);

2

dist/cjs/src/lib/consumer-groups/consumer-groups.d.ts
import { ICallback } from 'redis-smq-common';
import { RedisClientInstance } from '../../common/redis-client/redis-client-instance.js';
import { EventBusRedisInstance } from '../event-bus/event-bus-redis-instance.js';
import { EventBusRedisInstance } from '../event-bus/index.js';
import { IQueueParams } from '../queue/index.js';

@@ -5,0 +5,0 @@ export declare class ConsumerGroups {

@@ -7,3 +7,3 @@ "use strict";

const index_js_1 = require("../../config/index.js");
const event_bus_redis_instance_js_1 = require("../event-bus/event-bus-redis-instance.js");
const index_js_2 = require("../event-bus/index.js");
const _parse_queue_params_js_1 = require("../queue/_/_parse-queue-params.js");

@@ -19,3 +19,3 @@ const _delete_consumer_group_js_1 = require("./_/_delete-consumer-group.js");

this.logger = redis_smq_common_1.logger.getLogger(index_js_1.Configuration.getSetConfig().logger, `consumer-groups`);
this.eventBus = new event_bus_redis_instance_js_1.EventBusRedisInstance();
this.eventBus = new index_js_2.EventBusRedisInstance();
this.eventBus.on('error', (err) => this.logger.error(err));

@@ -22,0 +22,0 @@ this.redisClient = new redis_client_instance_js_1.RedisClientInstance();

@@ -31,3 +31,3 @@ "use strict";

const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const configuration_js_1 = require("../../../config/configuration.js");
const index_js_1 = require("../../../config/index.js");
const event_bus_redis_factory_js_1 = require("../../event-bus/event-bus-redis-factory.js");

@@ -62,3 +62,3 @@ const event_bus_publisher_js_1 = require("./event-bus-publisher.js");

this.redisClient = (0, redis_client_factory_js_1.RedisClientFactory)(consumer.getId(), (err) => this.handleError(err));
if (configuration_js_1.Configuration.getSetConfig().eventBus.enabled) {
if (index_js_1.Configuration.getSetConfig().eventBus.enabled) {
this.eventBus = (0, event_bus_redis_factory_js_1.EventBusRedisFactory)(consumer.getId(), (err) => this.handleError(err));

@@ -65,0 +65,0 @@ (0, event_bus_publisher_js_1.eventBusPublisher)(this, this.consumer.getId(), this.logger);

@@ -15,6 +15,6 @@ "use strict";

const _cleanup_offline_consumer_js_1 = require("../consumer-heartbeat/_/_cleanup-offline-consumer.js");
const event_bus_publisher_js_1 = require("./event-bus-publisher.js");
const consumer_heartbeat_js_1 = require("../consumer-heartbeat/consumer-heartbeat.js");
const message_handler_runner_js_1 = require("../message-handler-runner/message-handler-runner.js");
const multiplexed_message_handler_runner_js_1 = require("../message-handler-runner/multiplexed-message-handler-runner.js");
const event_bus_publisher_js_1 = require("./event-bus-publisher.js");
class Consumer extends redis_smq_common_1.Runnable {

@@ -21,0 +21,0 @@ constructor(enableMultiplexing) {

export { ConsumerError } from './consumer.error.js';
export { ConsumerMessageHandlerAlreadyExistsError } from './consumer-message-handler-already-exists.error.js';
export { ConsumerGroupDeleteError } from './consumer-group-delete.error.js';
export { ConsumerGroupIdNotFoundError } from './consumer-group-id-not-found.error.js';
export { ConsumerGroupIdNotSupportedError } from './consumer-group-id-not-supported.error.js';
export { ConsumerGroupIdRequiredError } from './consumer-group-id-required.error.js';
export { ConsumerInvalidGroupIdError } from './consumer-invalid-group-id.error.js';
//# sourceMappingURL=index.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConsumerInvalidGroupIdError = exports.ConsumerGroupIdRequiredError = exports.ConsumerGroupIdNotSupportedError = exports.ConsumerGroupIdNotFoundError = exports.ConsumerGroupDeleteError = exports.ConsumerMessageHandlerAlreadyExistsError = exports.ConsumerError = void 0;
exports.ConsumerGroupIdRequiredError = exports.ConsumerGroupIdNotSupportedError = exports.ConsumerGroupDeleteError = exports.ConsumerMessageHandlerAlreadyExistsError = exports.ConsumerError = void 0;
var consumer_error_js_1 = require("./consumer.error.js");

@@ -10,4 +10,2 @@ Object.defineProperty(exports, "ConsumerError", { enumerable: true, get: function () { return consumer_error_js_1.ConsumerError; } });

Object.defineProperty(exports, "ConsumerGroupDeleteError", { enumerable: true, get: function () { return consumer_group_delete_error_js_1.ConsumerGroupDeleteError; } });
var consumer_group_id_not_found_error_js_1 = require("./consumer-group-id-not-found.error.js");
Object.defineProperty(exports, "ConsumerGroupIdNotFoundError", { enumerable: true, get: function () { return consumer_group_id_not_found_error_js_1.ConsumerGroupIdNotFoundError; } });
var consumer_group_id_not_supported_error_js_1 = require("./consumer-group-id-not-supported.error.js");

@@ -17,4 +15,2 @@ Object.defineProperty(exports, "ConsumerGroupIdNotSupportedError", { enumerable: true, get: function () { return consumer_group_id_not_supported_error_js_1.ConsumerGroupIdNotSupportedError; } });

Object.defineProperty(exports, "ConsumerGroupIdRequiredError", { enumerable: true, get: function () { return consumer_group_id_required_error_js_1.ConsumerGroupIdRequiredError; } });
var consumer_invalid_group_id_error_js_1 = require("./consumer-invalid-group-id.error.js");
Object.defineProperty(exports, "ConsumerInvalidGroupIdError", { enumerable: true, get: function () { return consumer_invalid_group_id_error_js_1.ConsumerInvalidGroupIdError; } });
//# sourceMappingURL=index.js.map

@@ -5,4 +5,4 @@ import { ICallback, ILogger, Runnable } from 'redis-smq-common';

import { Consumer } from '../consumer/consumer.js';
import { MessageHandler } from '../message-handler/message-handler/message-handler.js';
import { IConsumerMessageHandlerArgs, TConsumerMessageHandler } from '../types/index.js';
import { MessageHandler } from '../message-handler/message-handler/message-handler.js';
export declare class MessageHandlerRunner extends Runnable<TConsumerMessageHandlerRunnerEvent> {

@@ -9,0 +9,0 @@ protected consumer: Consumer;

@@ -5,4 +5,4 @@ "use strict";

const redis_smq_common_1 = require("redis-smq-common");
const configuration_js_1 = require("../../../config/configuration.js");
const index_js_1 = require("../errors/index.js");
const index_js_1 = require("../../../config/index.js");
const index_js_2 = require("../errors/index.js");
const message_handler_js_1 = require("../message-handler/message-handler/message-handler.js");

@@ -30,3 +30,3 @@ const event_bus_publisher_js_1 = require("./event-bus-publisher.js");

this.logger = logger;
if (configuration_js_1.Configuration.getSetConfig().eventBus.enabled) {
if (index_js_1.Configuration.getSetConfig().eventBus.enabled) {
(0, event_bus_publisher_js_1.eventBusPublisher)(this, this.consumer.getId(), logger);

@@ -121,3 +121,3 @@ }

if (handler)
cb(new index_js_1.ConsumerMessageHandlerAlreadyExistsError(queue));
cb(new index_js_2.ConsumerMessageHandlerAlreadyExistsError(queue));
else {

@@ -124,0 +124,0 @@ const handlerParams = {

import { ICallback, ILogger, Timer } from 'redis-smq-common';
import { Consumer } from '../consumer/consumer.js';
import { MessageHandler } from '../message-handler/message-handler/message-handler.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
import { MessageHandlerRunner } from './message-handler-runner.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
export declare class MultiplexedMessageHandlerRunner extends MessageHandlerRunner {

@@ -7,0 +7,0 @@ protected timer: Timer;

@@ -5,4 +5,4 @@ "use strict";

const redis_smq_common_1 = require("redis-smq-common");
const multiplexed_message_handler_js_1 = require("../message-handler/multiplexed-message-handler.js");
const message_handler_runner_js_1 = require("./message-handler-runner.js");
const multiplexed_message_handler_js_1 = require("../message-handler/multiplexed-message-handler.js");
class MultiplexedMessageHandlerRunner extends message_handler_runner_js_1.MessageHandlerRunner {

@@ -9,0 +9,0 @@ constructor(consumer, logger) {

@@ -31,9 +31,9 @@ "use strict";

const redis_keys_js_1 = require("../../../../common/redis-keys/redis-keys.js");
const configuration_js_1 = require("../../../../config/configuration.js");
const index_js_1 = require("../../../../config/index.js");
const _save_consumer_group_js_1 = require("../../../consumer-groups/_/_save-consumer-group.js");
const event_bus_redis_factory_js_1 = require("../../../event-bus/event-bus-redis-factory.js");
const index_js_1 = require("../../../queue/index.js");
const _has_rate_limit_exceeded_js_1 = require("../../../queue-rate-limit/_/_has-rate-limit-exceeded.js");
const _get_queue_properties_js_1 = require("../../../queue/_/_get-queue-properties.js");
const index_js_2 = require("../../errors/index.js");
const index_js_2 = require("../../../queue/index.js");
const index_js_3 = require("../../errors/index.js");
const event_bus_publisher_js_1 = require("./event-bus-publisher.js");

@@ -122,3 +122,3 @@ const IPAddresses = (() => {

this.eventBus = (0, event_bus_redis_factory_js_1.EventBusRedisFactory)(this.consumerId, (err) => this.handleError(err));
if (configuration_js_1.Configuration.getSetConfig().eventBus.enabled) {
if (index_js_1.Configuration.getSetConfig().eventBus.enabled) {
(0, event_bus_publisher_js_1.eventBusPublisher)(this, consumerId, logger);

@@ -180,3 +180,3 @@ }

else if (!reply)
cb(new index_js_1.QueueNotFoundError());
cb(new index_js_2.QueueNotFoundError());
else

@@ -203,11 +203,11 @@ cb();

if (queueProperties.deliveryModel ===
index_js_1.EQueueDeliveryModel.POINT_TO_POINT) {
index_js_2.EQueueDeliveryModel.POINT_TO_POINT) {
if (groupId)
cb(new index_js_2.ConsumerGroupIdNotSupportedError());
cb(new index_js_3.ConsumerGroupIdNotSupportedError());
else
cb();
}
else if (queueProperties.deliveryModel === index_js_1.EQueueDeliveryModel.PUB_SUB) {
else if (queueProperties.deliveryModel === index_js_2.EQueueDeliveryModel.PUB_SUB) {
if (!groupId)
cb(new index_js_2.ConsumerGroupIdRequiredError());
cb(new index_js_3.ConsumerGroupIdRequiredError());
else {

@@ -254,3 +254,3 @@ const eventBus = this.eventBus.getInstance();

isPriorityQueuingEnabled() {
return this.queueType === index_js_1.EQueueType.PRIORITY_QUEUE;
return this.queueType === index_js_2.EQueueType.PRIORITY_QUEUE;
}

@@ -257,0 +257,0 @@ dequeue() {

@@ -10,4 +10,4 @@ "use strict";

const index_js_1 = require("../../../../config/index.js");
const _from_message_js_1 = require("../../../message/_/_from-message.js");
const index_js_2 = require("../../../message/index.js");
const _from_message_js_1 = require("../../../message/_/_from-message.js");
const index_js_3 = require("../../types/index.js");

@@ -14,0 +14,0 @@ const consume_message_js_1 = require("../consume-message/consume-message.js");

import { ILogger } from 'redis-smq-common';
import { Consumer } from '../consumer/consumer.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
import { DequeueMessage } from './dequeue-message/dequeue-message.js';
import { MessageHandler } from './message-handler/message-handler.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
export declare class MultiplexedMessageHandler extends MessageHandler {

@@ -7,0 +7,0 @@ protected dequeueNextFn: () => void;

@@ -8,4 +8,4 @@ "use strict";

const index_js_1 = require("../../../config/index.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const index_js_2 = require("../../message/index.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const consumer_queues_js_1 = require("../consumer-queues.js");

@@ -12,0 +12,0 @@ const index_js_3 = require("../errors/index.js");

export * from './message-handler.js';
export * from './consumer-heartbeat.js';
export * from './consume-message.js';
export * from './config.js';
//# sourceMappingURL=index.d.ts.map

@@ -20,3 +20,2 @@ "use strict";

__exportStar(require("./consume-message.js"), exports);
__exportStar(require("./config.js"), exports);
//# sourceMappingURL=index.js.map

@@ -6,4 +6,4 @@ "use strict";

const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const index_js_1 = require("../../message/index.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const index_js_2 = require("../../queue/index.js");

@@ -10,0 +10,0 @@ const worker_js_1 = require("./worker.js");

@@ -6,5 +6,5 @@ "use strict";

const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const index_js_1 = require("../../message/index.js");
const _from_message_js_1 = require("../../message/_/_from-message.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const index_js_1 = require("../../message/index.js");
const index_js_2 = require("../../queue/index.js");

@@ -11,0 +11,0 @@ const worker_js_1 = require("./worker.js");

@@ -6,4 +6,4 @@ "use strict";

const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const index_js_1 = require("../../message/index.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const index_js_2 = require("../../queue/index.js");

@@ -10,0 +10,0 @@ const worker_js_1 = require("./worker.js");

import { ICallback, ILogger, Runnable } from 'redis-smq-common';
import { RedisClientInstance } from '../../../common/redis-client/redis-client-instance.js';
import { IRedisSMQConfigRequired } from '../../../config/types/config.js';
import { IRedisSMQConfigRequired } from '../../../config/index.js';
export declare abstract class Worker extends Runnable<Record<string, never>> {

@@ -5,0 +5,0 @@ protected redisClient: RedisClientInstance;

@@ -10,3 +10,2 @@ "use strict";

this.shutdown = (cb) => {
console.log('SSSSSSSSSSSSSSSSSSSSSSSSS');
this.redisClient.shutdown(cb);

@@ -13,0 +12,0 @@ };

@@ -1,4 +0,4 @@

import { IQueueParams } from '../../../queue/types/queue.js';
import { IQueueParams } from '../../../queue/index.js';
import { TExchangeDirectTransferable } from '../../types/exchange.js';
export declare function _getExchangeDirectTransferable(queue: string | IQueueParams): TExchangeDirectTransferable;
//# sourceMappingURL=_get-exchange-direct-transferable.d.ts.map

@@ -9,4 +9,4 @@ "use strict";

const index_js_1 = require("../../queue/index.js");
const exchange_fan_out_error_js_1 = require("../errors/exchange-fan-out.error.js");
const exchange_error_js_1 = require("../errors/exchange.error.js");
const index_js_2 = require("../errors/index.js");
const index_js_3 = require("../errors/index.js");
const exchange_abstract_js_1 = require("../exchange-abstract.js");

@@ -62,3 +62,3 @@ const _get_fan_out_exchange_queues_js_1 = require("./_/_get-fan-out-exchange-queues.js");

else if (reply.length)
cb(new exchange_error_js_1.ExchangeError(`Exchange has ${reply.length} bound queue(s). Unbind all queues before deleting the exchange.`));
cb(new index_js_3.ExchangeError(`Exchange has ${reply.length} bound queue(s). Unbind all queues before deleting the exchange.`));
else {

@@ -110,3 +110,3 @@ const multi = client.multi();

queueProperties.queueType)
cb(new exchange_fan_out_error_js_1.ExchangeFanOutError('Binding different types of queues to the same exchange is not allowed.'));
cb(new index_js_2.ExchangeFanOutError('Binding different types of queues to the same exchange is not allowed.'));
else

@@ -171,3 +171,3 @@ cb(null, queueProperties);

else if (properties.exchange !== fanOutName)
cb(new exchange_fan_out_error_js_1.ExchangeFanOutError(`Queue ${queueParams.name}@${queueParams.ns} is not bound to [${fanOutName}] exchange.`));
cb(new index_js_2.ExchangeFanOutError(`Queue ${queueParams.name}@${queueParams.ns} is not bound to [${fanOutName}] exchange.`));
else

@@ -174,0 +174,0 @@ cb();

import { ICallback } from 'redis-smq-common';
import { IQueueParams } from '../../queue/types/queue.js';
import { IQueueParams } from '../../queue/index.js';
import { ExchangeAbstract } from '../exchange-abstract.js';

@@ -4,0 +4,0 @@ import { ITopicParams } from '../types/exchange.js';

@@ -8,5 +8,5 @@ "use strict";

const index_js_1 = require("../../queue/index.js");
const _get_message_js_1 = require("./_get-message.js");
const index_js_2 = require("../errors/index.js");
const index_js_3 = require("../types/index.js");
const _get_message_js_1 = require("./_get-message.js");
function _deleteMessage(redisClient, messageId, cb) {

@@ -16,2 +16,5 @@ const keys = [];

const ids = typeof messageId === 'string' ? [messageId] : messageId;
const { keyScheduledMessages, keyDelayedMessages, keyRequeueMessages } = redis_keys_js_1.redisKeys.getMainKeys();
keys.push(keyScheduledMessages, keyDelayedMessages, keyRequeueMessages);
argv.push(index_js_1.EQueueProperty.QUEUE_TYPE, index_js_1.EQueueProperty.MESSAGES_COUNT, index_js_1.EQueueType.PRIORITY_QUEUE, index_js_1.EQueueType.LIFO_QUEUE, index_js_1.EQueueType.FIFO_QUEUE, index_js_3.EMessageProperty.STATUS, index_js_3.EMessagePropertyStatus.PROCESSING, index_js_3.EMessagePropertyStatus.ACKNOWLEDGED, index_js_3.EMessagePropertyStatus.PENDING, index_js_3.EMessagePropertyStatus.SCHEDULED, index_js_3.EMessagePropertyStatus.DEAD_LETTERED, index_js_3.EMessagePropertyStatus.UNACK_DELAYING, index_js_3.EMessagePropertyStatus.UNACK_REQUEUING);
redis_smq_common_1.async.each(ids, (id, _, done) => {

@@ -25,6 +28,5 @@ (0, _get_message_js_1._getMessage)(redisClient, id, (err, message) => {

const { keyQueueProperties, keyQueueDL, keyQueueScheduled, keyQueueAcknowledged, keyQueuePriorityPending, keyQueuePending, } = redis_keys_js_1.redisKeys.getQueueKeys(message.getDestinationQueue(), message.getConsumerGroupId());
const { keyScheduledMessages, keyDelayedMessages, keyRequeueMessages, } = redis_keys_js_1.redisKeys.getMainKeys();
const { keyMessage } = redis_keys_js_1.redisKeys.getMessageKeys(id);
keys.push(keyScheduledMessages, keyDelayedMessages, keyRequeueMessages, keyMessage, keyQueueProperties, keyQueuePending, keyQueueDL, keyQueueAcknowledged, keyQueueScheduled, keyQueuePriorityPending);
argv.push(index_js_1.EQueueProperty.QUEUE_TYPE, index_js_1.EQueueProperty.MESSAGES_COUNT, index_js_1.EQueueType.PRIORITY_QUEUE, index_js_1.EQueueType.LIFO_QUEUE, index_js_1.EQueueType.FIFO_QUEUE, index_js_3.EMessageProperty.STATUS, index_js_3.EMessagePropertyStatus.PROCESSING, index_js_3.EMessagePropertyStatus.ACKNOWLEDGED, index_js_3.EMessagePropertyStatus.PENDING, index_js_3.EMessagePropertyStatus.SCHEDULED, index_js_3.EMessagePropertyStatus.DEAD_LETTERED, index_js_3.EMessagePropertyStatus.UNACK_DELAYING, index_js_3.EMessagePropertyStatus.UNACK_REQUEUING, id);
keys.push(keyMessage, keyQueueProperties, keyQueuePending, keyQueueDL, keyQueueAcknowledged, keyQueueScheduled, keyQueuePriorityPending);
argv.push(id);
done();

@@ -31,0 +33,0 @@ }

@@ -6,5 +6,5 @@ "use strict";

const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const _from_message_js_1 = require("./_from-message.js");
const index_js_1 = require("../errors/index.js");
const index_js_2 = require("../types/index.js");
const _from_message_js_1 = require("./_from-message.js");
function _getMessage(redisClient, messageId, cb) {

@@ -11,0 +11,0 @@ const { keyMessage } = redis_keys_js_1.redisKeys.getMessageKeys(messageId);

@@ -8,5 +8,5 @@ "use strict";

const _delete_message_js_1 = require("./_/_delete-message.js");
const _get_message_js_1 = require("./_/_get-message.js");
const _get_message_state_js_1 = require("./_/_get-message-state.js");
const _get_message_status_js_1 = require("./_/_get-message-status.js");
const _get_message_js_1 = require("./_/_get-message.js");
class Message {

@@ -13,0 +13,0 @@ constructor() {

import { NamespaceError } from './namespace.error.js';
export declare class NamespaceNotFoundError extends NamespaceError {
constructor(namespace: string);
}
//# sourceMappingURL=namespace-not-found.error.d.ts.map

@@ -6,7 +6,4 @@ "use strict";

class NamespaceNotFoundError extends namespace_error_js_1.NamespaceError {
constructor(namespace) {
super(`Namespace (${namespace}) does not exist`);
}
}
exports.NamespaceNotFoundError = NamespaceNotFoundError;
//# sourceMappingURL=namespace-not-found.error.js.map

@@ -50,13 +50,28 @@ "use strict";

else {
const { keyNamespaces } = redis_keys_js_1.redisKeys.getMainKeys();
const { keyNamespaceQueues } = redis_keys_js_1.redisKeys.getNamespaceKeys(ns);
client.smembers(keyNamespaceQueues, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new redis_smq_common_1.CallbackEmptyReplyError());
else {
const messageQueues = reply.map((i) => JSON.parse(i));
cb(null, messageQueues);
}
});
redis_smq_common_1.async.waterfall([
(cb) => {
client.sismember(keyNamespaces, ns, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new index_js_2.NamespaceNotFoundError());
else
cb();
});
},
(cb) => {
client.smembers(keyNamespaceQueues, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new redis_smq_common_1.CallbackEmptyReplyError());
else {
const messageQueues = reply.map((i) => JSON.parse(i));
cb(null, messageQueues);
}
});
},
], cb);
}

@@ -63,0 +78,0 @@ });

@@ -10,4 +10,4 @@ "use strict";

const event_bus_redis_factory_js_1 = require("../event-bus/event-bus-redis-factory.js");
const _get_exchange_queues_js_1 = require("../exchange/_/_get-exchange-queues.js");
const index_js_2 = require("../exchange/index.js");
const _get_exchange_queues_js_1 = require("../exchange/_/_get-exchange-queues.js");
const index_js_3 = require("../message/index.js");

@@ -18,4 +18,4 @@ const message_envelope_js_1 = require("../message/message-envelope.js");

const index_js_5 = require("./errors/index.js");
const event_bus_publisher_js_1 = require("./event-bus-publisher.js");
const queue_consumer_groups_cache_js_1 = require("./queue-consumer-groups-cache.js");
const event_bus_publisher_js_1 = require("./event-bus-publisher.js");
class Producer extends redis_smq_common_1.Runnable {

@@ -22,0 +22,0 @@ constructor() {

@@ -8,5 +8,5 @@ "use strict";

const event_bus_redis_factory_js_1 = require("../event-bus/event-bus-redis-factory.js");
const index_js_1 = require("../queue/index.js");
const _get_queue_properties_js_1 = require("../queue/_/_get-queue-properties.js");
const _get_queues_js_1 = require("../queue/_/_get-queues.js");
const index_js_1 = require("../queue/index.js");
class QueueConsumerGroupsCache extends redis_smq_common_1.Runnable {

@@ -13,0 +13,0 @@ constructor(producerId, logger) {

@@ -7,6 +7,6 @@ "use strict";

const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const index_js_1 = require("../../message/index.js");
const _get_message_js_1 = require("../../message/_/_get-message.js");
const _parse_queue_params_js_1 = require("../../queue/_/_parse-queue-params.js");
const index_js_2 = require("../../queue/index.js");
const _parse_queue_params_js_1 = require("../../queue/_/_parse-queue-params.js");
const index_js_3 = require("../errors/index.js");

@@ -13,0 +13,0 @@ function _requeueMessage(redisClient, queue, messageId, messageStatus, cb) {

@@ -5,4 +5,4 @@ "use strict";

const index_js_1 = require("../../consumer/index.js");
const _get_queue_properties_js_1 = require("../../queue/_/_get-queue-properties.js");
const index_js_2 = require("../../queue/index.js");
const _get_queue_properties_js_1 = require("../../queue/_/_get-queue-properties.js");
function _validateQueueExtendedParams(redisClient, queue, requireGroupId, cb) {

@@ -9,0 +9,0 @@ const { queueParams, groupId } = queue;

@@ -10,5 +10,5 @@ "use strict";

const processing_queue_js_1 = require("../../consumer/message-handler/processing-queue.js");
const _get_queue_properties_js_1 = require("./_get-queue-properties.js");
const index_js_1 = require("../errors/index.js");
const index_js_2 = require("../types/index.js");
const _get_queue_properties_js_1 = require("./_get-queue-properties.js");
function checkOnlineConsumers(redisClient, queue, cb) {

@@ -15,0 +15,0 @@ const verifyHeartbeats = (consumerIds, cb) => {

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports._parseQueueParams = void 0;
const redis_keys_error_js_1 = require("../../../common/redis-keys/redis-keys.error.js");
const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const redis_keys_error_js_1 = require("../../../common/redis-keys/redis-keys.error.js");
const index_js_1 = require("../../../config/index.js");

@@ -7,0 +7,0 @@ function _parseQueueParams(queue) {

import { ICallback } from 'redis-smq-common';
import { RedisClientInstance } from '../../common/redis-client/redis-client-instance.js';
import { EventBusRedisInstance } from '../event-bus/event-bus-redis-instance.js';
import { EventBusRedisInstance } from '../event-bus/index.js';
import { EQueueDeliveryModel, EQueueType, IQueueParams, IQueueProperties } from './types/index.js';

@@ -5,0 +5,0 @@ export declare class Queue {

@@ -9,3 +9,3 @@ "use strict";

const index_js_1 = require("../../config/index.js");
const event_bus_redis_instance_js_1 = require("../event-bus/event-bus-redis-instance.js");
const index_js_2 = require("../event-bus/index.js");
const _delete_queue_js_1 = require("./_/_delete-queue.js");

@@ -15,4 +15,4 @@ const _get_queue_properties_js_1 = require("./_/_get-queue-properties.js");

const _parse_queue_params_js_1 = require("./_/_parse-queue-params.js");
const index_js_2 = require("./errors/index.js");
const index_js_3 = require("./types/index.js");
const index_js_3 = require("./errors/index.js");
const index_js_4 = require("./types/index.js");
class Queue {

@@ -24,3 +24,3 @@ constructor() {

this.logger = redis_smq_common_1.logger.getLogger(index_js_1.Configuration.getSetConfig().logger, `queue`);
this.eventBus = new event_bus_redis_instance_js_1.EventBusRedisInstance();
this.eventBus = new index_js_2.EventBusRedisInstance();
this.eventBus.on('error', (err) => this.logger.error(err));

@@ -48,5 +48,5 @@ this.redisClient = new redis_client_instance_js_1.RedisClientInstance();

queueParamsStr,
index_js_3.EQueueProperty.QUEUE_TYPE,
index_js_4.EQueueProperty.QUEUE_TYPE,
queueType,
index_js_3.EQueueProperty.DELIVERY_MODEL,
index_js_4.EQueueProperty.DELIVERY_MODEL,
deliveryModel,

@@ -59,3 +59,3 @@ ], (err, reply) => {

else if (reply !== 'OK')
cb(new index_js_2.QueueExistsError());
cb(new index_js_3.QueueExistsError());
else

@@ -62,0 +62,0 @@ this.getProperties(queueParams, (err, properties) => {

import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { ConsumerInvalidGroupIdError } from '../../consumer/index.js';
function validateGroupId(groupId) {
const lowerCase = groupId.toLowerCase();
const filtered = lowerCase.replace(/(?:[a-z][a-z0-9]?)+(?:[-_]?[a-z0-9])*/, '');
if (filtered.length) {
return false;
}
return lowerCase;
}
export function _saveConsumerGroup(redisClient, eventBus, queue, groupId, cb) {
const gid = validateGroupId(groupId);
if (!gid)
cb(new ConsumerInvalidGroupIdError());
const gid = redisKeys.validateRedisKey(groupId);
if (gid instanceof Error)
cb(gid);
else {

@@ -16,0 +7,0 @@ const { keyQueueConsumerGroups } = redisKeys.getQueueKeys(queue, gid);

import { ICallback } from 'redis-smq-common';
import { RedisClientInstance } from '../../common/redis-client/redis-client-instance.js';
import { EventBusRedisInstance } from '../event-bus/event-bus-redis-instance.js';
import { EventBusRedisInstance } from '../event-bus/index.js';
import { IQueueParams } from '../queue/index.js';

@@ -5,0 +5,0 @@ export declare class ConsumerGroups {

import { async, CallbackEmptyReplyError, logger, } from 'redis-smq-common';
import { RedisClientInstance } from '../../common/redis-client/redis-client-instance.js';
import { Configuration } from '../../config/index.js';
import { EventBusRedisInstance } from '../event-bus/event-bus-redis-instance.js';
import { EventBusRedisInstance } from '../event-bus/index.js';
import { _parseQueueParams } from '../queue/_/_parse-queue-params.js';

@@ -6,0 +6,0 @@ import { _deleteConsumerGroup } from './_/_delete-consumer-group.js';

@@ -5,3 +5,3 @@ import * as os from 'os';

import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { Configuration } from '../../../config/configuration.js';
import { Configuration } from '../../../config/index.js';
import { EventBusRedisFactory } from '../../event-bus/event-bus-redis-factory.js';

@@ -8,0 +8,0 @@ import { eventBusPublisher } from './event-bus-publisher.js';

@@ -9,6 +9,6 @@ import path from 'path';

import { _cleanupOfflineConsumer } from '../consumer-heartbeat/_/_cleanup-offline-consumer.js';
import { eventBusPublisher } from './event-bus-publisher.js';
import { ConsumerHeartbeat } from '../consumer-heartbeat/consumer-heartbeat.js';
import { MessageHandlerRunner } from '../message-handler-runner/message-handler-runner.js';
import { MultiplexedMessageHandlerRunner } from '../message-handler-runner/multiplexed-message-handler-runner.js';
import { eventBusPublisher } from './event-bus-publisher.js';
export class Consumer extends Runnable {

@@ -15,0 +15,0 @@ messageHandlerRunner;

export { ConsumerError } from './consumer.error.js';
export { ConsumerMessageHandlerAlreadyExistsError } from './consumer-message-handler-already-exists.error.js';
export { ConsumerGroupDeleteError } from './consumer-group-delete.error.js';
export { ConsumerGroupIdNotFoundError } from './consumer-group-id-not-found.error.js';
export { ConsumerGroupIdNotSupportedError } from './consumer-group-id-not-supported.error.js';
export { ConsumerGroupIdRequiredError } from './consumer-group-id-required.error.js';
export { ConsumerInvalidGroupIdError } from './consumer-invalid-group-id.error.js';
//# sourceMappingURL=index.d.ts.map
export { ConsumerError } from './consumer.error.js';
export { ConsumerMessageHandlerAlreadyExistsError } from './consumer-message-handler-already-exists.error.js';
export { ConsumerGroupDeleteError } from './consumer-group-delete.error.js';
export { ConsumerGroupIdNotFoundError } from './consumer-group-id-not-found.error.js';
export { ConsumerGroupIdNotSupportedError } from './consumer-group-id-not-supported.error.js';
export { ConsumerGroupIdRequiredError } from './consumer-group-id-required.error.js';
export { ConsumerInvalidGroupIdError } from './consumer-invalid-group-id.error.js';
//# sourceMappingURL=index.js.map

@@ -5,4 +5,4 @@ import { ICallback, ILogger, Runnable } from 'redis-smq-common';

import { Consumer } from '../consumer/consumer.js';
import { MessageHandler } from '../message-handler/message-handler/message-handler.js';
import { IConsumerMessageHandlerArgs, TConsumerMessageHandler } from '../types/index.js';
import { MessageHandler } from '../message-handler/message-handler/message-handler.js';
export declare class MessageHandlerRunner extends Runnable<TConsumerMessageHandlerRunnerEvent> {

@@ -9,0 +9,0 @@ protected consumer: Consumer;

import { async, Runnable } from 'redis-smq-common';
import { Configuration } from '../../../config/configuration.js';
import { Configuration } from '../../../config/index.js';
import { ConsumerMessageHandlerAlreadyExistsError } from '../errors/index.js';

@@ -4,0 +4,0 @@ import { MessageHandler } from '../message-handler/message-handler/message-handler.js';

import { ICallback, ILogger, Timer } from 'redis-smq-common';
import { Consumer } from '../consumer/consumer.js';
import { MessageHandler } from '../message-handler/message-handler/message-handler.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
import { MessageHandlerRunner } from './message-handler-runner.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
export declare class MultiplexedMessageHandlerRunner extends MessageHandlerRunner {

@@ -7,0 +7,0 @@ protected timer: Timer;

import { Timer } from 'redis-smq-common';
import { MultiplexedMessageHandler } from '../message-handler/multiplexed-message-handler.js';
import { MessageHandlerRunner } from './message-handler-runner.js';
import { MultiplexedMessageHandler } from '../message-handler/multiplexed-message-handler.js';
export class MultiplexedMessageHandlerRunner extends MessageHandlerRunner {

@@ -5,0 +5,0 @@ timer;

@@ -5,8 +5,8 @@ import * as os from 'os';

import { redisKeys } from '../../../../common/redis-keys/redis-keys.js';
import { Configuration } from '../../../../config/configuration.js';
import { Configuration } from '../../../../config/index.js';
import { _saveConsumerGroup } from '../../../consumer-groups/_/_save-consumer-group.js';
import { EventBusRedisFactory } from '../../../event-bus/event-bus-redis-factory.js';
import { EQueueDeliveryModel, EQueueType, QueueNotFoundError, } from '../../../queue/index.js';
import { _hasRateLimitExceeded } from '../../../queue-rate-limit/_/_has-rate-limit-exceeded.js';
import { _getQueueProperties } from '../../../queue/_/_get-queue-properties.js';
import { EQueueDeliveryModel, EQueueType, QueueNotFoundError, } from '../../../queue/index.js';
import { ConsumerGroupIdNotSupportedError, ConsumerGroupIdRequiredError, } from '../../errors/index.js';

@@ -13,0 +13,0 @@ import { eventBusPublisher } from './event-bus-publisher.js';

@@ -7,4 +7,4 @@ import { CallbackEmptyReplyError, CallbackInvalidReplyError, Runnable, } from 'redis-smq-common';

import { Configuration } from '../../../../config/index.js';
import { _fromMessage } from '../../../message/_/_from-message.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../../../message/index.js';
import { _fromMessage } from '../../../message/_/_from-message.js';
import { EConsumeMessageUnacknowledgedCause, } from '../../types/index.js';

@@ -11,0 +11,0 @@ import { ConsumeMessage } from '../consume-message/consume-message.js';

import { ILogger } from 'redis-smq-common';
import { Consumer } from '../consumer/consumer.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
import { DequeueMessage } from './dequeue-message/dequeue-message.js';
import { MessageHandler } from './message-handler/message-handler.js';
import { IConsumerMessageHandlerArgs } from '../types/index.js';
export declare class MultiplexedMessageHandler extends MessageHandler {

@@ -7,0 +7,0 @@ protected dequeueNextFn: () => void;

@@ -5,4 +5,4 @@ import { async } from 'redis-smq-common';

import { Configuration } from '../../../config/index.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../../message/index.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { consumerQueues } from '../consumer-queues.js';

@@ -9,0 +9,0 @@ import { ConsumerError } from '../errors/index.js';

export * from './message-handler.js';
export * from './consumer-heartbeat.js';
export * from './consume-message.js';
export * from './config.js';
//# sourceMappingURL=index.d.ts.map
export * from './message-handler.js';
export * from './consumer-heartbeat.js';
export * from './consume-message.js';
export * from './config.js';
//# sourceMappingURL=index.js.map
import { async, CallbackEmptyReplyError, PanicError, } from 'redis-smq-common';
import { ELuaScriptName } from '../../../common/redis-client/scripts/scripts.js';
import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../../message/index.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { EQueueProperty } from '../../queue/index.js';

@@ -7,0 +7,0 @@ import { Worker } from './worker.js';

import { async, PanicError } from 'redis-smq-common';
import { ELuaScriptName } from '../../../common/redis-client/scripts/scripts.js';
import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../../message/index.js';
import { _fromMessage } from '../../message/_/_from-message.js';
import { _getMessages } from '../../message/_/_get-message.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../../message/index.js';
import { EQueueProperty, EQueueType } from '../../queue/index.js';

@@ -8,0 +8,0 @@ import { Worker } from './worker.js';

import { async, CallbackEmptyReplyError } from 'redis-smq-common';
import { ELuaScriptName } from '../../../common/redis-client/scripts/scripts.js';
import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../../message/index.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { EQueueProperty, EQueueType } from '../../queue/index.js';

@@ -7,0 +7,0 @@ import { Worker } from './worker.js';

import { ICallback, ILogger, Runnable } from 'redis-smq-common';
import { RedisClientInstance } from '../../../common/redis-client/redis-client-instance.js';
import { IRedisSMQConfigRequired } from '../../../config/types/config.js';
import { IRedisSMQConfigRequired } from '../../../config/index.js';
export declare abstract class Worker extends Runnable<Record<string, never>> {

@@ -5,0 +5,0 @@ protected redisClient: RedisClientInstance;

@@ -13,3 +13,2 @@ import { logger } from 'redis-smq-common';

shutdown = (cb) => {
console.log('SSSSSSSSSSSSSSSSSSSSSSSSS');
this.redisClient.shutdown(cb);

@@ -16,0 +15,0 @@ };

@@ -1,4 +0,4 @@

import { IQueueParams } from '../../../queue/types/queue.js';
import { IQueueParams } from '../../../queue/index.js';
import { TExchangeDirectTransferable } from '../../types/exchange.js';
export declare function _getExchangeDirectTransferable(queue: string | IQueueParams): TExchangeDirectTransferable;
//# sourceMappingURL=_get-exchange-direct-transferable.d.ts.map

@@ -6,4 +6,4 @@ import { async, CallbackEmptyReplyError } from 'redis-smq-common';

import { EQueueProperty, } from '../../queue/index.js';
import { ExchangeFanOutError } from '../errors/exchange-fan-out.error.js';
import { ExchangeError } from '../errors/exchange.error.js';
import { ExchangeFanOutError } from '../errors/index.js';
import { ExchangeError } from '../errors/index.js';
import { ExchangeAbstract } from '../exchange-abstract.js';

@@ -10,0 +10,0 @@ import { _getFanOutExchangeQueues } from './_/_get-fan-out-exchange-queues.js';

import { ICallback } from 'redis-smq-common';
import { IQueueParams } from '../../queue/types/queue.js';
import { IQueueParams } from '../../queue/index.js';
import { ExchangeAbstract } from '../exchange-abstract.js';

@@ -4,0 +4,0 @@ import { ITopicParams } from '../types/exchange.js';

@@ -5,5 +5,5 @@ import { async, CallbackEmptyReplyError, } from 'redis-smq-common';

import { EQueueProperty, EQueueType } from '../../queue/index.js';
import { _getMessage } from './_get-message.js';
import { MessageDeleteError } from '../errors/index.js';
import { EMessageProperty, EMessagePropertyStatus } from '../types/index.js';
import { _getMessage } from './_get-message.js';
export function _deleteMessage(redisClient, messageId, cb) {

@@ -13,2 +13,5 @@ const keys = [];

const ids = typeof messageId === 'string' ? [messageId] : messageId;
const { keyScheduledMessages, keyDelayedMessages, keyRequeueMessages } = redisKeys.getMainKeys();
keys.push(keyScheduledMessages, keyDelayedMessages, keyRequeueMessages);
argv.push(EQueueProperty.QUEUE_TYPE, EQueueProperty.MESSAGES_COUNT, EQueueType.PRIORITY_QUEUE, EQueueType.LIFO_QUEUE, EQueueType.FIFO_QUEUE, EMessageProperty.STATUS, EMessagePropertyStatus.PROCESSING, EMessagePropertyStatus.ACKNOWLEDGED, EMessagePropertyStatus.PENDING, EMessagePropertyStatus.SCHEDULED, EMessagePropertyStatus.DEAD_LETTERED, EMessagePropertyStatus.UNACK_DELAYING, EMessagePropertyStatus.UNACK_REQUEUING);
async.each(ids, (id, _, done) => {

@@ -22,6 +25,5 @@ _getMessage(redisClient, id, (err, message) => {

const { keyQueueProperties, keyQueueDL, keyQueueScheduled, keyQueueAcknowledged, keyQueuePriorityPending, keyQueuePending, } = redisKeys.getQueueKeys(message.getDestinationQueue(), message.getConsumerGroupId());
const { keyScheduledMessages, keyDelayedMessages, keyRequeueMessages, } = redisKeys.getMainKeys();
const { keyMessage } = redisKeys.getMessageKeys(id);
keys.push(keyScheduledMessages, keyDelayedMessages, keyRequeueMessages, keyMessage, keyQueueProperties, keyQueuePending, keyQueueDL, keyQueueAcknowledged, keyQueueScheduled, keyQueuePriorityPending);
argv.push(EQueueProperty.QUEUE_TYPE, EQueueProperty.MESSAGES_COUNT, EQueueType.PRIORITY_QUEUE, EQueueType.LIFO_QUEUE, EQueueType.FIFO_QUEUE, EMessageProperty.STATUS, EMessagePropertyStatus.PROCESSING, EMessagePropertyStatus.ACKNOWLEDGED, EMessagePropertyStatus.PENDING, EMessagePropertyStatus.SCHEDULED, EMessagePropertyStatus.DEAD_LETTERED, EMessagePropertyStatus.UNACK_DELAYING, EMessagePropertyStatus.UNACK_REQUEUING, id);
keys.push(keyMessage, keyQueueProperties, keyQueuePending, keyQueueDL, keyQueueAcknowledged, keyQueueScheduled, keyQueuePriorityPending);
argv.push(id);
done();

@@ -28,0 +30,0 @@ }

import { async } from 'redis-smq-common';
import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { _fromMessage } from './_from-message.js';
import { MessageNotFoundError } from '../errors/index.js';
import { EMessageProperty } from '../types/index.js';
import { _fromMessage } from './_from-message.js';
export function _getMessage(redisClient, messageId, cb) {

@@ -7,0 +7,0 @@ const { keyMessage } = redisKeys.getMessageKeys(messageId);

@@ -5,5 +5,5 @@ import { CallbackEmptyReplyError, logger } from 'redis-smq-common';

import { _deleteMessage } from './_/_delete-message.js';
import { _getMessage, _getMessages } from './_/_get-message.js';
import { _getMessageState } from './_/_get-message-state.js';
import { _getMessageStatus } from './_/_get-message-status.js';
import { _getMessage, _getMessages } from './_/_get-message.js';
export class Message {

@@ -10,0 +10,0 @@ logger;

import { NamespaceError } from './namespace.error.js';
export declare class NamespaceNotFoundError extends NamespaceError {
constructor(namespace: string);
}
//# sourceMappingURL=namespace-not-found.error.d.ts.map
import { NamespaceError } from './namespace.error.js';
export class NamespaceNotFoundError extends NamespaceError {
constructor(namespace) {
super(`Namespace (${namespace}) does not exist`);
}
}
//# sourceMappingURL=namespace-not-found.error.js.map

@@ -46,13 +46,28 @@ import { async, CallbackEmptyReplyError, logger, } from 'redis-smq-common';

else {
const { keyNamespaces } = redisKeys.getMainKeys();
const { keyNamespaceQueues } = redisKeys.getNamespaceKeys(ns);
client.smembers(keyNamespaceQueues, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new CallbackEmptyReplyError());
else {
const messageQueues = reply.map((i) => JSON.parse(i));
cb(null, messageQueues);
}
});
async.waterfall([
(cb) => {
client.sismember(keyNamespaces, ns, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new NamespaceNotFoundError());
else
cb();
});
},
(cb) => {
client.smembers(keyNamespaceQueues, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new CallbackEmptyReplyError());
else {
const messageQueues = reply.map((i) => JSON.parse(i));
cb(null, messageQueues);
}
});
},
], cb);
}

@@ -59,0 +74,0 @@ });

@@ -7,4 +7,4 @@ import { async, CallbackEmptyReplyError, logger, PanicError, Runnable, } from 'redis-smq-common';

import { EventBusRedisFactory } from '../event-bus/event-bus-redis-factory.js';
import { _getExchangeQueues } from '../exchange/_/_get-exchange-queues.js';
import { EExchangeType } from '../exchange/index.js';
import { _getExchangeQueues } from '../exchange/_/_get-exchange-queues.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../message/index.js';

@@ -15,4 +15,4 @@ import { MessageEnvelope } from '../message/message-envelope.js';

import { ProducerInstanceNotRunningError, ProducerMessageExchangeRequiredError, ProducerMessageNotPublishedError, ProducerQueueWithoutConsumerGroupsError, } from './errors/index.js';
import { eventBusPublisher } from './event-bus-publisher.js';
import { QueueConsumerGroupsCache } from './queue-consumer-groups-cache.js';
import { eventBusPublisher } from './event-bus-publisher.js';
export class Producer extends Runnable {

@@ -19,0 +19,0 @@ logger;

@@ -5,5 +5,5 @@ import { async, Runnable, } from 'redis-smq-common';

import { EventBusRedisFactory } from '../event-bus/event-bus-redis-factory.js';
import { EQueueDeliveryModel, } from '../queue/index.js';
import { _getQueueProperties } from '../queue/_/_get-queue-properties.js';
import { _getQueues } from '../queue/_/_get-queues.js';
import { EQueueDeliveryModel, } from '../queue/index.js';
export class QueueConsumerGroupsCache extends Runnable {

@@ -10,0 +10,0 @@ redisClient;

import { CallbackEmptyReplyError, } from 'redis-smq-common';
import { ELuaScriptName } from '../../../common/redis-client/scripts/scripts.js';
import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { EMessageProperty, EMessagePropertyStatus, } from '../../message/index.js';
import { _getMessage } from '../../message/_/_get-message.js';
import { _parseQueueParams } from '../../queue/_/_parse-queue-params.js';
import { EQueueProperty, EQueueType } from '../../queue/index.js';
import { _parseQueueParams } from '../../queue/_/_parse-queue-params.js';
import { MessageRequeueError } from '../errors/index.js';

@@ -9,0 +9,0 @@ export function _requeueMessage(redisClient, queue, messageId, messageStatus, cb) {

import { ConsumerGroupIdNotSupportedError, ConsumerGroupIdRequiredError, } from '../../consumer/index.js';
import { _getQueueProperties } from '../../queue/_/_get-queue-properties.js';
import { EQueueDeliveryModel } from '../../queue/index.js';
import { _getQueueProperties } from '../../queue/_/_get-queue-properties.js';
export function _validateQueueExtendedParams(redisClient, queue, requireGroupId, cb) {

@@ -5,0 +5,0 @@ const { queueParams, groupId } = queue;

@@ -7,5 +7,5 @@ import { async, } from 'redis-smq-common';

import { processingQueue } from '../../consumer/message-handler/processing-queue.js';
import { _getQueueProperties } from './_get-queue-properties.js';
import { QueueHasRunningConsumersError, QueueNotEmptyError, QueueNotFoundError, } from '../errors/index.js';
import { EQueueDeliveryModel } from '../types/index.js';
import { _getQueueProperties } from './_get-queue-properties.js';
function checkOnlineConsumers(redisClient, queue, cb) {

@@ -12,0 +12,0 @@ const verifyHeartbeats = (consumerIds, cb) => {

@@ -0,3 +1,3 @@

import { RedisKeysError } from '../../../common/redis-keys/redis-keys.error.js';
import { redisKeys } from '../../../common/redis-keys/redis-keys.js';
import { RedisKeysError } from '../../../common/redis-keys/redis-keys.error.js';
import { Configuration } from '../../../config/index.js';

@@ -4,0 +4,0 @@ export function _parseQueueParams(queue) {

import { ICallback } from 'redis-smq-common';
import { RedisClientInstance } from '../../common/redis-client/redis-client-instance.js';
import { EventBusRedisInstance } from '../event-bus/event-bus-redis-instance.js';
import { EventBusRedisInstance } from '../event-bus/index.js';
import { EQueueDeliveryModel, EQueueType, IQueueParams, IQueueProperties } from './types/index.js';

@@ -5,0 +5,0 @@ export declare class Queue {

@@ -6,3 +6,3 @@ import { async, CallbackEmptyReplyError, logger, } from 'redis-smq-common';

import { Configuration } from '../../config/index.js';
import { EventBusRedisInstance } from '../event-bus/event-bus-redis-instance.js';
import { EventBusRedisInstance } from '../event-bus/index.js';
import { _deleteQueue } from './_/_delete-queue.js';

@@ -9,0 +9,0 @@ import { _getQueueProperties } from './_/_get-queue-properties.js';

{
"name": "redis-smq",
"version": "8.0.0-rc.20",
"version": "8.0.0-rc.21",
"description": "A simple high-performance Redis message queue for Node.js.",

@@ -50,9 +50,2 @@ "author": "Weyoss <weyoss@protonmail.com>",

},
"typesVersions": {
"*": {
".": [
"./dist/types/index.d.ts"
]
}
},
"dependencies": {

@@ -59,0 +52,0 @@ "cron-parser": "4.7.1",

@@ -6,4 +6,11 @@ > [!IMPORTANT]

<div align="center" style="text-align: center">
<p><a href="https://github.com/weyoss/redis-smq"><img alt="RedisSMQ" src="./logo.png?v=202312182134" /></a></p>
<p>A simple high-performance Redis message queue for Node.js.</p>
<p><a href="https://github.com/weyoss/redis-smq"><img alt="RedisSMQ" src="./logo.png?v=202312182134" /></a></p>
<p>A simple high-performance Redis message queue for Node.js.</p>
<p>
<a href="https://github.com/weyoss/redis-smq/actions/workflows/tests.yml"><img src="https://github.com/weyoss/redis-smq/actions/workflows/tests.yml/badge.svg" alt="Tests" style="max-width:100%;" /></a>
<a href="https://github.com/weyoss/redis-smq/actions/workflows/codeql.yml" rel="nofollow"><img src="https://github.com/weyoss/redis-smq/actions/workflows/codeql.yml/badge.svg" alt="Code quality" /></a>
<a href="https://codecov.io/github/weyoss/redis-smq?branch=master" rel="nofollow"><img src="https://img.shields.io/codecov/c/github/weyoss/redis-smq" alt="Coverage Status" /></a>
<a href="https://npmjs.org/package/redis-smq" rel="nofollow"><img src="https://img.shields.io/npm/v/redis-smq.svg" alt="NPM version" /></a>
<a href="https://npmjs.org/package/redis-smq" rel="nofollow"><img src="https://img.shields.io/npm/dm/redis-smq.svg" alt="NPM downloads" /></a>
</p>
</div>

@@ -13,10 +20,2 @@

<p>
<a href="https://github.com/weyoss/redis-smq/actions/workflows/tests.yml"><img src="https://github.com/weyoss/redis-smq/actions/workflows/tests.yml/badge.svg" alt="Tests" style="max-width:100%;" /></a>
<a href="https://github.com/weyoss/redis-smq/actions/workflows/codeql.yml" rel="nofollow"><img src="https://github.com/weyoss/redis-smq/actions/workflows/codeql.yml/badge.svg" alt="Code quality" /></a>
<a href="https://codecov.io/github/weyoss/redis-smq?branch=master" rel="nofollow"><img src="https://img.shields.io/codecov/c/github/weyoss/redis-smq" alt="Coverage Status" /></a>
<a href="https://npmjs.org/package/redis-smq" rel="nofollow"><img src="https://img.shields.io/npm/v/redis-smq.svg" alt="NPM version" /></a>
<a href="https://npmjs.org/package/redis-smq" rel="nofollow"><img src="https://img.shields.io/npm/dm/redis-smq.svg" alt="NPM downloads" /></a>
</p>
RedisSMQ is a Node.js library for queuing messages (aka jobs) and processing them asynchronously with consumers. Backed by Redis, it allows scaling up your typical applications with ease of use.

@@ -48,4 +47,24 @@

:rocket: RedisSMQ v8 is coming soon!
:rocket: RC's are now available for RedisSMQ v8! The v8 release will bring major improvements and new features. Some of them are:
- [x] Message queue codebase refactoring and optimizations.
- [x] Message storage and handling improvements.
- [x] Message status which allows to retrieve, at any time, the status of a message by its ID.
- [x] [Pub/Sub Delivery Model and Consumer Groups](docs/queue-delivery-models.md#pubsub-delivery-model).
- [x] Message handlers sandboxing and message processing performance improvement with [Message Handler Worker Threads](docs/message-handler-worker-threads.md).
- [x] Cross-system event propagation based on [EventBus](docs/event-bus.md).
- [x] Better error handling aiming at reporting fatal errors to the application whenever it is possible and without crashing the main process.
- [x] [ESM Modules Support](docs/esm-cjs-modules.md).
Current RedisSMQ v8 RC status:
- [x] RedisSMQ Common Library
- [x] RedisSMQ
- [ ] HTTP API (WIP)
- [ ] Web UI (WIP)
If you wish to get the latest updates early feel free to try RedisSMQ v8 RC. Do not hesitate to report any bug or issue if encountered.
Otherwise, stay with [RedisSMQ v7](https://github.com/weyoss/redis-smq/tree/v7.2.3) if you are looking for a fully working release with an HTTP API and a Web UI.
## Installation

@@ -52,0 +71,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc