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,32 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _metadataParser = _interopRequireDefault(require("../metadata-parser"));
9
-
10
8
  var _token = require("./token");
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  function readTableName(parser, options, metadata, callback) {
15
11
  if (metadata.type.hasTableName) {
16
12
  if (options.tdsVersion >= '7_2') {
17
13
  parser.readUInt8(numberOfTableNameParts => {
18
14
  const tableName = [];
19
15
  let i = 0;
20
-
21
16
  function next(done) {
22
17
  if (numberOfTableNameParts === i) {
23
18
  return done();
24
19
  }
25
-
26
20
  parser.readUsVarChar(part => {
27
21
  tableName.push(part);
28
22
  i++;
29
23
  next(done);
30
24
  });
31
25
  }
32
-
33
26
  next(() => {
34
27
  callback(tableName);
35
28
  });
@@ -41,7 +34,6 @@ function readTableName(parser, options, metadata, callback) {
41
34
  callback(undefined);
42
35
  }
43
36
  }
44
-
45
37
  function readColumnName(parser, options, index, metadata, callback) {
46
38
  parser.readBVarChar(colName => {
47
39
  if (options.columnNameReplacer) {
@@ -55,7 +47,6 @@ function readColumnName(parser, options, index, metadata, callback) {
55
47
  }
56
48
  });
57
49
  }
58
-
59
50
  function readColumn(parser, options, index, callback) {
60
51
  (0, _metadataParser.default)(parser, options, metadata => {
61
52
  readTableName(parser, options, metadata, tableName => {
@@ -77,36 +68,29 @@ function readColumn(parser, options, index, callback) {
77
68
  });
78
69
  });
79
70
  }
80
-
81
71
  async function colMetadataParser(parser) {
82
72
  while (parser.buffer.length - parser.position < 2) {
83
73
  await parser.streamBuffer.waitForChunk();
84
74
  }
85
-
86
75
  const columnCount = parser.buffer.readUInt16LE(parser.position);
87
76
  parser.position += 2;
88
77
  const columns = [];
89
-
90
78
  for (let i = 0; i < columnCount; i++) {
91
79
  let column;
92
80
  readColumn(parser, parser.options, i, c => {
93
81
  column = c;
94
82
  });
95
-
96
83
  while (parser.suspended) {
97
84
  await parser.streamBuffer.waitForChunk();
98
85
  parser.suspended = false;
99
86
  const next = parser.next;
100
87
  next();
101
88
  }
102
-
103
89
  columns.push(column);
104
90
  }
105
-
106
91
  return new _token.ColMetadataToken(columns);
107
92
  }
108
-
109
93
  var _default = colMetadataParser;
110
94
  exports.default = _default;
111
95
  module.exports = colMetadataParser;
112
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFkVGFibGVOYW1lIiwicGFyc2VyIiwib3B0aW9ucyIsIm1ldGFkYXRhIiwiY2FsbGJhY2siLCJ0eXBlIiwiaGFzVGFibGVOYW1lIiwidGRzVmVyc2lvbiIsInJlYWRVSW50OCIsIm51bWJlck9mVGFibGVOYW1lUGFydHMiLCJ0YWJsZU5hbWUiLCJpIiwibmV4dCIsImRvbmUiLCJyZWFkVXNWYXJDaGFyIiwicGFydCIsInB1c2giLCJ1bmRlZmluZWQiLCJyZWFkQ29sdW1uTmFtZSIsImluZGV4IiwicmVhZEJWYXJDaGFyIiwiY29sTmFtZSIsImNvbHVtbk5hbWVSZXBsYWNlciIsImNhbWVsQ2FzZUNvbHVtbnMiLCJyZXBsYWNlIiwicyIsInRvTG93ZXJDYXNlIiwicmVhZENvbHVtbiIsInVzZXJUeXBlIiwiZmxhZ3MiLCJjb2xsYXRpb24iLCJwcmVjaXNpb24iLCJzY2FsZSIsInVkdEluZm8iLCJkYXRhTGVuZ3RoIiwic2NoZW1hIiwiY29sTWV0YWRhdGFQYXJzZXIiLCJidWZmZXIiLCJsZW5ndGgiLCJwb3NpdGlvbiIsInN0cmVhbUJ1ZmZlciIsIndhaXRGb3JDaHVuayIsImNvbHVtbkNvdW50IiwicmVhZFVJbnQxNkxFIiwiY29sdW1ucyIsImNvbHVtbiIsImMiLCJzdXNwZW5kZWQiLCJDb2xNZXRhZGF0YVRva2VuIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1ldGFkYXRhUGFyc2UsIHsgTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuXG5pbXBvcnQgUGFyc2VyLCB7IFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgQ29sTWV0YWRhdGFUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk1ldGFkYXRhIGV4dGVuZHMgTWV0YWRhdGEge1xuICAvKipcbiAgICogVGhlIGNvbHVtbidzIG5hbWXjgIJcbiAgICovXG4gIGNvbE5hbWU6IHN0cmluZztcblxuICB0YWJsZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVhZFRhYmxlTmFtZShwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucywgbWV0YWRhdGE6IE1ldGFkYXRhLCBjYWxsYmFjazogKHRhYmxlTmFtZT86IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB2b2lkKSB7XG4gIGlmIChtZXRhZGF0YS50eXBlLmhhc1RhYmxlTmFtZSkge1xuICAgIGlmIChvcHRpb25zLnRkc1ZlcnNpb24gPj0gJzdfMicpIHtcbiAgICAgIHBhcnNlci5yZWFkVUludDgoKG51bWJlck9mVGFibGVOYW1lUGFydHMpID0+IHtcbiAgICAgICAgY29uc3QgdGFibGVOYW1lOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZnVuY3Rpb24gbmV4dChkb25lOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgICAgaWYgKG51bWJlck9mVGFibGVOYW1lUGFydHMgPT09IGkpIHtcbiAgICAgICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGFyc2VyLnJlYWRVc1ZhckNoYXIoKHBhcnQpID0+IHtcbiAgICAgICAgICAgIHRhYmxlTmFtZS5wdXNoKHBhcnQpO1xuXG4gICAgICAgICAgICBpKys7XG5cbiAgICAgICAgICAgIG5leHQoZG9uZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0KCgpID0+IHtcbiAgICAgICAgICBjYWxsYmFjayh0YWJsZU5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZXIucmVhZFVzVmFyQ2hhcihjYWxsYmFjayk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKHVuZGVmaW5lZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZENvbHVtbk5hbWUocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGluZGV4OiBudW1iZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSwgY2FsbGJhY2s6IChjb2xOYW1lOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRCVmFyQ2hhcigoY29sTmFtZSkgPT4ge1xuICAgIGlmIChvcHRpb25zLmNvbHVtbk5hbWVSZXBsYWNlcikge1xuICAgICAgY2FsbGJhY2sob3B0aW9ucy5jb2x1bW5OYW1lUmVwbGFjZXIoY29sTmFtZSwgaW5kZXgsIG1ldGFkYXRhKSk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmNhbWVsQ2FzZUNvbHVtbnMpIHtcbiAgICAgIGNhbGxiYWNrKGNvbE5hbWUucmVwbGFjZSgvXltBLVpdLywgZnVuY3Rpb24ocykge1xuICAgICAgICByZXR1cm4gcy50b0xvd2VyQ2FzZSgpO1xuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhjb2xOYW1lKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkQ29sdW1uKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBpbmRleDogbnVtYmVyLCBjYWxsYmFjazogKGNvbHVtbjogQ29sdW1uTWV0YWRhdGEpID0+IHZvaWQpIHtcbiAgbWV0YWRhdGFQYXJzZShwYXJzZXIsIG9wdGlvbnMsIChtZXRhZGF0YSkgPT4ge1xuICAgIHJlYWRUYWJsZU5hbWUocGFyc2VyLCBvcHRpb25zLCBtZXRhZGF0YSwgKHRhYmxlTmFtZSkgPT4ge1xuICAgICAgcmVhZENvbHVtbk5hbWUocGFyc2VyLCBvcHRpb25zLCBpbmRleCwgbWV0YWRhdGEsIChjb2xOYW1lKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICB1c2VyVHlwZTogbWV0YWRhdGEudXNlclR5cGUsXG4gICAgICAgICAgZmxhZ3M6IG1ldGFkYXRhLmZsYWdzLFxuICAgICAgICAgIHR5cGU6IG1ldGFkYXRhLnR5cGUsXG4gICAgICAgICAgY29sbGF0aW9uOiBtZXRhZGF0YS5jb2xsYXRpb24sXG4gICAgICAgICAgcHJlY2lzaW9uOiBtZXRhZGF0YS5wcmVjaXNpb24sXG4gICAgICAgICAgc2NhbGU6IG1ldGFkYXRhLnNjYWxlLFxuICAgICAgICAgIHVkdEluZm86IG1ldGFkYXRhLnVkdEluZm8sXG4gICAgICAgICAgZGF0YUxlbmd0aDogbWV0YWRhdGEuZGF0YUxlbmd0aCxcbiAgICAgICAgICBzY2hlbWE6IG1ldGFkYXRhLnNjaGVtYSxcbiAgICAgICAgICBjb2xOYW1lOiBjb2xOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogdGFibGVOYW1lXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb2xNZXRhZGF0YVBhcnNlcihwYXJzZXI6IFBhcnNlcik6IFByb21pc2U8Q29sTWV0YWRhdGFUb2tlbj4ge1xuICB3aGlsZSAocGFyc2VyLmJ1ZmZlci5sZW5ndGggLSBwYXJzZXIucG9zaXRpb24gPCAyKSB7XG4gICAgYXdhaXQgcGFyc2VyLnN0cmVhbUJ1ZmZlci53YWl0Rm9yQ2h1bmsoKTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkNvdW50ID0gcGFyc2VyLmJ1ZmZlci5yZWFkVUludDE2TEUocGFyc2VyLnBvc2l0aW9uKTtcbiAgcGFyc2VyLnBvc2l0aW9uICs9IDI7XG5cbiAgY29uc3QgY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkNvdW50OyBpKyspIHtcbiAgICBsZXQgY29sdW1uOiBDb2x1bW5NZXRhZGF0YTtcblxuICAgIHJlYWRDb2x1bW4ocGFyc2VyLCBwYXJzZXIub3B0aW9ucywgaSwgKGMpID0+IHtcbiAgICAgIGNvbHVtbiA9IGM7XG4gICAgfSk7XG5cbiAgICB3aGlsZSAocGFyc2VyLnN1c3BlbmRlZCkge1xuICAgICAgYXdhaXQgcGFyc2VyLnN0cmVhbUJ1ZmZlci53YWl0Rm9yQ2h1bmsoKTtcblxuICAgICAgcGFyc2VyLnN1c3BlbmRlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgbmV4dCA9IHBhcnNlci5uZXh0ITtcblxuICAgICAgbmV4dCgpO1xuICAgIH1cblxuICAgIGNvbHVtbnMucHVzaChjb2x1bW4hKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQ29sTWV0YWRhdGFUb2tlbihjb2x1bW5zKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29sTWV0YWRhdGFQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGNvbE1ldGFkYXRhUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBR0E7Ozs7QUFXQSxTQUFTQSxhQUFULENBQXVCQyxNQUF2QixFQUF1Q0MsT0FBdkMsRUFBK0RDLFFBQS9ELEVBQW1GQyxRQUFuRixFQUFzSTtFQUNwSSxJQUFJRCxRQUFRLENBQUNFLElBQVQsQ0FBY0MsWUFBbEIsRUFBZ0M7SUFDOUIsSUFBSUosT0FBTyxDQUFDSyxVQUFSLElBQXNCLEtBQTFCLEVBQWlDO01BQy9CTixNQUFNLENBQUNPLFNBQVAsQ0FBa0JDLHNCQUFELElBQTRCO1FBQzNDLE1BQU1DLFNBQW1CLEdBQUcsRUFBNUI7UUFFQSxJQUFJQyxDQUFDLEdBQUcsQ0FBUjs7UUFDQSxTQUFTQyxJQUFULENBQWNDLElBQWQsRUFBZ0M7VUFDOUIsSUFBSUosc0JBQXNCLEtBQUtFLENBQS9CLEVBQWtDO1lBQ2hDLE9BQU9FLElBQUksRUFBWDtVQUNEOztVQUVEWixNQUFNLENBQUNhLGFBQVAsQ0FBc0JDLElBQUQsSUFBVTtZQUM3QkwsU0FBUyxDQUFDTSxJQUFWLENBQWVELElBQWY7WUFFQUosQ0FBQztZQUVEQyxJQUFJLENBQUNDLElBQUQsQ0FBSjtVQUNELENBTkQ7UUFPRDs7UUFFREQsSUFBSSxDQUFDLE1BQU07VUFDVFIsUUFBUSxDQUFDTSxTQUFELENBQVI7UUFDRCxDQUZHLENB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
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWV0YWRhdGFQYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90b2tlbiIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwicmVhZFRhYmxlTmFtZSIsInBhcnNlciIsIm9wdGlvbnMiLCJtZXRhZGF0YSIsImNhbGxiYWNrIiwidHlwZSIsImhhc1RhYmxlTmFtZSIsInRkc1ZlcnNpb24iLCJyZWFkVUludDgiLCJudW1iZXJPZlRhYmxlTmFtZVBhcnRzIiwidGFibGVOYW1lIiwiaSIsIm5leHQiLCJkb25lIiwicmVhZFVzVmFyQ2hhciIsInBhcnQiLCJwdXNoIiwidW5kZWZpbmVkIiwicmVhZENvbHVtbk5hbWUiLCJpbmRleCIsInJlYWRCVmFyQ2hhciIsImNvbE5hbWUiLCJjb2x1bW5OYW1lUmVwbGFjZXIiLCJjYW1lbENhc2VDb2x1bW5zIiwicmVwbGFjZSIsInMiLCJ0b0xvd2VyQ2FzZSIsInJlYWRDb2x1bW4iLCJtZXRhZGF0YVBhcnNlIiwidXNlclR5cGUiLCJmbGFncyIsImNvbGxhdGlvbiIsInByZWNpc2lvbiIsInNjYWxlIiwidWR0SW5mbyIsImRhdGFMZW5ndGgiLCJzY2hlbWEiLCJjb2xNZXRhZGF0YVBhcnNlciIsImJ1ZmZlciIsImxlbmd0aCIsInBvc2l0aW9uIiwic3RyZWFtQnVmZmVyIiwid2FpdEZvckNodW5rIiwiY29sdW1uQ291bnQiLCJyZWFkVUludDE2TEUiLCJjb2x1bW5zIiwiY29sdW1uIiwiYyIsInN1c3BlbmRlZCIsIkNvbE1ldGFkYXRhVG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXRhZGF0YVBhcnNlLCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEtcGFyc2VyJztcblxuaW1wb3J0IFBhcnNlciwgeyBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IENvbE1ldGFkYXRhVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5NZXRhZGF0YSBleHRlbmRzIE1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIFRoZSBjb2x1bW4ncyBuYW1l44CCXG4gICAqL1xuICBjb2xOYW1lOiBzdHJpbmc7XG5cbiAgdGFibGVOYW1lPzogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRUYWJsZU5hbWUocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIG1ldGFkYXRhOiBNZXRhZGF0YSwgY2FsbGJhY2s6ICh0YWJsZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4gdm9pZCkge1xuICBpZiAobWV0YWRhdGEudHlwZS5oYXNUYWJsZU5hbWUpIHtcbiAgICBpZiAob3B0aW9ucy50ZHNWZXJzaW9uID49ICc3XzInKSB7XG4gICAgICBwYXJzZXIucmVhZFVJbnQ4KChudW1iZXJPZlRhYmxlTmFtZVBhcnRzKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhYmxlTmFtZTogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZ1bmN0aW9uIG5leHQoZG9uZTogKCkgPT4gdm9pZCkge1xuICAgICAgICAgIGlmIChudW1iZXJPZlRhYmxlTmFtZVBhcnRzID09PSBpKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9uZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhcnNlci5yZWFkVXNWYXJDaGFyKChwYXJ0KSA9PiB7XG4gICAgICAgICAgICB0YWJsZU5hbWUucHVzaChwYXJ0KTtcblxuICAgICAgICAgICAgaSsrO1xuXG4gICAgICAgICAgICBuZXh0KGRvbmUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV4dCgoKSA9PiB7XG4gICAgICAgICAgY2FsbGJhY2sodGFibGVOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VyLnJlYWRVc1ZhckNoYXIoY2FsbGJhY2spO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRDb2x1bW5OYW1lKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBpbmRleDogbnVtYmVyLCBtZXRhZGF0YTogTWV0YWRhdGEsIGNhbGxiYWNrOiAoY29sTmFtZTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkQlZhckNoYXIoKGNvbE5hbWUpID0+IHtcbiAgICBpZiAob3B0aW9ucy5jb2x1bW5OYW1lUmVwbGFjZXIpIHtcbiAgICAgIGNhbGxiYWNrKG9wdGlvbnMuY29sdW1uTmFtZVJlcGxhY2VyKGNvbE5hbWUsIGluZGV4LCBtZXRhZGF0YSkpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5jYW1lbENhc2VDb2x1bW5zKSB7XG4gICAgICBjYWxsYmFjayhjb2xOYW1lLnJlcGxhY2UoL15bQS1aXS8sIGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgcmV0dXJuIHMudG9Mb3dlckNhc2UoKTtcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soY29sTmFtZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZENvbHVtbihwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucywgaW5kZXg6IG51bWJlciwgY2FsbGJhY2s6IChjb2x1bW46IENvbHVtbk1ldGFkYXRhKSA9PiB2b2lkKSB7XG4gIG1ldGFkYXRhUGFyc2UocGFyc2VyLCBvcHRpb25zLCAobWV0YWRhdGEpID0+IHtcbiAgICByZWFkVGFibGVOYW1lKHBhcnNlciwgb3B0aW9ucywgbWV0YWRhdGEsICh0YWJsZU5hbWUpID0+IHtcbiAgICAgIHJlYWRDb2x1bW5OYW1lKHBhcnNlciwgb3B0aW9ucywgaW5kZXgsIG1ldGFkYXRhLCAoY29sTmFtZSkgPT4ge1xuICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgdXNlclR5cGU6IG1ldGFkYXRhLnVzZXJUeXBlLFxuICAgICAgICAgIGZsYWdzOiBtZXRhZGF0YS5mbGFncyxcbiAgICAgICAgICB0eXBlOiBtZXRhZGF0YS50eXBlLFxuICAgICAgICAgIGNvbGxhdGlvbjogbWV0YWRhdGEuY29sbGF0aW9uLFxuICAgICAgICAgIHByZWNpc2lvbjogbWV0YWRhdGEucHJlY2lzaW9uLFxuICAgICAgICAgIHNjYWxlOiBtZXRhZGF0YS5zY2FsZSxcbiAgICAgICAgICB1ZHRJbmZvOiBtZXRhZGF0YS51ZHRJbmZvLFxuICAgICAgICAgIGRhdGFMZW5ndGg6IG1ldGFkYXRhLmRhdGFMZW5ndGgsXG4gICAgICAgICAgc2NoZW1hOiBtZXRhZGF0YS5zY2hlbWEsXG4gICAgICAgICAgY29sTmFtZTogY29sTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IHRhYmxlTmFtZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29sTWV0YWRhdGFQYXJzZXIocGFyc2VyOiBQYXJzZXIpOiBQcm9taXNlPENvbE1ldGFkYXRhVG9rZW4+IHtcbiAgd2hpbGUgKHBhcnNlci5idWZmZXIubGVuZ3RoIC0gcGFyc2VyLnBvc2l0aW9uIDwgMikge1xuICAgIGF3YWl0IHBhcnNlci5zdHJlYW1CdWZmZXIud2FpdEZvckNodW5rKCk7XG4gIH1cblxuICBjb25zdCBjb2x1bW5Db3VudCA9IHBhcnNlci5idWZmZXIucmVhZFVJbnQxNkxFKHBhcnNlci5wb3NpdGlvbik7XG4gIHBhcnNlci5wb3NpdGlvbiArPSAyO1xuXG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgbGV0IGNvbHVtbjogQ29sdW1uTWV0YWRhdGE7XG5cbiAgICByZWFkQ29sdW1uKHBhcnNlciwgcGFyc2VyLm9wdGlvbnMsIGksIChjKSA9PiB7XG4gICAgICBjb2x1bW4gPSBjO1xuICAgIH0pO1xuXG4gICAgd2hpbGUgKHBhcnNlci5zdXNwZW5kZWQpIHtcbiAgICAgIGF3YWl0IHBhcnNlci5zdHJlYW1CdWZmZXIud2FpdEZvckNodW5rKCk7XG5cbiAgICAgIHBhcnNlci5zdXNwZW5kZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IG5leHQgPSBwYXJzZXIubmV4dCE7XG5cbiAgICAgIG5leHQoKTtcbiAgICB9XG5cbiAgICBjb2x1bW5zLnB1c2goY29sdW1uISk7XG4gIH1cblxuICByZXR1cm4gbmV3IENvbE1ldGFkYXRhVG9rZW4oY29sdW1ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbE1ldGFkYXRhUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBjb2xNZXRhZGF0YVBhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQTJDLFNBQUFELHVCQUFBRyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBVzNDLFNBQVNHLGFBQWFBLENBQUNDLE1BQWMsRUFBRUMsT0FBc0IsRUFBRUMsUUFBa0IsRUFBRUMsUUFBaUQsRUFBRTtFQUNwSSxJQUFJRCxRQUFRLENBQUNFLElBQUksQ0FBQ0MsWUFBWSxFQUFFO0lBQzlCLElBQUlKLE9BQU8sQ0FBQ0ssVUFBVSxJQUFJLEtBQUssRUFBRTtNQUMvQk4sTUFBTSxDQUFDTyxTQUFTLENBQUVDLHNCQUFzQixJQUFLO1FBQzNDLE1BQU1DLFNBQW1CLEdBQUcsRUFBRTtRQUU5QixJQUFJQyxDQUFDLEdBQUcsQ0FBQztRQUNULFNBQVNDLElBQUlBLENBQUNDLElBQWdCLEVBQUU7VUFD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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colmetadata-token-parser.js","names":["_metadataParser","_interopRequireDefault","require","_token","obj","__esModule","default","readTableName","parser","options","metadata","callback","type","hasTableName","tdsVersion","readUInt8","numberOfTableNameParts","tableName","i","next","done","readUsVarChar","part","push","undefined","readColumnName","index","readBVarChar","colName","columnNameReplacer","camelCaseColumns","replace","s","toLowerCase","readColumn","metadataParse","userType","flags","collation","precision","scale","udtInfo","dataLength","schema","colMetadataParser","buffer","length","position","streamBuffer","waitForChunk","columnCount","readUInt16LE","columns","column","c","suspended","ColMetadataToken","_default","exports","module"],"sources":["../../src/token/colmetadata-token-parser.ts"],"sourcesContent":["import metadataParse, { Metadata } from '../metadata-parser';\n\nimport Parser, { ParserOptions } from './stream-parser';\nimport { ColMetadataToken } from './token';\n\nexport interface ColumnMetadata extends Metadata {\n /**\n * The column's name。\n */\n colName: string;\n\n tableName?: string | string[] | undefined;\n}\n\nfunction readTableName(parser: Parser, options: ParserOptions, metadata: Metadata, callback: (tableName?: string | string[]) => void) {\n if (metadata.type.hasTableName) {\n if (options.tdsVersion >= '7_2') {\n parser.readUInt8((numberOfTableNameParts) => {\n const tableName: string[] = [];\n\n let i = 0;\n function next(done: () => void) {\n if (numberOfTableNameParts === i) {\n return done();\n }\n\n parser.readUsVarChar((part) => {\n tableName.push(part);\n\n i++;\n\n next(done);\n });\n }\n\n next(() => {\n callback(tableName);\n });\n });\n } else {\n parser.readUsVarChar(callback);\n }\n } else {\n callback(undefined);\n }\n}\n\nfunction readColumnName(parser: Parser, options: ParserOptions, index: number, metadata: Metadata, callback: (colName: string) => void) {\n parser.readBVarChar((colName) => {\n if (options.columnNameReplacer) {\n callback(options.columnNameReplacer(colName, index, metadata));\n } else if (options.camelCaseColumns) {\n callback(colName.replace(/^[A-Z]/, function(s) {\n return s.toLowerCase();\n }));\n } else {\n callback(colName);\n }\n });\n}\n\nfunction readColumn(parser: Parser, options: ParserOptions, index: number, callback: (column: ColumnMetadata) => void) {\n metadataParse(parser, options, (metadata) => {\n readTableName(parser, options, metadata, (tableName) => {\n readColumnName(parser, options, index, metadata, (colName) => {\n callback({\n userType: metadata.userType,\n flags: metadata.flags,\n type: metadata.type,\n collation: metadata.collation,\n precision: metadata.precision,\n scale: metadata.scale,\n udtInfo: metadata.udtInfo,\n dataLength: metadata.dataLength,\n schema: metadata.schema,\n colName: colName,\n tableName: tableName\n });\n });\n });\n });\n}\n\nasync function colMetadataParser(parser: Parser): Promise<ColMetadataToken> {\n while (parser.buffer.length - parser.position < 2) {\n await parser.streamBuffer.waitForChunk();\n }\n\n const columnCount = parser.buffer.readUInt16LE(parser.position);\n parser.position += 2;\n\n const columns: ColumnMetadata[] = [];\n for (let i = 0; i < columnCount; i++) {\n let column: ColumnMetadata;\n\n readColumn(parser, parser.options, i, (c) => {\n column = c;\n });\n\n while (parser.suspended) {\n await parser.streamBuffer.waitForChunk();\n\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n }\n\n columns.push(column!);\n }\n\n return new ColMetadataToken(columns);\n}\n\nexport default colMetadataParser;\nmodule.exports = colMetadataParser;\n"],"mappings":"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"}
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.doneInProcParser = doneInProcParser;
7
7
  exports.doneParser = doneParser;
8
8
  exports.doneProcParser = doneProcParser;
9
-
10
9
  var _token = require("./token");
11
-
12
10
  // s2.2.7.5/6/7
11
+
13
12
  const STATUS = {
14
13
  MORE: 0x0001,
15
14
  ERROR: 0x0002,
@@ -19,7 +18,6 @@ const STATUS = {
19
18
  ATTN: 0x0020,
20
19
  SRVERROR: 0x0100
21
20
  };
22
-
23
21
  function parseToken(parser, options, callback) {
24
22
  parser.readUInt16LE(status => {
25
23
  const more = !!(status & STATUS.MORE);
@@ -38,7 +36,6 @@ function parseToken(parser, options, callback) {
38
36
  curCmd: curCmd
39
37
  });
40
38
  };
41
-
42
39
  if (options.tdsVersion < '7_2') {
43
40
  parser.readUInt32LE(next);
44
41
  } else {
@@ -49,22 +46,19 @@ function parseToken(parser, options, callback) {
49
46
  });
50
47
  });
51
48
  }
52
-
53
49
  function doneParser(parser, options, callback) {
54
50
  parseToken(parser, options, data => {
55
51
  callback(new _token.DoneToken(data));
56
52
  });
57
53
  }
58
-
59
54
  function doneInProcParser(parser, options, callback) {
60
55
  parseToken(parser, options, data => {
61
56
  callback(new _token.DoneInProcToken(data));
62
57
  });
63
58
  }
64
-
65
59
  function doneProcParser(parser, options, callback) {
66
60
  parseToken(parser, options, data => {
67
61
  callback(new _token.DoneProcToken(data));
68
62
  });
69
63
  }
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFUVVMiLCJNT1JFIiwiRVJST1IiLCJJTlhBQ1QiLCJDT1VOVCIsIkFUVE4iLCJTUlZFUlJPUiIsInBhcnNlVG9rZW4iLCJwYXJzZXIiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJyZWFkVUludDE2TEUiLCJzdGF0dXMiLCJtb3JlIiwic3FsRXJyb3IiLCJyb3dDb3VudFZhbGlkIiwiYXR0ZW50aW9uIiwic2VydmVyRXJyb3IiLCJjdXJDbWQiLCJuZXh0Iiwicm93Q291bnQiLCJ1bmRlZmluZWQiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwicmVhZEJpZ1VJbnQ2NExFIiwiTnVtYmVyIiwiZG9uZVBhcnNlciIsImRhdGEiLCJEb25lVG9rZW4iLCJkb25lSW5Qcm9jUGFyc2VyIiwiRG9uZUluUHJvY1Rva2VuIiwiZG9uZVByb2NQYXJzZXIiLCJEb25lUHJvY1Rva2VuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2RvbmUtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIsIHsgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyBEb25lVG9rZW4sIERvbmVJblByb2NUb2tlbiwgRG9uZVByb2NUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG4vLyBzMi4yLjcuNS82LzdcblxuY29uc3QgU1RBVFVTID0ge1xuICBNT1JFOiAweDAwMDEsXG4gIEVSUk9SOiAweDAwMDIsXG4gIC8vIFRoaXMgYml0IGlzIG5vdCB5ZXQgaW4gdXNlIGJ5IFNRTCBTZXJ2ZXIsIHNvIGlzIG5vdCBleHBvc2VkIGluIHRoZSByZXR1cm5lZCB0b2tlblxuICBJTlhBQ1Q6IDB4MDAwNCxcbiAgQ09VTlQ6IDB4MDAxMCxcbiAgQVRUTjogMHgwMDIwLFxuICBTUlZFUlJPUjogMHgwMTAwXG59O1xuXG5pbnRlcmZhY2UgVG9rZW5EYXRhIHtcbiAgbW9yZTogYm9vbGVhbjtcbiAgc3FsRXJyb3I6IGJvb2xlYW47XG4gIGF0dGVudGlvbjogYm9vbGVhbjtcbiAgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGN1ckNtZDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRva2VuKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKGRhdGE6IFRva2VuRGF0YSkgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQxNkxFKChzdGF0dXMpID0+IHtcbiAgICBjb25zdCBtb3JlID0gISEoc3RhdHVzICYgU1RBVFVTLk1PUkUpO1xuICAgIGNvbnN0IHNxbEVycm9yID0gISEoc3RhdHVzICYgU1RBVFVTLkVSUk9SKTtcbiAgICBjb25zdCByb3dDb3VudFZhbGlkID0gISEoc3RhdHVzICYgU1RBVFVTLkNPVU5UKTtcbiAgICBjb25zdCBhdHRlbnRpb24gPSAhIShzdGF0dXMgJiBTVEFUVVMuQVRUTik7XG4gICAgY29uc3Qgc2VydmVyRXJyb3IgPSAhIShzdGF0dXMgJiBTVEFUVVMuU1JWRVJST1IpO1xuXG4gICAgcGFyc2VyLnJlYWRVSW50MTZMRSgoY3VyQ21kKSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gKHJvd0NvdW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIG1vcmU6IG1vcmUsXG4gICAgICAgICAgc3FsRXJyb3I6IHNxbEVycm9yLFxuICAgICAgICAgIGF0dGVudGlvbjogYXR0ZW50aW9uLFxuICAgICAgICAgIHNlcnZlckVycm9yOiBzZXJ2ZXJFcnJvcixcbiAgICAgICAgICByb3dDb3VudDogcm93Q291bnRWYWxpZCA/IHJvd0NvdW50IDogdW5kZWZpbmVkLFxuICAgICAgICAgIGN1ckNtZDogY3VyQ21kXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICAgIHBhcnNlci5yZWFkVUludDMyTEUobmV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZXIucmVhZEJpZ1VJbnQ2NExFKChyb3dDb3VudCkgPT4ge1xuICAgICAgICAgIG5leHQoTnVtYmVyKHJvd0NvdW50KSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvbmVQYXJzZXIocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IERvbmVUb2tlbikgPT4gdm9pZCkge1xuICBwYXJzZVRva2VuKHBhcnNlciwgb3B0aW9ucywgKGRhdGEpID0+IHtcbiAgICBjYWxsYmFjayhuZXcgRG9uZVRva2VuKGRhdGEpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb25lSW5Qcm9jUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VUb2tlbihwYXJzZXIsIG9wdGlvbnMsIChkYXRhKSA9PiB7XG4gICAgY2FsbGJhY2sobmV3IERvbmVJblByb2NUb2tlbihkYXRhKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVByb2NQYXJzZXIocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IERvbmVQcm9jVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VUb2tlbihwYXJzZXIsIG9wdGlvbnMsIChkYXRhKSA9PiB7XG4gICAgY2FsbGJhY2sobmV3IERvbmVQcm9jVG9rZW4oZGF0YSkpO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0E7O0FBRUE7QUFFQSxNQUFNQSxNQUFNLEdBQUc7RUFDYkMsSUFBSSxFQUFFLE1BRE87RUFFYkMsS0FBSyxFQUFFLE1BRk07RUFHYjtFQUNBQyxNQUFNLEVB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
64
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiU1RBVFVTIiwiTU9SRSIsIkVSUk9SIiwiSU5YQUNUIiwiQ09VTlQiLCJBVFROIiwiU1JWRVJST1IiLCJwYXJzZVRva2VuIiwicGFyc2VyIiwib3B0aW9ucyIsImNhbGxiYWNrIiwicmVhZFVJbnQxNkxFIiwic3RhdHVzIiwibW9yZSIsInNxbEVycm9yIiwicm93Q291bnRWYWxpZCIsImF0dGVudGlvbiIsInNlcnZlckVycm9yIiwiY3VyQ21kIiwibmV4dCIsInJvd0NvdW50IiwidW5kZWZpbmVkIiwidGRzVmVyc2lvbiIsInJlYWRVSW50MzJMRSIsInJlYWRCaWdVSW50NjRMRSIsIk51bWJlciIsImRvbmVQYXJzZXIiLCJkYXRhIiwiRG9uZVRva2VuIiwiZG9uZUluUHJvY1BhcnNlciIsIkRvbmVJblByb2NUb2tlbiIsImRvbmVQcm9jUGFyc2VyIiwiRG9uZVByb2NUb2tlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9kb25lLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2VyLCB7IFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgRG9uZVRva2VuLCBEb25lSW5Qcm9jVG9rZW4sIERvbmVQcm9jVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuLy8gczIuMi43LjUvNi83XG5cbmNvbnN0IFNUQVRVUyA9IHtcbiAgTU9SRTogMHgwMDAxLFxuICBFUlJPUjogMHgwMDAyLFxuICAvLyBUaGlzIGJpdCBpcyBub3QgeWV0IGluIHVzZSBieSBTUUwgU2VydmVyLCBzbyBpcyBub3QgZXhwb3NlZCBpbiB0aGUgcmV0dXJuZWQgdG9rZW5cbiAgSU5YQUNUOiAweDAwMDQsXG4gIENPVU5UOiAweDAwMTAsXG4gIEFUVE46IDB4MDAyMCxcbiAgU1JWRVJST1I6IDB4MDEwMFxufTtcblxuaW50ZXJmYWNlIFRva2VuRGF0YSB7XG4gIG1vcmU6IGJvb2xlYW47XG4gIHNxbEVycm9yOiBib29sZWFuO1xuICBhdHRlbnRpb246IGJvb2xlYW47XG4gIHNlcnZlckVycm9yOiBib29sZWFuO1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjdXJDbWQ6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcGFyc2VUb2tlbihwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucywgY2FsbGJhY2s6IChkYXRhOiBUb2tlbkRhdGEpID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50MTZMRSgoc3RhdHVzKSA9PiB7XG4gICAgY29uc3QgbW9yZSA9ICEhKHN0YXR1cyAmIFNUQVRVUy5NT1JFKTtcbiAgICBjb25zdCBzcWxFcnJvciA9ICEhKHN0YXR1cyAmIFNUQVRVUy5FUlJPUik7XG4gICAgY29uc3Qgcm93Q291bnRWYWxpZCA9ICEhKHN0YXR1cyAmIFNUQVRVUy5DT1VOVCk7XG4gICAgY29uc3QgYXR0ZW50aW9uID0gISEoc3RhdHVzICYgU1RBVFVTLkFUVE4pO1xuICAgIGNvbnN0IHNlcnZlckVycm9yID0gISEoc3RhdHVzICYgU1RBVFVTLlNSVkVSUk9SKTtcblxuICAgIHBhcnNlci5yZWFkVUludDE2TEUoKGN1ckNtZCkgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IChyb3dDb3VudDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICBtb3JlOiBtb3JlLFxuICAgICAgICAgIHNxbEVycm9yOiBzcWxFcnJvcixcbiAgICAgICAgICBhdHRlbnRpb246IGF0dGVudGlvbixcbiAgICAgICAgICBzZXJ2ZXJFcnJvcjogc2VydmVyRXJyb3IsXG4gICAgICAgICAgcm93Q291bnQ6IHJvd0NvdW50VmFsaWQgPyByb3dDb3VudCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBjdXJDbWQ6IGN1ckNtZFxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGlmIChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJykge1xuICAgICAgICBwYXJzZXIucmVhZFVJbnQzMkxFKG5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VyLnJlYWRCaWdVSW50NjRMRSgocm93Q291bnQpID0+IHtcbiAgICAgICAgICBuZXh0KE51bWJlcihyb3dDb3VudCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb25lUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKHRva2VuOiBEb25lVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VUb2tlbihwYXJzZXIsIG9wdGlvbnMsIChkYXRhKSA9PiB7XG4gICAgY2FsbGJhY2sobmV3IERvbmVUb2tlbihkYXRhKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZUluUHJvY1BhcnNlcihwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucywgY2FsbGJhY2s6ICh0b2tlbjogRG9uZUluUHJvY1Rva2VuKSA9PiB2b2lkKSB7XG4gIHBhcnNlVG9rZW4ocGFyc2VyLCBvcHRpb25zLCAoZGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKG5ldyBEb25lSW5Qcm9jVG9rZW4oZGF0YSkpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvbmVQcm9jUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKHRva2VuOiBEb25lUHJvY1Rva2VuKSA9PiB2b2lkKSB7XG4gIHBhcnNlVG9rZW4ocGFyc2VyLCBvcHRpb25zLCAoZGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKG5ldyBEb25lUHJvY1Rva2VuKGRhdGEpKTtcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUE7O0FBRUEsTUFBTUMsTUFBTSxHQUFHO0VBQ2JDLElBQUksRUFBRSxNQUFN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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done-token-parser.js","names":["_token","require","STATUS","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","parseToken","parser","options","callback","readUInt16LE","status","more","sqlError","rowCountValid","attention","serverError","curCmd","next","rowCount","undefined","tdsVersion","readUInt32LE","readBigUInt64LE","Number","doneParser","data","DoneToken","doneInProcParser","DoneInProcToken","doneProcParser","DoneProcToken"],"sources":["../../src/token/done-token-parser.ts"],"sourcesContent":["import Parser, { ParserOptions } from './stream-parser';\nimport { DoneToken, DoneInProcToken, DoneProcToken } from './token';\n\n// s2.2.7.5/6/7\n\nconst STATUS = {\n MORE: 0x0001,\n ERROR: 0x0002,\n // This bit is not yet in use by SQL Server, so is not exposed in the returned token\n INXACT: 0x0004,\n COUNT: 0x0010,\n ATTN: 0x0020,\n SRVERROR: 0x0100\n};\n\ninterface TokenData {\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n}\n\nfunction parseToken(parser: Parser, options: ParserOptions, callback: (data: TokenData) => void) {\n parser.readUInt16LE((status) => {\n const more = !!(status & STATUS.MORE);\n const sqlError = !!(status & STATUS.ERROR);\n const rowCountValid = !!(status & STATUS.COUNT);\n const attention = !!(status & STATUS.ATTN);\n const serverError = !!(status & STATUS.SRVERROR);\n\n parser.readUInt16LE((curCmd) => {\n const next = (rowCount: number) => {\n callback({\n more: more,\n sqlError: sqlError,\n attention: attention,\n serverError: serverError,\n rowCount: rowCountValid ? rowCount : undefined,\n curCmd: curCmd\n });\n };\n\n if (options.tdsVersion < '7_2') {\n parser.readUInt32LE(next);\n } else {\n parser.readBigUInt64LE((rowCount) => {\n next(Number(rowCount));\n });\n }\n });\n });\n}\n\nexport function doneParser(parser: Parser, options: ParserOptions, callback: (token: DoneToken) => void) {\n parseToken(parser, options, (data) => {\n callback(new DoneToken(data));\n });\n}\n\nexport function doneInProcParser(parser: Parser, options: ParserOptions, callback: (token: DoneInProcToken) => void) {\n parseToken(parser, options, (data) => {\n callback(new DoneInProcToken(data));\n });\n}\n\nexport function doneProcParser(parser: Parser, options: ParserOptions, callback: (token: DoneProcToken) => void) {\n parseToken(parser, options, (data) => {\n callback(new DoneProcToken(data));\n });\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA;;AAEA,MAAMC,MAAM,GAAG;EACbC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,MAAM;EACb;EACAC,MAAM,EAAE,MAAM;EACdC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE;AACZ,CAAC;AAWD,SAASC,UAAUA,CAACC,MAAc,EAAEC,OAAsB,EAAEC,QAAmC,EAAE;EAC/FF,MAAM,CAACG,YAAY,CAAEC,MAAM,IAAK;IAC9B,MAAMC,IAAI,GAAG,CAAC,EAAED,MAAM,GAAGZ,MAAM,CAACC,IAAI,CAAC;IACrC,MAAMa,QAAQ,GAAG,CAAC,EAAEF,MAAM,GAAGZ,MAAM,CAACE,KAAK,CAAC;IAC1C,MAAMa,aAAa,GAAG,CAAC,EAAEH,MAAM,GAAGZ,MAAM,CAACI,KAAK,CAAC;IAC/C,MAAMY,SAAS,GAAG,CAAC,EAAEJ,MAAM,GAAGZ,MAAM,CAACK,IAAI,CAAC;IAC1C,MAAMY,WAAW,GAAG,CAAC,EAAEL,MAAM,GAAGZ,MAAM,CAACM,QAAQ,CAAC;IAEhDE,MAAM,CAACG,YAAY,CAAEO,MAAM,IAAK;MAC9B,MAAMC,IAAI,GAAIC,QAAgB,IAAK;QACjCV,QAAQ,CAAC;UACPG,IAAI,EAAEA,IAAI;UACVC,QAAQ,EAAEA,QAAQ;UAClBE,SAAS,EAAEA,SAAS;UACpBC,WAAW,EAAEA,WAAW;UACxBG,QAAQ,EAAEL,aAAa,GAAGK,QAAQ,GAAGC,SAAS;UAC9CH,MAAM,EAAEA;QACV,CAAC,CAAC;MACJ,CAAC;MAED,IAAIT,OAAO,CAACa,UAAU,GAAG,KAAK,EAAE;QAC9Bd,MAAM,CAACe,YAAY,CAACJ,IAAI,CAAC;MAC3B,CAAC,MAAM;QACLX,MAAM,CAACgB,eAAe,CAAEJ,QAAQ,IAAK;UACnCD,IAAI,CAACM,MAAM,CAACL,QAAQ,CAAC,CAAC;QACxB,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEO,SAASM,UAAUA,CAAClB,MAAc,EAAEC,OAAsB,EAAEC,QAAoC,EAAE;EACvGH,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAGkB,IAAI,IAAK;IACpCjB,QAAQ,CAAC,IAAIkB,gBAAS,CAACD,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC;AACJ;AAEO,SAASE,gBAAgBA,CAACrB,MAAc,EAAEC,OAAsB,EAAEC,QAA0C,EAAE;EACnHH,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAGkB,IAAI,IAAK;IACpCjB,QAAQ,CAAC,IAAIoB,sBAAe,CAACH,IAAI,CAAC,CAAC;EACrC,CAAC,CAAC;AACJ;AAEO,SAASI,cAAcA,CAACvB,MAAc,EAAEC,OAAsB,EAAEC,QAAwC,EAAE;EAC/GH,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAGkB,IAAI,IAAK;IACpCjB,QAAQ,CAAC,IAAIsB,oBAAa,CAACL,IAAI,CAAC,CAAC;EACnC,CAAC,CAAC;AACJ"}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _collation = require("../collation");
9
-
10
8
  var _token = require("./token");
11
-
12
9
  const types = {
13
10
  1: {
14
11
  name: 'DATABASE',
@@ -58,7 +55,6 @@ const types = {
58
55
  event: 'routingChange'
59
56
  }
60
57
  };
61
-
62
58
  function readNewAndOldValue(parser, length, type, callback) {
63
59
  switch (type.name) {
64
60
  case 'DATABASE':
@@ -71,22 +67,17 @@ function readNewAndOldValue(parser, length, type, callback) {
71
67
  switch (type.name) {
72
68
  case 'PACKET_SIZE':
73
69
  return callback(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)));
74
-
75
70
  case 'DATABASE':
76
71
  return callback(new _token.DatabaseEnvChangeToken(newValue, oldValue));
77
-
78
72
  case 'LANGUAGE':
79
73
  return callback(new _token.LanguageEnvChangeToken(newValue, oldValue));
80
-
81
74
  case 'CHARSET':
82
75
  return callback(new _token.CharsetEnvChangeToken(newValue, oldValue));
83
-
84
76
  case 'DATABASE_MIRRORING_PARTNER':
85
77
  return callback(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue));
86
78
  }
87
79
  });
88
80
  });
89
-
90
81
  case 'SQL_COLLATION':
91
82
  case 'BEGIN_TXN':
92
83
  case 'COMMIT_TXN':
@@ -101,22 +92,17 @@ function readNewAndOldValue(parser, length, type, callback) {
101
92
  const oldCollation = oldValue.length ? _collation.Collation.fromBuffer(oldValue) : undefined;
102
93
  return callback(new _token.CollationChangeToken(newCollation, oldCollation));
103
94
  }
104
-
105
95
  case 'BEGIN_TXN':
106
96
  return callback(new _token.BeginTransactionEnvChangeToken(newValue, oldValue));
107
-
108
97
  case 'COMMIT_TXN':
109
98
  return callback(new _token.CommitTransactionEnvChangeToken(newValue, oldValue));
110
-
111
99
  case 'ROLLBACK_TXN':
112
100
  return callback(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue));
113
-
114
101
  case 'RESET_CONNECTION':
115
102
  return callback(new _token.ResetConnectionEnvChangeToken(newValue, oldValue));
116
103
  }
117
104
  });
118
105
  });
119
-
120
106
  case 'ROUTING_CHANGE':
121
107
  return parser.readUInt16LE(valueLength => {
122
108
  // Routing Change:
@@ -126,14 +112,12 @@ function readNewAndOldValue(parser, length, type, callback) {
126
112
  // Bytes 6-*: Server name in unicode characters
127
113
  parser.readBuffer(valueLength, routePacket => {
128
114
  const protocol = routePacket.readUInt8(0);
129
-
130
115
  if (protocol !== 0) {
131
116
  throw new Error('Unknown protocol byte in routing change event');
132
117
  }
133
-
134
118
  const port = routePacket.readUInt16LE(1);
135
- const serverLen = routePacket.readUInt16LE(3); // 2 bytes per char, starting at offset 5
136
-
119
+ const serverLen = routePacket.readUInt16LE(3);
120
+ // 2 bytes per char, starting at offset 5
137
121
  const server = routePacket.toString('ucs2', 5, 5 + serverLen * 2);
138
122
  const newValue = {
139
123
  protocol: protocol,
@@ -147,37 +131,32 @@ function readNewAndOldValue(parser, length, type, callback) {
147
131
  });
148
132
  });
149
133
  });
150
-
151
134
  default:
152
- console.error('Tedious > Unsupported ENVCHANGE type ' + type.name); // skip unknown bytes
153
-
135
+ console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);
136
+ // skip unknown bytes
154
137
  parser.readBuffer(length - 1, () => {
155
138
  callback(undefined);
156
139
  });
157
140
  }
158
141
  }
159
-
160
142
  function envChangeParser(parser, _options, callback) {
161
143
  parser.readUInt16LE(length => {
162
144
  parser.readUInt8(typeNumber => {
163
145
  const type = types[typeNumber];
164
-
165
146
  if (!type) {
166
- console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber); // skip unknown bytes
167
-
147
+ console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);
148
+ // skip unknown bytes
168
149
  return parser.readBuffer(length - 1, () => {
169
150
  callback(undefined);
170
151
  });
171
152
  }
172
-
173
153
  readNewAndOldValue(parser, length, type, token => {
174
154
  callback(token);
175
155
  });
176
156
  });
177
157
  });
178
158
  }
179
-
180
159
  var _default = envChangeParser;
181
160
  exports.default = _default;
182
161
  module.exports = envChangeParser;
183
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0eXBlcyIsIm5hbWUiLCJldmVudCIsInJlYWROZXdBbmRPbGRWYWx1ZSIsInBhcnNlciIsImxlbmd0aCIsInR5cGUiLCJjYWxsYmFjayIsInJlYWRCVmFyQ2hhciIsIm5ld1ZhbHVlIiwib2xkVmFsdWUiLCJQYWNrZXRTaXplRW52Q2hhbmdlVG9rZW4iLCJwYXJzZUludCIsIkRhdGFiYXNlRW52Q2hhbmdlVG9rZW4iLCJMYW5ndWFnZUVudkNoYW5nZVRva2VuIiwiQ2hhcnNldEVudkNoYW5nZVRva2VuIiwiRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4iLCJyZWFkQlZhckJ5dGUiLCJuZXdDb2xsYXRpb24iLCJDb2xsYXRpb24iLCJmcm9tQnVmZmVyIiwidW5kZWZpbmVkIiwib2xkQ29sbGF0aW9uIiwiQ29sbGF0aW9uQ2hhbmdlVG9rZW4iLCJCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJyZWFkVUludDE2TEUiLCJ2YWx1ZUxlbmd0aCIsInJlYWRCdWZmZXIiLCJyb3V0ZVBhY2tldCIsInByb3RvY29sIiwicmVhZFVJbnQ4IiwiRXJyb3IiLCJwb3J0Iiwic2VydmVyTGVuIiwic2VydmVyIiwidG9TdHJpbmciLCJvbGRWYWx1ZUxlbmd0aCIsIlJvdXRpbmdFbnZDaGFuZ2VUb2tlbiIsImNvbnNvbGUiLCJlcnJvciIsImVudkNoYW5nZVBhcnNlciIsIl9vcHRpb25zIiwidHlwZU51bWJlciIsInRva2VuIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9lbnYtY2hhbmdlLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2VyLCB7IFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi4vY29sbGF0aW9uJztcblxuaW1wb3J0IHtcbiAgRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbixcbiAgTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbixcbiAgQ2hhcnNldEVudkNoYW5nZVRva2VuLFxuICBQYWNrZXRTaXplRW52Q2hhbmdlVG9rZW4sXG4gIEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuLFxuICBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbixcbiAgUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJvdXRpbmdFbnZDaGFuZ2VUb2tlbixcbiAgQ29sbGF0aW9uQ2hhbmdlVG9rZW5cbn0gZnJvbSAnLi90b2tlbic7XG5cbnR5cGUgRW52Q2hhbmdlVG9rZW4gPVxuICBEYXRhYmFzZUVudkNoYW5nZVRva2VuIHxcbiAgTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbiB8XG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbiB8XG4gIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiB8XG4gIEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiB8XG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiB8XG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIHxcbiAgUm91dGluZ0VudkNoYW5nZVRva2VuIHxcbiAgQ29sbGF0aW9uQ2hhbmdlVG9rZW47XG5cbmNvbnN0IHR5cGVzOiB7IFtrZXk6IG51bWJlcl06IHsgbmFtZTogc3RyaW5nLCBldmVudD86IHN0cmluZyB9fSA9IHtcbiAgMToge1xuICAgIG5hbWU6ICdEQVRBQkFTRScsXG4gICAgZXZlbnQ6ICdkYXRhYmFzZUNoYW5nZSdcbiAgfSxcbiAgMjoge1xuICAgIG5hbWU6ICdMQU5HVUFHRScsXG4gICAgZXZlbnQ6ICdsYW5ndWFnZUNoYW5nZSdcbiAgfSxcbiAgMzoge1xuICAgIG5hbWU6ICdDSEFSU0VUJyxcbiAgICBldmVudDogJ2NoYXJzZXRDaGFuZ2UnXG4gIH0sXG4gIDQ6IHtcbiAgICBuYW1lOiAnUEFDS0VUX1NJWkUnLFxuICAgIGV2ZW50OiAncGFja2V0U2l6ZUNoYW5nZSdcbiAgfSxcbiAgNzoge1xuICAgIG5hbWU6ICdTUUxfQ09MTEFUSU9OJyxcbiAgICBldmVudDogJ3NxbENvbGxhdGlvbkNoYW5nZSdcbiAgfSxcbiAgODoge1xuICAgIG5hbWU6ICdCRUdJTl9UWE4nLFxuICAgIGV2ZW50OiAnYmVnaW5UcmFuc2FjdGlvbidcbiAgfSxcbiAgOToge1xuICAgIG5hbWU6ICdDT01NSVRfVFhOJyxcbiAgICBldmVudDogJ2NvbW1pdFRyYW5zYWN0aW9uJ1xuICB9LFxuICAxMDoge1xuICAgIG5hbWU6ICdST0xMQkFDS19UWE4nLFxuICAgIGV2ZW50OiAncm9sbGJhY2tUcmFuc2FjdGlvbidcbiAgfSxcbiAgMTM6IHtcbiAgICBuYW1lOiAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInLFxuICAgIGV2ZW50OiAncGFydG5lck5vZGUnXG4gIH0sXG4gIDE3OiB7XG4gICAgbmFtZTogJ1RYTl9FTkRFRCdcbiAgfSxcbiAgMTg6IHtcbiAgICBuYW1lOiAnUkVTRVRfQ09OTkVDVElPTicsXG4gICAgZXZlbnQ6ICdyZXNldENvbm5lY3Rpb24nXG4gIH0sXG4gIDIwOiB7XG4gICAgbmFtZTogJ1JPVVRJTkdfQ0hBTkdFJyxcbiAgICBldmVudDogJ3JvdXRpbmdDaGFuZ2UnXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlYWROZXdBbmRPbGRWYWx1ZShwYXJzZXI6IFBhcnNlciwgbGVuZ3RoOiBudW1iZXIsIHR5cGU6IHsgbmFtZTogc3RyaW5nLCBldmVudD86IHN0cmluZyB9LCBjYWxsYmFjazogKHRva2VuOiBFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZCkgPT4gdm9pZCkge1xuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ0RBVEFCQVNFJzpcbiAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgY2FzZSAnQ0hBUlNFVCc6XG4gICAgY2FzZSAnUEFDS0VUX1NJWkUnOlxuICAgIGNhc2UgJ0RBVEFCQVNFX01JUlJPUklOR19QQVJUTkVSJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZEJWYXJDaGFyKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBwYXJzZXIucmVhZEJWYXJDaGFyKChvbGRWYWx1ZSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdQQUNLRVRfU0laRSc6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKHBhcnNlSW50KG5ld1ZhbHVlKSwgcGFyc2VJbnQob2xkVmFsdWUpKSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ0RBVEFCQVNFJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBEYXRhYmFzZUVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuXG4gICAgICAgICAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcblxuICAgICAgICAgICAgY2FzZSAnQ0hBUlNFVCc6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgQ2hhcnNldEVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuXG4gICAgICAgICAgICBjYXNlICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUic6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnU1FMX0NPTExBVElPTic6XG4gICAgY2FzZSAnQkVHSU5fVFhOJzpcbiAgICBjYXNlICdDT01NSVRfVFhOJzpcbiAgICBjYXNlICdST0xMQkFDS19UWE4nOlxuICAgIGNhc2UgJ1JFU0VUX0NPTk5FQ1RJT04nOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkQlZhckJ5dGUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIHBhcnNlci5yZWFkQlZhckJ5dGUoKG9sZFZhbHVlKSA9PiB7XG4gICAgICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1NRTF9DT0xMQVRJT04nOiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0NvbGxhdGlvbiA9IG5ld1ZhbHVlLmxlbmd0aCA/IENvbGxhdGlvbi5mcm9tQnVmZmVyKG5ld1ZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgY29uc3Qgb2xkQ29sbGF0aW9uID0gb2xkVmFsdWUubGVuZ3RoID8gQ29sbGF0aW9uLmZyb21CdWZmZXIob2xkVmFsdWUpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgQ29sbGF0aW9uQ2hhbmdlVG9rZW4obmV3Q29sbGF0aW9uLCBvbGRDb2xsYXRpb24pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnQkVHSU5fVFhOJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ0NPTU1JVF9UWE4nOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ1JPTExCQUNLX1RYTic6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuXG4gICAgICAgICAgICBjYXNlICdSRVNFVF9DT05ORUNUSU9OJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBjYXNlICdST1VUSU5HX0NIQU5HRSc6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgodmFsdWVMZW5ndGgpID0+IHtcbiAgICAgICAgLy8gUm91dGluZyBDaGFuZ2U6XG4gICAgICAgIC8vIEJ5dGUgMTogUHJvdG9jb2wgKG11c3QgYmUgMClcbiAgICAgICAgLy8gQnl0ZXMgMi0zIChVU0hPUlQpOiBQb3J0IG51bWJlclxuICAgICAgICAvLyBCeXRlcyA0LTUgKFVTSE9SVCk6IExlbmd0aCBvZiBzZXJ2ZXIgZGF0YSBpbiB1bmljb2RlICgyYnl0ZSBjaGFycylcbiAgICAgICAgLy8gQnl0ZXMgNi0qOiBTZXJ2ZXIgbmFtZSBpbiB1bmljb2RlIGNoYXJhY3RlcnNcbiAgICAgICAgcGFyc2VyLnJlYWRCdWZmZXIodmFsdWVMZW5ndGgsIChyb3V0ZVBhY2tldCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb3RvY29sID0gcm91dGVQYWNrZXQucmVhZFVJbnQ4KDApO1xuXG4gICAgICAgICAgaWYgKHByb3RvY29sICE9PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJvdG9jb2wgYnl0ZSBpbiByb3V0aW5nIGNoYW5nZSBldmVudCcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHBvcnQgPSByb3V0ZVBhY2tldC5yZWFkVUludDE2TEUoMSk7XG4gICAgICAgICAgY29uc3Qgc2VydmVyTGVuID0gcm91dGVQYWNrZXQucmVhZFVJbnQxNkxFKDMpO1xuICAgICAgICAgIC8vIDIgYnl0ZXMgcGVyIGNoYXIsIHN0YXJ0aW5nIGF0IG9mZnNldCA1XG4gICAgICAgICAgY29uc3Qgc2VydmVyID0gcm91dGVQYWNrZXQudG9TdHJpbmcoJ3VjczInLCA1LCA1ICsgKHNlcnZlckxlbiAqIDIpKTtcblxuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0ge1xuICAgICAgICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgICAgIHNlcnZlcjogc2VydmVyXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHBhcnNlci5yZWFkVUludDE2TEUoKG9sZFZhbHVlTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICBwYXJzZXIucmVhZEJ1ZmZlcihvbGRWYWx1ZUxlbmd0aCwgKG9sZFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBSb3V0aW5nRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICBjb25zb2xlLmVycm9yKCdUZWRpb3VzID4gVW5zdXBwb3J0ZWQgRU5WQ0hBTkdFIHR5cGUgJyArIHR5cGUubmFtZSk7XG4gICAgICAvLyBza2lwIHVua25vd24gYnl0ZXNcbiAgICAgIHBhcnNlci5yZWFkQnVmZmVyKGxlbmd0aCAtIDEsICgpID0+IHtcbiAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVudkNoYW5nZVBhcnNlcihwYXJzZXI6IFBhcnNlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IEVudkNoYW5nZVRva2VuIHwgdW5kZWZpbmVkKSA9PiB2b2lkKSB7XG4gIHBhcnNlci5yZWFkVUludDE2TEUoKGxlbmd0aCkgPT4ge1xuICAgIHBhcnNlci5yZWFkVUludDgoKHR5cGVOdW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlc1t0eXBlTnVtYmVyXTtcblxuICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZU51bWJlcik7XG4gICAgICAgIC8vIHNraXAgdW5rbm93biBieXRlc1xuICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRCdWZmZXIobGVuZ3RoIC0gMSwgKCkgPT4ge1xuICAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZWFkTmV3QW5kT2xkVmFsdWUocGFyc2VyLCBsZW5ndGgsIHR5cGUsICh0b2tlbikgPT4ge1xuICAgICAgICBjYWxsYmFjayh0b2tlbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVudkNoYW5nZVBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZW52Q2hhbmdlUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBRUE7O0FBMkJBLE1BQU1BLEtBQXlELEdBQUc7RUFDaEUsR0FBRztJQUNEQyxJQUFJLEVBQUUsVUFETDtJQUVEQyxLQUFLLEVBQUU7RUFGTixDQUQ2RDtFQUtoRSxHQUFHO0lBQ0RELElBQUksRUFBRSxVQURMO0lBRURDLEtBQUssRUFBRTtFQUZOLENBTDZEO0VBU2hFLEdBQUc7SUFDREQsSUFBSSxFQUFFLFNBREw7SUFFREMsS0FBSyxFQUFFO0VBRk4sQ0FUNkQ7RUFhaEUsR0FBRztJQUNERCxJQUFJLEVBQUUsYUFETDtJQUVEQyxLQUFL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
162
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl90b2tlbiIsInR5cGVzIiwibmFtZSIsImV2ZW50IiwicmVhZE5ld0FuZE9sZFZhbHVlIiwicGFyc2VyIiwibGVuZ3RoIiwidHlwZSIsImNhbGxiYWNrIiwicmVhZEJWYXJDaGFyIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsIlBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiIsInBhcnNlSW50IiwiRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiIsIkxhbmd1YWdlRW52Q2hhbmdlVG9rZW4iLCJDaGFyc2V0RW52Q2hhbmdlVG9rZW4iLCJEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiIsInJlYWRCVmFyQnl0ZSIsIm5ld0NvbGxhdGlvbiIsIkNvbGxhdGlvbiIsImZyb21CdWZmZXIiLCJ1bmRlZmluZWQiLCJvbGRDb2xsYXRpb24iLCJDb2xsYXRpb25DaGFuZ2VUb2tlbiIsIkJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIkNvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbiIsInJlYWRVSW50MTZMRSIsInZhbHVlTGVuZ3RoIiwicmVhZEJ1ZmZlciIsInJvdXRlUGFja2V0IiwicHJvdG9jb2wiLCJyZWFkVUludDgiLCJFcnJvciIsInBvcnQiLCJzZXJ2ZXJMZW4iLCJzZXJ2ZXIiLCJ0b1N0cmluZyIsIm9sZFZhbHVlTGVuZ3RoIiwiUm91dGluZ0VudkNoYW5nZVRva2VuIiwiY29uc29sZSIsImVycm9yIiwiZW52Q2hhbmdlUGFyc2VyIiwiX29wdGlvbnMiLCJ0eXBlTnVtYmVyIiwidG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2Vudi1jaGFuZ2UtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIsIHsgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyBDb2xsYXRpb24gfSBmcm9tICcuLi9jb2xsYXRpb24nO1xuXG5pbXBvcnQge1xuICBEYXRhYmFzZUVudkNoYW5nZVRva2VuLFxuICBMYW5ndWFnZUVudkNoYW5nZVRva2VuLFxuICBDaGFyc2V0RW52Q2hhbmdlVG9rZW4sXG4gIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbixcbiAgQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuLFxuICBDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuLFxuICBSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIERhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuLFxuICBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgUm91dGluZ0VudkNoYW5nZVRva2VuLFxuICBDb2xsYXRpb25DaGFuZ2VUb2tlblxufSBmcm9tICcuL3Rva2VuJztcblxudHlwZSBFbnZDaGFuZ2VUb2tlbiA9XG4gIERhdGFiYXNlRW52Q2hhbmdlVG9rZW4gfFxuICBMYW5ndWFnZUVudkNoYW5nZVRva2VuIHxcbiAgQ2hhcnNldEVudkNoYW5nZVRva2VuIHxcbiAgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuIHxcbiAgQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIHxcbiAgQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiB8XG4gIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiB8XG4gIERhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuIHxcbiAgUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBSb3V0aW5nRW52Q2hhbmdlVG9rZW4gfFxuICBDb2xsYXRpb25DaGFuZ2VUb2tlbjtcblxuY29uc3QgdHlwZXM6IHsgW2tleTogbnVtYmVyXTogeyBuYW1lOiBzdHJpbmcsIGV2ZW50Pzogc3RyaW5nIH19ID0ge1xuICAxOiB7XG4gICAgbmFtZTogJ0RBVEFCQVNFJyxcbiAgICBldmVudDogJ2RhdGFiYXNlQ2hhbmdlJ1xuICB9LFxuICAyOiB7XG4gICAgbmFtZTogJ0xBTkdVQUdFJyxcbiAgICBldmVudDogJ2xhbmd1YWdlQ2hhbmdlJ1xuICB9LFxuICAzOiB7XG4gICAgbmFtZTogJ0NIQVJTRVQnLFxuICAgIGV2ZW50OiAnY2hhcnNldENoYW5nZSdcbiAgfSxcbiAgNDoge1xuICAgIG5hbWU6ICdQQUNLRVRfU0laRScsXG4gICAgZXZlbnQ6ICdwYWNrZXRTaXplQ2hhbmdlJ1xuICB9LFxuICA3OiB7XG4gICAgbmFtZTogJ1NRTF9DT0xMQVRJT04nLFxuICAgIGV2ZW50OiAnc3FsQ29sbGF0aW9uQ2hhbmdlJ1xuICB9LFxuICA4OiB7XG4gICAgbmFtZTogJ0JFR0lOX1RYTicsXG4gICAgZXZlbnQ6ICdiZWdpblRyYW5zYWN0aW9uJ1xuICB9LFxuICA5OiB7XG4gICAgbmFtZTogJ0NPTU1JVF9UWE4nLFxuICAgIGV2ZW50OiAnY29tbWl0VHJhbnNhY3Rpb24nXG4gIH0sXG4gIDEwOiB7XG4gICAgbmFtZTogJ1JPTExCQUNLX1RYTicsXG4gICAgZXZlbnQ6ICdyb2xsYmFja1RyYW5zYWN0aW9uJ1xuICB9LFxuICAxMzoge1xuICAgIG5hbWU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUicsXG4gICAgZXZlbnQ6ICdwYXJ0bmVyTm9kZSdcbiAgfSxcbiAgMTc6IHtcbiAgICBuYW1lOiAnVFhOX0VOREVEJ1xuICB9LFxuICAxODoge1xuICAgIG5hbWU6ICdSRVNFVF9DT05ORUNUSU9OJyxcbiAgICBldmVudDogJ3Jlc2V0Q29ubmVjdGlvbidcbiAgfSxcbiAgMjA6IHtcbiAgICBuYW1lOiAnUk9VVElOR19DSEFOR0UnLFxuICAgIGV2ZW50OiAncm91dGluZ0NoYW5nZSdcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVhZE5ld0FuZE9sZFZhbHVlKHBhcnNlcjogUGFyc2VyLCBsZW5ndGg6IG51bWJlciwgdHlwZTogeyBuYW1lOiBzdHJpbmcsIGV2ZW50Pzogc3RyaW5nIH0sIGNhbGxiYWNrOiAodG9rZW46IEVudkNoYW5nZVRva2VuIHwgdW5kZWZpbmVkKSA9PiB2b2lkKSB7XG4gIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgY2FzZSAnREFUQUJBU0UnOlxuICAgIGNhc2UgJ0xBTkdVQUdFJzpcbiAgICBjYXNlICdDSEFSU0VUJzpcbiAgICBjYXNlICdQQUNLRVRfU0laRSc6XG4gICAgY2FzZSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkQlZhckNoYXIoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKG9sZFZhbHVlKSA9PiB7XG4gICAgICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1BBQ0tFVF9TSVpFJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBQYWNrZXRTaXplRW52Q2hhbmdlVG9rZW4ocGFyc2VJbnQobmV3VmFsdWUpLCBwYXJzZUludChvbGRWYWx1ZSkpKTtcblxuICAgICAgICAgICAgY2FzZSAnREFUQUJBU0UnOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IERhdGFiYXNlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ0xBTkdVQUdFJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBMYW5ndWFnZUVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuXG4gICAgICAgICAgICBjYXNlICdDSEFSU0VUJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBDaGFyc2V0RW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ0RBVEFCQVNFX01JUlJPUklOR19QQVJUTkVSJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBjYXNlICdTUUxfQ09MTEFUSU9OJzpcbiAgICBjYXNlICdCRUdJTl9UWE4nOlxuICAgIGNhc2UgJ0NPTU1JVF9UWE4nOlxuICAgIGNhc2UgJ1JPTExCQUNLX1RYTic6XG4gICAgY2FzZSAnUkVTRVRfQ09OTkVDVElPTic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRCVmFyQnl0ZSgobmV3VmFsdWUpID0+IHtcbiAgICAgICAgcGFyc2VyLnJlYWRCVmFyQnl0ZSgob2xkVmFsdWUpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnU1FMX0NPTExBVElPTic6IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3Q29sbGF0aW9uID0gbmV3VmFsdWUubGVuZ3RoID8gQ29sbGF0aW9uLmZyb21CdWZmZXIobmV3VmFsdWUpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBjb25zdCBvbGRDb2xsYXRpb24gPSBvbGRWYWx1ZS5sZW5ndGggPyBDb2xsYXRpb24uZnJvbUJ1ZmZlcihvbGRWYWx1ZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBDb2xsYXRpb25DaGFuZ2VUb2tlbihuZXdDb2xsYXRpb24sIG9sZENvbGxhdGlvbikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdCRUdJTl9UWE4nOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcblxuICAgICAgICAgICAgY2FzZSAnQ09NTUlUX1RYTic6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcblxuICAgICAgICAgICAgY2FzZSAnUk9MTEJBQ0tfVFhOJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ1JFU0VUX0NPTk5FQ1RJT04nOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1JPVVRJTkdfQ0hBTkdFJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQxNkxFKCh2YWx1ZUxlbmd0aCkgPT4ge1xuICAgICAgICAvLyBSb3V0aW5nIENoYW5nZTpcbiAgICAgICAgLy8gQnl0ZSAxOiBQcm90b2NvbCAobXVzdCBiZSAwKVxuICAgICAgICAvLyBCeXRlcyAyLTMgKFVTSE9SVCk6IFBvcnQgbnVtYmVyXG4gICAgICAgIC8vIEJ5dGVzIDQtNSAoVVNIT1JUKTogTGVuZ3RoIG9mIHNlcnZlciBkYXRhIGluIHVuaWNvZGUgKDJieXRlIGNoYXJzKVxuICAgICAgICAvLyBCeXRlcyA2LSo6IFNlcnZlciBuYW1lIGluIHVuaWNvZGUgY2hhcmFjdGVyc1xuICAgICAgICBwYXJzZXIucmVhZEJ1ZmZlcih2YWx1ZUxlbmd0aCwgKHJvdXRlUGFja2V0KSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvdG9jb2wgPSByb3V0ZVBhY2tldC5yZWFkVUludDgoMCk7XG5cbiAgICAgICAgICBpZiAocHJvdG9jb2wgIT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcm90b2NvbCBieXRlIGluIHJvdXRpbmcgY2hhbmdlIGV2ZW50Jyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcG9ydCA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgxKTtcbiAgICAgICAgICBjb25zdCBzZXJ2ZXJMZW4gPSByb3V0ZVBhY2tldC5yZWFkVUludDE2TEUoMyk7XG4gICAgICAgICAgLy8gMiBieXRlcyBwZXIgY2hhciwgc3RhcnRpbmcgYXQgb2Zmc2V0IDVcbiAgICAgICAgICBjb25zdCBzZXJ2ZXIgPSByb3V0ZVBhY2tldC50b1N0cmluZygndWNzMicsIDUsIDUgKyAoc2VydmVyTGVuICogMikpO1xuXG4gICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB7XG4gICAgICAgICAgICBwcm90b2NvbDogcHJvdG9jb2wsXG4gICAgICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICAgICAgc2VydmVyOiBzZXJ2ZXJcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcGFyc2VyLnJlYWRVSW50MTZMRSgob2xkVmFsdWVMZW5ndGgpID0+IHtcbiAgICAgICAgICAgIHBhcnNlci5yZWFkQnVmZmVyKG9sZFZhbHVlTGVuZ3RoLCAob2xkVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IFJvdXRpbmdFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZS5uYW1lKTtcbiAgICAgIC8vIHNraXAgdW5rbm93biBieXRlc1xuICAgICAgcGFyc2VyLnJlYWRCdWZmZXIobGVuZ3RoIC0gMSwgKCkgPT4ge1xuICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW52Q2hhbmdlUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucywgY2FsbGJhY2s6ICh0b2tlbjogRW52Q2hhbmdlVG9rZW4gfCB1bmRlZmluZWQpID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50MTZMRSgobGVuZ3RoKSA9PiB7XG4gICAgcGFyc2VyLnJlYWRVSW50OCgodHlwZU51bWJlcikgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVzW3R5cGVOdW1iZXJdO1xuXG4gICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignVGVkaW91cyA+IFVuc3VwcG9ydGVkIEVOVkNIQU5HRSB0eXBlICcgKyB0eXBlTnVtYmVyKTtcbiAgICAgICAgLy8gc2tpcCB1bmtub3duIGJ5dGVzXG4gICAgICAgIHJldHVybiBwYXJzZXIucmVhZEJ1ZmZlcihsZW5ndGggLSAxLCAoKSA9PiB7XG4gICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJlYWROZXdBbmRPbGRWYWx1ZShwYXJzZXIsIGxlbmd0aCwgdHlwZSwgKHRva2VuKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHRva2VuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW52Q2hhbmdlUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBlbnZDaGFuZ2VQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQTJCQSxNQUFNRSxLQUF5RCxHQUFHO0VBQ2hFLENBQUMsRUFBRTtJQUNEQyxJQUFJLEVBQUUsVUFBVTtJQUNoQkMsS0FBSyxFQUFFO0VBQ1QsQ0FBQztFQUNELENBQUMsRUFBRTtJQUNERCxJQUFJLEVBQUUsVUFBVTtJQUNoQkMsS0FBSyxFQUFFO0VBQ1QsQ0FB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-change-token-parser.js","names":["_collation","require","_token","types","name","event","readNewAndOldValue","parser","length","type","callback","readBVarChar","newValue","oldValue","PacketSizeEnvChangeToken","parseInt","DatabaseEnvChangeToken","LanguageEnvChangeToken","CharsetEnvChangeToken","DatabaseMirroringPartnerEnvChangeToken","readBVarByte","newCollation","Collation","fromBuffer","undefined","oldCollation","CollationChangeToken","BeginTransactionEnvChangeToken","CommitTransactionEnvChangeToken","RollbackTransactionEnvChangeToken","ResetConnectionEnvChangeToken","readUInt16LE","valueLength","readBuffer","routePacket","protocol","readUInt8","Error","port","serverLen","server","toString","oldValueLength","RoutingEnvChangeToken","console","error","envChangeParser","_options","typeNumber","token","_default","exports","default","module"],"sources":["../../src/token/env-change-token-parser.ts"],"sourcesContent":["import Parser, { ParserOptions } from './stream-parser';\nimport { Collation } from '../collation';\n\nimport {\n DatabaseEnvChangeToken,\n LanguageEnvChangeToken,\n CharsetEnvChangeToken,\n PacketSizeEnvChangeToken,\n BeginTransactionEnvChangeToken,\n CommitTransactionEnvChangeToken,\n RollbackTransactionEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n ResetConnectionEnvChangeToken,\n RoutingEnvChangeToken,\n CollationChangeToken\n} from './token';\n\ntype EnvChangeToken =\n DatabaseEnvChangeToken |\n LanguageEnvChangeToken |\n CharsetEnvChangeToken |\n PacketSizeEnvChangeToken |\n BeginTransactionEnvChangeToken |\n CommitTransactionEnvChangeToken |\n RollbackTransactionEnvChangeToken |\n DatabaseMirroringPartnerEnvChangeToken |\n ResetConnectionEnvChangeToken |\n RoutingEnvChangeToken |\n CollationChangeToken;\n\nconst types: { [key: number]: { name: string, event?: string }} = {\n 1: {\n name: 'DATABASE',\n event: 'databaseChange'\n },\n 2: {\n name: 'LANGUAGE',\n event: 'languageChange'\n },\n 3: {\n name: 'CHARSET',\n event: 'charsetChange'\n },\n 4: {\n name: 'PACKET_SIZE',\n event: 'packetSizeChange'\n },\n 7: {\n name: 'SQL_COLLATION',\n event: 'sqlCollationChange'\n },\n 8: {\n name: 'BEGIN_TXN',\n event: 'beginTransaction'\n },\n 9: {\n name: 'COMMIT_TXN',\n event: 'commitTransaction'\n },\n 10: {\n name: 'ROLLBACK_TXN',\n event: 'rollbackTransaction'\n },\n 13: {\n name: 'DATABASE_MIRRORING_PARTNER',\n event: 'partnerNode'\n },\n 17: {\n name: 'TXN_ENDED'\n },\n 18: {\n name: 'RESET_CONNECTION',\n event: 'resetConnection'\n },\n 20: {\n name: 'ROUTING_CHANGE',\n event: 'routingChange'\n }\n};\n\nfunction readNewAndOldValue(parser: Parser, length: number, type: { name: string, event?: string }, callback: (token: EnvChangeToken | undefined) => void) {\n switch (type.name) {\n case 'DATABASE':\n case 'LANGUAGE':\n case 'CHARSET':\n case 'PACKET_SIZE':\n case 'DATABASE_MIRRORING_PARTNER':\n return parser.readBVarChar((newValue) => {\n parser.readBVarChar((oldValue) => {\n switch (type.name) {\n case 'PACKET_SIZE':\n return callback(new PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)));\n\n case 'DATABASE':\n return callback(new DatabaseEnvChangeToken(newValue, oldValue));\n\n case 'LANGUAGE':\n return callback(new LanguageEnvChangeToken(newValue, oldValue));\n\n case 'CHARSET':\n return callback(new CharsetEnvChangeToken(newValue, oldValue));\n\n case 'DATABASE_MIRRORING_PARTNER':\n return callback(new DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue));\n }\n });\n });\n\n case 'SQL_COLLATION':\n case 'BEGIN_TXN':\n case 'COMMIT_TXN':\n case 'ROLLBACK_TXN':\n case 'RESET_CONNECTION':\n return parser.readBVarByte((newValue) => {\n parser.readBVarByte((oldValue) => {\n switch (type.name) {\n case 'SQL_COLLATION': {\n const newCollation = newValue.length ? Collation.fromBuffer(newValue) : undefined;\n const oldCollation = oldValue.length ? Collation.fromBuffer(oldValue) : undefined;\n\n return callback(new CollationChangeToken(newCollation, oldCollation));\n }\n\n case 'BEGIN_TXN':\n return callback(new BeginTransactionEnvChangeToken(newValue, oldValue));\n\n case 'COMMIT_TXN':\n return callback(new CommitTransactionEnvChangeToken(newValue, oldValue));\n\n case 'ROLLBACK_TXN':\n return callback(new RollbackTransactionEnvChangeToken(newValue, oldValue));\n\n case 'RESET_CONNECTION':\n return callback(new ResetConnectionEnvChangeToken(newValue, oldValue));\n }\n });\n });\n\n case 'ROUTING_CHANGE':\n return parser.readUInt16LE((valueLength) => {\n // Routing Change:\n // Byte 1: Protocol (must be 0)\n // Bytes 2-3 (USHORT): Port number\n // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)\n // Bytes 6-*: Server name in unicode characters\n parser.readBuffer(valueLength, (routePacket) => {\n const protocol = routePacket.readUInt8(0);\n\n if (protocol !== 0) {\n throw new Error('Unknown protocol byte in routing change event');\n }\n\n const port = routePacket.readUInt16LE(1);\n const serverLen = routePacket.readUInt16LE(3);\n // 2 bytes per char, starting at offset 5\n const server = routePacket.toString('ucs2', 5, 5 + (serverLen * 2));\n\n const newValue = {\n protocol: protocol,\n port: port,\n server: server\n };\n\n parser.readUInt16LE((oldValueLength) => {\n parser.readBuffer(oldValueLength, (oldValue) => {\n callback(new RoutingEnvChangeToken(newValue, oldValue));\n });\n });\n });\n });\n\n default:\n console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);\n // skip unknown bytes\n parser.readBuffer(length - 1, () => {\n callback(undefined);\n });\n }\n}\n\nfunction envChangeParser(parser: Parser, _options: ParserOptions, callback: (token: EnvChangeToken | undefined) => void) {\n parser.readUInt16LE((length) => {\n parser.readUInt8((typeNumber) => {\n const type = types[typeNumber];\n\n if (!type) {\n console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);\n // skip unknown bytes\n return parser.readBuffer(length - 1, () => {\n callback(undefined);\n });\n }\n\n readNewAndOldValue(parser, length, type, (token) => {\n callback(token);\n });\n });\n });\n}\n\nexport default envChangeParser;\nmodule.exports = envChangeParser;\n"],"mappings":"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"}
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _token = require("./token");
9
-
10
8
  const FEATURE_ID = {
11
9
  SESSIONRECOVERY: 0x01,
12
10
  FEDAUTH: 0x02,
@@ -16,39 +14,32 @@ const FEATURE_ID = {
16
14
  UTF8_SUPPORT: 0x0A,
17
15
  TERMINATOR: 0xFF
18
16
  };
19
-
20
17
  function featureExtAckParser(parser, _options, callback) {
21
18
  let fedAuth;
22
19
  let utf8Support;
23
-
24
20
  function next() {
25
21
  parser.readUInt8(featureId => {
26
22
  if (featureId === FEATURE_ID.TERMINATOR) {
27
23
  return callback(new _token.FeatureExtAckToken(fedAuth, utf8Support));
28
24
  }
29
-
30
25
  parser.readUInt32LE(featureAckDataLen => {
31
26
  parser.readBuffer(featureAckDataLen, featureData => {
32
27
  switch (featureId) {
33
28
  case FEATURE_ID.FEDAUTH:
34
29
  fedAuth = featureData;
35
30
  break;
36
-
37
31
  case FEATURE_ID.UTF8_SUPPORT:
38
32
  utf8Support = !!featureData[0];
39
33
  break;
40
34
  }
41
-
42
35
  next();
43
36
  });
44
37
  });
45
38
  });
46
39
  }
47
-
48
40
  next();
49
41
  }
50
-
51
42
  var _default = featureExtAckParser;
52
43
  exports.default = _default;
53
44
  module.exports = featureExtAckParser;
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRUFUVVJFX0lEIiwiU0VTU0lPTlJFQ09WRVJZIiwiRkVEQVVUSCIsIkNPTFVNTkVOQ1JZUFRJT04iLCJHTE9CQUxUUkFOU0FDVElPTlMiLCJBWlVSRVNRTFNVUFBPUlQiLCJVVEY4X1NVUFBPUlQiLCJURVJNSU5BVE9SIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsInBhcnNlciIsIl9vcHRpb25zIiwiY2FsbGJhY2siLCJmZWRBdXRoIiwidXRmOFN1cHBvcnQiLCJuZXh0IiwicmVhZFVJbnQ4IiwiZmVhdHVyZUlkIiwiRmVhdHVyZUV4dEFja1Rva2VuIiwicmVhZFVJbnQzMkxFIiwiZmVhdHVyZUFja0RhdGFMZW4iLCJyZWFkQnVmZmVyIiwiZmVhdHVyZURhdGEiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlciwgeyBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgRmVhdHVyZUV4dEFja1Rva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmNvbnN0IEZFQVRVUkVfSUQgPSB7XG4gIFNFU1NJT05SRUNPVkVSWTogMHgwMSxcbiAgRkVEQVVUSDogMHgwMixcbiAgQ09MVU1ORU5DUllQVElPTjogMHgwNCxcbiAgR0xPQkFMVFJBTlNBQ1RJT05TOiAweDA1LFxuICBBWlVSRVNRTFNVUFBPUlQ6IDB4MDgsXG4gIFVURjhfU1VQUE9SVDogMHgwQSxcbiAgVEVSTUlOQVRPUjogMHhGRlxufTtcblxuZnVuY3Rpb24gZmVhdHVyZUV4dEFja1BhcnNlcihwYXJzZXI6IFBhcnNlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IEZlYXR1cmVFeHRBY2tUb2tlbikgPT4gdm9pZCkge1xuICBsZXQgZmVkQXV0aDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuICBsZXQgdXRmOFN1cHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICBwYXJzZXIucmVhZFVJbnQ4KChmZWF0dXJlSWQpID0+IHtcbiAgICAgIGlmIChmZWF0dXJlSWQgPT09IEZFQVRVUkVfSUQuVEVSTUlOQVRPUikge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEZlYXR1cmVFeHRBY2tUb2tlbihmZWRBdXRoLCB1dGY4U3VwcG9ydCkpO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucmVhZFVJbnQzMkxFKChmZWF0dXJlQWNrRGF0YUxlbikgPT4ge1xuICAgICAgICBwYXJzZXIucmVhZEJ1ZmZlcihmZWF0dXJlQWNrRGF0YUxlbiwgKGZlYXR1cmVEYXRhKSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChmZWF0dXJlSWQpIHtcbiAgICAgICAgICAgIGNhc2UgRkVBVFVSRV9JRC5GRURBVVRIOlxuICAgICAgICAgICAgICBmZWRBdXRoID0gZmVhdHVyZURhdGE7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGRUFUVVJFX0lELlVURjhfU1VQUE9SVDpcbiAgICAgICAgICAgICAgdXRmOFN1cHBvcnQgPSAhIWZlYXR1cmVEYXRhWzBdO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmV4dCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmZWF0dXJlRXh0QWNrUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBmZWF0dXJlRXh0QWNrUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBRUEsTUFBTUEsVUFBVSxHQUFHO0VBQ2pCQyxlQUFlLEVBQUUsSUFEQTtFQUVqQkMsT0FBTyxFQUFFLElBRlE7RUFHakJDLGdCQUFnQixFQUFFLElBSEQ7RUFJakJDLGtCQUFrQixFQUFFLElBSkg7RUFLakJDLGVBQWUsRUFBRSxJQUxBO0VBTWpCQyxZQUFZLEVBQUUsSUFORztFQU9qQkMsVUFBVSxFQUFFO0FBUEssQ0FBbkI7O0FBVUEsU0FBU0MsbUJBQVQsQ0FBNkJDLE1BQTdCLEVBQTZDQyxRQUE3QyxFQUFzRUMsUUFBdEUsRUFBcUg7RUFDbkgsSUFBSUMsT0FBSjtFQUNBLElBQUlDLFdBQUo7O0VBRUEsU0FBU0MsSUFBVCxHQUFnQjtJQUNkTCxNQUFNLENBQUNNLFNBQVAsQ0FBa0JDLFNBQUQsSUFBZTtNQUM5QixJQUFJQSxTQUFTLEtBQUtoQixVQUFVLENBQUNPLFVBQTdCLEVBQXlDO1FBQ3ZDLE9BQU9JLFFBQVEsQ0FBQyxJQUFJTSx5QkFBSixDQUF1QkwsT0FBdkIsRUFBZ0NDLFdBQWhDLENBQUQsQ0FBZjtNQUNEOztNQUVESixNQUFNLENBQUNTLFlBQVAsQ0FBcUJDLGlCQUFELElBQXVCO1FBQ3pDVixNQUFNLENBQUNXLFVBQVAsQ0FBa0JELGlCQUFsQixFQUFzQ0UsV0FBRCxJQUFpQjtVQUNwRCxRQUFRTCxTQUFSO1lBQ0UsS0FBS2hCLFVBQVUsQ0FBQ0UsT0FBaEI7Y0FDRVUsT0FBTyxHQUFHUyxXQUFWO2NBQ0E7O1lBQ0YsS0FBS3JCLFVBQVUsQ0FBQ00sWUFBaEI7Y0FDRU8sV0FBVyxHQUFHLENBQUMsQ0FBQ1EsV0FBVyxDQUFDLENBQUQsQ0FBM0I7Y0FDQTtVQU5KOztVQVFBUCxJQUFJO1FBQ0wsQ0FWRDtNQVdELENBWkQ7SUFhRCxDQWxCRDtFQW1CRDs7RUFFREEsSUFBSTtBQUNMOztlQUVjTixtQjs7QUFDZmMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZixtQkFBakIifQ==
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiRkVBVFVSRV9JRCIsIlNFU1NJT05SRUNPVkVSWSIsIkZFREFVVEgiLCJDT0xVTU5FTkNSWVBUSU9OIiwiR0xPQkFMVFJBTlNBQ1RJT05TIiwiQVpVUkVTUUxTVVBQT1JUIiwiVVRGOF9TVVBQT1JUIiwiVEVSTUlOQVRPUiIsImZlYXR1cmVFeHRBY2tQYXJzZXIiLCJwYXJzZXIiLCJfb3B0aW9ucyIsImNhbGxiYWNrIiwiZmVkQXV0aCIsInV0ZjhTdXBwb3J0IiwibmV4dCIsInJlYWRVSW50OCIsImZlYXR1cmVJZCIsIkZlYXR1cmVFeHRBY2tUb2tlbiIsInJlYWRVSW50MzJMRSIsImZlYXR1cmVBY2tEYXRhTGVuIiwicmVhZEJ1ZmZlciIsImZlYXR1cmVEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9mZWF0dXJlLWV4dC1hY2stcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIsIHsgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5cbmltcG9ydCB7IEZlYXR1cmVFeHRBY2tUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5jb25zdCBGRUFUVVJFX0lEID0ge1xuICBTRVNTSU9OUkVDT1ZFUlk6IDB4MDEsXG4gIEZFREFVVEg6IDB4MDIsXG4gIENPTFVNTkVOQ1JZUFRJT046IDB4MDQsXG4gIEdMT0JBTFRSQU5TQUNUSU9OUzogMHgwNSxcbiAgQVpVUkVTUUxTVVBQT1JUOiAweDA4LFxuICBVVEY4X1NVUFBPUlQ6IDB4MEEsXG4gIFRFUk1JTkFUT1I6IDB4RkZcbn07XG5cbmZ1bmN0aW9uIGZlYXR1cmVFeHRBY2tQYXJzZXIocGFyc2VyOiBQYXJzZXIsIF9vcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKHRva2VuOiBGZWF0dXJlRXh0QWNrVG9rZW4pID0+IHZvaWQpIHtcbiAgbGV0IGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgbGV0IHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgcGFyc2VyLnJlYWRVSW50OCgoZmVhdHVyZUlkKSA9PiB7XG4gICAgICBpZiAoZmVhdHVyZUlkID09PSBGRUFUVVJFX0lELlRFUk1JTkFUT1IpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBGZWF0dXJlRXh0QWNrVG9rZW4oZmVkQXV0aCwgdXRmOFN1cHBvcnQpKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VyLnJlYWRVSW50MzJMRSgoZmVhdHVyZUFja0RhdGFMZW4pID0+IHtcbiAgICAgICAgcGFyc2VyLnJlYWRCdWZmZXIoZmVhdHVyZUFja0RhdGFMZW4sIChmZWF0dXJlRGF0YSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoZmVhdHVyZUlkKSB7XG4gICAgICAgICAgICBjYXNlIEZFQVRVUkVfSUQuRkVEQVVUSDpcbiAgICAgICAgICAgICAgZmVkQXV0aCA9IGZlYXR1cmVEYXRhO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRkVBVFVSRV9JRC5VVEY4X1NVUFBPUlQ6XG4gICAgICAgICAgICAgIHV0ZjhTdXBwb3J0ID0gISFmZWF0dXJlRGF0YVswXTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5leHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZmVhdHVyZUV4dEFja1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVhdHVyZUV4dEFja1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsTUFBTUMsVUFBVSxHQUFHO0VBQ2pCQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsa0JBQWtCLEVBQUUsSUFBSTtFQUN4QkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxVQUFVLEVBQUU7QUFDZCxDQUFDO0FBRUQsU0FBU0MsbUJBQW1CQSxDQUFDQyxNQUFjLEVBQUVDLFFBQXVCLEVBQUVDLFFBQTZDLEVBQUU7RUFDbkgsSUFBSUMsT0FBMkI7RUFDL0IsSUFBSUMsV0FBZ0M7RUFFcEMsU0FBU0MsSUFBSUEsQ0FBQSxFQUFHO0lBQ2RMLE1BQU0sQ0FBQ00sU0FBUyxDQUFFQyxTQUFTLElBQUs7TUFDOUIsSUFBSUEsU0FBUyxLQUFLaEIsVUFBVSxDQUFDTyxVQUFVLEVBQUU7UUFDdkMsT0FBT0ksUUFBUSxDQUFDLElBQUlNLHlCQUFrQixDQUFDTCxPQUFPLEVBQUVDLFdBQVcsQ0FBQyxDQUFDO01BQy9EO01BRUFKLE1BQU0sQ0FBQ1MsWUFBWSxDQUFFQyxpQkFBaUIsSUFBSztRQUN6Q1YsTUFBTSxDQUFDVyxVQUFVLENBQUNELGlCQUFpQixFQUFHRSxXQUFXLElBQUs7VUFDcEQsUUFBUUwsU0FBUztZQUNmLEtBQUtoQixVQUFVLENBQUNFLE9BQU87Y0FDckJVLE9BQU8sR0FBR1MsV0FBVztjQUNyQjtZQUNGLEtBQUtyQixVQUFVLENBQUNNLFlBQVk7Y0FDMUJPLFdBQVcsR0FBRyxDQUFDLENBQUNRLFdBQVcsQ0FBQyxDQUFDLENBQUM7Y0FDOUI7VUFDSjtVQUNBUCxJQUFJLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKO0VBRUFBLElBQUksQ0FBQyxDQUFDO0FBQ1I7QUFBQyxJQUFBUSxRQUFBLEdBRWNkLG1CQUFtQjtBQUFBZSxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUNsQ0csTUFBTSxDQUFDRixPQUFPLEdBQUdmLG1CQUFtQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-ext-ack-parser.js","names":["_token","require","FEATURE_ID","SESSIONRECOVERY","FEDAUTH","COLUMNENCRYPTION","GLOBALTRANSACTIONS","AZURESQLSUPPORT","UTF8_SUPPORT","TERMINATOR","featureExtAckParser","parser","_options","callback","fedAuth","utf8Support","next","readUInt8","featureId","FeatureExtAckToken","readUInt32LE","featureAckDataLen","readBuffer","featureData","_default","exports","default","module"],"sources":["../../src/token/feature-ext-ack-parser.ts"],"sourcesContent":["import Parser, { ParserOptions } from './stream-parser';\n\nimport { FeatureExtAckToken } from './token';\n\nconst FEATURE_ID = {\n SESSIONRECOVERY: 0x01,\n FEDAUTH: 0x02,\n COLUMNENCRYPTION: 0x04,\n GLOBALTRANSACTIONS: 0x05,\n AZURESQLSUPPORT: 0x08,\n UTF8_SUPPORT: 0x0A,\n TERMINATOR: 0xFF\n};\n\nfunction featureExtAckParser(parser: Parser, _options: ParserOptions, callback: (token: FeatureExtAckToken) => void) {\n let fedAuth: Buffer | undefined;\n let utf8Support: boolean | undefined;\n\n function next() {\n parser.readUInt8((featureId) => {\n if (featureId === FEATURE_ID.TERMINATOR) {\n return callback(new FeatureExtAckToken(fedAuth, utf8Support));\n }\n\n parser.readUInt32LE((featureAckDataLen) => {\n parser.readBuffer(featureAckDataLen, (featureData) => {\n switch (featureId) {\n case FEATURE_ID.FEDAUTH:\n fedAuth = featureData;\n break;\n case FEATURE_ID.UTF8_SUPPORT:\n utf8Support = !!featureData[0];\n break;\n }\n next();\n });\n });\n });\n }\n\n next();\n}\n\nexport default featureExtAckParser;\nmodule.exports = featureExtAckParser;\n"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,UAAU,GAAG;EACjBC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,IAAI;EACbC,gBAAgB,EAAE,IAAI;EACtBC,kBAAkB,EAAE,IAAI;EACxBC,eAAe,EAAE,IAAI;EACrBC,YAAY,EAAE,IAAI;EAClBC,UAAU,EAAE;AACd,CAAC;AAED,SAASC,mBAAmBA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAA6C,EAAE;EACnH,IAAIC,OAA2B;EAC/B,IAAIC,WAAgC;EAEpC,SAASC,IAAIA,CAAA,EAAG;IACdL,MAAM,CAACM,SAAS,CAAEC,SAAS,IAAK;MAC9B,IAAIA,SAAS,KAAKhB,UAAU,CAACO,UAAU,EAAE;QACvC,OAAOI,QAAQ,CAAC,IAAIM,yBAAkB,CAACL,OAAO,EAAEC,WAAW,CAAC,CAAC;MAC/D;MAEAJ,MAAM,CAACS,YAAY,CAAEC,iBAAiB,IAAK;QACzCV,MAAM,CAACW,UAAU,CAACD,iBAAiB,EAAGE,WAAW,IAAK;UACpD,QAAQL,SAAS;YACf,KAAKhB,UAAU,CAACE,OAAO;cACrBU,OAAO,GAAGS,WAAW;cACrB;YACF,KAAKrB,UAAU,CAACM,YAAY;cAC1BO,WAAW,GAAG,CAAC,CAACQ,WAAW,CAAC,CAAC,CAAC;cAC9B;UACJ;UACAP,IAAI,CAAC,CAAC;QACR,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEAA,IAAI,CAAC,CAAC;AACR;AAAC,IAAAQ,QAAA,GAEcd,mBAAmB;AAAAe,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAClCG,MAAM,CAACF,OAAO,GAAGf,mBAAmB"}
@@ -4,14 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _token = require("./token");
9
-
10
8
  const FEDAUTHINFOID = {
11
9
  STSURL: 0x01,
12
10
  SPN: 0x02
13
11
  };
14
-
15
12
  function fedAuthInfoParser(parser, _options, callback) {
16
13
  parser.readUInt32LE(tokenLength => {
17
14
  parser.readBuffer(tokenLength, data => {
@@ -19,7 +16,6 @@ function fedAuthInfoParser(parser, _options, callback) {
19
16
  let offset = 0;
20
17
  const countOfInfoIDs = data.readUInt32LE(offset);
21
18
  offset += 4;
22
-
23
19
  for (let i = 0; i < countOfInfoIDs; i++) {
24
20
  const fedauthInfoID = data.readUInt8(offset);
25
21
  offset += 1;
@@ -27,28 +23,24 @@ function fedAuthInfoParser(parser, _options, callback) {
27
23
  offset += 4;
28
24
  const fedAuthInfoDataOffset = data.readUInt32LE(offset);
29
25
  offset += 4;
30
-
31
26
  switch (fedauthInfoID) {
32
27
  case FEDAUTHINFOID.SPN:
33
28
  spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
34
29
  break;
35
-
36
30
  case FEDAUTHINFOID.STSURL:
37
31
  stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
38
32
  break;
39
- // ignoring unknown fedauthinfo options
40
33
 
34
+ // ignoring unknown fedauthinfo options
41
35
  default:
42
36
  break;
43
37
  }
44
38
  }
45
-
46
39
  callback(new _token.FedAuthInfoToken(spn, stsurl));
47
40
  });
48
41
  });
49
42
  }
50
-
51
43
  var _default = fedAuthInfoParser;
52
44
  exports.default = _default;
53
45
  module.exports = fedAuthInfoParser;
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRURBVVRISU5GT0lEIiwiU1RTVVJMIiwiU1BOIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJwYXJzZXIiLCJfb3B0aW9ucyIsImNhbGxiYWNrIiwicmVhZFVJbnQzMkxFIiwidG9rZW5MZW5ndGgiLCJyZWFkQnVmZmVyIiwiZGF0YSIsInNwbiIsInN0c3VybCIsIm9mZnNldCIsImNvdW50T2ZJbmZvSURzIiwiaSIsImZlZGF1dGhJbmZvSUQiLCJyZWFkVUludDgiLCJmZWRBdXRoSW5mb0RhdGFMZW4iLCJmZWRBdXRoSW5mb0RhdGFPZmZzZXQiLCJ0b1N0cmluZyIsIkZlZEF1dGhJbmZvVG9rZW4iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2ZlZGF1dGgtaW5mby1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlciwgeyBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IEZlZEF1dGhJbmZvVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuY29uc3QgRkVEQVVUSElORk9JRCA9IHtcbiAgU1RTVVJMOiAweDAxLFxuICBTUE46IDB4MDJcbn07XG5cbmZ1bmN0aW9uIGZlZEF1dGhJbmZvUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucywgY2FsbGJhY2s6ICh0b2tlbjogRmVkQXV0aEluZm9Ub2tlbikgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQzMkxFKCh0b2tlbkxlbmd0aCkgPT4ge1xuICAgIHBhcnNlci5yZWFkQnVmZmVyKHRva2VuTGVuZ3RoLCAoZGF0YSkgPT4ge1xuICAgICAgbGV0IHNwbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgbGV0IG9mZnNldCA9IDA7XG5cbiAgICAgIGNvbnN0IGNvdW50T2ZJbmZvSURzID0gZGF0YS5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgICAgIG9mZnNldCArPSA0O1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50T2ZJbmZvSURzOyBpKyspIHtcbiAgICAgICAgY29uc3QgZmVkYXV0aEluZm9JRCA9IGRhdGEucmVhZFVJbnQ4KG9mZnNldCk7XG4gICAgICAgIG9mZnNldCArPSAxO1xuXG4gICAgICAgIGNvbnN0IGZlZEF1dGhJbmZvRGF0YUxlbiA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gICAgICAgIG9mZnNldCArPSA0O1xuXG4gICAgICAgIGNvbnN0IGZlZEF1dGhJbmZvRGF0YU9mZnNldCA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gICAgICAgIG9mZnNldCArPSA0O1xuXG4gICAgICAgIHN3aXRjaCAoZmVkYXV0aEluZm9JRCkge1xuICAgICAgICAgIGNhc2UgRkVEQVVUSElORk9JRC5TUE46XG4gICAgICAgICAgICBzcG4gPSBkYXRhLnRvU3RyaW5nKCd1Y3MyJywgZmVkQXV0aEluZm9EYXRhT2Zmc2V0LCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQgKyBmZWRBdXRoSW5mb0RhdGFMZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIEZFREFVVEhJTkZPSUQuU1RTVVJMOlxuICAgICAgICAgICAgc3RzdXJsID0gZGF0YS50b1N0cmluZygndWNzMicsIGZlZEF1dGhJbmZvRGF0YU9mZnNldCwgZmVkQXV0aEluZm9EYXRhT2Zmc2V0ICsgZmVkQXV0aEluZm9EYXRhTGVuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgLy8gaWdub3JpbmcgdW5rbm93biBmZWRhdXRoaW5mbyBvcHRpb25zXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKG5ldyBGZWRBdXRoSW5mb1Rva2VuKHNwbiwgc3RzdXJsKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmZWRBdXRoSW5mb1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVkQXV0aEluZm9QYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQSxNQUFNQSxhQUFhLEdBQUc7RUFDcEJDLE1BQU0sRUFBRSxJQURZO0VBRXBCQyxHQUFHLEVBQUU7QUFGZSxDQUF0Qjs7QUFLQSxTQUFTQyxpQkFBVCxDQUEyQkMsTUFBM0IsRUFBMkNDLFFBQTNDLEVBQW9FQyxRQUFwRSxFQUFpSDtFQUMvR0YsTUFBTSxDQUFDRyxZQUFQLENBQXFCQyxXQUFELElBQWlCO0lBQ25DSixNQUFNLENBQUNLLFVBQVAsQ0FBa0JELFdBQWxCLEVBQWdDRSxJQUFELElBQVU7TUFDdkMsSUFBSUMsR0FBSixFQUE2QkMsTUFBN0I7TUFFQSxJQUFJQyxNQUFNLEdBQUcsQ0FBYjtNQUVBLE1BQU1DLGNBQWMsR0FBR0osSUFBSSxDQUFDSCxZQUFMLENBQWtCTSxNQUFsQixDQUF2QjtNQUNBQSxNQUFNLElBQUksQ0FBVjs7TUFFQSxLQUFLLElBQUlFLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELGNBQXBCLEVBQW9DQyxDQUFDLEVBQXJDLEVBQXlDO1FBQ3ZDLE1BQU1DLGFBQWEsR0FBR04sSUFBSSxDQUFDTyxTQUFMLENBQWVKLE1BQWYsQ0FBdEI7UUFDQUEsTUFBTSxJQUFJLENBQVY7UUFFQSxNQUFNSyxrQkFBa0IsR0FBR1IsSUFBSSxDQUFDSCxZQUFMLENBQWtCTSxNQUFsQixDQUEzQjtRQUNBQSxNQUFNLElBQUksQ0FBVjtRQUVBLE1BQU1NLHFCQUFxQixHQUFHVCxJQUFJLENBQUNILFlBQUwsQ0FBa0JNLE1BQWxCLENBQTlCO1FBQ0FBLE1BQU0sSUFBSSxDQUFWOztRQUVBLFFBQVFHLGFBQVI7VUFDRSxLQUFLaEIsYUFBYSxDQUFDRSxHQUFuQjtZQUNFUyxHQUFHLEdBQUdELElBQUksQ0FBQ1UsUUFBTCxDQUFjLE1BQWQsRUFBc0JELHFCQUF0QixFQUE2Q0EscUJBQXFCLEdBQUdELGtCQUFyRSxDQUFOO1lBQ0E7O1VBRUYsS0FBS2xCLGFBQWEsQ0FBQ0MsTUFBbkI7WUFDRVcsTUFBTSxHQUFHRixJQUFJLENBQUNVLFFBQUwsQ0FBYyxNQUFkLEVBQXNCRCxxQkFBdEIsRUFBNkNBLHFCQUFxQixHQUFHRCxrQkFBckUsQ0FBVDtZQUNBO1VBRUY7O1VBQ0E7WUFDRTtRQVhKO01BYUQ7O01BRURaLFFBQVEsQ0FBQyxJQUFJZSx1QkFBSixDQUFxQlYsR0FBckIsRUFBMEJDLE1BQTFCLENBQUQsQ0FBUjtJQUNELENBbENEO0VBbUNELENBcENEO0FBcUNEOztlQUVjVCxpQjs7QUFDZm1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnBCLGlCQUFqQiJ9
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiRkVEQVVUSElORk9JRCIsIlNUU1VSTCIsIlNQTiIsImZlZEF1dGhJbmZvUGFyc2VyIiwicGFyc2VyIiwiX29wdGlvbnMiLCJjYWxsYmFjayIsInJlYWRVSW50MzJMRSIsInRva2VuTGVuZ3RoIiwicmVhZEJ1ZmZlciIsImRhdGEiLCJzcG4iLCJzdHN1cmwiLCJvZmZzZXQiLCJjb3VudE9mSW5mb0lEcyIsImkiLCJmZWRhdXRoSW5mb0lEIiwicmVhZFVJbnQ4IiwiZmVkQXV0aEluZm9EYXRhTGVuIiwiZmVkQXV0aEluZm9EYXRhT2Zmc2V0IiwidG9TdHJpbmciLCJGZWRBdXRoSW5mb1Rva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9mZWRhdXRoLWluZm8tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIsIHsgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyBGZWRBdXRoSW5mb1Rva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmNvbnN0IEZFREFVVEhJTkZPSUQgPSB7XG4gIFNUU1VSTDogMHgwMSxcbiAgU1BOOiAweDAyXG59O1xuXG5mdW5jdGlvbiBmZWRBdXRoSW5mb1BhcnNlcihwYXJzZXI6IFBhcnNlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IEZlZEF1dGhJbmZvVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50MzJMRSgodG9rZW5MZW5ndGgpID0+IHtcbiAgICBwYXJzZXIucmVhZEJ1ZmZlcih0b2tlbkxlbmd0aCwgKGRhdGEpID0+IHtcbiAgICAgIGxldCBzcG46IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RzdXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgIGxldCBvZmZzZXQgPSAwO1xuXG4gICAgICBjb25zdCBjb3VudE9mSW5mb0lEcyA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gICAgICBvZmZzZXQgKz0gNDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudE9mSW5mb0lEczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGZlZGF1dGhJbmZvSUQgPSBkYXRhLnJlYWRVSW50OChvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgKz0gMTtcblxuICAgICAgICBjb25zdCBmZWRBdXRoSW5mb0RhdGFMZW4gPSBkYXRhLnJlYWRVSW50MzJMRShvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgKz0gNDtcblxuICAgICAgICBjb25zdCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQgPSBkYXRhLnJlYWRVSW50MzJMRShvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgKz0gNDtcblxuICAgICAgICBzd2l0Y2ggKGZlZGF1dGhJbmZvSUQpIHtcbiAgICAgICAgICBjYXNlIEZFREFVVEhJTkZPSUQuU1BOOlxuICAgICAgICAgICAgc3BuID0gZGF0YS50b1N0cmluZygndWNzMicsIGZlZEF1dGhJbmZvRGF0YU9mZnNldCwgZmVkQXV0aEluZm9EYXRhT2Zmc2V0ICsgZmVkQXV0aEluZm9EYXRhTGVuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBGRURBVVRISU5GT0lELlNUU1VSTDpcbiAgICAgICAgICAgIHN0c3VybCA9IGRhdGEudG9TdHJpbmcoJ3VjczInLCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQsIGZlZEF1dGhJbmZvRGF0YU9mZnNldCArIGZlZEF1dGhJbmZvRGF0YUxlbik7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIC8vIGlnbm9yaW5nIHVua25vd24gZmVkYXV0aGluZm8gb3B0aW9uc1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjYWxsYmFjayhuZXcgRmVkQXV0aEluZm9Ub2tlbihzcG4sIHN0c3VybCkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZmVkQXV0aEluZm9QYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGZlZEF1dGhJbmZvUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxNQUFNQyxhQUFhLEdBQUc7RUFDcEJDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLEdBQUcsRUFBRTtBQUNQLENBQUM7QUFFRCxTQUFTQyxpQkFBaUJBLENBQUNDLE1BQWMsRUFBRUMsUUFBdUIsRUFBRUMsUUFBMkMsRUFBRTtFQUMvR0YsTUFBTSxDQUFDRyxZQUFZLENBQUVDLFdBQVcsSUFBSztJQUNuQ0osTUFBTSxDQUFDSyxVQUFVLENBQUNELFdBQVcsRUFBR0UsSUFBSSxJQUFLO01BQ3ZDLElBQUlDLEdBQXVCLEVBQUVDLE1BQTBCO01BRXZELElBQUlDLE1BQU0sR0FBRyxDQUFDO01BRWQsTUFBTUMsY0FBYyxHQUFHSixJQUFJLENBQUNILFlBQVksQ0FBQ00sTUFBTSxDQUFDO01BQ2hEQSxNQUFNLElBQUksQ0FBQztNQUVYLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRCxjQUFjLEVBQUVDLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLE1BQU1DLGFBQWEsR0FBR04sSUFBSSxDQUFDTyxTQUFTLENBQUNKLE1BQU0sQ0FBQztRQUM1Q0EsTUFBTSxJQUFJLENBQUM7UUFFWCxNQUFNSyxrQkFBa0IsR0FBR1IsSUFBSSxDQUFDSCxZQUFZLENBQUNNLE1BQU0sQ0FBQztRQUNwREEsTUFBTSxJQUFJLENBQUM7UUFFWCxNQUFNTSxxQkFBcUIsR0FBR1QsSUFBSSxDQUFDSCxZQUFZLENBQUNNLE1BQU0sQ0FBQztRQUN2REEsTUFBTSxJQUFJLENBQUM7UUFFWCxRQUFRRyxhQUFhO1VBQ25CLEtBQUtoQixhQUFhLENBQUNFLEdBQUc7WUFDcEJTLEdBQUcsR0FBR0QsSUFBSSxDQUFDVSxRQUFRLENBQUMsTUFBTSxFQUFFRCxxQkFBcUIsRUFBRUEscUJBQXFCLEdBQUdELGtCQUFrQixDQUFDO1lBQzlGO1VBRUYsS0FBS2xCLGFBQWEsQ0FBQ0MsTUFBTTtZQUN2QlcsTUFBTSxHQUFHRixJQUFJLENBQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUVELHFCQUFxQixFQUFFQSxxQkFBcUIsR0FBR0Qsa0JBQWtCLENBQUM7WUFDakc7O1VBRUY7VUFDQTtZQUNFO1FBQ0o7TUFDRjtNQUVBWixRQUFRLENBQUMsSUFBSWUsdUJBQWdCLENBQUNWLEdBQUcsRUFBRUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0o7QUFBQyxJQUFBVSxRQUFBLEdBRWNuQixpQkFBaUI7QUFBQW9CLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ2hDRyxNQUFNLENBQUNGLE9BQU8sR0FBR3BCLGlCQUFpQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fedauth-info-parser.js","names":["_token","require","FEDAUTHINFOID","STSURL","SPN","fedAuthInfoParser","parser","_options","callback","readUInt32LE","tokenLength","readBuffer","data","spn","stsurl","offset","countOfInfoIDs","i","fedauthInfoID","readUInt8","fedAuthInfoDataLen","fedAuthInfoDataOffset","toString","FedAuthInfoToken","_default","exports","default","module"],"sources":["../../src/token/fedauth-info-parser.ts"],"sourcesContent":["import Parser, { ParserOptions } from './stream-parser';\nimport { FedAuthInfoToken } from './token';\n\nconst FEDAUTHINFOID = {\n STSURL: 0x01,\n SPN: 0x02\n};\n\nfunction fedAuthInfoParser(parser: Parser, _options: ParserOptions, callback: (token: FedAuthInfoToken) => void) {\n parser.readUInt32LE((tokenLength) => {\n parser.readBuffer(tokenLength, (data) => {\n let spn: string | undefined, stsurl: string | undefined;\n\n let offset = 0;\n\n const countOfInfoIDs = data.readUInt32LE(offset);\n offset += 4;\n\n for (let i = 0; i < countOfInfoIDs; i++) {\n const fedauthInfoID = data.readUInt8(offset);\n offset += 1;\n\n const fedAuthInfoDataLen = data.readUInt32LE(offset);\n offset += 4;\n\n const fedAuthInfoDataOffset = data.readUInt32LE(offset);\n offset += 4;\n\n switch (fedauthInfoID) {\n case FEDAUTHINFOID.SPN:\n spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n case FEDAUTHINFOID.STSURL:\n stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n // ignoring unknown fedauthinfo options\n default:\n break;\n }\n }\n\n callback(new FedAuthInfoToken(spn, stsurl));\n });\n });\n}\n\nexport default fedAuthInfoParser;\nmodule.exports = fedAuthInfoParser;\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAAG;EACpBC,MAAM,EAAE,IAAI;EACZC,GAAG,EAAE;AACP,CAAC;AAED,SAASC,iBAAiBA,CAACC,MAAc,EAAEC,QAAuB,EAAEC,QAA2C,EAAE;EAC/GF,MAAM,CAACG,YAAY,CAAEC,WAAW,IAAK;IACnCJ,MAAM,CAACK,UAAU,CAACD,WAAW,EAAGE,IAAI,IAAK;MACvC,IAAIC,GAAuB,EAAEC,MAA0B;MAEvD,IAAIC,MAAM,GAAG,CAAC;MAEd,MAAMC,cAAc,GAAGJ,IAAI,CAACH,YAAY,CAACM,MAAM,CAAC;MAChDA,MAAM,IAAI,CAAC;MAEX,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,cAAc,EAAEC,CAAC,EAAE,EAAE;QACvC,MAAMC,aAAa,GAAGN,IAAI,CAACO,SAAS,CAACJ,MAAM,CAAC;QAC5CA,MAAM,IAAI,CAAC;QAEX,MAAMK,kBAAkB,GAAGR,IAAI,CAACH,YAAY,CAACM,MAAM,CAAC;QACpDA,MAAM,IAAI,CAAC;QAEX,MAAMM,qBAAqB,GAAGT,IAAI,CAACH,YAAY,CAACM,MAAM,CAAC;QACvDA,MAAM,IAAI,CAAC;QAEX,QAAQG,aAAa;UACnB,KAAKhB,aAAa,CAACE,GAAG;YACpBS,GAAG,GAAGD,IAAI,CAACU,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;YAC9F;UAEF,KAAKlB,aAAa,CAACC,MAAM;YACvBW,MAAM,GAAGF,IAAI,CAACU,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;YACjG;;UAEF;UACA;YACE;QACJ;MACF;MAEAZ,QAAQ,CAAC,IAAIe,uBAAgB,CAACV,GAAG,EAAEC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAAC,IAAAU,QAAA,GAEcnB,iBAAiB;AAAAoB,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAChCG,MAAM,CAACF,OAAO,GAAGpB,iBAAiB"}