amqp-connection-manager 4.1.14 → 4.1.15
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/cjs/AmqpConnectionManager.js +17 -7
- package/dist/cjs/ChannelWrapper.js +27 -17
- package/dist/cjs/MessageStore.js +83 -0
- package/dist/cjs/helpers.js +1 -2
- package/dist/cjs/index.js +2 -2
- package/dist/esm/AmqpConnectionManager.d.ts +184 -0
- package/dist/esm/AmqpConnectionManager.js.map +1 -1
- package/dist/esm/ChannelWrapper.d.ts +249 -0
- package/dist/esm/ChannelWrapper.js +10 -10
- package/dist/esm/ChannelWrapper.js.map +1 -1
- package/dist/esm/MessageStore.d.ts +71 -0
- package/dist/esm/MessageStore.js +80 -0
- package/dist/esm/MessageStore.js.map +1 -0
- package/dist/esm/helpers.d.ts +4 -0
- package/dist/esm/index.d.ts +21 -0
- package/dist/types/AmqpConnectionManager.d.ts +3 -7
- package/dist/types/ChannelWrapper.d.ts +0 -2
- package/package.json +2 -3
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -33,16 +43,16 @@ const util_1 = require("util");
|
|
|
33
43
|
const MAX_MESSAGES_PER_BATCH = 1000;
|
|
34
44
|
const randomBytes = (0, util_1.promisify)(crypto.randomBytes);
|
|
35
45
|
const IRRECOVERABLE_ERRORS = [
|
|
36
|
-
403,
|
|
37
|
-
404,
|
|
38
|
-
406,
|
|
39
|
-
501,
|
|
40
|
-
502,
|
|
41
|
-
503,
|
|
42
|
-
504,
|
|
43
|
-
505,
|
|
44
|
-
530,
|
|
45
|
-
540,
|
|
46
|
+
403, // AMQP Access Refused Error.
|
|
47
|
+
404, // AMQP Not Found Error.
|
|
48
|
+
406, // AMQP Precondition Failed Error.
|
|
49
|
+
501, // AMQP Frame Error.
|
|
50
|
+
502, // AMQP Frame Syntax Error.
|
|
51
|
+
503, // AMQP Invalid Command Error.
|
|
52
|
+
504, // AMQP Channel Not Open Error.
|
|
53
|
+
505, // AMQP Unexpected Frame.
|
|
54
|
+
530, // AMQP Not Allowed Error.
|
|
55
|
+
540, // AMQP Not Implemented Error.
|
|
46
56
|
541, // AMQP Internal Error.
|
|
47
57
|
];
|
|
48
58
|
/**
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryMessageStore = void 0;
|
|
4
|
+
class InMemoryMessageStore {
|
|
5
|
+
constructor() {
|
|
6
|
+
/** Queued messages, not yet sent. */
|
|
7
|
+
this._messages = [];
|
|
8
|
+
/** Published, but not yet confirmed messages. */
|
|
9
|
+
this._unconfirmedMessages = [];
|
|
10
|
+
}
|
|
11
|
+
queueMessage(message, timeout) {
|
|
12
|
+
if (timeout) {
|
|
13
|
+
message.timeout = setTimeout(() => {
|
|
14
|
+
let idx = this._messages.indexOf(message);
|
|
15
|
+
if (idx !== -1) {
|
|
16
|
+
this._messages.splice(idx, 1);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
idx = this._unconfirmedMessages.indexOf(message);
|
|
20
|
+
if (idx !== -1) {
|
|
21
|
+
this._unconfirmedMessages.splice(idx, 1);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
message.isTimedout = true;
|
|
25
|
+
message.reject(new Error('timeout'));
|
|
26
|
+
}, timeout);
|
|
27
|
+
}
|
|
28
|
+
this._messages.push(message);
|
|
29
|
+
}
|
|
30
|
+
getMessageToSend() {
|
|
31
|
+
return this._messages.shift();
|
|
32
|
+
}
|
|
33
|
+
queueLength() {
|
|
34
|
+
return this._messages.length;
|
|
35
|
+
}
|
|
36
|
+
messageSent(message) {
|
|
37
|
+
this._unconfirmedMessages.push(message);
|
|
38
|
+
}
|
|
39
|
+
messageSendFailed(message) {
|
|
40
|
+
this._removeUnconfirmedMessage(message);
|
|
41
|
+
// Tried to write to a closed channel. Put the message back in the queue
|
|
42
|
+
// and we'll try again when we reconnect.
|
|
43
|
+
// TODO: Are we worried about re-ordering messages here?
|
|
44
|
+
this._messages.unshift(message);
|
|
45
|
+
}
|
|
46
|
+
messageResolved(message, canSend) {
|
|
47
|
+
this._removeUnconfirmedMessage(message);
|
|
48
|
+
message.resolve(canSend);
|
|
49
|
+
}
|
|
50
|
+
messageRejected(message, err) {
|
|
51
|
+
this._removeUnconfirmedMessage(message);
|
|
52
|
+
message.reject(err);
|
|
53
|
+
}
|
|
54
|
+
rejectAll(err) {
|
|
55
|
+
if (this._messages.length !== 0) {
|
|
56
|
+
// Reject any unsent messages.
|
|
57
|
+
this._messages.forEach((message) => {
|
|
58
|
+
if (message.timeout) {
|
|
59
|
+
clearTimeout(message.timeout);
|
|
60
|
+
}
|
|
61
|
+
message.reject(err);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (this._unconfirmedMessages.length !== 0) {
|
|
65
|
+
// Reject any unconfirmed messages.
|
|
66
|
+
this._unconfirmedMessages.forEach((message) => {
|
|
67
|
+
if (message.timeout) {
|
|
68
|
+
clearTimeout(message.timeout);
|
|
69
|
+
}
|
|
70
|
+
message.reject(err);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
_removeUnconfirmedMessage(message) {
|
|
75
|
+
const toRemove = this._unconfirmedMessages.indexOf(message);
|
|
76
|
+
if (toRemove === -1) {
|
|
77
|
+
throw new Error(`Message is not in _unconfirmedMessages!`);
|
|
78
|
+
}
|
|
79
|
+
const removed = this._unconfirmedMessages.splice(toRemove, 1);
|
|
80
|
+
return removed[0];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.InMemoryMessageStore = InMemoryMessageStore;
|
package/dist/cjs/helpers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.wait =
|
|
3
|
+
exports.wait = wait;
|
|
4
4
|
function wait(timeInMs) {
|
|
5
5
|
let timeoutHandle;
|
|
6
6
|
return {
|
|
@@ -10,4 +10,3 @@ function wait(timeInMs) {
|
|
|
10
10
|
cancel: () => clearTimeout(timeoutHandle),
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
-
exports.wait = wait;
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AmqpConnectionManagerClass =
|
|
6
|
+
exports.AmqpConnectionManagerClass = void 0;
|
|
7
|
+
exports.connect = connect;
|
|
7
8
|
/* eslint-disable @typescript-eslint/no-namespace */
|
|
8
9
|
const AmqpConnectionManager_js_1 = __importDefault(require("./AmqpConnectionManager.js"));
|
|
9
10
|
exports.AmqpConnectionManagerClass = AmqpConnectionManager_js_1.default;
|
|
@@ -14,6 +15,5 @@ function connect(urls, options) {
|
|
|
14
15
|
});
|
|
15
16
|
return conn;
|
|
16
17
|
}
|
|
17
|
-
exports.connect = connect;
|
|
18
18
|
const amqp = { connect };
|
|
19
19
|
exports.default = amqp;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
/// <reference types="node" />
|
|
5
|
+
import * as amqp from 'amqplib';
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
import { TcpSocketConnectOpts } from 'net';
|
|
8
|
+
import { ConnectionOptions } from 'tls';
|
|
9
|
+
import ChannelWrapper, { CreateChannelOpts } from './ChannelWrapper.js';
|
|
10
|
+
export declare type ConnectionUrl = string | amqp.Options.Connect | {
|
|
11
|
+
url: string;
|
|
12
|
+
connectionOptions?: AmqpConnectionOptions;
|
|
13
|
+
};
|
|
14
|
+
export interface ConnectListener {
|
|
15
|
+
(arg: {
|
|
16
|
+
connection: amqp.Connection;
|
|
17
|
+
url: string | amqp.Options.Connect;
|
|
18
|
+
}): void;
|
|
19
|
+
}
|
|
20
|
+
export interface ConnectFailedListener {
|
|
21
|
+
(arg: {
|
|
22
|
+
err: Error;
|
|
23
|
+
url: string | amqp.Options.Connect | undefined;
|
|
24
|
+
}): void;
|
|
25
|
+
}
|
|
26
|
+
export declare type AmqpConnectionOptions = (ConnectionOptions | TcpSocketConnectOpts) & {
|
|
27
|
+
noDelay?: boolean;
|
|
28
|
+
timeout?: number;
|
|
29
|
+
keepAlive?: boolean;
|
|
30
|
+
keepAliveDelay?: number;
|
|
31
|
+
clientProperties?: any;
|
|
32
|
+
credentials?: {
|
|
33
|
+
mechanism: string;
|
|
34
|
+
username: string;
|
|
35
|
+
password: string;
|
|
36
|
+
response: () => Buffer;
|
|
37
|
+
} | {
|
|
38
|
+
mechanism: string;
|
|
39
|
+
response: () => Buffer;
|
|
40
|
+
} | undefined;
|
|
41
|
+
};
|
|
42
|
+
export interface AmqpConnectionManagerOptions {
|
|
43
|
+
/** Interval to send heartbeats to broker. Defaults to 5 seconds. */
|
|
44
|
+
heartbeatIntervalInSeconds?: number;
|
|
45
|
+
/**
|
|
46
|
+
* The time to wait before trying to reconnect. If not specified, defaults
|
|
47
|
+
* to `heartbeatIntervalInSeconds`.
|
|
48
|
+
*/
|
|
49
|
+
reconnectTimeInSeconds?: number | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* `findServers` is a function that which returns one or more servers to
|
|
52
|
+
* connect to. This should return either a single URL or an array of URLs.
|
|
53
|
+
* This is handy when you're using a service discovery mechanism such as
|
|
54
|
+
* Consul or etcd. Instead of taking a callback, this can also return a
|
|
55
|
+
* Promise. Note that if this is supplied, then `urls` is ignored.
|
|
56
|
+
*/
|
|
57
|
+
findServers?: ((callback: (urls: ConnectionUrl | ConnectionUrl[]) => void) => void) | (() => Promise<ConnectionUrl | ConnectionUrl[]>) | undefined;
|
|
58
|
+
/** Connection options, passed as options to the amqplib.connect() method. */
|
|
59
|
+
connectionOptions?: AmqpConnectionOptions;
|
|
60
|
+
}
|
|
61
|
+
export interface IAmqpConnectionManager {
|
|
62
|
+
connectionOptions?: AmqpConnectionOptions;
|
|
63
|
+
heartbeatIntervalInSeconds: number;
|
|
64
|
+
reconnectTimeInSeconds: number;
|
|
65
|
+
addListener(event: string, listener: (...args: any[]) => void): this;
|
|
66
|
+
addListener(event: 'connect', listener: ConnectListener): this;
|
|
67
|
+
addListener(event: 'connectFailed', listener: ConnectFailedListener): this;
|
|
68
|
+
addListener(event: 'blocked', listener: (arg: {
|
|
69
|
+
reason: string;
|
|
70
|
+
}) => void): this;
|
|
71
|
+
addListener(event: 'unblocked', listener: () => void): this;
|
|
72
|
+
addListener(event: 'disconnect', listener: (arg: {
|
|
73
|
+
err: Error;
|
|
74
|
+
}) => void): this;
|
|
75
|
+
listeners(eventName: string | symbol): Function[];
|
|
76
|
+
on(event: string, listener: (...args: any[]) => void): this;
|
|
77
|
+
on(event: 'connect', listener: ConnectListener): this;
|
|
78
|
+
on(event: 'connectFailed', listener: ConnectFailedListener): this;
|
|
79
|
+
on(event: 'blocked', listener: (arg: {
|
|
80
|
+
reason: string;
|
|
81
|
+
}) => void): this;
|
|
82
|
+
on(event: 'unblocked', listener: () => void): this;
|
|
83
|
+
on(event: 'disconnect', listener: (arg: {
|
|
84
|
+
err: Error;
|
|
85
|
+
}) => void): this;
|
|
86
|
+
once(event: string, listener: (...args: any[]) => void): this;
|
|
87
|
+
once(event: 'connect', listener: ConnectListener): this;
|
|
88
|
+
once(event: 'connectFailed', listener: ConnectFailedListener): this;
|
|
89
|
+
once(event: 'blocked', listener: (arg: {
|
|
90
|
+
reason: string;
|
|
91
|
+
}) => void): this;
|
|
92
|
+
once(event: 'unblocked', listener: () => void): this;
|
|
93
|
+
once(event: 'disconnect', listener: (arg: {
|
|
94
|
+
err: Error;
|
|
95
|
+
}) => void): this;
|
|
96
|
+
prependListener(event: string, listener: (...args: any[]) => void): this;
|
|
97
|
+
prependListener(event: 'connect', listener: ConnectListener): this;
|
|
98
|
+
prependListener(event: 'connectFailed', listener: ConnectFailedListener): this;
|
|
99
|
+
prependListener(event: 'blocked', listener: (arg: {
|
|
100
|
+
reason: string;
|
|
101
|
+
}) => void): this;
|
|
102
|
+
prependListener(event: 'unblocked', listener: () => void): this;
|
|
103
|
+
prependListener(event: 'disconnect', listener: (arg: {
|
|
104
|
+
err: Error;
|
|
105
|
+
}) => void): this;
|
|
106
|
+
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
|
107
|
+
prependOnceListener(event: 'connect', listener: ConnectListener): this;
|
|
108
|
+
prependOnceListener(event: 'connectFailed', listener: ConnectFailedListener): this;
|
|
109
|
+
prependOnceListener(event: 'blocked', listener: (arg: {
|
|
110
|
+
reason: string;
|
|
111
|
+
}) => void): this;
|
|
112
|
+
prependOnceListener(event: 'unblocked', listener: () => void): this;
|
|
113
|
+
prependOnceListener(event: 'disconnect', listener: (arg: {
|
|
114
|
+
err: Error;
|
|
115
|
+
}) => void): this;
|
|
116
|
+
removeListener(event: string, listener: (...args: any[]) => void): this;
|
|
117
|
+
connect(options?: {
|
|
118
|
+
timeout?: number;
|
|
119
|
+
}): Promise<void>;
|
|
120
|
+
reconnect(): void;
|
|
121
|
+
createChannel(options?: CreateChannelOpts): ChannelWrapper;
|
|
122
|
+
close(): Promise<void>;
|
|
123
|
+
isConnected(): boolean;
|
|
124
|
+
/** The current connection. */
|
|
125
|
+
readonly connection: amqp.Connection | undefined;
|
|
126
|
+
/** Returns the number of registered channels. */
|
|
127
|
+
readonly channelCount: number;
|
|
128
|
+
}
|
|
129
|
+
export default class AmqpConnectionManager extends EventEmitter implements IAmqpConnectionManager {
|
|
130
|
+
private _channels;
|
|
131
|
+
private _currentUrl;
|
|
132
|
+
private _closed;
|
|
133
|
+
private _cancelRetriesHandler?;
|
|
134
|
+
private _connectPromise?;
|
|
135
|
+
private _currentConnection?;
|
|
136
|
+
private _findServers;
|
|
137
|
+
private _urls?;
|
|
138
|
+
connectionOptions: AmqpConnectionOptions | undefined;
|
|
139
|
+
heartbeatIntervalInSeconds: number;
|
|
140
|
+
reconnectTimeInSeconds: number;
|
|
141
|
+
/**
|
|
142
|
+
* Create a new AmqplibConnectionManager.
|
|
143
|
+
*
|
|
144
|
+
* @param urls - An array of brokers to connect to.
|
|
145
|
+
* Takes url strings or objects {url: string, connectionOptions?: object}
|
|
146
|
+
* If present, a broker's [connectionOptions] will be used instead
|
|
147
|
+
* of [options.connectionOptions] when passed to the amqplib connect method.
|
|
148
|
+
* AmqplibConnectionManager will round-robin between them whenever it
|
|
149
|
+
* needs to create a new connection.
|
|
150
|
+
* @param [options={}] -
|
|
151
|
+
* @param [options.heartbeatIntervalInSeconds=5] - The interval,
|
|
152
|
+
* in seconds, to send heartbeats.
|
|
153
|
+
* @param [options.reconnectTimeInSeconds] - The time to wait
|
|
154
|
+
* before trying to reconnect. If not specified, defaults to
|
|
155
|
+
* `heartbeatIntervalInSeconds`.
|
|
156
|
+
* @param [options.connectionOptions] - Passed to the amqplib
|
|
157
|
+
* connect method.
|
|
158
|
+
* @param [options.findServers] - A `fn(callback)` or a `fn()`
|
|
159
|
+
* which returns a Promise. This should resolve to one or more servers
|
|
160
|
+
* to connect to, either a single URL or an array of URLs. This is handy
|
|
161
|
+
* when you're using a service discovery mechanism such as Consul or etcd.
|
|
162
|
+
* Note that if this is supplied, then `urls` is ignored.
|
|
163
|
+
*/
|
|
164
|
+
constructor(urls: ConnectionUrl | ConnectionUrl[] | undefined | null, options?: AmqpConnectionManagerOptions);
|
|
165
|
+
/**
|
|
166
|
+
* Start the connect retries and await the first connect result. Even if the initial connect fails or timeouts, the
|
|
167
|
+
* reconnect attempts will continue in the background.
|
|
168
|
+
* @param [options={}] -
|
|
169
|
+
* @param [options.timeout] - Time to wait for initial connect
|
|
170
|
+
*/
|
|
171
|
+
connect({ timeout }?: {
|
|
172
|
+
timeout?: number;
|
|
173
|
+
}): Promise<void>;
|
|
174
|
+
createChannel(options?: CreateChannelOpts): ChannelWrapper;
|
|
175
|
+
close(): Promise<void>;
|
|
176
|
+
isConnected(): boolean;
|
|
177
|
+
/** Force reconnect - noop unless connected */
|
|
178
|
+
reconnect(): void;
|
|
179
|
+
/** The current connection. */
|
|
180
|
+
get connection(): amqp.Connection | undefined;
|
|
181
|
+
/** Returns the number of registered channels. */
|
|
182
|
+
get channelCount(): number;
|
|
183
|
+
private _connect;
|
|
184
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmqpConnectionManager.js","sourceRoot":"","sources":["../../src/AmqpConnectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,cAAqC,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,0BAA0B;AAC1B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AA6D/B,0BAA0B;AAC1B,SAAS,WAAW;IAChB,OAAO,CAAC,GAAU,EAAE,EAAE,CAClB,YAAY,CAAC,GAAG,EAAE;QACd,MAAM,IAAI,KAAK,CACX,kDAAkD,GAAG,CAAC,OAAO,IAAI,GAAG,GAAG,CAAC,KAAK,CAChF,CAAC;IACN,CAAC,CAAC,CAAC;AACX,CAAC;AA4DD,EAAE;AACF,UAAU;AACV,4EAA4E;AAC5E,mFAAmF;AACnF,wEAAwE;AACxE,8EAA8E;AAC9E,0EAA0E;AAC1E,EAAE;AACF,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,YAAY;IAgB3D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,YACI,IAAwD,EACxD,UAAwC,EAAE;QAE1C,KAAK,EAAE,CAAC;QAxCJ,YAAO,GAAG,KAAK,CAAC;QAyCpB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"AmqpConnectionManager.js","sourceRoot":"","sources":["../../src/AmqpConnectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import type * as amqplib from 'amqplib';
|
|
4
|
+
import { Options } from 'amqplib';
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
import pb from 'promise-breaker';
|
|
7
|
+
import { IAmqpConnectionManager } from './AmqpConnectionManager.js';
|
|
8
|
+
export declare type Channel = amqplib.ConfirmChannel | amqplib.Channel;
|
|
9
|
+
export declare type SetupFunc = ((channel: Channel, callback: (error?: Error) => void) => void) | ((channel: Channel) => Promise<void>) | ((channel: amqplib.ConfirmChannel, callback: (error?: Error) => void) => void) | ((channel: amqplib.ConfirmChannel) => Promise<void>);
|
|
10
|
+
export interface CreateChannelOpts {
|
|
11
|
+
/** Name for this channel. Used for debugging. */
|
|
12
|
+
name?: string;
|
|
13
|
+
/**
|
|
14
|
+
* A function to call whenever we reconnect to the broker (and therefore create a new underlying channel.)
|
|
15
|
+
* This function should either accept a callback, or return a Promise. See addSetup below
|
|
16
|
+
*/
|
|
17
|
+
setup?: SetupFunc;
|
|
18
|
+
/**
|
|
19
|
+
* True to create a ConfirmChannel (default). False to create a regular Channel.
|
|
20
|
+
*/
|
|
21
|
+
confirm?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* if true, then ChannelWrapper assumes all messages passed to publish() and sendToQueue() are plain JSON objects.
|
|
24
|
+
* These will be encoded automatically before being sent.
|
|
25
|
+
*/
|
|
26
|
+
json?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Default publish timeout in ms. Messages not published within the given time are rejected with a timeout error.
|
|
29
|
+
*/
|
|
30
|
+
publishTimeout?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface PublishOptions extends Options.Publish {
|
|
33
|
+
/** Message will be rejected after timeout ms */
|
|
34
|
+
timeout?: number;
|
|
35
|
+
}
|
|
36
|
+
interface ConsumerOptions extends amqplib.Options.Consume {
|
|
37
|
+
prefetch?: number;
|
|
38
|
+
}
|
|
39
|
+
interface Consumer {
|
|
40
|
+
consumerTag: string | null;
|
|
41
|
+
queue: string;
|
|
42
|
+
onMessage: (msg: amqplib.ConsumeMessage) => void;
|
|
43
|
+
options: ConsumerOptions;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Calls to `publish()` or `sendToQueue()` work just like in amqplib, but messages are queued internally and
|
|
47
|
+
* are guaranteed to be delivered. If the underlying connection drops, ChannelWrapper will wait for a new
|
|
48
|
+
* connection and continue.
|
|
49
|
+
*
|
|
50
|
+
* Events:
|
|
51
|
+
* * `connect` - emitted every time this channel connects or reconnects.
|
|
52
|
+
* * `error(err, {name})` - emitted if an error occurs setting up the channel.
|
|
53
|
+
* * `drop({message, err})` - called when a JSON message was dropped because it could not be encoded.
|
|
54
|
+
* * `close` - emitted when this channel closes via a call to `close()`
|
|
55
|
+
*
|
|
56
|
+
*/
|
|
57
|
+
export default class ChannelWrapper extends EventEmitter {
|
|
58
|
+
private _connectionManager;
|
|
59
|
+
private _json;
|
|
60
|
+
/** If we're in the process of creating a channel, this is a Promise which
|
|
61
|
+
* will resolve when the channel is set up. Otherwise, this is `null`.
|
|
62
|
+
*/
|
|
63
|
+
private _settingUp;
|
|
64
|
+
private _setups;
|
|
65
|
+
/** Queued messages, not yet sent. */
|
|
66
|
+
private _messages;
|
|
67
|
+
/** Oublished, but not yet confirmed messages. */
|
|
68
|
+
private _unconfirmedMessages;
|
|
69
|
+
/** Reason code during publish or sendtoqueue messages. */
|
|
70
|
+
private _irrecoverableCode;
|
|
71
|
+
/** Consumers which will be reconnected on channel errors etc. */
|
|
72
|
+
private _consumers;
|
|
73
|
+
/**
|
|
74
|
+
* The currently connected channel. Note that not all setup functions
|
|
75
|
+
* have been run on this channel until `@_settingUp` is either null or
|
|
76
|
+
* resolved.
|
|
77
|
+
*/
|
|
78
|
+
private _channel?;
|
|
79
|
+
/**
|
|
80
|
+
* True to create a ConfirmChannel. False to create a regular Channel.
|
|
81
|
+
*/
|
|
82
|
+
private _confirm;
|
|
83
|
+
/**
|
|
84
|
+
* True if the "worker" is busy sending messages. False if we need to
|
|
85
|
+
* start the worker to get stuff done.
|
|
86
|
+
*/
|
|
87
|
+
private _working;
|
|
88
|
+
/**
|
|
89
|
+
* We kill off workers when we disconnect. Whenever we start a new
|
|
90
|
+
* worker, we bump up the `_workerNumber` - this makes it so if stale
|
|
91
|
+
* workers ever do wake up, they'll know to stop working.
|
|
92
|
+
*/
|
|
93
|
+
private _workerNumber;
|
|
94
|
+
/**
|
|
95
|
+
* True if the underlying channel has room for more messages.
|
|
96
|
+
*/
|
|
97
|
+
private _channelHasRoom;
|
|
98
|
+
/**
|
|
99
|
+
* Default publish timeout
|
|
100
|
+
*/
|
|
101
|
+
private _publishTimeout?;
|
|
102
|
+
name?: string;
|
|
103
|
+
addListener(event: string, listener: (...args: any[]) => void): this;
|
|
104
|
+
addListener(event: 'connect', listener: () => void): this;
|
|
105
|
+
addListener(event: 'error', listener: (err: Error, info: {
|
|
106
|
+
name: string;
|
|
107
|
+
}) => void): this;
|
|
108
|
+
addListener(event: 'close', listener: () => void): this;
|
|
109
|
+
on(event: string, listener: (...args: any[]) => void): this;
|
|
110
|
+
on(event: 'connect', listener: () => void): this;
|
|
111
|
+
on(event: 'error', listener: (err: Error, info: {
|
|
112
|
+
name: string;
|
|
113
|
+
}) => void): this;
|
|
114
|
+
on(event: 'close', listener: () => void): this;
|
|
115
|
+
once(event: string, listener: (...args: any[]) => void): this;
|
|
116
|
+
once(event: 'connect', listener: () => void): this;
|
|
117
|
+
once(event: 'error', listener: (err: Error, info: {
|
|
118
|
+
name: string;
|
|
119
|
+
}) => void): this;
|
|
120
|
+
once(event: 'close', listener: () => void): this;
|
|
121
|
+
prependListener(event: string, listener: (...args: any[]) => void): this;
|
|
122
|
+
prependListener(event: 'connect', listener: () => void): this;
|
|
123
|
+
prependListener(event: 'error', listener: (err: Error, info: {
|
|
124
|
+
name: string;
|
|
125
|
+
}) => void): this;
|
|
126
|
+
prependListener(event: 'close', listener: () => void): this;
|
|
127
|
+
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
|
128
|
+
prependOnceListener(event: 'connect', listener: () => void): this;
|
|
129
|
+
prependOnceListener(event: 'error', listener: (err: Error, info: {
|
|
130
|
+
name: string;
|
|
131
|
+
}) => void): this;
|
|
132
|
+
prependOnceListener(event: 'close', listener: () => void): this;
|
|
133
|
+
/**
|
|
134
|
+
* Adds a new 'setup handler'.
|
|
135
|
+
*
|
|
136
|
+
* `setup(channel, [cb])` is a function to call when a new underlying channel is created - handy for asserting
|
|
137
|
+
* exchanges and queues exists, and whatnot. The `channel` object here is a ConfigChannel from amqplib.
|
|
138
|
+
* The `setup` function should return a Promise (or optionally take a callback) - no messages will be sent until
|
|
139
|
+
* this Promise resolves.
|
|
140
|
+
*
|
|
141
|
+
* If there is a connection, `setup()` will be run immediately, and the addSetup Promise/callback won't resolve
|
|
142
|
+
* until `setup` is complete. Note that in this case, if the setup throws an error, no 'error' event will
|
|
143
|
+
* be emitted, since you can just handle the error here (although the `setup` will still be added for future
|
|
144
|
+
* reconnects, even if it throws an error.)
|
|
145
|
+
*
|
|
146
|
+
* Setup functions should, ideally, not throw errors, but if they do then the ChannelWrapper will emit an 'error'
|
|
147
|
+
* event.
|
|
148
|
+
*
|
|
149
|
+
* @param setup - setup function.
|
|
150
|
+
* @param [done] - callback.
|
|
151
|
+
* @returns - Resolves when complete.
|
|
152
|
+
*/
|
|
153
|
+
addSetup(setup: SetupFunc, done?: pb.Callback<void>): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Remove a setup function added with `addSetup`. If there is currently a
|
|
156
|
+
* connection, `teardown(channel, [cb])` will be run immediately, and the
|
|
157
|
+
* returned Promise will not resolve until it completes.
|
|
158
|
+
*
|
|
159
|
+
* @param {function} setup - the setup function to remove.
|
|
160
|
+
* @param {function} [teardown] - `function(channel, [cb])` to run to tear
|
|
161
|
+
* down the channel.
|
|
162
|
+
* @param {function} [done] - Optional callback.
|
|
163
|
+
* @returns {void | Promise} - Resolves when complete.
|
|
164
|
+
*/
|
|
165
|
+
removeSetup(setup: SetupFunc, teardown?: SetupFunc, done?: pb.Callback<void>): Promise<void>;
|
|
166
|
+
/**
|
|
167
|
+
* Returns a Promise which resolves when this channel next connects.
|
|
168
|
+
* (Mainly here for unit testing...)
|
|
169
|
+
*
|
|
170
|
+
* @param [done] - Optional callback.
|
|
171
|
+
* @returns - Resolves when connected.
|
|
172
|
+
*/
|
|
173
|
+
waitForConnect(done?: pb.Callback<void>): Promise<void>;
|
|
174
|
+
publish(exchange: string, routingKey: string, content: Buffer | string | unknown, options?: PublishOptions, done?: pb.Callback<boolean>): Promise<boolean>;
|
|
175
|
+
sendToQueue(queue: string, content: Buffer | string | unknown, options?: PublishOptions, done?: pb.Callback<boolean>): Promise<boolean>;
|
|
176
|
+
private _enqueueMessage;
|
|
177
|
+
/**
|
|
178
|
+
* Create a new ChannelWrapper.
|
|
179
|
+
*
|
|
180
|
+
* @param connectionManager - connection manager which
|
|
181
|
+
* created this channel.
|
|
182
|
+
* @param [options] -
|
|
183
|
+
* @param [options.name] - A name for this channel. Handy for debugging.
|
|
184
|
+
* @param [options.setup] - A default setup function to call. See
|
|
185
|
+
* `addSetup` for details.
|
|
186
|
+
* @param [options.json] - if true, then ChannelWrapper assumes all
|
|
187
|
+
* messages passed to `publish()` and `sendToQueue()` are plain JSON objects.
|
|
188
|
+
* These will be encoded automatically before being sent.
|
|
189
|
+
*
|
|
190
|
+
*/
|
|
191
|
+
constructor(connectionManager: IAmqpConnectionManager, options?: CreateChannelOpts);
|
|
192
|
+
private _onConnect;
|
|
193
|
+
private _onChannelClose;
|
|
194
|
+
/** Called whenever the channel drains. */
|
|
195
|
+
private _onChannelDrain;
|
|
196
|
+
private _onDisconnect;
|
|
197
|
+
queueLength(): number;
|
|
198
|
+
close(): Promise<void>;
|
|
199
|
+
private _shouldPublish;
|
|
200
|
+
private _startWorker;
|
|
201
|
+
private _canWaitReconnection;
|
|
202
|
+
private _messageResolved;
|
|
203
|
+
private _messageRejected;
|
|
204
|
+
private _getEncodedMessage;
|
|
205
|
+
private _publishQueuedMessages;
|
|
206
|
+
/**
|
|
207
|
+
* Setup a consumer
|
|
208
|
+
* This consumer will be reconnected on cancellation and channel errors.
|
|
209
|
+
*/
|
|
210
|
+
consume(queue: string, onMessage: Consumer['onMessage'], options?: ConsumerOptions): Promise<amqplib.Replies.Consume>;
|
|
211
|
+
private _consume;
|
|
212
|
+
private _reconnectConsumer;
|
|
213
|
+
/**
|
|
214
|
+
* Cancel all consumers
|
|
215
|
+
*/
|
|
216
|
+
cancelAll(): Promise<void>;
|
|
217
|
+
cancel(consumerTag: string): Promise<void>;
|
|
218
|
+
/** Send an `ack` to the underlying channel. */
|
|
219
|
+
ack(message: amqplib.Message, allUpTo?: boolean): void;
|
|
220
|
+
/** Send an `ackAll` to the underlying channel. */
|
|
221
|
+
ackAll(): void;
|
|
222
|
+
/** Send a `nack` to the underlying channel. */
|
|
223
|
+
nack(message: amqplib.Message, allUpTo?: boolean, requeue?: boolean): void;
|
|
224
|
+
/** Send a `nackAll` to the underlying channel. */
|
|
225
|
+
nackAll(requeue?: boolean): void;
|
|
226
|
+
/** Send a `purgeQueue` to the underlying channel. */
|
|
227
|
+
purgeQueue(queue: string): Promise<amqplib.Replies.PurgeQueue>;
|
|
228
|
+
/** Send a `checkQueue` to the underlying channel. */
|
|
229
|
+
checkQueue(queue: string): Promise<amqplib.Replies.AssertQueue>;
|
|
230
|
+
/** Send a `assertQueue` to the underlying channel. */
|
|
231
|
+
assertQueue(queue: string, options?: amqplib.Options.AssertQueue): Promise<amqplib.Replies.AssertQueue>;
|
|
232
|
+
/** Send a `bindQueue` to the underlying channel. */
|
|
233
|
+
bindQueue(queue: string, source: string, pattern: string, args?: any): Promise<void>;
|
|
234
|
+
/** Send a `deleteQueue` to the underlying channel. */
|
|
235
|
+
deleteQueue(queue: string, options?: Options.DeleteQueue): Promise<amqplib.Replies.DeleteQueue>;
|
|
236
|
+
/** Send a `assertExchange` to the underlying channel. */
|
|
237
|
+
assertExchange(exchange: string, type: 'direct' | 'topic' | 'headers' | 'fanout' | 'match' | string, options?: Options.AssertExchange): Promise<amqplib.Replies.AssertExchange>;
|
|
238
|
+
/** Send a `bindExchange` to the underlying channel. */
|
|
239
|
+
bindExchange(destination: string, source: string, pattern: string, args?: any): Promise<amqplib.Replies.Empty>;
|
|
240
|
+
/** Send a `checkExchange` to the underlying channel. */
|
|
241
|
+
checkExchange(exchange: string): Promise<amqplib.Replies.Empty>;
|
|
242
|
+
/** Send a `deleteExchange` to the underlying channel. */
|
|
243
|
+
deleteExchange(exchange: string, options?: Options.DeleteExchange): Promise<amqplib.Replies.Empty>;
|
|
244
|
+
/** Send a `unbindExchange` to the underlying channel. */
|
|
245
|
+
unbindExchange(destination: string, source: string, pattern: string, args?: any): Promise<amqplib.Replies.Empty>;
|
|
246
|
+
/** Send a `get` to the underlying channel. */
|
|
247
|
+
get(queue: string, options?: Options.Get): Promise<amqplib.GetMessage | false>;
|
|
248
|
+
}
|
|
249
|
+
export {};
|
|
@@ -5,16 +5,16 @@ import { promisify } from 'util';
|
|
|
5
5
|
const MAX_MESSAGES_PER_BATCH = 1000;
|
|
6
6
|
const randomBytes = promisify(crypto.randomBytes);
|
|
7
7
|
const IRRECOVERABLE_ERRORS = [
|
|
8
|
-
403,
|
|
9
|
-
404,
|
|
10
|
-
406,
|
|
11
|
-
501,
|
|
12
|
-
502,
|
|
13
|
-
503,
|
|
14
|
-
504,
|
|
15
|
-
505,
|
|
16
|
-
530,
|
|
17
|
-
540,
|
|
8
|
+
403, // AMQP Access Refused Error.
|
|
9
|
+
404, // AMQP Not Found Error.
|
|
10
|
+
406, // AMQP Precondition Failed Error.
|
|
11
|
+
501, // AMQP Frame Error.
|
|
12
|
+
502, // AMQP Frame Syntax Error.
|
|
13
|
+
503, // AMQP Invalid Command Error.
|
|
14
|
+
504, // AMQP Channel Not Open Error.
|
|
15
|
+
505, // AMQP Unexpected Frame.
|
|
16
|
+
530, // AMQP Not Allowed Error.
|
|
17
|
+
540, // AMQP Not Implemented Error.
|
|
18
18
|
541, // AMQP Internal Error.
|
|
19
19
|
];
|
|
20
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelWrapper.js","sourceRoot":"","sources":["../../src/ChannelWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AA0ElD,MAAM,oBAAoB,GAAG;IACzB,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG,EAAE,uBAAuB;CAC/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAY;IA0DpD,WAAW,CAAC,KAAa,EAAE,QAAkC;QACzD,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAMD,EAAE,CAAC,KAAa,EAAE,QAAkC;QAChD,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAMD,IAAI,CAAC,KAAa,EAAE,QAAkC;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAMD,eAAe,CAAC,KAAa,EAAE,QAAkC;QAC7D,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IASD,mBAAmB,CAAC,KAAa,EAAE,QAAkC;QACjE,OAAO,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,KAAgB,EAAE,IAAwB;QAC/C,OAAO,EAAE,CAAC,WAAW,CACjB,IAAI,EACJ,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9C;iBAAM;gBACH,OAAO,SAAS,CAAC;aACpB;QACL,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED;;;;;;;;;;OAUG;IACH,WAAW,CAAC,KAAgB,EAAE,QAAoB,EAAE,IAAwB;QACxE,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAEvD,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACpD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CACjF,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,IAAwB;QACnC,OAAO,EAAE,CAAC,WAAW,CACjB,IAAI,EACJ,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU;YAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;YACnB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAChE,CAAC;IACN,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CACH,QAAgB,EAChB,UAAkB,EAClB,OAAkC,EAClC,OAAwB,EACxB,IAA2B;QAE3B,OAAO,EAAE,CAAC,WAAW,CACjB,IAAI,EACJ,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,eAAe,CAChB;gBACI,IAAI,EAAE,SAAS;gBACf,QAAQ;gBACR,UAAU;gBACV,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBACzC,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK;aACpB,EACD,OAAO,IAAI,IAAI,CAAC,eAAe,CAClC,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CACP,KAAa,EACb,OAAkC,EAClC,OAAwB,EACxB,IAA2B;QAE3B,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAExD,OAAO,EAAE,CAAC,WAAW,CACjB,IAAI,EACJ,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,eAAe,CAChB;gBACI,IAAI,EAAE,aAAa;gBACnB,KAAK;gBACL,OAAO,EAAE,cAAc;gBACvB,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK;aACpB,EACD,OAAO,IAAI,IAAI,CAAC,eAAe,CAClC,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,OAAgB,EAAE,OAAgB;QACtD,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;oBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBACjC;qBAAM;oBACH,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACjD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;wBACZ,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;qBAC5C;iBACJ;gBACD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACzC,CAAC,EAAE,OAAO,CAAC,CAAC;SACf;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,YAAY,iBAAyC,EAAE,UAA6B,EAAE;;QAClF,KAAK,EAAE,CAAC;QApRZ;;WAEG;QACK,eAAU,GAA8B,SAAS,CAAC;QAE1D,qCAAqC;QAC7B,cAAS,GAAc,EAAE,CAAC;QAClC,iDAAiD;QACzC,yBAAoB,GAAc,EAAE,CAAC;QAG7C,iEAAiE;QACzD,eAAU,GAAe,EAAE,CAAC;QASpC;;WAEG;QACK,aAAQ,GAAG,IAAI,CAAC;QACxB;;;WAGG;QACK,aAAQ,GAAG,KAAK,CAAC;QAEzB;;;;WAIG;QACK,kBAAa,GAAG,CAAC,CAAC;QAE1B;;WAEG;QACK,oBAAe,GAAG,IAAI,CAAC;QA4O3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,IAAI,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAEzB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,KAAK,CAAC;QAEnC,oCAAoC;QACpC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,IAAI,OAAO,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC;QAChD,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;SACnC;QACD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,iBAAiB,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED,4CAA4C;IACpC,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,EAAsC;QACvE,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QAEpC,IAAI;YACA,IAAI,OAAgB,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,OAAO,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;aACrD;iBAAM;gBACH,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;aAC9C;YAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YAElD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzB,yEAAyE;YACzE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,EAAE;oBACtC,mEAAmE;oBACnE,OAAO;iBACV;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CACL,CACJ;iBACI,IAAI,CAAC,GAAG,EAAE;gBACP,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,EAAE;gBACP,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAChC,CAAC,CAAC,CAAC;YACP,MAAM,IAAI,CAAC,UAAU,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAChB,uDAAuD;gBACvD,OAAO;aACV;YAED,uDAAuD;YACvD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxB;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC7B;IACL,CAAC;IAED,sCAAsC;IAC9B,eAAe,CAAC,OAAgB;QACpC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC7B;QACD,sDAAsD;IAC1D,CAAC;IAED,0CAA0C;IAClC,eAAe;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,sDAAsD;IAC9C,aAAa,CAAC,EAAqC;QACvD,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,4FAA4F;QAC5F,oDAAoD;QACpD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,gEAAgE;IAChE,WAAW;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,wBAAwB;IACxB,EAAE;IACF,oEAAoE;IACpE,EAAE;IACF,KAAK;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,8BAA8B;gBAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC/B,IAAI,OAAO,CAAC,OAAO,EAAE;wBACjB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACjC;oBACD,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;aACN;YACD,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxC,mCAAmC;gBACnC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC1C,IAAI,OAAO,CAAC,OAAO,EAAE;wBACjB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACjC;oBACD,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;aACN;YAED,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACnE,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,SAAS,CAAC;YACrE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAE1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEnB,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,cAAc;QAClB,OAAO,CACH,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAC3F,CAAC;IACN,CAAC;IAED,gFAAgF;IACxE,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACnD;IACL,CAAC;IAED,oDAAoD;IAC5C,oBAAoB;QACxB,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/F,CAAC;IAEO,gBAAgB,CAAC,OAAgB,EAAE,MAAe;QACtD,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEO,gBAAgB,CAAC,OAAgB,EAAE,GAAU;QACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/C,+FAA+F;YAC/F,gBAAgB;YAChB,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChC;aAAM;YACH,8FAA8F;YAC9F,8DAA8D;YAC9D,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YAC7D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACvB;IACL,CAAC;IAEO,kBAAkB,CAAC,OAAkC;QACzD,IAAI,cAAsB,CAAC;QAE3B,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;SACzD;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACpC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;aAAM,IAAI,OAAO,YAAY,MAAM,EAAE;YAClC,cAAc,GAAG,OAAO,CAAC;SAC5B;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAQ,OAAe,CAAC,QAAQ,KAAK,UAAU,EAAE;YACvF,cAAc,GAAG,MAAM,CAAC,IAAI,CAAE,OAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC7D;aAAM;YACH,OAAO,CAAC,IAAI,CACR,8EAA8E,CACjF,CAAC;YACF,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;SACzD;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,sBAAsB,CAAC,YAAoB;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IACI,CAAC,OAAO;YACR,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,CAAC,IAAI,CAAC,QAAQ;YACd,YAAY,KAAK,IAAI,CAAC,aAAa,EACrC;YACE,sCAAsC;YACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,OAAO;SACV;QAED,IAAI;YACA,0EAA0E;YAC1E,IAAI,SAAS,GAAG,sBAAsB,CAAC;YACvC,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;gBACvE,SAAS,EAAE,CAAC;gBAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,EAAE;oBACV,MAAM;iBACT;gBAED,IAAI,WAAW,GAAG,IAAI,CAAC;gBAEvB,QAAQ,OAAO,CAAC,IAAI,EAAE;oBAClB,KAAK,SAAS,CAAC,CAAC;wBACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACf,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACxC,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAChD,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,EACf,CAAC,GAAG,EAAE,EAAE;gCACJ,IAAI,OAAO,CAAC,UAAU,EAAE;oCACpB,OAAO;iCACV;gCAED,IAAI,OAAO,CAAC,OAAO,EAAE;oCACjB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iCACjC;gCAED,IAAI,GAAG,EAAE;oCACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;iCACvC;qCAAM;oCACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;iCAC/C;4BACL,CAAC,CACJ,CAAC;yBACL;6BAAM;4BACH,IAAI,OAAO,CAAC,OAAO,EAAE;gCACjB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;6BACjC;4BACD,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAChD,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAClB,CAAC;4BACF,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;yBAChC;wBACD,MAAM;qBACT;oBACD,KAAK,aAAa,CAAC,CAAC;wBAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACf,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACxC,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,WAAW,CACpD,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,EACf,CAAC,GAAG,EAAE,EAAE;gCACJ,IAAI,OAAO,CAAC,UAAU,EAAE;oCACpB,OAAO;iCACV;gCAED,IAAI,OAAO,CAAC,OAAO,EAAE;oCACjB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iCACjC;gCAED,IAAI,GAAG,EAAE;oCACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;iCACvC;qCAAM;oCACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;iCAC/C;4BACL,CAAC,CACJ,CAAC;yBACL;6BAAM;4BACH,IAAI,OAAO,CAAC,OAAO,EAAE;gCACjB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;6BACjC;4BACD,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,WAAW,CACpD,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAClB,CAAC;4BACF,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;yBAChC;wBACD,MAAM;qBACT;oBACD,0BAA0B;oBAC1B;wBACI,MAAM,IAAI,KAAK,CAAC,0BAA2B,OAAe,CAAC,IAAI,EAAE,CAAC,CAAC;iBAC1E;aACJ;YAED,wDAAwD;YACxD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnD,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;aACjE;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;aACzB;YAED,0BAA0B;SAC7B;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SAC3B;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CACT,KAAa,EACb,SAAgC,EAChC,UAA2B,EAAE;QAE7B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAa;YACvB,WAAW,EAAE,IAAI;YACjB,KAAK;YACL,SAAS;YACT,OAAO,EAAE;gBACL,GAAG,OAAO;gBACV,WAAW;aACd;SACJ,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,MAAM,IAAI,CAAC,UAAU,CAAC;SACzB;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,EAAE,WAAW,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,QAAkB;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO;SACV;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;QAClD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC3C;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAC/C,QAAQ,CAAC,KAAK,EACd,CAAC,GAAG,EAAE,EAAE;YACJ,IAAI,CAAC,GAAG,EAAE;gBACN,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;wBAClB,iDAAiD;wBACjD,gDAAgD;wBAChD,mDAAmD;wBACnD,gDAAgD;wBAChD,8BAA8B;wBAC9B,OAAO;qBACV;oBACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBACH,OAAO;aACV;YACD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,EACD,OAAO,CACV,CAAC;QACF,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAkB;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACrC,yBAAyB;YACzB,OAAO;SACV;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO;SACV;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,MAAM,OAAO,CAAC,GAAG,CACb,SAAS,CAAC,MAAM,CAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YACtC,IAAI,QAAQ,CAAC,WAAW,EAAE;gBACtB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;aAClD;YACD,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CACT,CAAC;IACN,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;QACpF,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;YACZ,OAAO;SACV;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;YACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SACpD;IACL,CAAC;IAED,+CAA+C;IAC/C,GAAG,CAAC,OAAwB,EAAE,OAAiB;QAC3C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,kDAAkD;IAClD,MAAM;QACF,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,+CAA+C;IAC/C,IAAI,CAAC,OAAwB,EAAE,OAAiB,EAAE,OAAiB;QAC/D,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,OAAiB;QACrB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,UAAU,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAChD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,UAAU,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAChD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,WAAW,CACb,KAAa,EACb,OAAqC;QAErC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC1D;aAAM;YACH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;SACvD;IACL,CAAC;IAED,oDAAoD;IACpD,6EAA6E;IAC7E,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,OAAe,EAAE,IAAU;QACtE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SAC/D;IACL,CAAC;IAED,sDAAsD;IACtD,6EAA6E;IAC7E,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAc,EAAE,OAAe,EAAE,IAAU;QACxE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SACjE;IACL,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,WAAW,CACb,KAAa,EACb,OAA6B;QAE7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC1D;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,cAAc,CAChB,QAAgB,EAChB,IAAkE,EAClE,OAAgC;QAEhC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SACtE;aAAM;YACH,OAAO,EAAE,QAAQ,EAAE,CAAC;SACvB;IACL,CAAC;IAED,uDAAuD;IACvD,6EAA6E;IAC7E,KAAK,CAAC,YAAY,CACd,WAAmB,EACnB,MAAc,EACd,OAAe,EACf,IAAU;QAEV,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SAC/E;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,aAAa,CAAC,QAAgB;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACtD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,cAAc,CAChB,QAAgB,EAChB,OAAgC;QAEhC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SAChE;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;IAED,yDAAyD;IACzD,6EAA6E;IAC7E,KAAK,CAAC,cAAc,CAChB,WAAmB,EACnB,MAAc,EACd,OAAe,EACf,IAAU;QAEV,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SACjF;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,OAAqB;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAClD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;IACL,CAAC;CACJ;AAED,SAAS,wBAAwB,CAAC,GAAc,EAAE,OAAgB;IAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC9D;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"ChannelWrapper.js","sourceRoot":"","sources":["../../src/ChannelWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type * as amqplib from 'amqplib';
|
|
3
|
+
export interface PublishMessage {
|
|
4
|
+
type: 'publish';
|
|
5
|
+
exchange: string;
|
|
6
|
+
routingKey: string;
|
|
7
|
+
content: Buffer;
|
|
8
|
+
options?: amqplib.Options.Publish;
|
|
9
|
+
resolve: (result: boolean) => void;
|
|
10
|
+
reject: (err: Error) => void;
|
|
11
|
+
timeout?: NodeJS.Timeout;
|
|
12
|
+
isTimedout: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface SendToQueueMessage {
|
|
15
|
+
type: 'sendToQueue';
|
|
16
|
+
queue: string;
|
|
17
|
+
content: Buffer;
|
|
18
|
+
options?: amqplib.Options.Publish;
|
|
19
|
+
resolve: (result: boolean) => void;
|
|
20
|
+
reject: (err: Error) => void;
|
|
21
|
+
timeout?: NodeJS.Timeout;
|
|
22
|
+
isTimedout: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare type Message = PublishMessage | SendToQueueMessage;
|
|
25
|
+
export interface MessageStore {
|
|
26
|
+
/**
|
|
27
|
+
* This is called before a message is sent, to queue the message.
|
|
28
|
+
*/
|
|
29
|
+
queueMessage(message: Message, timeout?: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Return the next message to send (the oldest queued message).
|
|
32
|
+
*/
|
|
33
|
+
getMessageToSend(): Message | undefined;
|
|
34
|
+
/** Returns the number of unsent messages queued in this MessageStore. */
|
|
35
|
+
queueLength(): number;
|
|
36
|
+
/**
|
|
37
|
+
* This is called after a message is sent, to mark the message as unconfirmed.
|
|
38
|
+
*/
|
|
39
|
+
messageSent(message: Message): void;
|
|
40
|
+
/**
|
|
41
|
+
* Called when a message failed to send because the connection was temporarily lost.
|
|
42
|
+
*/
|
|
43
|
+
messageSendFailed(message: Message): void;
|
|
44
|
+
/**
|
|
45
|
+
* This is called after a message is confirmed, to remove the message from the store.
|
|
46
|
+
*/
|
|
47
|
+
messageResolved(message: Message, canSend: boolean): void;
|
|
48
|
+
/**
|
|
49
|
+
* Called when a message has failed and cannot be sent.
|
|
50
|
+
*/
|
|
51
|
+
messageRejected(message: Message, err: Error): void;
|
|
52
|
+
/**
|
|
53
|
+
* Called when the channel is closed, to reject any unsent/unconfirmed messages.
|
|
54
|
+
*/
|
|
55
|
+
rejectAll(err: Error): void;
|
|
56
|
+
}
|
|
57
|
+
export declare class InMemoryMessageStore implements MessageStore {
|
|
58
|
+
/** Queued messages, not yet sent. */
|
|
59
|
+
private _messages;
|
|
60
|
+
/** Published, but not yet confirmed messages. */
|
|
61
|
+
private _unconfirmedMessages;
|
|
62
|
+
queueMessage(message: Message, timeout?: number): void;
|
|
63
|
+
getMessageToSend(): Message | undefined;
|
|
64
|
+
queueLength(): number;
|
|
65
|
+
messageSent(message: Message): void;
|
|
66
|
+
messageSendFailed(message: Message): void;
|
|
67
|
+
messageResolved(message: Message, canSend: boolean): void;
|
|
68
|
+
messageRejected(message: Message, err: Error): void;
|
|
69
|
+
rejectAll(err: Error): void;
|
|
70
|
+
private _removeUnconfirmedMessage;
|
|
71
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export class InMemoryMessageStore {
|
|
2
|
+
constructor() {
|
|
3
|
+
/** Queued messages, not yet sent. */
|
|
4
|
+
this._messages = [];
|
|
5
|
+
/** Published, but not yet confirmed messages. */
|
|
6
|
+
this._unconfirmedMessages = [];
|
|
7
|
+
}
|
|
8
|
+
queueMessage(message, timeout) {
|
|
9
|
+
if (timeout) {
|
|
10
|
+
message.timeout = setTimeout(() => {
|
|
11
|
+
let idx = this._messages.indexOf(message);
|
|
12
|
+
if (idx !== -1) {
|
|
13
|
+
this._messages.splice(idx, 1);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
idx = this._unconfirmedMessages.indexOf(message);
|
|
17
|
+
if (idx !== -1) {
|
|
18
|
+
this._unconfirmedMessages.splice(idx, 1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
message.isTimedout = true;
|
|
22
|
+
message.reject(new Error('timeout'));
|
|
23
|
+
}, timeout);
|
|
24
|
+
}
|
|
25
|
+
this._messages.push(message);
|
|
26
|
+
}
|
|
27
|
+
getMessageToSend() {
|
|
28
|
+
return this._messages.shift();
|
|
29
|
+
}
|
|
30
|
+
queueLength() {
|
|
31
|
+
return this._messages.length;
|
|
32
|
+
}
|
|
33
|
+
messageSent(message) {
|
|
34
|
+
this._unconfirmedMessages.push(message);
|
|
35
|
+
}
|
|
36
|
+
messageSendFailed(message) {
|
|
37
|
+
this._removeUnconfirmedMessage(message);
|
|
38
|
+
// Tried to write to a closed channel. Put the message back in the queue
|
|
39
|
+
// and we'll try again when we reconnect.
|
|
40
|
+
// TODO: Are we worried about re-ordering messages here?
|
|
41
|
+
this._messages.unshift(message);
|
|
42
|
+
}
|
|
43
|
+
messageResolved(message, canSend) {
|
|
44
|
+
this._removeUnconfirmedMessage(message);
|
|
45
|
+
message.resolve(canSend);
|
|
46
|
+
}
|
|
47
|
+
messageRejected(message, err) {
|
|
48
|
+
this._removeUnconfirmedMessage(message);
|
|
49
|
+
message.reject(err);
|
|
50
|
+
}
|
|
51
|
+
rejectAll(err) {
|
|
52
|
+
if (this._messages.length !== 0) {
|
|
53
|
+
// Reject any unsent messages.
|
|
54
|
+
this._messages.forEach((message) => {
|
|
55
|
+
if (message.timeout) {
|
|
56
|
+
clearTimeout(message.timeout);
|
|
57
|
+
}
|
|
58
|
+
message.reject(err);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (this._unconfirmedMessages.length !== 0) {
|
|
62
|
+
// Reject any unconfirmed messages.
|
|
63
|
+
this._unconfirmedMessages.forEach((message) => {
|
|
64
|
+
if (message.timeout) {
|
|
65
|
+
clearTimeout(message.timeout);
|
|
66
|
+
}
|
|
67
|
+
message.reject(err);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
_removeUnconfirmedMessage(message) {
|
|
72
|
+
const toRemove = this._unconfirmedMessages.indexOf(message);
|
|
73
|
+
if (toRemove === -1) {
|
|
74
|
+
throw new Error(`Message is not in _unconfirmedMessages!`);
|
|
75
|
+
}
|
|
76
|
+
const removed = this._unconfirmedMessages.splice(toRemove, 1);
|
|
77
|
+
return removed[0];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=MessageStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageStore.js","sourceRoot":"","sources":["../../src/MessageStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import AmqpConnectionManager, { AmqpConnectionManagerOptions, ConnectionUrl, IAmqpConnectionManager } from './AmqpConnectionManager.js';
|
|
2
|
+
import { PublishOptions } from './ChannelWrapper.js';
|
|
3
|
+
export type { AmqpConnectionManagerOptions, ConnectionUrl, IAmqpConnectionManager as AmqpConnectionManager, } from './AmqpConnectionManager.js';
|
|
4
|
+
export type { CreateChannelOpts, default as ChannelWrapper, SetupFunc, Channel, } from './ChannelWrapper.js';
|
|
5
|
+
import { Options as AmqpLibOptions } from 'amqplib';
|
|
6
|
+
export declare namespace Options {
|
|
7
|
+
type Connect = AmqpLibOptions.Connect;
|
|
8
|
+
type AssertQueue = AmqpLibOptions.AssertQueue;
|
|
9
|
+
type DeleteQueue = AmqpLibOptions.DeleteQueue;
|
|
10
|
+
type AssertExchange = AmqpLibOptions.AssertExchange;
|
|
11
|
+
type DeleteExchange = AmqpLibOptions.DeleteExchange;
|
|
12
|
+
type Publish = PublishOptions;
|
|
13
|
+
type Consume = AmqpLibOptions.Consume;
|
|
14
|
+
type Get = AmqpLibOptions.Get;
|
|
15
|
+
}
|
|
16
|
+
export declare function connect(urls: ConnectionUrl | ConnectionUrl[] | undefined | null, options?: AmqpConnectionManagerOptions): IAmqpConnectionManager;
|
|
17
|
+
export { AmqpConnectionManager as AmqpConnectionManagerClass };
|
|
18
|
+
declare const amqp: {
|
|
19
|
+
connect: typeof connect;
|
|
20
|
+
};
|
|
21
|
+
export default amqp;
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
/// <reference types="node" />
|
|
5
1
|
import * as amqp from 'amqplib';
|
|
6
2
|
import { EventEmitter } from 'events';
|
|
7
3
|
import { TcpSocketConnectOpts } from 'net';
|
|
@@ -58,7 +54,7 @@ export interface AmqpConnectionManagerOptions {
|
|
|
58
54
|
/** Connection options, passed as options to the amqplib.connect() method. */
|
|
59
55
|
connectionOptions?: AmqpConnectionOptions;
|
|
60
56
|
}
|
|
61
|
-
export interface IAmqpConnectionManager {
|
|
57
|
+
export interface IAmqpConnectionManager extends EventEmitter {
|
|
62
58
|
connectionOptions?: AmqpConnectionOptions;
|
|
63
59
|
heartbeatIntervalInSeconds: number;
|
|
64
60
|
reconnectTimeInSeconds: number;
|
|
@@ -122,7 +118,7 @@ export interface IAmqpConnectionManager {
|
|
|
122
118
|
close(): Promise<void>;
|
|
123
119
|
isConnected(): boolean;
|
|
124
120
|
/** The current connection. */
|
|
125
|
-
readonly connection: amqp.
|
|
121
|
+
readonly connection: amqp.ChannelModel | undefined;
|
|
126
122
|
/** Returns the number of registered channels. */
|
|
127
123
|
readonly channelCount: number;
|
|
128
124
|
}
|
|
@@ -177,7 +173,7 @@ export default class AmqpConnectionManager extends EventEmitter implements IAmqp
|
|
|
177
173
|
/** Force reconnect - noop unless connected */
|
|
178
174
|
reconnect(): void;
|
|
179
175
|
/** The current connection. */
|
|
180
|
-
get connection(): amqp.
|
|
176
|
+
get connection(): amqp.ChannelModel | undefined;
|
|
181
177
|
/** Returns the number of registered channels. */
|
|
182
178
|
get channelCount(): number;
|
|
183
179
|
private _connect;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amqp-connection-manager",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.15",
|
|
4
4
|
"description": "Auto-reconnect and round robin support for amqplib.",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@types/chai-as-promised": "^7.1.4",
|
|
32
32
|
"@types/chai-string": "^1.4.2",
|
|
33
33
|
"@types/jest": "^29.2.0",
|
|
34
|
-
"@types/node": "^
|
|
34
|
+
"@types/node": "^22.18.6",
|
|
35
35
|
"@types/whatwg-url": "^11.0.0",
|
|
36
36
|
"@typescript-eslint/eslint-plugin": "^5.9.0",
|
|
37
37
|
"@typescript-eslint/parser": "^5.9.0",
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
"chai-as-promised": "^7.1.1",
|
|
41
41
|
"chai-jest": "^1.0.2",
|
|
42
42
|
"chai-string": "^1.1.2",
|
|
43
|
-
"coveralls": "^3.1.0",
|
|
44
43
|
"cross-env": "^7.0.2",
|
|
45
44
|
"eslint": "^8.6.0",
|
|
46
45
|
"eslint-config-prettier": "^8.3.0",
|