tedious 16.2.0 → 16.4.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/lib/all-headers.js +1 -2
- package/lib/all-headers.js.map +1 -0
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +9 -31
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -0
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +9 -24
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -0
- package/lib/always-encrypted/cek-entry.js +8 -12
- package/lib/always-encrypted/cek-entry.js.map +1 -0
- package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -24
- package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -0
- package/lib/always-encrypted/key-crypto.js +5 -30
- package/lib/always-encrypted/key-crypto.js.map +1 -0
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js +11 -72
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -0
- package/lib/always-encrypted/symmetric-key-cache.js +2 -13
- package/lib/always-encrypted/symmetric-key-cache.js.map +1 -0
- package/lib/always-encrypted/symmetric-key.js +3 -8
- package/lib/always-encrypted/symmetric-key.js.map +1 -0
- package/lib/always-encrypted/types.js +19 -27
- package/lib/always-encrypted/types.js.map +1 -0
- package/lib/always-encrypted/utils.js +2 -6
- package/lib/always-encrypted/utils.js.map +1 -0
- package/lib/bulk-load-payload.js +7 -15
- package/lib/bulk-load-payload.js.map +1 -0
- package/lib/bulk-load.js +58 -131
- package/lib/bulk-load.js.map +1 -0
- package/lib/collation.js +7 -15
- package/lib/collation.js.map +1 -0
- package/lib/connection.js +307 -534
- package/lib/connection.js.map +1 -0
- package/lib/connector.js +6 -37
- package/lib/connector.js.map +1 -0
- package/lib/data-type.js +2 -43
- package/lib/data-type.js.map +1 -0
- package/lib/data-types/bigint.js +1 -15
- package/lib/data-types/bigint.js.map +1 -0
- package/lib/data-types/binary.js +1 -12
- package/lib/data-types/binary.js.map +1 -0
- package/lib/data-types/bit.js +1 -11
- package/lib/data-types/bit.js.map +1 -0
- package/lib/data-types/bitn.js +1 -7
- package/lib/data-types/bitn.js.map +1 -0
- package/lib/data-types/char.js +1 -20
- package/lib/data-types/char.js.map +1 -0
- package/lib/data-types/date.js +1 -15
- package/lib/data-types/date.js.map +1 -0
- package/lib/data-types/datetime.js +3 -20
- package/lib/data-types/datetime.js.map +1 -0
- package/lib/data-types/datetime2.js +1 -26
- package/lib/data-types/datetime2.js.map +1 -0
- package/lib/data-types/datetimen.js +1 -7
- package/lib/data-types/datetimen.js.map +1 -0
- package/lib/data-types/datetimeoffset.js +1 -23
- package/lib/data-types/datetimeoffset.js.map +1 -0
- package/lib/data-types/decimal.js +1 -18
- package/lib/data-types/decimal.js.map +1 -0
- package/lib/data-types/decimaln.js +1 -7
- package/lib/data-types/decimaln.js.map +1 -0
- package/lib/data-types/float.js +1 -13
- package/lib/data-types/float.js.map +1 -0
- package/lib/data-types/floatn.js +1 -7
- package/lib/data-types/floatn.js.map +1 -0
- package/lib/data-types/image.js +1 -10
- package/lib/data-types/image.js.map +1 -0
- package/lib/data-types/int.js +1 -14
- package/lib/data-types/int.js.map +1 -0
- package/lib/data-types/intn.js +1 -7
- package/lib/data-types/intn.js.map +1 -0
- package/lib/data-types/money.js +1 -12
- package/lib/data-types/money.js.map +1 -0
- package/lib/data-types/moneyn.js +1 -7
- package/lib/data-types/moneyn.js.map +1 -0
- package/lib/data-types/nchar.js +1 -14
- package/lib/data-types/nchar.js.map +1 -0
- package/lib/data-types/ntext.js +1 -10
- package/lib/data-types/ntext.js.map +1 -0
- package/lib/data-types/null.js +1 -7
- package/lib/data-types/null.js.map +1 -0
- package/lib/data-types/numeric.js +1 -18
- package/lib/data-types/numeric.js.map +1 -0
- package/lib/data-types/numericn.js +1 -7
- package/lib/data-types/numericn.js.map +1 -0
- package/lib/data-types/nvarchar.js +1 -22
- package/lib/data-types/nvarchar.js.map +1 -0
- package/lib/data-types/real.js +1 -13
- package/lib/data-types/real.js.map +1 -0
- package/lib/data-types/smalldatetime.js +1 -14
- package/lib/data-types/smalldatetime.js.map +1 -0
- package/lib/data-types/smallint.js +1 -14
- package/lib/data-types/smallint.js.map +1 -0
- package/lib/data-types/smallmoney.js +1 -13
- package/lib/data-types/smallmoney.js.map +1 -0
- package/lib/data-types/sql-variant.js +1 -6
- package/lib/data-types/sql-variant.js.map +1 -0
- package/lib/data-types/text.js +1 -18
- package/lib/data-types/text.js.map +1 -0
- package/lib/data-types/time.js +1 -22
- package/lib/data-types/time.js.map +1 -0
- package/lib/data-types/tinyint.js +1 -14
- package/lib/data-types/tinyint.js.map +1 -0
- package/lib/data-types/tvp.js +11 -27
- package/lib/data-types/tvp.js.map +1 -0
- package/lib/data-types/udt.js +1 -7
- package/lib/data-types/udt.js.map +1 -0
- package/lib/data-types/uniqueidentifier.js +1 -11
- package/lib/data-types/uniqueidentifier.js.map +1 -0
- package/lib/data-types/varbinary.js +1 -22
- package/lib/data-types/varbinary.js.map +1 -0
- package/lib/data-types/varchar.js +1 -23
- package/lib/data-types/varchar.js.map +1 -0
- package/lib/data-types/xml.js +1 -7
- package/lib/data-types/xml.js.map +1 -0
- package/lib/debug.js +4 -16
- package/lib/debug.js.map +1 -0
- package/lib/errors/abort-error.js +2 -5
- package/lib/errors/abort-error.js.map +1 -0
- package/lib/errors/timeout-error.js +2 -5
- package/lib/errors/timeout-error.js.map +1 -0
- package/lib/errors.js +10 -16
- package/lib/errors.js.map +1 -0
- package/lib/guid-parser.js +1 -7
- package/lib/guid-parser.js.map +1 -0
- package/lib/incoming-message-stream.js +9 -29
- package/lib/incoming-message-stream.js.map +1 -0
- package/lib/instance-lookup.js +3 -34
- package/lib/instance-lookup.js.map +1 -0
- package/lib/library.js +1 -1
- package/lib/library.js.map +1 -0
- package/lib/login7-payload.js +99 -100
- package/lib/login7-payload.js.map +1 -0
- package/lib/message-io.js +17 -45
- package/lib/message-io.js.map +1 -0
- package/lib/message.js +4 -8
- package/lib/message.js.map +1 -0
- package/lib/metadata-parser.js +1 -22
- package/lib/metadata-parser.js.map +1 -0
- package/lib/ntlm-payload.js +2 -22
- package/lib/ntlm-payload.js.map +1 -0
- package/lib/ntlm.js +1 -4
- package/lib/ntlm.js.map +1 -0
- package/lib/outgoing-message-stream.js +12 -21
- package/lib/outgoing-message-stream.js.map +1 -0
- package/lib/packet.js +2 -47
- package/lib/packet.js.map +1 -0
- package/lib/prelogin-payload.js +11 -54
- package/lib/prelogin-payload.js.map +1 -0
- package/lib/request.js +88 -66
- package/lib/request.js.map +1 -0
- package/lib/rpcrequest-payload.js +8 -35
- package/lib/rpcrequest-payload.js.map +1 -0
- package/lib/sender.js +1 -24
- package/lib/sender.js.map +1 -0
- package/lib/special-stored-procedure.js +1 -1
- package/lib/special-stored-procedure.js.map +1 -0
- package/lib/sqlbatch-payload.js +5 -18
- package/lib/sqlbatch-payload.js.map +1 -0
- package/lib/tds-versions.js +3 -3
- package/lib/tds-versions.js.map +1 -0
- package/lib/tedious.js +1 -12
- package/lib/tedious.js.map +1 -0
- package/lib/token/colmetadata-token-parser.js +1 -17
- package/lib/token/colmetadata-token-parser.js.map +1 -0
- package/lib/token/done-token-parser.js +2 -8
- package/lib/token/done-token-parser.js.map +1 -0
- package/lib/token/env-change-token-parser.js +7 -28
- package/lib/token/env-change-token-parser.js.map +1 -0
- package/lib/token/feature-ext-ack-parser.js +1 -10
- package/lib/token/feature-ext-ack-parser.js.map +1 -0
- package/lib/token/fedauth-info-parser.js +2 -10
- package/lib/token/fedauth-info-parser.js.map +1 -0
- package/lib/token/handler.js +39 -149
- package/lib/token/handler.js.map +1 -0
- package/lib/token/infoerror-token-parser.js +1 -5
- package/lib/token/infoerror-token-parser.js.map +1 -0
- package/lib/token/loginack-token-parser.js +1 -6
- package/lib/token/loginack-token-parser.js.map +1 -0
- package/lib/token/nbcrow-token-parser.js +2 -15
- package/lib/token/nbcrow-token-parser.js.map +1 -0
- package/lib/token/order-token-parser.js +2 -7
- package/lib/token/order-token-parser.js.map +1 -0
- package/lib/token/returnstatus-token-parser.js +2 -4
- package/lib/token/returnstatus-token-parser.js.map +1 -0
- package/lib/token/returnvalue-token-parser.js +4 -9
- package/lib/token/returnvalue-token-parser.js.map +1 -0
- package/lib/token/row-token-parser.js +2 -11
- package/lib/token/row-token-parser.js.map +1 -0
- package/lib/token/sspi-token-parser.js +1 -5
- package/lib/token/sspi-token-parser.js.map +1 -0
- package/lib/token/stream-parser.js +24 -86
- package/lib/token/stream-parser.js.map +1 -0
- package/lib/token/token-stream-parser.js +4 -13
- package/lib/token/token-stream-parser.js.map +1 -0
- package/lib/token/token.js +88 -168
- package/lib/token/token.js.map +1 -0
- package/lib/tracking-buffer/writable-tracking-buffer.js +20 -60
- package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -0
- package/lib/transaction.js +9 -33
- package/lib/transaction.js.map +1 -0
- package/lib/transient-error-lookup.js +1 -4
- package/lib/transient-error-lookup.js.map +1 -0
- package/lib/utils/with-timeout.js +1 -9
- package/lib/utils/with-timeout.js.map +1 -0
- package/lib/value-parser.js +1 -143
- package/lib/value-parser.js.map +1 -0
- package/package.json +27 -71
|
@@ -4,36 +4,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _bl = _interopRequireDefault(require("bl"));
|
|
9
|
-
|
|
10
8
|
var _stream = require("stream");
|
|
11
|
-
|
|
12
9
|
var _packet = require("./packet");
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
class OutgoingMessageStream extends _stream.Duplex {
|
|
12
|
+
packetSize;
|
|
13
|
+
debug;
|
|
14
|
+
bl;
|
|
15
|
+
currentMessage;
|
|
17
16
|
constructor(debug, {
|
|
18
17
|
packetSize
|
|
19
18
|
}) {
|
|
20
19
|
super({
|
|
21
20
|
writableObjectMode: true
|
|
22
21
|
});
|
|
23
|
-
this.packetSize = void 0;
|
|
24
|
-
this.debug = void 0;
|
|
25
|
-
this.bl = void 0;
|
|
26
|
-
this.currentMessage = void 0;
|
|
27
22
|
this.packetSize = packetSize;
|
|
28
23
|
this.debug = debug;
|
|
29
|
-
this.bl = new _bl.default();
|
|
30
|
-
// to also end the readable side.
|
|
24
|
+
this.bl = new _bl.default();
|
|
31
25
|
|
|
26
|
+
// When the writable side is ended, push `null`
|
|
27
|
+
// to also end the readable side.
|
|
32
28
|
this.on('finish', () => {
|
|
33
29
|
this.push(null);
|
|
34
30
|
});
|
|
35
31
|
}
|
|
36
|
-
|
|
37
32
|
_write(message, _encoding, callback) {
|
|
38
33
|
const length = this.packetSize - _packet.HEADER_LENGTH;
|
|
39
34
|
let packetNumber = 0;
|
|
@@ -42,20 +37,18 @@ class OutgoingMessageStream extends _stream.Duplex {
|
|
|
42
37
|
if (message.ignore) {
|
|
43
38
|
return;
|
|
44
39
|
}
|
|
45
|
-
|
|
46
40
|
this.bl.append(data);
|
|
47
|
-
|
|
48
41
|
while (this.bl.length > length) {
|
|
49
42
|
const data = this.bl.slice(0, length);
|
|
50
|
-
this.bl.consume(length);
|
|
43
|
+
this.bl.consume(length);
|
|
51
44
|
|
|
45
|
+
// TODO: Get rid of creating `Packet` instances here.
|
|
52
46
|
const packet = new _packet.Packet(message.type);
|
|
53
47
|
packet.packetId(packetNumber += 1);
|
|
54
48
|
packet.resetConnection(message.resetConnection);
|
|
55
49
|
packet.addData(data);
|
|
56
50
|
this.debug.packet('Sent', packet);
|
|
57
51
|
this.debug.data(packet);
|
|
58
|
-
|
|
59
52
|
if (this.push(packet.buffer) === false) {
|
|
60
53
|
message.pause();
|
|
61
54
|
}
|
|
@@ -63,8 +56,9 @@ class OutgoingMessageStream extends _stream.Duplex {
|
|
|
63
56
|
});
|
|
64
57
|
this.currentMessage.on('end', () => {
|
|
65
58
|
const data = this.bl.slice();
|
|
66
|
-
this.bl.consume(data.length);
|
|
59
|
+
this.bl.consume(data.length);
|
|
67
60
|
|
|
61
|
+
// TODO: Get rid of creating `Packet` instances here.
|
|
68
62
|
const packet = new _packet.Packet(message.type);
|
|
69
63
|
packet.packetId(packetNumber += 1);
|
|
70
64
|
packet.resetConnection(message.resetConnection);
|
|
@@ -78,7 +72,6 @@ class OutgoingMessageStream extends _stream.Duplex {
|
|
|
78
72
|
callback();
|
|
79
73
|
});
|
|
80
74
|
}
|
|
81
|
-
|
|
82
75
|
_read(_size) {
|
|
83
76
|
// If we do have a message, resume it and get data flowing.
|
|
84
77
|
// Otherwise, there is nothing to do.
|
|
@@ -86,10 +79,8 @@ class OutgoingMessageStream extends _stream.Duplex {
|
|
|
86
79
|
this.currentMessage.resume();
|
|
87
80
|
}
|
|
88
81
|
}
|
|
89
|
-
|
|
90
82
|
}
|
|
91
|
-
|
|
92
83
|
var _default = OutgoingMessageStream;
|
|
93
84
|
exports.default = _default;
|
|
94
85
|
module.exports = OutgoingMessageStream;
|
|
95
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJwYWNrZXRTaXplIiwiZGVidWciLCJibCIsImN1cnJlbnRNZXNzYWdlIiwiY29uc3RydWN0b3IiLCJ3cml0YWJsZU9iamVjdE1vZGUiLCJCdWZmZXJMaXN0Iiwib24iLCJwdXNoIiwiX3dyaXRlIiwibWVzc2FnZSIsIl9lbmNvZGluZyIsImNhbGxiYWNrIiwibGVuZ3RoIiwiSEVBREVSX0xFTkdUSCIsInBhY2tldE51bWJlciIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBwYWNrZXRTaXplOiBudW1iZXI7XG4gIGRlYnVnOiBEZWJ1ZztcbiAgYmw6IGFueTtcblxuICBjdXJyZW50TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihkZWJ1ZzogRGVidWcsIHsgcGFja2V0U2l6ZSB9OiB7IHBhY2tldFNpemU6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoeyB3cml0YWJsZU9iamVjdE1vZGU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnBhY2tldFNpemUgPSBwYWNrZXRTaXplO1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICB0aGlzLmJsID0gbmV3IEJ1ZmZlckxpc3QoKTtcblxuICAgIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgaXMgZW5kZWQsIHB1c2ggYG51bGxgXG4gICAgLy8gdG8gYWxzbyBlbmQgdGhlIHJlYWRhYmxlIHNpZGUuXG4gICAgdGhpcy5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgdGhpcy5wdXNoKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgX3dyaXRlKG1lc3NhZ2U6IE1lc3NhZ2UsIF9lbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycj86IEVycm9yIHwgbnVsbCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucGFja2V0U2l6ZSAtIEhFQURFUl9MRU5HVEg7XG4gICAgbGV0IHBhY2tldE51bWJlciA9IDA7XG5cbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2UuaWdub3JlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ibC5hcHBlbmQoZGF0YSk7XG5cbiAgICAgIHdoaWxlICh0aGlzLmJsLmxlbmd0aCA+IGxlbmd0aCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICB0aGlzLmJsLmNvbnN1bWUobGVuZ3RoKTtcblxuICAgICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUGFja2V0KG1lc3NhZ2UudHlwZSk7XG4gICAgICAgIHBhY2tldC5wYWNrZXRJZChwYWNrZXROdW1iZXIgKz0gMSk7XG4gICAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgICBwYWNrZXQuYWRkRGF0YShkYXRhKTtcblxuICAgICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICAgIHRoaXMuZGVidWcuZGF0YShwYWNrZXQpO1xuXG4gICAgICAgIGlmICh0aGlzLnB1c2gocGFja2V0LmJ1ZmZlcikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgbWVzc2FnZS5wYXVzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgpO1xuICAgICAgdGhpcy5ibC5jb25zdW1lKGRhdGEubGVuZ3RoKTtcblxuICAgICAgLy8gVE9ETzogR2V0IHJpZCBvZiBjcmVhdGluZyBgUGFja2V0YCBpbnN0YW5jZXMgaGVyZS5cbiAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgIHBhY2tldC5wYWNrZXRJZChwYWNrZXROdW1iZXIgKz0gMSk7XG4gICAgICBwYWNrZXQucmVzZXRDb25uZWN0aW9uKG1lc3NhZ2UucmVzZXRDb25uZWN0aW9uKTtcbiAgICAgIHBhY2tldC5sYXN0KHRydWUpO1xuICAgICAgcGFja2V0Lmlnbm9yZShtZXNzYWdlLmlnbm9yZSk7XG4gICAgICBwYWNrZXQuYWRkRGF0YShkYXRhKTtcblxuICAgICAgdGhpcy5kZWJ1Zy5wYWNrZXQoJ1NlbnQnLCBwYWNrZXQpO1xuICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgIHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKTtcblxuICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZSA9IHVuZGVmaW5lZDtcblxuICAgICAgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9yZWFkKF9zaXplOiBudW1iZXIpIHtcbiAgICAvLyBJZiB3ZSBkbyBoYXZlIGEgbWVzc2FnZSwgcmVzdW1lIGl0IGFuZCBnZXQgZGF0YSBmbG93aW5nLlxuICAgIC8vIE90aGVyd2lzZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby5cbiAgICBpZiAodGhpcy5jdXJyZW50TWVzc2FnZSkge1xuICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3V0Z29pbmdNZXNzYWdlU3RyZWFtO1xubW9kdWxlLmV4cG9ydHMgPSBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUlBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUFpRCxTQUFBRCx1QkFBQUksR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVqRCxNQUFNRyxxQkFBcUIsU0FBU0MsY0FBTSxDQUFDO0VBQ3pDQyxVQUFVO0VBQ1ZDLEtBQUs7RUFDTEMsRUFBRTtFQUVGQyxjQUFjO0VBRWRDLFdBQVdBLENBQUNILEtBQVksRUFBRTtJQUFFRDtFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVLLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0wsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0MsRUFBRSxHQUFHLElBQUlJ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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outgoing-message-stream.js","names":["_bl","_interopRequireDefault","require","_stream","_packet","obj","__esModule","default","OutgoingMessageStream","Duplex","packetSize","debug","bl","currentMessage","constructor","writableObjectMode","BufferList","on","push","_write","message","_encoding","callback","length","HEADER_LENGTH","packetNumber","data","ignore","append","slice","consume","packet","Packet","type","packetId","resetConnection","addData","buffer","pause","last","undefined","_read","_size","resume","_default","exports","module"],"sources":["../src/outgoing-message-stream.ts"],"sourcesContent":["import BufferList from 'bl';\nimport { Duplex } from 'stream';\n\nimport Debug from './debug';\nimport Message from './message';\nimport { Packet, HEADER_LENGTH } from './packet';\n\nclass OutgoingMessageStream extends Duplex {\n packetSize: number;\n debug: Debug;\n bl: any;\n\n currentMessage: Message | undefined;\n\n constructor(debug: Debug, { packetSize }: { packetSize: number }) {\n super({ writableObjectMode: true });\n\n this.packetSize = packetSize;\n this.debug = debug;\n this.bl = new BufferList();\n\n // When the writable side is ended, push `null`\n // to also end the readable side.\n this.on('finish', () => {\n this.push(null);\n });\n }\n\n _write(message: Message, _encoding: string, callback: (err?: Error | null) => void) {\n const length = this.packetSize - HEADER_LENGTH;\n let packetNumber = 0;\n\n this.currentMessage = message;\n this.currentMessage.on('data', (data: Buffer) => {\n if (message.ignore) {\n return;\n }\n\n this.bl.append(data);\n\n while (this.bl.length > length) {\n const data = this.bl.slice(0, length);\n this.bl.consume(length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n if (this.push(packet.buffer) === false) {\n message.pause();\n }\n }\n });\n\n this.currentMessage.on('end', () => {\n const data = this.bl.slice();\n this.bl.consume(data.length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.last(true);\n packet.ignore(message.ignore);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n this.push(packet.buffer);\n\n this.currentMessage = undefined;\n\n callback();\n });\n }\n\n _read(_size: number) {\n // If we do have a message, resume it and get data flowing.\n // Otherwise, there is nothing to do.\n if (this.currentMessage) {\n this.currentMessage.resume();\n }\n }\n}\n\nexport default OutgoingMessageStream;\nmodule.exports = OutgoingMessageStream;\n"],"mappings":"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"}
|
package/lib/packet.js
CHANGED
|
@@ -6,9 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.TYPE = exports.Packet = exports.OFFSET = exports.HEADER_LENGTH = void 0;
|
|
7
7
|
exports.isPacketComplete = isPacketComplete;
|
|
8
8
|
exports.packetLength = packetLength;
|
|
9
|
-
|
|
10
9
|
var _sprintfJs = require("sprintf-js");
|
|
11
|
-
|
|
12
10
|
const HEADER_LENGTH = 8;
|
|
13
11
|
exports.HEADER_LENGTH = HEADER_LENGTH;
|
|
14
12
|
const TYPE = {
|
|
@@ -25,11 +23,9 @@ const TYPE = {
|
|
|
25
23
|
};
|
|
26
24
|
exports.TYPE = TYPE;
|
|
27
25
|
const typeByValue = {};
|
|
28
|
-
|
|
29
26
|
for (const name in TYPE) {
|
|
30
27
|
typeByValue[TYPE[name]] = name;
|
|
31
28
|
}
|
|
32
|
-
|
|
33
29
|
const STATUS = {
|
|
34
30
|
NORMAL: 0x00,
|
|
35
31
|
EOM: 0x01,
|
|
@@ -50,11 +46,9 @@ const DEFAULT_SPID = 0;
|
|
|
50
46
|
const DEFAULT_PACKETID = 1;
|
|
51
47
|
const DEFAULT_WINDOW = 0;
|
|
52
48
|
const NL = '\n';
|
|
53
|
-
|
|
54
49
|
class Packet {
|
|
50
|
+
buffer;
|
|
55
51
|
constructor(typeOrBuffer) {
|
|
56
|
-
this.buffer = void 0;
|
|
57
|
-
|
|
58
52
|
if (typeOrBuffer instanceof Buffer) {
|
|
59
53
|
this.buffer = typeOrBuffer;
|
|
60
54
|
} else {
|
|
@@ -68,103 +62,79 @@ class Packet {
|
|
|
68
62
|
this.setLength();
|
|
69
63
|
}
|
|
70
64
|
}
|
|
71
|
-
|
|
72
65
|
setLength() {
|
|
73
66
|
this.buffer.writeUInt16BE(this.buffer.length, OFFSET.Length);
|
|
74
67
|
}
|
|
75
|
-
|
|
76
68
|
length() {
|
|
77
69
|
return this.buffer.readUInt16BE(OFFSET.Length);
|
|
78
70
|
}
|
|
79
|
-
|
|
80
71
|
resetConnection(reset) {
|
|
81
72
|
let status = this.buffer.readUInt8(OFFSET.Status);
|
|
82
|
-
|
|
83
73
|
if (reset) {
|
|
84
74
|
status |= STATUS.RESETCONNECTION;
|
|
85
75
|
} else {
|
|
86
76
|
status &= 0xFF - STATUS.RESETCONNECTION;
|
|
87
77
|
}
|
|
88
|
-
|
|
89
78
|
this.buffer.writeUInt8(status, OFFSET.Status);
|
|
90
79
|
}
|
|
91
|
-
|
|
92
80
|
last(last) {
|
|
93
81
|
let status = this.buffer.readUInt8(OFFSET.Status);
|
|
94
|
-
|
|
95
82
|
if (arguments.length > 0) {
|
|
96
83
|
if (last) {
|
|
97
84
|
status |= STATUS.EOM;
|
|
98
85
|
} else {
|
|
99
86
|
status &= 0xFF - STATUS.EOM;
|
|
100
87
|
}
|
|
101
|
-
|
|
102
88
|
this.buffer.writeUInt8(status, OFFSET.Status);
|
|
103
89
|
}
|
|
104
|
-
|
|
105
90
|
return this.isLast();
|
|
106
91
|
}
|
|
107
|
-
|
|
108
92
|
ignore(last) {
|
|
109
93
|
let status = this.buffer.readUInt8(OFFSET.Status);
|
|
110
|
-
|
|
111
94
|
if (last) {
|
|
112
95
|
status |= STATUS.IGNORE;
|
|
113
96
|
} else {
|
|
114
97
|
status &= 0xFF - STATUS.IGNORE;
|
|
115
98
|
}
|
|
116
|
-
|
|
117
99
|
this.buffer.writeUInt8(status, OFFSET.Status);
|
|
118
100
|
}
|
|
119
|
-
|
|
120
101
|
isLast() {
|
|
121
102
|
return !!(this.buffer.readUInt8(OFFSET.Status) & STATUS.EOM);
|
|
122
103
|
}
|
|
123
|
-
|
|
124
104
|
packetId(packetId) {
|
|
125
105
|
if (packetId) {
|
|
126
106
|
this.buffer.writeUInt8(packetId % 256, OFFSET.PacketID);
|
|
127
107
|
}
|
|
128
|
-
|
|
129
108
|
return this.buffer.readUInt8(OFFSET.PacketID);
|
|
130
109
|
}
|
|
131
|
-
|
|
132
110
|
addData(data) {
|
|
133
111
|
this.buffer = Buffer.concat([this.buffer, data]);
|
|
134
112
|
this.setLength();
|
|
135
113
|
return this;
|
|
136
114
|
}
|
|
137
|
-
|
|
138
115
|
data() {
|
|
139
116
|
return this.buffer.slice(HEADER_LENGTH);
|
|
140
117
|
}
|
|
141
|
-
|
|
142
118
|
type() {
|
|
143
119
|
return this.buffer.readUInt8(OFFSET.Type);
|
|
144
120
|
}
|
|
145
|
-
|
|
146
121
|
statusAsString() {
|
|
147
122
|
const status = this.buffer.readUInt8(OFFSET.Status);
|
|
148
123
|
const statuses = [];
|
|
149
|
-
|
|
150
124
|
for (const name in STATUS) {
|
|
151
125
|
const value = STATUS[name];
|
|
152
|
-
|
|
153
126
|
if (status & value) {
|
|
154
127
|
statuses.push(name);
|
|
155
128
|
} else {
|
|
156
129
|
statuses.push(undefined);
|
|
157
130
|
}
|
|
158
131
|
}
|
|
159
|
-
|
|
160
132
|
return statuses.join(' ').trim();
|
|
161
133
|
}
|
|
162
|
-
|
|
163
134
|
headerToString(indent = '') {
|
|
164
135
|
const text = (0, _sprintfJs.sprintf)('type:0x%02X(%s), status:0x%02X(%s), length:0x%04X, spid:0x%04X, packetId:0x%02X, window:0x%02X', this.buffer.readUInt8(OFFSET.Type), typeByValue[this.buffer.readUInt8(OFFSET.Type)], this.buffer.readUInt8(OFFSET.Status), this.statusAsString(), this.buffer.readUInt16BE(OFFSET.Length), this.buffer.readUInt16BE(OFFSET.SPID), this.buffer.readUInt8(OFFSET.PacketID), this.buffer.readUInt8(OFFSET.Window));
|
|
165
136
|
return indent + text;
|
|
166
137
|
}
|
|
167
|
-
|
|
168
138
|
dataToString(indent = '') {
|
|
169
139
|
const BYTES_PER_GROUP = 0x04;
|
|
170
140
|
const CHARS_PER_GROUP = 0x08;
|
|
@@ -172,60 +142,46 @@ class Packet {
|
|
|
172
142
|
const data = this.data();
|
|
173
143
|
let dataDump = '';
|
|
174
144
|
let chars = '';
|
|
175
|
-
|
|
176
145
|
for (let offset = 0; offset < data.length; offset++) {
|
|
177
146
|
if (offset % BYTES_PER_LINE === 0) {
|
|
178
147
|
dataDump += indent;
|
|
179
148
|
dataDump += (0, _sprintfJs.sprintf)('%04X ', offset);
|
|
180
149
|
}
|
|
181
|
-
|
|
182
150
|
if (data[offset] < 0x20 || data[offset] > 0x7E) {
|
|
183
151
|
chars += '.';
|
|
184
|
-
|
|
185
152
|
if ((offset + 1) % CHARS_PER_GROUP === 0 && !((offset + 1) % BYTES_PER_LINE === 0)) {
|
|
186
153
|
chars += ' ';
|
|
187
154
|
}
|
|
188
155
|
} else {
|
|
189
156
|
chars += String.fromCharCode(data[offset]);
|
|
190
157
|
}
|
|
191
|
-
|
|
192
158
|
if (data[offset] != null) {
|
|
193
159
|
dataDump += (0, _sprintfJs.sprintf)('%02X', data[offset]);
|
|
194
160
|
}
|
|
195
|
-
|
|
196
161
|
if ((offset + 1) % BYTES_PER_GROUP === 0 && !((offset + 1) % BYTES_PER_LINE === 0)) {
|
|
197
162
|
dataDump += ' ';
|
|
198
163
|
}
|
|
199
|
-
|
|
200
164
|
if ((offset + 1) % BYTES_PER_LINE === 0) {
|
|
201
165
|
dataDump += ' ' + chars;
|
|
202
166
|
chars = '';
|
|
203
|
-
|
|
204
167
|
if (offset < data.length - 1) {
|
|
205
168
|
dataDump += NL;
|
|
206
169
|
}
|
|
207
170
|
}
|
|
208
171
|
}
|
|
209
|
-
|
|
210
172
|
if (chars.length) {
|
|
211
173
|
dataDump += ' ' + chars;
|
|
212
174
|
}
|
|
213
|
-
|
|
214
175
|
return dataDump;
|
|
215
176
|
}
|
|
216
|
-
|
|
217
177
|
toString(indent = '') {
|
|
218
178
|
return this.headerToString(indent) + '\n' + this.dataToString(indent + indent);
|
|
219
179
|
}
|
|
220
|
-
|
|
221
180
|
payloadString() {
|
|
222
181
|
return '';
|
|
223
182
|
}
|
|
224
|
-
|
|
225
183
|
}
|
|
226
|
-
|
|
227
184
|
exports.Packet = Packet;
|
|
228
|
-
|
|
229
185
|
function isPacketComplete(potentialPacketBuffer) {
|
|
230
186
|
if (potentialPacketBuffer.length < HEADER_LENGTH) {
|
|
231
187
|
return false;
|
|
@@ -233,8 +189,7 @@ function isPacketComplete(potentialPacketBuffer) {
|
|
|
233
189
|
return potentialPacketBuffer.length >= potentialPacketBuffer.readUInt16BE(OFFSET.Length);
|
|
234
190
|
}
|
|
235
191
|
}
|
|
236
|
-
|
|
237
192
|
function packetLength(potentialPacketBuffer) {
|
|
238
193
|
return potentialPacketBuffer.readUInt16BE(OFFSET.Length);
|
|
239
194
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIRUFERVJfTEVOR1RIIiwiVFlQRSIsIlNRTF9CQVRDSCIsIlJQQ19SRVFVRVNUIiwiVEFCVUxBUl9SRVNVTFQiLCJBVFRFTlRJT04iLCJCVUxLX0xPQUQiLCJUUkFOU0FDVElPTl9NQU5BR0VSIiwiTE9HSU43IiwiTlRMTUFVVEhfUEtUIiwiUFJFTE9HSU4iLCJGRURBVVRIX1RPS0VOIiwidHlwZUJ5VmFsdWUiLCJuYW1lIiwiU1RBVFVTIiwiTk9STUFMIiwiRU9NIiwiSUdOT1JFIiwiUkVTRVRDT05ORUNUSU9OIiwiUkVTRVRDT05ORUNUSU9OU0tJUFRSQU4iLCJPRkZTRVQiLCJUeXBlIiwiU3RhdHVzIiwiTGVuZ3RoIiwiU1BJRCIsIlBhY2tldElEIiwiV2luZG93IiwiREVGQVVMVF9TUElEIiwiREVGQVVMVF9QQUNLRVRJRCIsIkRFRkFVTFRfV0lORE9XIiwiTkwiLCJQYWNrZXQiLCJjb25zdHJ1Y3RvciIsInR5cGVPckJ1ZmZlciIsImJ1ZmZlciIsIkJ1ZmZlciIsInR5cGUiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkJFIiwic2V0TGVuZ3RoIiwibGVuZ3RoIiwicmVhZFVJbnQxNkJFIiwicmVzZXRDb25uZWN0aW9uIiwicmVzZXQiLCJzdGF0dXMiLCJyZWFkVUludDgiLCJsYXN0IiwiYXJndW1lbnRzIiwiaXNMYXN0IiwiaWdub3JlIiwicGFja2V0SWQiLCJhZGREYXRhIiwiZGF0YSIsImNvbmNhdCIsInNsaWNlIiwic3RhdHVzQXNTdHJpbmciLCJzdGF0dXNlcyIsInZhbHVlIiwicHVzaCIsInVuZGVmaW5lZCIsImpvaW4iLCJ0cmltIiwiaGVhZGVyVG9TdHJpbmciLCJpbmRlbnQiLCJ0ZXh0IiwiZGF0YVRvU3RyaW5nIiwiQllURVNfUEVSX0dST1VQIiwiQ0hBUlNfUEVSX0dST1VQIiwiQllURVNfUEVSX0xJTkUiLCJkYXRhRHVtcCIsImNoYXJzIiwib2Zmc2V0IiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwidG9TdHJpbmciLCJwYXlsb2FkU3RyaW5nIiwiaXNQYWNrZXRDb21wbGV0ZSIsInBvdGVudGlhbFBhY2tldEJ1ZmZlciIsInBhY2tldExlbmd0aCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYWNrZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3ByaW50ZiB9IGZyb20gJ3NwcmludGYtanMnO1xuXG5leHBvcnQgY29uc3QgSEVBREVSX0xFTkdUSCA9IDg7XG5cbmV4cG9ydCBjb25zdCBUWVBFOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBTUUxfQkFUQ0g6IDB4MDEsXG4gIFJQQ19SRVFVRVNUOiAweDAzLFxuICBUQUJVTEFSX1JFU1VMVDogMHgwNCxcbiAgQVRURU5USU9OOiAweDA2LFxuICBCVUxLX0xPQUQ6IDB4MDcsXG4gIFRSQU5TQUNUSU9OX01BTkFHRVI6IDB4MEUsXG4gIExPR0lONzogMHgxMCxcbiAgTlRMTUFVVEhfUEtUOiAweDExLFxuICBQUkVMT0dJTjogMHgxMixcbiAgRkVEQVVUSF9UT0tFTjogMHgwOFxufTtcblxuY29uc3QgdHlwZUJ5VmFsdWU6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7fTtcblxuZm9yIChjb25zdCBuYW1lIGluIFRZUEUpIHtcbiAgdHlwZUJ5VmFsdWVbVFlQRVtuYW1lXV0gPSBuYW1lO1xufVxuXG5jb25zdCBTVEFUVVM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gIE5PUk1BTDogMHgwMCxcbiAgRU9NOiAweDAxLFxuICBJR05PUkU6IDB4MDIsXG4gIFJFU0VUQ09OTkVDVElPTjogMHgwOCxcbiAgUkVTRVRDT05ORUNUSU9OU0tJUFRSQU46IDB4MTBcbn07XG5cbmV4cG9ydCBjb25zdCBPRkZTRVQgPSB7XG4gIFR5cGU6IDAsXG4gIFN0YXR1czogMSxcbiAgTGVuZ3RoOiAyLFxuICBTUElEOiA0LFxuICBQYWNrZXRJRDogNixcbiAgV2luZG93OiA3XG59O1xuXG5jb25zdCBERUZBVUxUX1NQSUQgPSAwO1xuXG5jb25zdCBERUZBVUxUX1BBQ0tFVElEID0gMTtcblxuY29uc3QgREVGQVVMVF9XSU5ET1cgPSAwO1xuXG5jb25zdCBOTCA9ICdcXG4nO1xuXG5leHBvcnQgY2xhc3MgUGFja2V0IHtcbiAgYnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IodHlwZU9yQnVmZmVyOiBCdWZmZXIgfCBudW1iZXIpIHtcbiAgICBpZiAodHlwZU9yQnVmZmVyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IHR5cGVPckJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVPckJ1ZmZlcjtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKEhFQURFUl9MRU5HVEgsIDApO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OCh0eXBlLCBPRkZTRVQuVHlwZSk7XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KFNUQVRVUy5OT1JNQUwsIE9GRlNFVC5TdGF0dXMpO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRShERUZBVUxUX1NQSUQsIE9GRlNFVC5TUElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9QQUNLRVRJRCwgT0ZGU0VULlBhY2tldElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9XSU5ET1csIE9GRlNFVC5XaW5kb3cpO1xuICAgICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICB9XG4gIH1cblxuICBzZXRMZW5ndGgoKSB7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRSh0aGlzLmJ1ZmZlci5sZW5ndGgsIE9GRlNFVC5MZW5ndGgpO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULkxlbmd0aCk7XG4gIH1cblxuICByZXNldENvbm5lY3Rpb24ocmVzZXQ6IGJvb2xlYW4pIHtcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpO1xuICAgIGlmIChyZXNldCkge1xuICAgICAgc3RhdHVzIHw9IFNUQVRVUy5SRVNFVENPTk5FQ1RJT047XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLlJFU0VUQ09OTkVDVElPTjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChzdGF0dXMsIE9GRlNFVC5TdGF0dXMpO1xuICB9XG5cbiAgbGFzdChsYXN0PzogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICBzdGF0dXMgfD0gU1RBVFVTLkVPTTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLkVPTTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNMYXN0KCk7XG4gIH1cblxuICBpZ25vcmUobGFzdDogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHN0YXR1cyB8PSBTVEFUVVMuSUdOT1JFO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgJj0gMHhGRiAtIFNUQVRVUy5JR05PUkU7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgfVxuXG4gIGlzTGFzdCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpICYgU1RBVFVTLkVPTSk7XG4gIH1cblxuICBwYWNrZXRJZChwYWNrZXRJZD86IG51bWJlcikge1xuICAgIGlmIChwYWNrZXRJZCkge1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChwYWNrZXRJZCAlIDI1NiwgT0ZGU0VULlBhY2tldElEKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuUGFja2V0SUQpO1xuICB9XG5cbiAgYWRkRGF0YShkYXRhOiBCdWZmZXIpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLCBkYXRhXSk7XG4gICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnNsaWNlKEhFQURFUl9MRU5HVEgpO1xuICB9XG5cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5UeXBlKTtcbiAgfVxuXG4gIHN0YXR1c0FzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuU3RhdHVzKTtcbiAgICBjb25zdCBzdGF0dXNlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIGluIFNUQVRVUykge1xuICAgICAgY29uc3QgdmFsdWUgPSBTVEFUVVNbbmFtZV07XG5cbiAgICAgIGlmIChzdGF0dXMgJiB2YWx1ZSkge1xuICAgICAgICBzdGF0dXNlcy5wdXNoKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdHVzZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0dXNlcy5qb2luKCcgJykudHJpbSgpO1xuICB9XG5cbiAgaGVhZGVyVG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3ByaW50ZigndHlwZToweCUwMlgoJXMpLCBzdGF0dXM6MHglMDJYKCVzKSwgbGVuZ3RoOjB4JTA0WCwgc3BpZDoweCUwNFgsIHBhY2tldElkOjB4JTAyWCwgd2luZG93OjB4JTAyWCcsIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSksIHR5cGVCeVZhbHVlW3RoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSldLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyksIHRoaXMuc3RhdHVzQXNTdHJpbmcoKSwgdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULlNQSUQpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlBhY2tldElEKSwgdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5XaW5kb3cpKTtcbiAgICByZXR1cm4gaW5kZW50ICsgdGV4dDtcbiAgfVxuXG4gIGRhdGFUb1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIGNvbnN0IEJZVEVTX1BFUl9HUk9VUCA9IDB4MDQ7XG4gICAgY29uc3QgQ0hBUlNfUEVSX0dST1VQID0gMHgwODtcbiAgICBjb25zdCBCWVRFU19QRVJfTElORSA9IDB4MjA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgbGV0IGRhdGFEdW1wID0gJyc7XG4gICAgbGV0IGNoYXJzID0gJyc7XG5cblxuICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGRhdGEubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgaWYgKG9mZnNldCAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSB7XG4gICAgICAgIGRhdGFEdW1wICs9IGluZGVudDtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTA0WCAgJywgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbb2Zmc2V0XSA8IDB4MjAgfHwgZGF0YVtvZmZzZXRdID4gMHg3RSkge1xuICAgICAgICBjaGFycyArPSAnLic7XG4gICAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQ0hBUlNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICAgIGNoYXJzICs9ICcgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW29mZnNldF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtvZmZzZXRdICE9IG51bGwpIHtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTAyWCcsIGRhdGFbb2Zmc2V0XSk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQllURVNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICc7XG4gICAgICB9XG5cbiAgICAgIGlmICgob2Zmc2V0ICsgMSkgJSBCWVRFU19QRVJfTElORSA9PT0gMCkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICAnICsgY2hhcnM7XG4gICAgICAgIGNoYXJzID0gJyc7XG4gICAgICAgIGlmIChvZmZzZXQgPCBkYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBkYXRhRHVtcCArPSBOTDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFycy5sZW5ndGgpIHtcbiAgICAgIGRhdGFEdW1wICs9ICcgICcgKyBjaGFycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUR1bXA7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRvU3RyaW5nKGluZGVudCkgKyAnXFxuJyArIHRoaXMuZGF0YVRvU3RyaW5nKGluZGVudCArIGluZGVudCk7XG4gIH1cblxuICBwYXlsb2FkU3RyaW5nKCkge1xuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYWNrZXRDb21wbGV0ZShwb3RlbnRpYWxQYWNrZXRCdWZmZXI6IEJ1ZmZlcikge1xuICBpZiAocG90ZW50aWFsUGFja2V0QnVmZmVyLmxlbmd0aCA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBvdGVudGlhbFBhY2tldEJ1ZmZlci5sZW5ndGggPj0gcG90ZW50aWFsUGFja2V0QnVmZmVyLnJlYWRVSW50MTZCRShPRkZTRVQuTGVuZ3RoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2V0TGVuZ3RoKHBvdGVudGlhbFBhY2tldEJ1ZmZlcjogQnVmZmVyKSB7XG4gIHJldHVybiBwb3RlbnRpYWxQYWNrZXRCdWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFTyxNQUFNQSxhQUFhLEdBQUcsQ0FBdEI7O0FBRUEsTUFBTUMsSUFBK0IsR0FBRztFQUM3Q0MsU0FBUyxFQUFFLElBRGtDO0VBRTdDQyxXQUFXLEVBQUUsSUFGZ0M7RUFHN0NDLGNBQWMsRUFBRSxJQUg2QjtFQUk3Q0MsU0FBUyxFQUFFLElBSmtDO0VBSzdDQyxTQUFTLEVBQUUsSUFMa0M7RUFNN0NDLG1CQUFtQixFQUFFLElBTndCO0VBTzdDQyxNQUFNLEVBQUUsSUFQcUM7RUFRN0NDLFlBQVksRUFBRSxJQVIrQjtFQVM3Q0MsUUFBUSxFQUFFLElBVG1DO0VBVTdDQyxhQUFhLEVBQUU7QUFWOEIsQ0FBeEM7O0FBYVAsTUFBTUMsV0FBc0MsR0FBRyxFQUEvQzs7QUFFQSxLQUFLLE1BQU1DLElBQVgsSUFBbUJaLElBQW5CLEVBQXlCO0VBQ3ZCVyxXQUFXLENBQUNYLElBQUksQ0FBQ1ksSUFBRCxDQUFMLENBQVgsR0FBMEJBLElBQTFCO0FBQ0Q7O0FBRUQsTUFBTUMsTUFBaUMsR0FBRztFQUN4Q0MsTUFBTSxFQUFFLElBRGdDO0VBRXhDQyxHQUFHLEVBQUUsSUFGbUM7RUFHeENDLE1BQU0s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
|
|
195
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIkhFQURFUl9MRU5HVEgiLCJleHBvcnRzIiwiVFlQRSIsIlNRTF9CQVRDSCIsIlJQQ19SRVFVRVNUIiwiVEFCVUxBUl9SRVNVTFQiLCJBVFRFTlRJT04iLCJCVUxLX0xPQUQiLCJUUkFOU0FDVElPTl9NQU5BR0VSIiwiTE9HSU43IiwiTlRMTUFVVEhfUEtUIiwiUFJFTE9HSU4iLCJGRURBVVRIX1RPS0VOIiwidHlwZUJ5VmFsdWUiLCJuYW1lIiwiU1RBVFVTIiwiTk9STUFMIiwiRU9NIiwiSUdOT1JFIiwiUkVTRVRDT05ORUNUSU9OIiwiUkVTRVRDT05ORUNUSU9OU0tJUFRSQU4iLCJPRkZTRVQiLCJUeXBlIiwiU3RhdHVzIiwiTGVuZ3RoIiwiU1BJRCIsIlBhY2tldElEIiwiV2luZG93IiwiREVGQVVMVF9TUElEIiwiREVGQVVMVF9QQUNLRVRJRCIsIkRFRkFVTFRfV0lORE9XIiwiTkwiLCJQYWNrZXQiLCJidWZmZXIiLCJjb25zdHJ1Y3RvciIsInR5cGVPckJ1ZmZlciIsIkJ1ZmZlciIsInR5cGUiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkJFIiwic2V0TGVuZ3RoIiwibGVuZ3RoIiwicmVhZFVJbnQxNkJFIiwicmVzZXRDb25uZWN0aW9uIiwicmVzZXQiLCJzdGF0dXMiLCJyZWFkVUludDgiLCJsYXN0IiwiYXJndW1lbnRzIiwiaXNMYXN0IiwiaWdub3JlIiwicGFja2V0SWQiLCJhZGREYXRhIiwiZGF0YSIsImNvbmNhdCIsInNsaWNlIiwic3RhdHVzQXNTdHJpbmciLCJzdGF0dXNlcyIsInZhbHVlIiwicHVzaCIsInVuZGVmaW5lZCIsImpvaW4iLCJ0cmltIiwiaGVhZGVyVG9TdHJpbmciLCJpbmRlbnQiLCJ0ZXh0Iiwic3ByaW50ZiIsImRhdGFUb1N0cmluZyIsIkJZVEVTX1BFUl9HUk9VUCIsIkNIQVJTX1BFUl9HUk9VUCIsIkJZVEVTX1BFUl9MSU5FIiwiZGF0YUR1bXAiLCJjaGFycyIsIm9mZnNldCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInRvU3RyaW5nIiwicGF5bG9hZFN0cmluZyIsImlzUGFja2V0Q29tcGxldGUiLCJwb3RlbnRpYWxQYWNrZXRCdWZmZXIiLCJwYWNrZXRMZW5ndGgiXSwic291cmNlcyI6WyIuLi9zcmMvcGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9MRU5HVEggPSA4O1xuXG5leHBvcnQgY29uc3QgVFlQRTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgU1FMX0JBVENIOiAweDAxLFxuICBSUENfUkVRVUVTVDogMHgwMyxcbiAgVEFCVUxBUl9SRVNVTFQ6IDB4MDQsXG4gIEFUVEVOVElPTjogMHgwNixcbiAgQlVMS19MT0FEOiAweDA3LFxuICBUUkFOU0FDVElPTl9NQU5BR0VSOiAweDBFLFxuICBMT0dJTjc6IDB4MTAsXG4gIE5UTE1BVVRIX1BLVDogMHgxMSxcbiAgUFJFTE9HSU46IDB4MTIsXG4gIEZFREFVVEhfVE9LRU46IDB4MDhcbn07XG5cbmNvbnN0IHR5cGVCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBUWVBFKSB7XG4gIHR5cGVCeVZhbHVlW1RZUEVbbmFtZV1dID0gbmFtZTtcbn1cblxuY29uc3QgU1RBVFVTOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBOT1JNQUw6IDB4MDAsXG4gIEVPTTogMHgwMSxcbiAgSUdOT1JFOiAweDAyLFxuICBSRVNFVENPTk5FQ1RJT046IDB4MDgsXG4gIFJFU0VUQ09OTkVDVElPTlNLSVBUUkFOOiAweDEwXG59O1xuXG5leHBvcnQgY29uc3QgT0ZGU0VUID0ge1xuICBUeXBlOiAwLFxuICBTdGF0dXM6IDEsXG4gIExlbmd0aDogMixcbiAgU1BJRDogNCxcbiAgUGFja2V0SUQ6IDYsXG4gIFdpbmRvdzogN1xufTtcblxuY29uc3QgREVGQVVMVF9TUElEID0gMDtcblxuY29uc3QgREVGQVVMVF9QQUNLRVRJRCA9IDE7XG5cbmNvbnN0IERFRkFVTFRfV0lORE9XID0gMDtcblxuY29uc3QgTkwgPSAnXFxuJztcblxuZXhwb3J0IGNsYXNzIFBhY2tldCB7XG4gIGJ1ZmZlcjogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGVPckJ1ZmZlcjogQnVmZmVyIHwgbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVPckJ1ZmZlciBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgdGhpcy5idWZmZXIgPSB0eXBlT3JCdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlT3JCdWZmZXI7XG4gICAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhIRUFERVJfTEVOR1RILCAwKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgodHlwZSwgT0ZGU0VULlR5cGUpO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChTVEFUVVMuTk9STUFMLCBPRkZTRVQuU3RhdHVzKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDE2QkUoREVGQVVMVF9TUElELCBPRkZTRVQuU1BJRCk7XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KERFRkFVTFRfUEFDS0VUSUQsIE9GRlNFVC5QYWNrZXRJRCk7XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KERFRkFVTFRfV0lORE9XLCBPRkZTRVQuV2luZG93KTtcbiAgICAgIHRoaXMuc2V0TGVuZ3RoKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0TGVuZ3RoKCkge1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDE2QkUodGhpcy5idWZmZXIubGVuZ3RoLCBPRkZTRVQuTGVuZ3RoKTtcbiAgfVxuXG4gIGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpO1xuICB9XG5cbiAgcmVzZXRDb25uZWN0aW9uKHJlc2V0OiBib29sZWFuKSB7XG4gICAgbGV0IHN0YXR1cyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuU3RhdHVzKTtcbiAgICBpZiAocmVzZXQpIHtcbiAgICAgIHN0YXR1cyB8PSBTVEFUVVMuUkVTRVRDT05ORUNUSU9OO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgJj0gMHhGRiAtIFNUQVRVUy5SRVNFVENPTk5FQ1RJT047XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgfVxuXG4gIGxhc3QobGFzdD86IGJvb2xlYW4pIHtcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgc3RhdHVzIHw9IFNUQVRVUy5FT007XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0dXMgJj0gMHhGRiAtIFNUQVRVUy5FT007XG4gICAgICB9XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KHN0YXR1cywgT0ZGU0VULlN0YXR1cyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmlzTGFzdCgpO1xuICB9XG5cbiAgaWdub3JlKGxhc3Q6IGJvb2xlYW4pIHtcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpO1xuICAgIGlmIChsYXN0KSB7XG4gICAgICBzdGF0dXMgfD0gU1RBVFVTLklHTk9SRTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdHVzICY9IDB4RkYgLSBTVEFUVVMuSUdOT1JFO1xuICAgIH1cbiAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KHN0YXR1cywgT0ZGU0VULlN0YXR1cyk7XG4gIH1cblxuICBpc0xhc3QoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuU3RhdHVzKSAmIFNUQVRVUy5FT00pO1xuICB9XG5cbiAgcGFja2V0SWQocGFja2V0SWQ/OiBudW1iZXIpIHtcbiAgICBpZiAocGFja2V0SWQpIHtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgocGFja2V0SWQgJSAyNTYsIE9GRlNFVC5QYWNrZXRJRCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlBhY2tldElEKTtcbiAgfVxuXG4gIGFkZERhdGEoZGF0YTogQnVmZmVyKSB7XG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmJ1ZmZlciwgZGF0YV0pO1xuICAgIHRoaXMuc2V0TGVuZ3RoKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5zbGljZShIRUFERVJfTEVOR1RIKTtcbiAgfVxuXG4gIHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSk7XG4gIH1cblxuICBzdGF0dXNBc1N0cmluZygpIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgY29uc3Qgc3RhdHVzZXMgPSBbXTtcblxuICAgIGZvciAoY29uc3QgbmFtZSBpbiBTVEFUVVMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gU1RBVFVTW25hbWVdO1xuXG4gICAgICBpZiAoc3RhdHVzICYgdmFsdWUpIHtcbiAgICAgICAgc3RhdHVzZXMucHVzaChuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1c2VzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdHVzZXMuam9pbignICcpLnRyaW0oKTtcbiAgfVxuXG4gIGhlYWRlclRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgY29uc3QgdGV4dCA9IHNwcmludGYoJ3R5cGU6MHglMDJYKCVzKSwgc3RhdHVzOjB4JTAyWCglcyksIGxlbmd0aDoweCUwNFgsIHNwaWQ6MHglMDRYLCBwYWNrZXRJZDoweCUwMlgsIHdpbmRvdzoweCUwMlgnLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlR5cGUpLCB0eXBlQnlWYWx1ZVt0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlR5cGUpXSwgdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpLCB0aGlzLnN0YXR1c0FzU3RyaW5nKCksIHRoaXMuYnVmZmVyLnJlYWRVSW50MTZCRShPRkZTRVQuTGVuZ3RoKSwgdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5TUElEKSwgdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5QYWNrZXRJRCksIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuV2luZG93KSk7XG4gICAgcmV0dXJuIGluZGVudCArIHRleHQ7XG4gIH1cblxuICBkYXRhVG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICBjb25zdCBCWVRFU19QRVJfR1JPVVAgPSAweDA0O1xuICAgIGNvbnN0IENIQVJTX1BFUl9HUk9VUCA9IDB4MDg7XG4gICAgY29uc3QgQllURVNfUEVSX0xJTkUgPSAweDIwO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGEoKTtcblxuICAgIGxldCBkYXRhRHVtcCA9ICcnO1xuICAgIGxldCBjaGFycyA9ICcnO1xuXG5cbiAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBkYXRhLmxlbmd0aDsgb2Zmc2V0KyspIHtcbiAgICAgIGlmIChvZmZzZXQgJSBCWVRFU19QRVJfTElORSA9PT0gMCkge1xuICAgICAgICBkYXRhRHVtcCArPSBpbmRlbnQ7XG4gICAgICAgIGRhdGFEdW1wICs9IHNwcmludGYoJyUwNFggICcsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW29mZnNldF0gPCAweDIwIHx8IGRhdGFbb2Zmc2V0XSA+IDB4N0UpIHtcbiAgICAgICAgY2hhcnMgKz0gJy4nO1xuICAgICAgICBpZiAoKChvZmZzZXQgKyAxKSAlIENIQVJTX1BFUl9HUk9VUCA9PT0gMCkgJiYgISgob2Zmc2V0ICsgMSkgJSBCWVRFU19QRVJfTElORSA9PT0gMCkpIHtcbiAgICAgICAgICBjaGFycyArPSAnICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YVtvZmZzZXRdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbb2Zmc2V0XSAhPSBudWxsKSB7XG4gICAgICAgIGRhdGFEdW1wICs9IHNwcmludGYoJyUwMlgnLCBkYXRhW29mZnNldF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9HUk9VUCA9PT0gMCkgJiYgISgob2Zmc2V0ICsgMSkgJSBCWVRFU19QRVJfTElORSA9PT0gMCkpIHtcbiAgICAgICAgZGF0YUR1bXAgKz0gJyAnO1xuICAgICAgfVxuXG4gICAgICBpZiAoKG9mZnNldCArIDEpICUgQllURVNfUEVSX0xJTkUgPT09IDApIHtcbiAgICAgICAgZGF0YUR1bXAgKz0gJyAgJyArIGNoYXJzO1xuICAgICAgICBjaGFycyA9ICcnO1xuICAgICAgICBpZiAob2Zmc2V0IDwgZGF0YS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgZGF0YUR1bXAgKz0gTkw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhcnMubGVuZ3RoKSB7XG4gICAgICBkYXRhRHVtcCArPSAnICAnICsgY2hhcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFEdW1wO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJUb1N0cmluZyhpbmRlbnQpICsgJ1xcbicgKyB0aGlzLmRhdGFUb1N0cmluZyhpbmRlbnQgKyBpbmRlbnQpO1xuICB9XG5cbiAgcGF5bG9hZFN0cmluZygpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFja2V0Q29tcGxldGUocG90ZW50aWFsUGFja2V0QnVmZmVyOiBCdWZmZXIpIHtcbiAgaWYgKHBvdGVudGlhbFBhY2tldEJ1ZmZlci5sZW5ndGggPCBIRUFERVJfTEVOR1RIKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwb3RlbnRpYWxQYWNrZXRCdWZmZXIubGVuZ3RoID49IHBvdGVudGlhbFBhY2tldEJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULkxlbmd0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhY2tldExlbmd0aChwb3RlbnRpYWxQYWNrZXRCdWZmZXI6IEJ1ZmZlcikge1xuICByZXR1cm4gcG90ZW50aWFsUGFja2V0QnVmZmVyLnJlYWRVSW50MTZCRShPRkZTRVQuTGVuZ3RoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFFTyxNQUFNQyxhQUFhLEdBQUcsQ0FBQztBQUFDQyxPQUFBLENBQUFELGFBQUEsR0FBQUEsYUFBQTtBQUV4QixNQUFNRSxJQUErQixHQUFHO0VBQzdDQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxXQUFXLEVBQUUsSUFBSTtFQUNqQkMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLG1CQUFtQixFQUFFLElBQUk7RUFDekJDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxRQUFRLEVBQUUsSUFBSTtFQUNkQyxhQUFhLEVBQUU7QUFDakIsQ0FBQztBQUFDWCxPQUFBLENBQUFDLElBQUEsR0FBQUEsSUFBQTtBQUVGLE1BQU1XLFdBQXNDLEdBQUcsQ0FBQyxDQUFDO0FBRWpELEtBQUssTUFBTUMsSUFBSSxJQUFJWixJQUFJLEVBQUU7RUFDdkJXLFdBQVcsQ0FBQ1gsSUFBSSxDQUFDWSxJ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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet.js","names":["_sprintfJs","require","HEADER_LENGTH","exports","TYPE","SQL_BATCH","RPC_REQUEST","TABULAR_RESULT","ATTENTION","BULK_LOAD","TRANSACTION_MANAGER","LOGIN7","NTLMAUTH_PKT","PRELOGIN","FEDAUTH_TOKEN","typeByValue","name","STATUS","NORMAL","EOM","IGNORE","RESETCONNECTION","RESETCONNECTIONSKIPTRAN","OFFSET","Type","Status","Length","SPID","PacketID","Window","DEFAULT_SPID","DEFAULT_PACKETID","DEFAULT_WINDOW","NL","Packet","buffer","constructor","typeOrBuffer","Buffer","type","alloc","writeUInt8","writeUInt16BE","setLength","length","readUInt16BE","resetConnection","reset","status","readUInt8","last","arguments","isLast","ignore","packetId","addData","data","concat","slice","statusAsString","statuses","value","push","undefined","join","trim","headerToString","indent","text","sprintf","dataToString","BYTES_PER_GROUP","CHARS_PER_GROUP","BYTES_PER_LINE","dataDump","chars","offset","String","fromCharCode","toString","payloadString","isPacketComplete","potentialPacketBuffer","packetLength"],"sources":["../src/packet.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\n\nexport const HEADER_LENGTH = 8;\n\nexport const TYPE: { [key: string]: number } = {\n SQL_BATCH: 0x01,\n RPC_REQUEST: 0x03,\n TABULAR_RESULT: 0x04,\n ATTENTION: 0x06,\n BULK_LOAD: 0x07,\n TRANSACTION_MANAGER: 0x0E,\n LOGIN7: 0x10,\n NTLMAUTH_PKT: 0x11,\n PRELOGIN: 0x12,\n FEDAUTH_TOKEN: 0x08\n};\n\nconst typeByValue: { [key: number]: string } = {};\n\nfor (const name in TYPE) {\n typeByValue[TYPE[name]] = name;\n}\n\nconst STATUS: { [key: string]: number } = {\n NORMAL: 0x00,\n EOM: 0x01,\n IGNORE: 0x02,\n RESETCONNECTION: 0x08,\n RESETCONNECTIONSKIPTRAN: 0x10\n};\n\nexport const OFFSET = {\n Type: 0,\n Status: 1,\n Length: 2,\n SPID: 4,\n PacketID: 6,\n Window: 7\n};\n\nconst DEFAULT_SPID = 0;\n\nconst DEFAULT_PACKETID = 1;\n\nconst DEFAULT_WINDOW = 0;\n\nconst NL = '\\n';\n\nexport class Packet {\n buffer: Buffer;\n\n constructor(typeOrBuffer: Buffer | number) {\n if (typeOrBuffer instanceof Buffer) {\n this.buffer = typeOrBuffer;\n } else {\n const type = typeOrBuffer;\n this.buffer = Buffer.alloc(HEADER_LENGTH, 0);\n this.buffer.writeUInt8(type, OFFSET.Type);\n this.buffer.writeUInt8(STATUS.NORMAL, OFFSET.Status);\n this.buffer.writeUInt16BE(DEFAULT_SPID, OFFSET.SPID);\n this.buffer.writeUInt8(DEFAULT_PACKETID, OFFSET.PacketID);\n this.buffer.writeUInt8(DEFAULT_WINDOW, OFFSET.Window);\n this.setLength();\n }\n }\n\n setLength() {\n this.buffer.writeUInt16BE(this.buffer.length, OFFSET.Length);\n }\n\n length() {\n return this.buffer.readUInt16BE(OFFSET.Length);\n }\n\n resetConnection(reset: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (reset) {\n status |= STATUS.RESETCONNECTION;\n } else {\n status &= 0xFF - STATUS.RESETCONNECTION;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n last(last?: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (arguments.length > 0) {\n if (last) {\n status |= STATUS.EOM;\n } else {\n status &= 0xFF - STATUS.EOM;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n return this.isLast();\n }\n\n ignore(last: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (last) {\n status |= STATUS.IGNORE;\n } else {\n status &= 0xFF - STATUS.IGNORE;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n isLast() {\n return !!(this.buffer.readUInt8(OFFSET.Status) & STATUS.EOM);\n }\n\n packetId(packetId?: number) {\n if (packetId) {\n this.buffer.writeUInt8(packetId % 256, OFFSET.PacketID);\n }\n return this.buffer.readUInt8(OFFSET.PacketID);\n }\n\n addData(data: Buffer) {\n this.buffer = Buffer.concat([this.buffer, data]);\n this.setLength();\n return this;\n }\n\n data() {\n return this.buffer.slice(HEADER_LENGTH);\n }\n\n type() {\n return this.buffer.readUInt8(OFFSET.Type);\n }\n\n statusAsString() {\n const status = this.buffer.readUInt8(OFFSET.Status);\n const statuses = [];\n\n for (const name in STATUS) {\n const value = STATUS[name];\n\n if (status & value) {\n statuses.push(name);\n } else {\n statuses.push(undefined);\n }\n }\n\n return statuses.join(' ').trim();\n }\n\n headerToString(indent = '') {\n const text = sprintf('type:0x%02X(%s), status:0x%02X(%s), length:0x%04X, spid:0x%04X, packetId:0x%02X, window:0x%02X', this.buffer.readUInt8(OFFSET.Type), typeByValue[this.buffer.readUInt8(OFFSET.Type)], this.buffer.readUInt8(OFFSET.Status), this.statusAsString(), this.buffer.readUInt16BE(OFFSET.Length), this.buffer.readUInt16BE(OFFSET.SPID), this.buffer.readUInt8(OFFSET.PacketID), this.buffer.readUInt8(OFFSET.Window));\n return indent + text;\n }\n\n dataToString(indent = '') {\n const BYTES_PER_GROUP = 0x04;\n const CHARS_PER_GROUP = 0x08;\n const BYTES_PER_LINE = 0x20;\n const data = this.data();\n\n let dataDump = '';\n let chars = '';\n\n\n for (let offset = 0; offset < data.length; offset++) {\n if (offset % BYTES_PER_LINE === 0) {\n dataDump += indent;\n dataDump += sprintf('%04X ', offset);\n }\n\n if (data[offset] < 0x20 || data[offset] > 0x7E) {\n chars += '.';\n if (((offset + 1) % CHARS_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n chars += ' ';\n }\n } else {\n chars += String.fromCharCode(data[offset]);\n }\n\n if (data[offset] != null) {\n dataDump += sprintf('%02X', data[offset]);\n }\n\n if (((offset + 1) % BYTES_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n dataDump += ' ';\n }\n\n if ((offset + 1) % BYTES_PER_LINE === 0) {\n dataDump += ' ' + chars;\n chars = '';\n if (offset < data.length - 1) {\n dataDump += NL;\n }\n }\n }\n\n if (chars.length) {\n dataDump += ' ' + chars;\n }\n\n return dataDump;\n }\n\n toString(indent = '') {\n return this.headerToString(indent) + '\\n' + this.dataToString(indent + indent);\n }\n\n payloadString() {\n return '';\n }\n}\n\nexport function isPacketComplete(potentialPacketBuffer: Buffer) {\n if (potentialPacketBuffer.length < HEADER_LENGTH) {\n return false;\n } else {\n return potentialPacketBuffer.length >= potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n }\n}\n\nexport function packetLength(potentialPacketBuffer: Buffer) {\n return potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n}\n"],"mappings":"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"}
|