tedious 16.2.0 → 16.3.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 (205) hide show
  1. package/lib/all-headers.js +1 -2
  2. package/lib/all-headers.js.map +1 -0
  3. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +9 -31
  4. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -0
  5. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +9 -24
  6. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -0
  7. package/lib/always-encrypted/cek-entry.js +8 -12
  8. package/lib/always-encrypted/cek-entry.js.map +1 -0
  9. package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -24
  10. package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -0
  11. package/lib/always-encrypted/key-crypto.js +5 -30
  12. package/lib/always-encrypted/key-crypto.js.map +1 -0
  13. package/lib/always-encrypted/keystore-provider-azure-key-vault.js +11 -72
  14. package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -0
  15. package/lib/always-encrypted/symmetric-key-cache.js +2 -13
  16. package/lib/always-encrypted/symmetric-key-cache.js.map +1 -0
  17. package/lib/always-encrypted/symmetric-key.js +3 -8
  18. package/lib/always-encrypted/symmetric-key.js.map +1 -0
  19. package/lib/always-encrypted/types.js +19 -27
  20. package/lib/always-encrypted/types.js.map +1 -0
  21. package/lib/always-encrypted/utils.js +2 -6
  22. package/lib/always-encrypted/utils.js.map +1 -0
  23. package/lib/bulk-load-payload.js +7 -15
  24. package/lib/bulk-load-payload.js.map +1 -0
  25. package/lib/bulk-load.js +58 -131
  26. package/lib/bulk-load.js.map +1 -0
  27. package/lib/collation.js +7 -15
  28. package/lib/collation.js.map +1 -0
  29. package/lib/connection.js +290 -531
  30. package/lib/connection.js.map +1 -0
  31. package/lib/connector.js +6 -37
  32. package/lib/connector.js.map +1 -0
  33. package/lib/data-type.js +2 -43
  34. package/lib/data-type.js.map +1 -0
  35. package/lib/data-types/bigint.js +1 -15
  36. package/lib/data-types/bigint.js.map +1 -0
  37. package/lib/data-types/binary.js +1 -12
  38. package/lib/data-types/binary.js.map +1 -0
  39. package/lib/data-types/bit.js +1 -11
  40. package/lib/data-types/bit.js.map +1 -0
  41. package/lib/data-types/bitn.js +1 -7
  42. package/lib/data-types/bitn.js.map +1 -0
  43. package/lib/data-types/char.js +1 -20
  44. package/lib/data-types/char.js.map +1 -0
  45. package/lib/data-types/date.js +1 -15
  46. package/lib/data-types/date.js.map +1 -0
  47. package/lib/data-types/datetime.js +3 -20
  48. package/lib/data-types/datetime.js.map +1 -0
  49. package/lib/data-types/datetime2.js +1 -26
  50. package/lib/data-types/datetime2.js.map +1 -0
  51. package/lib/data-types/datetimen.js +1 -7
  52. package/lib/data-types/datetimen.js.map +1 -0
  53. package/lib/data-types/datetimeoffset.js +1 -23
  54. package/lib/data-types/datetimeoffset.js.map +1 -0
  55. package/lib/data-types/decimal.js +1 -18
  56. package/lib/data-types/decimal.js.map +1 -0
  57. package/lib/data-types/decimaln.js +1 -7
  58. package/lib/data-types/decimaln.js.map +1 -0
  59. package/lib/data-types/float.js +1 -13
  60. package/lib/data-types/float.js.map +1 -0
  61. package/lib/data-types/floatn.js +1 -7
  62. package/lib/data-types/floatn.js.map +1 -0
  63. package/lib/data-types/image.js +1 -10
  64. package/lib/data-types/image.js.map +1 -0
  65. package/lib/data-types/int.js +1 -14
  66. package/lib/data-types/int.js.map +1 -0
  67. package/lib/data-types/intn.js +1 -7
  68. package/lib/data-types/intn.js.map +1 -0
  69. package/lib/data-types/money.js +1 -12
  70. package/lib/data-types/money.js.map +1 -0
  71. package/lib/data-types/moneyn.js +1 -7
  72. package/lib/data-types/moneyn.js.map +1 -0
  73. package/lib/data-types/nchar.js +1 -14
  74. package/lib/data-types/nchar.js.map +1 -0
  75. package/lib/data-types/ntext.js +1 -10
  76. package/lib/data-types/ntext.js.map +1 -0
  77. package/lib/data-types/null.js +1 -7
  78. package/lib/data-types/null.js.map +1 -0
  79. package/lib/data-types/numeric.js +1 -18
  80. package/lib/data-types/numeric.js.map +1 -0
  81. package/lib/data-types/numericn.js +1 -7
  82. package/lib/data-types/numericn.js.map +1 -0
  83. package/lib/data-types/nvarchar.js +1 -22
  84. package/lib/data-types/nvarchar.js.map +1 -0
  85. package/lib/data-types/real.js +1 -13
  86. package/lib/data-types/real.js.map +1 -0
  87. package/lib/data-types/smalldatetime.js +1 -14
  88. package/lib/data-types/smalldatetime.js.map +1 -0
  89. package/lib/data-types/smallint.js +1 -14
  90. package/lib/data-types/smallint.js.map +1 -0
  91. package/lib/data-types/smallmoney.js +1 -13
  92. package/lib/data-types/smallmoney.js.map +1 -0
  93. package/lib/data-types/sql-variant.js +1 -6
  94. package/lib/data-types/sql-variant.js.map +1 -0
  95. package/lib/data-types/text.js +1 -18
  96. package/lib/data-types/text.js.map +1 -0
  97. package/lib/data-types/time.js +1 -22
  98. package/lib/data-types/time.js.map +1 -0
  99. package/lib/data-types/tinyint.js +1 -14
  100. package/lib/data-types/tinyint.js.map +1 -0
  101. package/lib/data-types/tvp.js +11 -27
  102. package/lib/data-types/tvp.js.map +1 -0
  103. package/lib/data-types/udt.js +1 -7
  104. package/lib/data-types/udt.js.map +1 -0
  105. package/lib/data-types/uniqueidentifier.js +1 -11
  106. package/lib/data-types/uniqueidentifier.js.map +1 -0
  107. package/lib/data-types/varbinary.js +1 -22
  108. package/lib/data-types/varbinary.js.map +1 -0
  109. package/lib/data-types/varchar.js +1 -23
  110. package/lib/data-types/varchar.js.map +1 -0
  111. package/lib/data-types/xml.js +1 -7
  112. package/lib/data-types/xml.js.map +1 -0
  113. package/lib/debug.js +4 -16
  114. package/lib/debug.js.map +1 -0
  115. package/lib/errors/abort-error.js +2 -5
  116. package/lib/errors/abort-error.js.map +1 -0
  117. package/lib/errors/timeout-error.js +2 -5
  118. package/lib/errors/timeout-error.js.map +1 -0
  119. package/lib/errors.js +10 -16
  120. package/lib/errors.js.map +1 -0
  121. package/lib/guid-parser.js +1 -7
  122. package/lib/guid-parser.js.map +1 -0
  123. package/lib/incoming-message-stream.js +9 -29
  124. package/lib/incoming-message-stream.js.map +1 -0
  125. package/lib/instance-lookup.js +3 -34
  126. package/lib/instance-lookup.js.map +1 -0
  127. package/lib/library.js +1 -1
  128. package/lib/library.js.map +1 -0
  129. package/lib/login7-payload.js +99 -100
  130. package/lib/login7-payload.js.map +1 -0
  131. package/lib/message-io.js +17 -45
  132. package/lib/message-io.js.map +1 -0
  133. package/lib/message.js +4 -8
  134. package/lib/message.js.map +1 -0
  135. package/lib/metadata-parser.js +1 -22
  136. package/lib/metadata-parser.js.map +1 -0
  137. package/lib/ntlm-payload.js +2 -22
  138. package/lib/ntlm-payload.js.map +1 -0
  139. package/lib/ntlm.js +1 -4
  140. package/lib/ntlm.js.map +1 -0
  141. package/lib/outgoing-message-stream.js +12 -21
  142. package/lib/outgoing-message-stream.js.map +1 -0
  143. package/lib/packet.js +2 -47
  144. package/lib/packet.js.map +1 -0
  145. package/lib/prelogin-payload.js +11 -54
  146. package/lib/prelogin-payload.js.map +1 -0
  147. package/lib/request.js +88 -66
  148. package/lib/request.js.map +1 -0
  149. package/lib/rpcrequest-payload.js +8 -35
  150. package/lib/rpcrequest-payload.js.map +1 -0
  151. package/lib/sender.js +1 -24
  152. package/lib/sender.js.map +1 -0
  153. package/lib/special-stored-procedure.js +1 -1
  154. package/lib/special-stored-procedure.js.map +1 -0
  155. package/lib/sqlbatch-payload.js +5 -18
  156. package/lib/sqlbatch-payload.js.map +1 -0
  157. package/lib/tds-versions.js +3 -3
  158. package/lib/tds-versions.js.map +1 -0
  159. package/lib/tedious.js +1 -12
  160. package/lib/tedious.js.map +1 -0
  161. package/lib/token/colmetadata-token-parser.js +1 -17
  162. package/lib/token/colmetadata-token-parser.js.map +1 -0
  163. package/lib/token/done-token-parser.js +2 -8
  164. package/lib/token/done-token-parser.js.map +1 -0
  165. package/lib/token/env-change-token-parser.js +7 -28
  166. package/lib/token/env-change-token-parser.js.map +1 -0
  167. package/lib/token/feature-ext-ack-parser.js +1 -10
  168. package/lib/token/feature-ext-ack-parser.js.map +1 -0
  169. package/lib/token/fedauth-info-parser.js +2 -10
  170. package/lib/token/fedauth-info-parser.js.map +1 -0
  171. package/lib/token/handler.js +39 -149
  172. package/lib/token/handler.js.map +1 -0
  173. package/lib/token/infoerror-token-parser.js +1 -5
  174. package/lib/token/infoerror-token-parser.js.map +1 -0
  175. package/lib/token/loginack-token-parser.js +1 -6
  176. package/lib/token/loginack-token-parser.js.map +1 -0
  177. package/lib/token/nbcrow-token-parser.js +2 -15
  178. package/lib/token/nbcrow-token-parser.js.map +1 -0
  179. package/lib/token/order-token-parser.js +2 -7
  180. package/lib/token/order-token-parser.js.map +1 -0
  181. package/lib/token/returnstatus-token-parser.js +2 -4
  182. package/lib/token/returnstatus-token-parser.js.map +1 -0
  183. package/lib/token/returnvalue-token-parser.js +4 -9
  184. package/lib/token/returnvalue-token-parser.js.map +1 -0
  185. package/lib/token/row-token-parser.js +2 -11
  186. package/lib/token/row-token-parser.js.map +1 -0
  187. package/lib/token/sspi-token-parser.js +1 -5
  188. package/lib/token/sspi-token-parser.js.map +1 -0
  189. package/lib/token/stream-parser.js +24 -86
  190. package/lib/token/stream-parser.js.map +1 -0
  191. package/lib/token/token-stream-parser.js +4 -13
  192. package/lib/token/token-stream-parser.js.map +1 -0
  193. package/lib/token/token.js +88 -168
  194. package/lib/token/token.js.map +1 -0
  195. package/lib/tracking-buffer/writable-tracking-buffer.js +20 -60
  196. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -0
  197. package/lib/transaction.js +9 -33
  198. package/lib/transaction.js.map +1 -0
  199. package/lib/transient-error-lookup.js +1 -4
  200. package/lib/transient-error-lookup.js.map +1 -0
  201. package/lib/utils/with-timeout.js +1 -9
  202. package/lib/utils/with-timeout.js.map +1 -0
  203. package/lib/value-parser.js +1 -143
  204. package/lib/value-parser.js.map +1 -0
  205. 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(); // When the writable side is ended, push `null`
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); // TODO: Get rid of creating `Packet` instances here.
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); // TODO: Get rid of creating `Packet` instances here.
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicGFja2V0U2l6ZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImJsIiwiY3VycmVudE1lc3NhZ2UiLCJCdWZmZXJMaXN0Iiwib24iLCJwdXNoIiwiX3dyaXRlIiwibWVzc2FnZSIsIl9lbmNvZGluZyIsImNhbGxiYWNrIiwibGVuZ3RoIiwiSEVBREVSX0xFTkdUSCIsInBhY2tldE51bWJlciIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvb3V0Z29pbmctbWVzc2FnZS1zdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1ZmZlckxpc3QgZnJvbSAnYmwnO1xuaW1wb3J0IHsgRHVwbGV4IH0gZnJvbSAnc3RyZWFtJztcblxuaW1wb3J0IERlYnVnIGZyb20gJy4vZGVidWcnO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSAnLi9tZXNzYWdlJztcbmltcG9ydCB7IFBhY2tldCwgSEVBREVSX0xFTkdUSCB9IGZyb20gJy4vcGFja2V0JztcblxuY2xhc3MgT3V0Z29pbmdNZXNzYWdlU3RyZWFtIGV4dGVuZHMgRHVwbGV4IHtcbiAgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBkZWJ1ZzogRGVidWc7XG4gIGJsOiBhbnk7XG5cbiAgY3VycmVudE1lc3NhZ2U6IE1lc3NhZ2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoZGVidWc6IERlYnVnLCB7IHBhY2tldFNpemUgfTogeyBwYWNrZXRTaXplOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKHsgd3JpdGFibGVPYmplY3RNb2RlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5wYWNrZXRTaXplID0gcGFja2V0U2l6ZTtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgdGhpcy5ibCA9IG5ldyBCdWZmZXJMaXN0KCk7XG5cbiAgICAvLyBXaGVuIHRoZSB3cml0YWJsZSBzaWRlIGlzIGVuZGVkLCBwdXNoIGBudWxsYFxuICAgIC8vIHRvIGFsc28gZW5kIHRoZSByZWFkYWJsZSBzaWRlLlxuICAgIHRoaXMub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgIHRoaXMucHVzaChudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIF93cml0ZShtZXNzYWdlOiBNZXNzYWdlLCBfZW5jb2Rpbmc6IHN0cmluZywgY2FsbGJhY2s6IChlcnI/OiBFcnJvciB8IG51bGwpID0+IHZvaWQpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLnBhY2tldFNpemUgLSBIRUFERVJfTEVOR1RIO1xuICAgIGxldCBwYWNrZXROdW1iZXIgPSAwO1xuXG4gICAgdGhpcy5jdXJyZW50TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5jdXJyZW50TWVzc2FnZS5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGlmIChtZXNzYWdlLmlnbm9yZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYmwuYXBwZW5kKGRhdGEpO1xuXG4gICAgICB3aGlsZSAodGhpcy5ibC5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYmwuc2xpY2UoMCwgbGVuZ3RoKTtcbiAgICAgICAgdGhpcy5ibC5jb25zdW1lKGxlbmd0aCk7XG5cbiAgICAgICAgLy8gVE9ETzogR2V0IHJpZCBvZiBjcmVhdGluZyBgUGFja2V0YCBpbnN0YW5jZXMgaGVyZS5cbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFBhY2tldChtZXNzYWdlLnR5cGUpO1xuICAgICAgICBwYWNrZXQucGFja2V0SWQocGFja2V0TnVtYmVyICs9IDEpO1xuICAgICAgICBwYWNrZXQucmVzZXRDb25uZWN0aW9uKG1lc3NhZ2UucmVzZXRDb25uZWN0aW9uKTtcbiAgICAgICAgcGFja2V0LmFkZERhdGEoZGF0YSk7XG5cbiAgICAgICAgdGhpcy5kZWJ1Zy5wYWNrZXQoJ1NlbnQnLCBwYWNrZXQpO1xuICAgICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgICBpZiAodGhpcy5wdXNoKHBhY2tldC5idWZmZXIpID09PSBmYWxzZSkge1xuICAgICAgICAgIG1lc3NhZ2UucGF1c2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jdXJyZW50TWVzc2FnZS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYmwuc2xpY2UoKTtcbiAgICAgIHRoaXMuYmwuY29uc3VtZShkYXRhLmxlbmd0aCk7XG5cbiAgICAgIC8vIFRPRE86IEdldCByaWQgb2YgY3JlYXRpbmcgYFBhY2tldGAgaW5zdGFuY2VzIGhlcmUuXG4gICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUGFja2V0KG1lc3NhZ2UudHlwZSk7XG4gICAgICBwYWNrZXQucGFja2V0SWQocGFja2V0TnVtYmVyICs9IDEpO1xuICAgICAgcGFja2V0LnJlc2V0Q29ubmVjdGlvbihtZXNzYWdlLnJlc2V0Q29ubmVjdGlvbik7XG4gICAgICBwYWNrZXQubGFzdCh0cnVlKTtcbiAgICAgIHBhY2tldC5pZ25vcmUobWVzc2FnZS5pZ25vcmUpO1xuICAgICAgcGFja2V0LmFkZERhdGEoZGF0YSk7XG5cbiAgICAgIHRoaXMuZGVidWcucGFja2V0KCdTZW50JywgcGFja2V0KTtcbiAgICAgIHRoaXMuZGVidWcuZGF0YShwYWNrZXQpO1xuXG4gICAgICB0aGlzLnB1c2gocGFja2V0LmJ1ZmZlcik7XG5cbiAgICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBfcmVhZChfc2l6ZTogbnVtYmVyKSB7XG4gICAgLy8gSWYgd2UgZG8gaGF2ZSBhIG1lc3NhZ2UsIHJlc3VtZSBpdCBhbmQgZ2V0IGRhdGEgZmxvd2luZy5cbiAgICAvLyBPdGhlcndpc2UsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uXG4gICAgaWYgKHRoaXMuY3VycmVudE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuY3VycmVudE1lc3NhZ2UucmVzdW1lKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE91dGdvaW5nTWVzc2FnZVN0cmVhbTtcbm1vZHVsZS5leHBvcnRzID0gT3V0Z29pbmdNZXNzYWdlU3RyZWFtO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBSUE7Ozs7QUFFQSxNQUFNQSxxQkFBTixTQUFvQ0MsY0FBcEMsQ0FBMkM7RUFPekNDLFdBQVcsQ0FBQ0MsS0FBRCxFQUFlO0lBQUVDO0VBQUYsQ0FBZixFQUF1RDtJQUNoRSxNQUFNO01BQUVDLGtCQUFrQixFQUFFO0lBQXRCLENBQU47SUFEZ0UsS0FObEVELFVBTWtFO0lBQUEsS0FMbEVELEtBS2tFO0lBQUEsS0FKbEVHLEVBSWtFO0lBQUEsS0FGbEVDLGNBRWtFO0lBR2hFLEtBQUtILFVBQUwsR0FBa0JBLFVBQWxCO0lBQ0EsS0FBS0QsS0FBTCxHQUFhQSxLQUFiO0lBQ0EsS0FBS0csRUFBTCxHQUFVLElBQUlFLFdBQUosRUFBVixDQUxnRSxDQU9oRTtJQUNBOztJQUNBLEtBQUtDLEVBQUwsQ0FBUSxRQUFSLEVBQWtCLE1BQU07TUFDdEIsS0FBS0MsSUFBTCxDQUFVLElBQVY7SUFDRCxDQUZEO0VBR0Q7O0VBRURDLE1BQU0sQ0FBQ0MsT0FBRCxFQUFtQkMsU0FBbkIsRUFBc0NDLFFBQXRDLEVBQThFO0lBQ2xGLE1BQU1DLE1BQU0sR0FBRyxLQUFLWCxVQUFMLEdBQWtCWSxxQkFBakM7SUFDQSxJQUFJQyxZQUFZLEdBQUcsQ0FBbkI7SUFFQSxLQUFLVixjQUFMLEdBQXNC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
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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"}