amqplib 0.7.0 → 0.9.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/.github/workflows/test.yml +38 -0
- package/CHANGELOG.md +69 -0
- package/Makefile +6 -7
- package/README.md +5 -7
- package/bin/generate-defs.js +0 -1
- package/examples/tutorials/README.md +6 -6
- package/lib/bitset.js +99 -72
- package/lib/channel.js +0 -1
- package/lib/channel_model.js +268 -287
- package/lib/connect.js +7 -1
- package/lib/connection.js +14 -6
- package/lib/credentials.js +0 -1
- package/lib/defs.js +166 -184
- package/lib/frame.js +0 -1
- package/package.json +7 -8
- package/test/bitset.js +22 -21
- package/test/callback_api.js +0 -1
- package/test/channel.js +0 -1
- package/test/channel_api.js +0 -1
- package/test/codec.js +0 -1
- package/test/connect.js +47 -2
- package/test/connection.js +0 -1
- package/test/data.js +0 -1
- package/test/frame.js +2 -3
- package/.npmignore +0 -8
- package/package-lock.json +0 -1593
package/lib/frame.js
CHANGED
package/package.json
CHANGED
|
@@ -2,28 +2,27 @@
|
|
|
2
2
|
"name": "amqplib",
|
|
3
3
|
"homepage": "http://squaremo.github.io/amqp.node/",
|
|
4
4
|
"main": "./channel_api.js",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.9.0",
|
|
6
6
|
"description": "An AMQP 0-9-1 (e.g., RabbitMQ) library and client.",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/squaremo/amqp.node.git"
|
|
10
10
|
},
|
|
11
11
|
"engines": {
|
|
12
|
-
"node": ">=
|
|
12
|
+
"node": ">=10"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"bitsyntax": "~0.1.0",
|
|
16
|
-
"bluebird": "^3.
|
|
16
|
+
"bluebird": "^3.7.2",
|
|
17
17
|
"buffer-more-ints": "~1.0.0",
|
|
18
18
|
"readable-stream": "1.x >=1.1.9",
|
|
19
|
-
"
|
|
20
|
-
"url-parse": "~1.4.3"
|
|
19
|
+
"url-parse": "~1.5.10"
|
|
21
20
|
},
|
|
22
21
|
"devDependencies": {
|
|
23
22
|
"claire": "0.4.1",
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"uglify-js": "2.
|
|
23
|
+
"mocha": "^9.2.2",
|
|
24
|
+
"nyc": "^15.1.0",
|
|
25
|
+
"uglify-js": "2.8.x"
|
|
27
26
|
},
|
|
28
27
|
"scripts": {
|
|
29
28
|
"test": "make test",
|
package/test/bitset.js
CHANGED
|
@@ -1,68 +1,69 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const claire = require('claire');
|
|
4
|
+
const {BitSet} = require('../lib/bitset');
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
const {
|
|
7
|
+
forAll,
|
|
8
|
+
data: arb,
|
|
9
|
+
label,
|
|
10
|
+
choice,
|
|
11
|
+
transform
|
|
12
|
+
} = claire;
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
var PosInt = transform(Math.floor, arb.Positive);
|
|
14
|
+
const PosInt = transform(Math.floor, arb.Positive);
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
const EmptyBitSet = label('bitset', transform(
|
|
17
|
+
size => {
|
|
16
18
|
return new BitSet(size);
|
|
17
19
|
},
|
|
18
20
|
choice(arb.Nothing, PosInt)));
|
|
19
21
|
|
|
20
|
-
suite('BitSet',
|
|
22
|
+
suite('BitSet', () => {
|
|
21
23
|
|
|
22
24
|
test('get bit', forAll(EmptyBitSet, PosInt)
|
|
23
|
-
.satisfy(
|
|
25
|
+
.satisfy((b, bit) => {
|
|
24
26
|
b.set(bit);
|
|
25
27
|
return b.get(bit);
|
|
26
28
|
}).asTest());
|
|
27
|
-
|
|
29
|
+
|
|
28
30
|
test('clear bit', forAll(EmptyBitSet, PosInt)
|
|
29
|
-
.satisfy(
|
|
31
|
+
.satisfy((b, bit) => {
|
|
30
32
|
b.set(bit);
|
|
31
33
|
b.clear(bit);
|
|
32
34
|
return !b.get(bit);
|
|
33
35
|
}).asTest());
|
|
34
36
|
|
|
35
37
|
test('next set of empty', forAll(EmptyBitSet)
|
|
36
|
-
.satisfy(
|
|
38
|
+
.satisfy(b => {
|
|
37
39
|
return b.nextSetBit(0) === -1;
|
|
38
40
|
}).asTest());
|
|
39
41
|
|
|
40
42
|
test('next set of one bit', forAll(EmptyBitSet, PosInt)
|
|
41
|
-
.satisfy(
|
|
43
|
+
.satisfy((b, bit) => {
|
|
42
44
|
b.set(bit);
|
|
43
45
|
return b.nextSetBit(0) === bit;
|
|
44
46
|
}).asTest());
|
|
45
47
|
|
|
46
48
|
test('next set same bit', forAll(EmptyBitSet, PosInt)
|
|
47
|
-
.satisfy(
|
|
49
|
+
.satisfy((b, bit) => {
|
|
48
50
|
b.set(bit);
|
|
49
51
|
return b.nextSetBit(bit) === bit;
|
|
50
52
|
}).asTest());
|
|
51
53
|
|
|
52
54
|
test('next set following bit', forAll(EmptyBitSet, PosInt)
|
|
53
|
-
.satisfy(
|
|
55
|
+
.satisfy((b, bit) => {
|
|
54
56
|
b.set(bit);
|
|
55
57
|
return b.nextSetBit(bit+1) === -1;
|
|
56
58
|
}).asTest());
|
|
57
59
|
|
|
58
60
|
test('next clear of empty', forAll(EmptyBitSet, PosInt)
|
|
59
|
-
.satisfy(
|
|
61
|
+
.satisfy((b, bit) => { return b.nextClearBit(bit) === bit; })
|
|
60
62
|
.asTest());
|
|
61
63
|
|
|
62
64
|
test('next clear of one set', forAll(EmptyBitSet, PosInt)
|
|
63
|
-
.satisfy(
|
|
65
|
+
.satisfy((b, bit) => {
|
|
64
66
|
b.set(bit);
|
|
65
67
|
return b.nextClearBit(bit) === bit + 1;
|
|
66
68
|
}).asTest());
|
|
67
|
-
|
|
68
69
|
});
|
package/test/callback_api.js
CHANGED
package/test/channel.js
CHANGED
|
@@ -12,7 +12,6 @@ var completes = util.completes;
|
|
|
12
12
|
var defs = require('../lib/defs');
|
|
13
13
|
var conn_handshake = require('./connection').connection_handshake;
|
|
14
14
|
var OPEN_OPTS = require('./connection').OPEN_OPTS;
|
|
15
|
-
var Buffer = require('safe-buffer').Buffer;
|
|
16
15
|
|
|
17
16
|
var LOG_ERRORS = process.env.LOG_ERRORS;
|
|
18
17
|
|
package/test/channel_api.js
CHANGED
package/test/codec.js
CHANGED
package/test/connect.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var connect = require('../lib/connect').connect;
|
|
4
|
-
var Buffer = require('safe-buffer').Buffer
|
|
5
4
|
var credentialsFromUrl = require('../lib/connect').credentialsFromUrl;
|
|
5
|
+
var defs = require('../lib/defs');
|
|
6
6
|
var assert = require('assert');
|
|
7
7
|
var util = require('./util');
|
|
8
8
|
var net = require('net');
|
|
9
|
-
var fail = util.fail, succeed = util.succeed,
|
|
9
|
+
var fail = util.fail, succeed = util.succeed, latch = util.latch,
|
|
10
10
|
kCallback = util.kCallback,
|
|
11
11
|
succeedIfAttributeEquals = util.succeedIfAttributeEquals;
|
|
12
12
|
var format = require('util').format;
|
|
@@ -148,5 +148,50 @@ suite("Connect API", function() {
|
|
|
148
148
|
else done();
|
|
149
149
|
});
|
|
150
150
|
});
|
|
151
|
+
});
|
|
151
152
|
|
|
153
|
+
suite('Errors on connect', function() {
|
|
154
|
+
var server
|
|
155
|
+
teardown(function() {
|
|
156
|
+
if (server) {
|
|
157
|
+
server.close();
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
test("closes underlying connection on authentication error", function(done) {
|
|
162
|
+
var bothDone = latch(2, done);
|
|
163
|
+
server = net.createServer(function(socket) {
|
|
164
|
+
socket.once('data', function(protocolHeader) {
|
|
165
|
+
assert.deepStrictEqual(
|
|
166
|
+
protocolHeader,
|
|
167
|
+
Buffer.from("AMQP" + String.fromCharCode(0,0,9,1))
|
|
168
|
+
);
|
|
169
|
+
util.runServer(socket, function(send, wait) {
|
|
170
|
+
send(defs.ConnectionStart,
|
|
171
|
+
{versionMajor: 0,
|
|
172
|
+
versionMinor: 9,
|
|
173
|
+
serverProperties: {},
|
|
174
|
+
mechanisms: Buffer.from('PLAIN'),
|
|
175
|
+
locales: Buffer.from('en_US')});
|
|
176
|
+
wait(defs.ConnectionStartOk)().then(function() {
|
|
177
|
+
send(defs.ConnectionClose,
|
|
178
|
+
{replyCode: 403,
|
|
179
|
+
replyText: 'ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN',
|
|
180
|
+
classId: 0,
|
|
181
|
+
methodId: 0});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Wait for the connection to be closed after the authentication error
|
|
187
|
+
socket.once('end', function() {
|
|
188
|
+
bothDone();
|
|
189
|
+
});
|
|
190
|
+
}).listen(0);
|
|
191
|
+
|
|
192
|
+
connect('amqp://localhost:' + server.address().port, {}, function(err) {
|
|
193
|
+
if (!err) bothDone(new Error('Expected authentication error'));
|
|
194
|
+
bothDone();
|
|
195
|
+
});
|
|
196
|
+
});
|
|
152
197
|
});
|
package/test/connection.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var assert = require('assert');
|
|
4
4
|
var defs = require('../lib/defs');
|
|
5
|
-
var Buffer = require('safe-buffer').Buffer;
|
|
6
5
|
var Connection = require('../lib/connection').Connection;
|
|
7
6
|
var HEARTBEAT = require('../lib/frame').HEARTBEAT;
|
|
8
7
|
var HB_BUF = require('../lib/frame').HEARTBEAT_BUF;
|
package/test/data.js
CHANGED
package/test/frame.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var assert = require('assert');
|
|
4
4
|
var succeed = require('./util').succeed;
|
|
5
5
|
var fail = require('./util').fail;
|
|
6
|
-
var Buffer = require('safe-buffer').Buffer;
|
|
7
6
|
var connection = require('../lib/connection');
|
|
8
7
|
var Frames = connection.Connection;
|
|
9
8
|
var HEARTBEAT = require('../lib/frame').HEARTBEAT;
|
|
@@ -27,7 +26,7 @@ var HB = Buffer.from([defs.constants.FRAME_HEARTBEAT,
|
|
|
27
26
|
defs.constants.FRAME_END]);
|
|
28
27
|
|
|
29
28
|
suite("Explicit parsing", function() {
|
|
30
|
-
|
|
29
|
+
|
|
31
30
|
test('Parse heartbeat', function() {
|
|
32
31
|
var input = inputs();
|
|
33
32
|
var frames = new Frames(input);
|
|
@@ -117,7 +116,7 @@ suite("Parsing", function() {
|
|
|
117
116
|
}
|
|
118
117
|
i++;
|
|
119
118
|
};
|
|
120
|
-
|
|
119
|
+
|
|
121
120
|
t.forEach(function(f) {
|
|
122
121
|
f.channel = 0;
|
|
123
122
|
bufs.push(defs.encodeMethod(f.id, 0, f.fields));
|