@onify/fake-amqplib 3.5.0 → 3.6.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.
Files changed (4) hide show
  1. package/index.d.ts +90 -76
  2. package/index.js +28 -3
  3. package/main.cjs +30 -3
  4. package/package.json +3 -3
package/index.d.ts CHANGED
@@ -1,90 +1,104 @@
1
- /// <reference types="amqplib" />
2
1
  /// <reference types="node" />
3
2
 
4
- import { Options, Connection, Channel, ChannelModel, Replies } from 'amqplib';
5
- import { Broker } from 'smqp';
3
+ declare module '@onify/fake-amqplib' {
4
+ import { Options, Channel, ChannelModel, Replies, RecoveryOptions, SocketOptions } from 'amqplib';
5
+ import { Broker } from 'smqp';
6
6
 
7
- export interface FakeAmqplibChannel extends Channel {
8
- /** Channel name and identifier, for faking purposes */
9
- _channelName: string;
10
- _broker: Broker;
11
- _version: number;
12
- readonly _closed: boolean;
13
- }
7
+ export { RecoveryOptions, SocketOptions };
14
8
 
15
- export const FakeAmqplibChannel: {
16
- new (broker: Broker, connection: FakeAmqplibConnection): FakeAmqplibChannel;
17
- };
9
+ export interface FakeAmqplibChannel extends Channel {
10
+ /** Channel name and identifier, for faking purposes */
11
+ _channelName: string;
12
+ _broker: Broker;
13
+ _version: number;
14
+ readonly _closed: boolean;
15
+ }
18
16
 
19
- export interface FakeAmqplibConfirmChannel extends FakeAmqplibChannel {
20
- publish(
21
- exchange: string,
22
- routingKey: string,
23
- content: Buffer,
24
- options?: Options.Publish,
25
- callback?: (err: Error | null, ok: Replies.Empty) => void
26
- ): boolean;
27
- sendToQueue(
28
- queue: string,
29
- content: Buffer,
30
- options?: Options.Publish,
31
- callback?: (err: Error | null, ok: Replies.Empty) => void
32
- ): boolean;
33
- waitForConfirms(callback?: (err: Error | null) => void): Promise<void>;
34
- }
17
+ export const FakeAmqplibChannel: {
18
+ new (broker: Broker, connection: FakeAmqplibConnection): FakeAmqplibChannel;
19
+ };
35
20
 
36
- export const FakeAmqplibConfirmChannel: {
37
- new (broker: Broker, connection: FakeAmqplibConnection): FakeAmqplibConfirmChannel;
38
- };
21
+ export interface FakeAmqplibConfirmChannel extends FakeAmqplibChannel {
22
+ publish(
23
+ exchange: string,
24
+ routingKey: string,
25
+ content: Buffer,
26
+ options?: Options.Publish,
27
+ callback?: (err: Error | null, ok: Replies.Empty) => void
28
+ ): boolean;
29
+ sendToQueue(
30
+ queue: string,
31
+ content: Buffer,
32
+ options?: Options.Publish,
33
+ callback?: (err: Error | null, ok: Replies.Empty) => void
34
+ ): boolean;
35
+ waitForConfirms(callback?: (err: Error | null) => void): Promise<void>;
36
+ }
39
37
 
40
- export interface FakeAmqplibConnection extends Connection, ChannelModel {
41
- _channels: FakeAmqplibChannel[];
42
- _url: URL;
43
- /** Connection identifier, for faking purposes */
44
- _id: string;
45
- _broker: Broker;
46
- _version: number;
47
- readonly _closed: boolean;
48
- }
38
+ export const FakeAmqplibConfirmChannel: {
39
+ new (broker: Broker, connection: FakeAmqplibConnection): FakeAmqplibConfirmChannel;
40
+ };
49
41
 
50
- export const FakeAmqplibConnection: {
51
- new (broker: Broker, version: number, amqpUrl: string, options?: SocketOptions): FakeAmqplibConnection;
52
- };
42
+ export interface FakeAmqplibConnection extends ChannelModel {
43
+ _channels: FakeAmqplibChannel[];
44
+ _url: URL;
45
+ /** Connection identifier, for faking purposes */
46
+ _id: string;
47
+ _broker: Broker;
48
+ _version: number;
49
+ readonly _closed: boolean;
50
+ }
53
51
 
54
- export interface SocketOptions {
55
- host?: string;
56
- keepAlive?: boolean;
57
- keepAliveDelay?: number;
58
- noDelay?: boolean;
59
- port?: number;
60
- serverName?: string;
61
- timeout?: number;
62
- [x: string]: any;
63
- }
52
+ export const FakeAmqplibConnection: {
53
+ new (broker: Broker, version: number, amqpUrl: string, options?: SocketOptions): FakeAmqplibConnection;
54
+ };
64
55
 
65
- export type ConnectCallback = (err: Error | null, connection: FakeAmqplibConnection) => void;
56
+ export type ConnectCallback = (err: Error | null, connection: FakeAmqplibConnection) => void;
66
57
 
67
- export interface FakeAmqplib {
68
- version: number;
69
- connections: FakeAmqplibConnection[];
70
- connect(url: string | Options.Connect, socketOptions?: SocketOptions): Promise<FakeAmqplibConnection>;
71
- connect(url: string | Options.Connect, socketOptions: SocketOptions, callback: ConnectCallback): void;
72
- connect(url: string | Options.Connect, callback: ConnectCallback): void;
73
- connectSync(url: string | Options.Connect, socketOptions?: SocketOptions): FakeAmqplibConnection;
74
- resetMock(): void;
75
- setVersion(minorVersion: number | string): void;
76
- }
58
+ export interface FakeAmqplib {
59
+ version: number;
60
+ connections: FakeAmqplibConnection[];
61
+ connect(url: string | Options.Connect, socketOptions?: SocketOptions): Promise<FakeAmqplibConnection>;
62
+ connect(url: string | Options.Connect, socketOptions: SocketOptions, callback: ConnectCallback): void;
63
+ connect(url: string | Options.Connect, callback: ConnectCallback): void;
64
+ connectSync(url: string | Options.Connect, socketOptions?: SocketOptions): FakeAmqplibConnection;
65
+ connectWithRecoveryPromise(
66
+ url: string | Options.Connect,
67
+ recoveryOptions?: RecoveryOptions,
68
+ socketOptions?: SocketOptions
69
+ ): Promise<FakeAmqplibConnection>;
70
+ connectWithRecoveryCallback(
71
+ url: string | Options.Connect,
72
+ recoveryOptions: RecoveryOptions,
73
+ socketOptions: SocketOptions,
74
+ callback: ConnectCallback
75
+ ): void;
76
+ resetMock(): void;
77
+ setVersion(minorVersion: number | string): void;
78
+ }
77
79
 
78
- export const FakeAmqplib: {
79
- new (minorVersion?: number | string): FakeAmqplib;
80
- (minorVersion?: number | string): FakeAmqplib;
81
- };
80
+ export const FakeAmqplib: {
81
+ new (minorVersion?: number | string): FakeAmqplib;
82
+ (minorVersion?: number | string): FakeAmqplib;
83
+ };
82
84
 
83
- export const connections: FakeAmqplibConnection[];
85
+ export const connections: FakeAmqplibConnection[];
84
86
 
85
- export function connect(url: string | Options.Connect, socketOptions?: SocketOptions): Promise<FakeAmqplibConnection>;
86
- export function connect(url: string | Options.Connect, socketOptions: SocketOptions, callback: ConnectCallback): void;
87
- export function connect(url: string | Options.Connect, callback: ConnectCallback): void;
88
- export function connectSync(url: string | Options.Connect, socketOptions?: SocketOptions): FakeAmqplibConnection;
89
- export function resetMock(): void;
90
- export function setVersion(minorVersion: number | string): void;
87
+ export function connect(url: string | Options.Connect, socketOptions?: SocketOptions): Promise<FakeAmqplibConnection>;
88
+ export function connect(url: string | Options.Connect, socketOptions: SocketOptions, callback: ConnectCallback): void;
89
+ export function connect(url: string | Options.Connect, callback: ConnectCallback): void;
90
+ export function connectSync(url: string | Options.Connect, socketOptions?: SocketOptions): FakeAmqplibConnection;
91
+ export function connectWithRecoveryPromise(
92
+ url: string | Options.Connect,
93
+ recoveryOptions?: RecoveryOptions,
94
+ socketOptions?: SocketOptions
95
+ ): Promise<FakeAmqplibConnection>;
96
+ export function connectWithRecoveryCallback(
97
+ url: string | Options.Connect,
98
+ recoveryOptions: RecoveryOptions,
99
+ socketOptions: SocketOptions,
100
+ callback: ConnectCallback
101
+ ): void;
102
+ export function resetMock(): void;
103
+ export function setVersion(minorVersion: number | string): void;
104
+ }
package/index.js CHANGED
@@ -437,10 +437,12 @@ export class FakeAmqplibChannel extends EventEmitter {
437
437
  return this._callBroker(recoverChannel, ...args);
438
438
 
439
439
  function recoverChannel() {
440
+ const snapshot = [];
440
441
  let msg;
441
- while ((msg = channelQ.get())) {
442
- msg.content[kSmqp].reject(true);
443
- msg.reject(false);
442
+ while ((msg = channelQ.get())) snapshot.push(msg);
443
+ for (const m of snapshot) {
444
+ m.content[kSmqp].reject(true);
445
+ m.reject(false);
444
446
  }
445
447
  return {};
446
448
  }
@@ -674,6 +676,8 @@ export function FakeAmqplib(minorVersion = '3.5') {
674
676
 
675
677
  this.connect = this.connect.bind(this);
676
678
  this.connectSync = this.connectSync.bind(this);
679
+ this.connectWithRecoveryPromise = this.connectWithRecoveryPromise.bind(this);
680
+ this.connectWithRecoveryCallback = this.connectWithRecoveryCallback.bind(this);
677
681
  this.resetMock = this.resetMock.bind(this);
678
682
  this.setVersion = this.setVersion.bind(this);
679
683
  }
@@ -683,6 +687,19 @@ FakeAmqplib.prototype.connect = function fakeConnect(amqpUrl, ...args) {
683
687
  return resolveOrCallback(args.slice(-1)[0], null, connection);
684
688
  };
685
689
 
690
+ FakeAmqplib.prototype.connectWithRecoveryPromise = function fakeConnectWithRecoveryPromise(amqpUrl, recoveryOptions, socketOptions) {
691
+ return this.connect(amqpUrl, socketOptions);
692
+ };
693
+
694
+ FakeAmqplib.prototype.connectWithRecoveryCallback = function fakeConnectWithRecoveryCallback(
695
+ amqpUrl,
696
+ recoveryOptions,
697
+ socketOptions,
698
+ callback
699
+ ) {
700
+ return this.connect(amqpUrl, socketOptions, callback);
701
+ };
702
+
686
703
  FakeAmqplib.prototype.connectSync = function fakeConnectSync(amqpUrl, ...args) {
687
704
  const { _broker } = this.connections.find((conn) => compareConnectionString(conn._url, amqpUrl)) || {};
688
705
  const broker = _broker || new AmqplibBroker(this);
@@ -828,6 +845,14 @@ export function connectSync(amqpUrl, ...args) {
828
845
  return defaultFake.connectSync(amqpUrl, ...args);
829
846
  }
830
847
 
848
+ export function connectWithRecoveryPromise(amqpUrl, recoveryOptions, socketOptions) {
849
+ return defaultFake.connectWithRecoveryPromise(amqpUrl, recoveryOptions, socketOptions);
850
+ }
851
+
852
+ export function connectWithRecoveryCallback(amqpUrl, recoveryOptions, socketOptions, callback) {
853
+ return defaultFake.connectWithRecoveryCallback(amqpUrl, recoveryOptions, socketOptions, callback);
854
+ }
855
+
831
856
  export function resetMock() {
832
857
  return defaultFake.resetMock();
833
858
  }
package/main.cjs CHANGED
@@ -439,10 +439,12 @@ class FakeAmqplibChannel extends events.EventEmitter {
439
439
  return this._callBroker(recoverChannel, ...args);
440
440
 
441
441
  function recoverChannel() {
442
+ const snapshot = [];
442
443
  let msg;
443
- while ((msg = channelQ.get())) {
444
- msg.content[kSmqp].reject(true);
445
- msg.reject(false);
444
+ while ((msg = channelQ.get())) snapshot.push(msg);
445
+ for (const m of snapshot) {
446
+ m.content[kSmqp].reject(true);
447
+ m.reject(false);
446
448
  }
447
449
  return {};
448
450
  }
@@ -676,6 +678,8 @@ function FakeAmqplib(minorVersion = '3.5') {
676
678
 
677
679
  this.connect = this.connect.bind(this);
678
680
  this.connectSync = this.connectSync.bind(this);
681
+ this.connectWithRecoveryPromise = this.connectWithRecoveryPromise.bind(this);
682
+ this.connectWithRecoveryCallback = this.connectWithRecoveryCallback.bind(this);
679
683
  this.resetMock = this.resetMock.bind(this);
680
684
  this.setVersion = this.setVersion.bind(this);
681
685
  }
@@ -685,6 +689,19 @@ FakeAmqplib.prototype.connect = function fakeConnect(amqpUrl, ...args) {
685
689
  return resolveOrCallback(args.slice(-1)[0], null, connection);
686
690
  };
687
691
 
692
+ FakeAmqplib.prototype.connectWithRecoveryPromise = function fakeConnectWithRecoveryPromise(amqpUrl, recoveryOptions, socketOptions) {
693
+ return this.connect(amqpUrl, socketOptions);
694
+ };
695
+
696
+ FakeAmqplib.prototype.connectWithRecoveryCallback = function fakeConnectWithRecoveryCallback(
697
+ amqpUrl,
698
+ recoveryOptions,
699
+ socketOptions,
700
+ callback
701
+ ) {
702
+ return this.connect(amqpUrl, socketOptions, callback);
703
+ };
704
+
688
705
  FakeAmqplib.prototype.connectSync = function fakeConnectSync(amqpUrl, ...args) {
689
706
  const { _broker } = this.connections.find((conn) => compareConnectionString(conn._url, amqpUrl)) || {};
690
707
  const broker = _broker || new AmqplibBroker(this);
@@ -830,6 +847,14 @@ function connectSync(amqpUrl, ...args) {
830
847
  return defaultFake.connectSync(amqpUrl, ...args);
831
848
  }
832
849
 
850
+ function connectWithRecoveryPromise(amqpUrl, recoveryOptions, socketOptions) {
851
+ return defaultFake.connectWithRecoveryPromise(amqpUrl, recoveryOptions, socketOptions);
852
+ }
853
+
854
+ function connectWithRecoveryCallback(amqpUrl, recoveryOptions, socketOptions, callback) {
855
+ return defaultFake.connectWithRecoveryCallback(amqpUrl, recoveryOptions, socketOptions, callback);
856
+ }
857
+
833
858
  function resetMock() {
834
859
  return defaultFake.resetMock();
835
860
  }
@@ -844,6 +869,8 @@ exports.FakeAmqplibConfirmChannel = FakeAmqplibConfirmChannel;
844
869
  exports.FakeAmqplibConnection = FakeAmqplibConnection;
845
870
  exports.connect = connect;
846
871
  exports.connectSync = connectSync;
872
+ exports.connectWithRecoveryCallback = connectWithRecoveryCallback;
873
+ exports.connectWithRecoveryPromise = connectWithRecoveryPromise;
847
874
  exports.connections = connections;
848
875
  exports.resetMock = resetMock;
849
876
  exports.setVersion = setVersion;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onify/fake-amqplib",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "Fake amqplib",
5
5
  "type": "module",
6
6
  "exports": {
@@ -40,8 +40,8 @@
40
40
  "devDependencies": {
41
41
  "@eslint/js": "^10.0.1",
42
42
  "@rollup/plugin-commonjs": "^29.0.0",
43
- "@types/amqplib": "^0.10.2",
44
- "amqplib": "^1.0.3",
43
+ "@types/node": "^20.19.40",
44
+ "amqplib": "^1.2.0",
45
45
  "c8": "^11.0.0",
46
46
  "chai": "^6.2.1",
47
47
  "eslint": "^10.3.0",