@autofleet/rabbit 4.1.0-beta.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +81 -76
- package/dist/index.js +581 -472
- package/dist/index.js.map +1 -0
- package/dist/lib/celery.js +1 -0
- package/dist/lib/celery.js.map +1 -0
- package/dist/lib/consts.d.ts +12 -4
- package/dist/lib/consts.js +12 -3
- package/dist/lib/consts.js.map +1 -0
- package/dist/lib/rabbitError.js +1 -0
- package/dist/lib/rabbitError.js.map +1 -0
- package/dist/lib/redis.d.ts +2 -1
- package/dist/lib/redis.js +3 -8
- package/dist/lib/redis.js.map +1 -0
- package/dist/lib/types.d.ts +18 -5
- package/dist/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +12 -3
- package/dist/lib/utils.js +23 -13
- package/dist/lib/utils.js.map +1 -0
- package/dist/logger.js +1 -0
- package/dist/logger.js.map +1 -0
- package/dist/{mock.d.ts → mock/index.d.ts} +1 -1
- package/dist/{mock.js → mock/index.js} +2 -1
- package/dist/mock/index.js.map +1 -0
- package/dist/mock/vitest.d.ts +13 -0
- package/dist/mock/vitest.js +18 -0
- package/dist/mock/vitest.js.map +1 -0
- package/package.json +24 -19
- package/src/index.ts +702 -591
- package/src/lib/consts.ts +17 -4
- package/src/lib/redis.ts +2 -7
- package/src/lib/types.ts +22 -7
- package/src/lib/utils.ts +35 -12
- package/src/{mock.ts → mock/index.ts} +2 -2
- package/src/mock/vitest.ts +24 -0
- package/src/redis-lock.d.ts +5 -3
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +2 -2
- package/vitest.config.ts +17 -0
- package/coverage/clover.xml +0 -669
- package/coverage/coverage-final.json +0 -9
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -131
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/index.html +0 -131
- package/coverage/lcov-report/src/index.ts.html +0 -3826
- package/coverage/lcov-report/src/lib/celery.ts.html +0 -352
- package/coverage/lcov-report/src/lib/consts.ts.html +0 -142
- package/coverage/lcov-report/src/lib/index.html +0 -191
- package/coverage/lcov-report/src/lib/rabbitError.ts.html +0 -103
- package/coverage/lcov-report/src/lib/redis.ts.html +0 -133
- package/coverage/lcov-report/src/lib/types.ts.html +0 -268
- package/coverage/lcov-report/src/lib/utils.ts.html +0 -142
- package/coverage/lcov-report/src/logger.ts.html +0 -100
- package/coverage/lcov.info +0 -1076
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from 'events';
|
|
3
|
-
import
|
|
2
|
+
import { EventEmitter } from 'node:events';
|
|
3
|
+
import RedisLock from 'redis-lock';
|
|
4
|
+
import { type AmqpConnectionManager, type ChannelWrapper, type CreateChannelOpts } from 'amqp-connection-manager';
|
|
5
|
+
import type { PublishOptions } from 'amqp-connection-manager/dist/types/ChannelWrapper';
|
|
4
6
|
import { ConfirmChannel, ConsumeMessage, Options, Replies } from 'amqplib';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
+
import type { LoggerInstanceManager } from '@autofleet/logger';
|
|
8
|
+
import getRedisInstance, { RedisConfig } from './lib/redis';
|
|
9
|
+
import { type AssertExchangePromisesDictionary, type CallbackFunction, type ConnectionData, type ConsumeMessageOrNull, type ConsumeOptions, type CustomMessageHeaders, type ExchangesCache, type Message, type NackOptions, type QueuesCache, type QueueSetupPromisesDictionary } from './lib/types';
|
|
7
10
|
export interface IAfRabbitMq {
|
|
8
|
-
ack:
|
|
9
|
-
nack:
|
|
10
|
-
assertChannel:
|
|
11
|
-
assertExchange:
|
|
12
|
-
assertQueue:
|
|
13
|
-
consume:
|
|
14
|
-
consumeFromExchange:
|
|
15
|
-
publish: any
|
|
16
|
-
sendToQueue: any
|
|
17
|
-
redisClient?:
|
|
18
|
-
}
|
|
19
|
-
interface NackOptions {
|
|
20
|
-
skipRetry?: boolean;
|
|
11
|
+
ack(channel: ConfirmChannel, msg: ConsumeMessageOrNull, shouldUpdateRedisTimestamp?: boolean, releaseLock?: (() => Promise<void>) | null): (userMsg: ConsumeMessage) => Promise<void>;
|
|
12
|
+
nack(channel: ConfirmChannel, queue: string, options: ConsumeOptions, deadQueueOptions: Options.AssertQueue, msg: ConsumeMessageOrNull, releaseLock?: () => Promise<void>): (userMsg: ConsumeMessageOrNull, nackOptions?: NackOptions) => Promise<void>;
|
|
13
|
+
assertChannel(options?: assertChannelOpts): Promise<ChannelWrapper>;
|
|
14
|
+
assertExchange(exchangeName: string, connection: ConnectionData): Promise<Replies.AssertExchange>;
|
|
15
|
+
assertQueue(queueName: string, options?: Options.AssertQueue | null): Promise<Replies.AssertQueue>;
|
|
16
|
+
consume(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<void>;
|
|
17
|
+
consumeFromExchange(queue: string, exchange: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<void>;
|
|
18
|
+
publish(exchange: string, content: any, customHeaders?: PublishOptions['headers']): Promise<void>;
|
|
19
|
+
sendToQueue(queue: string, content: any, options?: Options.AssertQueue | null, customHeaders?: PublishOptions['headers']): Promise<boolean | undefined>;
|
|
20
|
+
redisClient?: ReturnType<typeof getRedisInstance>;
|
|
21
21
|
}
|
|
22
22
|
export interface AfRabbitOptions {
|
|
23
23
|
disableReconnect?: boolean;
|
|
@@ -27,102 +27,107 @@ export interface AfRabbitOptions {
|
|
|
27
27
|
*/
|
|
28
28
|
dontGracefulShutdown?: boolean;
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* don't retry on creation error
|
|
31
31
|
* @default false
|
|
32
32
|
*/
|
|
33
33
|
dontRetryAssert?: boolean;
|
|
34
34
|
rabbitHost?: string;
|
|
35
35
|
vhost?: string;
|
|
36
|
+
logger?: LoggerInstanceManager;
|
|
36
37
|
}
|
|
37
38
|
type newChannelOpts = {
|
|
38
39
|
name?: string;
|
|
39
40
|
onClose?: null | ((args: any | null) => void);
|
|
40
41
|
options?: CreateChannelOpts | undefined;
|
|
42
|
+
connection: ConnectionData;
|
|
41
43
|
};
|
|
42
44
|
type assertChannelOpts = {
|
|
43
45
|
channelName?: string;
|
|
44
46
|
force?: boolean;
|
|
47
|
+
connection: ConnectionData;
|
|
45
48
|
};
|
|
46
49
|
declare class RabbitMq implements IAfRabbitMq {
|
|
47
|
-
|
|
50
|
+
#private;
|
|
51
|
+
readonly options: AfRabbitOptions;
|
|
52
|
+
private readonly redisConfig?;
|
|
53
|
+
static parseMsg(msg: ConsumeMessage): Message;
|
|
48
54
|
static validateName(type: string, name: string): void;
|
|
49
|
-
static getPublishOptions(customHeaders?: CustomMessageHeaders):
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"x-af-user-id": any;
|
|
54
|
-
"x-trace-id": any;
|
|
55
|
-
redisTimestampValidationKey?: string | undefined;
|
|
56
|
-
creationTimestamp: number;
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
DISCONNECT_MSG: string;
|
|
60
|
-
RECONNECT_MSG: string;
|
|
61
|
-
channel: ChannelWrapper | null;
|
|
55
|
+
static getPublishOptions(customHeaders?: CustomMessageHeaders): PublishOptions;
|
|
56
|
+
readonly DISCONNECT_MSG = "rabbit: connection disconnect";
|
|
57
|
+
readonly RECONNECT_MSG = "rabbit: connection disconnect - reconnecting";
|
|
58
|
+
publishChannel: ChannelWrapper | null;
|
|
62
59
|
publishChannelSetupPromise: Promise<ChannelWrapper> | null;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
em: EventEmitter;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
redisClient: any;
|
|
73
|
-
redisLock?: RedisLockType;
|
|
60
|
+
readonly publishConnection: ConnectionData;
|
|
61
|
+
readonly consumeConnection: ConnectionData;
|
|
62
|
+
readonly em: EventEmitter;
|
|
63
|
+
readonly exchanges: ExchangesCache;
|
|
64
|
+
readonly queues: QueuesCache;
|
|
65
|
+
readonly queueSetupPromises: QueueSetupPromisesDictionary;
|
|
66
|
+
readonly assertExchangePromises: AssertExchangePromisesDictionary;
|
|
67
|
+
readonly redisClient?: ReturnType<typeof getRedisInstance>;
|
|
68
|
+
readonly redisLock?: ReturnType<typeof RedisLock>;
|
|
74
69
|
/** Array of consumers tags used for canceling consumption */
|
|
75
|
-
consumersTags:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
70
|
+
readonly consumersTags: Map<string, {
|
|
71
|
+
channel: ConfirmChannel;
|
|
72
|
+
consumerTag: string;
|
|
73
|
+
}>;
|
|
74
|
+
private readonly consumersToRegister;
|
|
75
|
+
private doesVHostExist;
|
|
76
|
+
private readonly vhost;
|
|
77
|
+
private gracefulShutdownStarted;
|
|
78
|
+
oldPublishChannel: ChannelWrapper | null;
|
|
79
79
|
oldPublishChannelSetupPromise: Promise<ChannelWrapper> | null;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
oldEm: EventEmitter;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
80
|
+
readonly oldPublishConnection: ConnectionData;
|
|
81
|
+
readonly oldConsumeConnection: ConnectionData;
|
|
82
|
+
readonly oldEm: EventEmitter;
|
|
83
|
+
readonly oldExchanges: ExchangesCache;
|
|
84
|
+
readonly oldQueues: QueuesCache;
|
|
85
|
+
readonly oldQueueSetupPromises: QueueSetupPromisesDictionary;
|
|
86
|
+
readonly oldAssertExchangePromises: AssertExchangePromisesDictionary;
|
|
87
|
+
readonly oldConsumersTags: Map<string, {
|
|
88
|
+
channel: ConfirmChannel;
|
|
89
|
+
consumerTag: string;
|
|
90
|
+
}>;
|
|
91
|
+
private readonly oldConsumersToRegister;
|
|
92
|
+
constructor(options?: AfRabbitOptions, redisConfig?: RedisConfig | undefined);
|
|
93
|
+
private getRedisKey;
|
|
91
94
|
private assertVHost;
|
|
92
95
|
private shouldConsumeMessageByTimestamp;
|
|
93
|
-
ack: (channel: ConfirmChannel, msg: ConsumeMessageOrNull, shouldUpdateRedisTimestamp?: boolean, releaseLock?: null) => (userMsg: ConsumeMessage) => Promise<
|
|
94
|
-
nack: (channel: ConfirmChannel, queue: string, options:
|
|
95
|
-
getConnection(): Promise<AmqpConnectionManager>;
|
|
96
|
-
getNewChannel({ name, onClose, options }
|
|
97
|
-
assertChannel({ force }
|
|
98
|
-
assertExchange(exchangeName: string,
|
|
96
|
+
ack: (channel: ConfirmChannel, msg: ConsumeMessageOrNull, shouldUpdateRedisTimestamp?: boolean, releaseLock?: (() => Promise<void>) | null) => (userMsg: ConsumeMessage) => Promise<void>;
|
|
97
|
+
nack: (channel: ConfirmChannel, queue: string, options: ConsumeOptions, deadQueueOptions: Options.AssertQueue, msg: ConsumeMessageOrNull, releaseLock?: (() => Promise<void>) | null) => (userMsg: ConsumeMessageOrNull, { skipRetry, }?: NackOptions) => Promise<void>;
|
|
98
|
+
getConnection(connection: ConnectionData): Promise<AmqpConnectionManager>;
|
|
99
|
+
getNewChannel({ name, onClose, options, connection, }: newChannelOpts): Promise<ChannelWrapper>;
|
|
100
|
+
assertChannel({ force, connection }: assertChannelOpts): Promise<ChannelWrapper>;
|
|
101
|
+
assertExchange(exchangeName: string, connection: ConnectionData): Promise<Replies.AssertExchange>;
|
|
99
102
|
getQueueLength(queue: string): Promise<Replies.AssertQueue>;
|
|
100
103
|
private deleteQueue;
|
|
101
104
|
bindQueue(queue: string, exchange: string): Promise<void>;
|
|
102
105
|
setupQueue(queueName: string, options?: Options.AssertQueue): Promise<Replies.AssertQueue>;
|
|
103
106
|
static shouldUseQuorum(queueName: string): boolean;
|
|
104
|
-
assertQueue(queueName: string, options?: Options.AssertQueue): Promise<
|
|
107
|
+
assertQueue(queueName: string, options?: Options.AssertQueue): Promise<Replies.AssertQueue>;
|
|
105
108
|
private saveConsumer;
|
|
106
|
-
consume(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<
|
|
107
|
-
consumeNew(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<
|
|
108
|
-
consumeOld(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<
|
|
109
|
+
consume(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<void>;
|
|
110
|
+
consumeNew(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<void>;
|
|
111
|
+
consumeOld(queue: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<void>;
|
|
109
112
|
private lockRedisIfNeeded;
|
|
110
113
|
private unlockRedisIfNeeded;
|
|
111
114
|
private consumeFromRabbit;
|
|
112
|
-
consumeFromExchange(queue: string, exchange: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<
|
|
113
|
-
publish(exchange: string, content: any, customHeaders?:
|
|
114
|
-
sendToQueue(queue: string, content: any, options?:
|
|
115
|
+
consumeFromExchange(queue: string, exchange: string, callback: CallbackFunction, options?: ConsumeOptions): Promise<void>;
|
|
116
|
+
publish(exchange: string, content: any, customHeaders?: PublishOptions['headers'], isQuorumQueue?: boolean): Promise<void>;
|
|
117
|
+
sendToQueue(queue: string, content: any, options?: Options.AssertQueue, customHeaders?: PublishOptions['headers'], isQuorumQueue?: boolean): Promise<boolean | undefined>;
|
|
115
118
|
isConnected(): Promise<boolean>;
|
|
116
119
|
gracefulShutdown(signal: string): Promise<void>;
|
|
117
120
|
private consumeFromRabbitOld;
|
|
118
|
-
getNewChannelOld({ name, onClose, options }
|
|
119
|
-
getConnectionOld(): Promise<AmqpConnectionManager>;
|
|
121
|
+
getNewChannelOld({ name, onClose, options, connection, }: newChannelOpts): Promise<ChannelWrapper>;
|
|
122
|
+
getConnectionOld(connection: ConnectionData): Promise<AmqpConnectionManager>;
|
|
120
123
|
private saveConsumerOld;
|
|
121
|
-
assertQueueOld(queueName: string, options?: Options.AssertQueue): Promise<
|
|
124
|
+
assertQueueOld(queueName: string, options?: Options.AssertQueue): Promise<Replies.AssertQueue>;
|
|
122
125
|
setupQueueOld(queueName: string, options?: Options.AssertQueue): Promise<Replies.AssertQueue>;
|
|
123
|
-
assertChannelOld({ force }
|
|
126
|
+
assertChannelOld({ force, connection }: assertChannelOpts): Promise<ChannelWrapper>;
|
|
124
127
|
private deleteQueueOld;
|
|
125
|
-
assertExchangeOld(exchangeName: string,
|
|
128
|
+
assertExchangeOld(exchangeName: string, connection: ConnectionData): Promise<Replies.AssertExchange>;
|
|
129
|
+
isConnectedOld(): Promise<boolean>;
|
|
130
|
+
private maskURL;
|
|
126
131
|
}
|
|
127
132
|
export default RabbitMq;
|
|
128
133
|
export { sendCeleryTaskViaHttp, } from './lib/celery';
|