tedious 16.1.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 +297 -536
  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 +13 -34
  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,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _intn = _interopRequireDefault(require("./intn"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  const DATA_LENGTH = Buffer.from([0x01]);
13
10
  const NULL_LENGTH = Buffer.from([0x00]);
14
11
  const TinyInt = {
@@ -18,50 +15,40 @@ const TinyInt = {
18
15
  declaration: function () {
19
16
  return 'tinyint';
20
17
  },
21
-
22
18
  generateTypeInfo() {
23
19
  return Buffer.from([_intn.default.id, 0x01]);
24
20
  },
25
-
26
21
  generateParameterLength(parameter, options) {
27
22
  if (parameter.value == null) {
28
23
  return NULL_LENGTH;
29
24
  }
30
-
31
25
  return DATA_LENGTH;
32
26
  },
33
-
34
27
  *generateParameterData(parameter, options) {
35
28
  if (parameter.value == null) {
36
29
  return;
37
30
  }
38
-
39
31
  const buffer = Buffer.alloc(1);
40
32
  buffer.writeUInt8(Number(parameter.value), 0);
41
33
  yield buffer;
42
34
  },
43
-
44
35
  validate: function (value) {
45
36
  if (value == null) {
46
37
  return null;
47
38
  }
48
-
49
39
  if (typeof value !== 'number') {
50
40
  value = Number(value);
51
41
  }
52
-
53
42
  if (isNaN(value)) {
54
43
  throw new TypeError('Invalid number.');
55
44
  }
56
-
57
45
  if (value < 0 || value > 255) {
58
46
  throw new TypeError('Value must be between 0 and 255, inclusive.');
59
47
  }
60
-
61
48
  return value | 0;
62
49
  }
63
50
  };
64
51
  var _default = TinyInt;
65
52
  exports.default = _default;
66
53
  module.exports = TinyInt;
67
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlRpbnlJbnQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiSW50TiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4IiwiTnVtYmVyIiwidmFsaWRhdGUiLCJpc05hTiIsIlR5cGVFcnJvciIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy90aW55aW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBJbnROIGZyb20gJy4vaW50bic7XG5cbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDFdKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgVGlueUludDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDMwLFxuICB0eXBlOiAnSU5UMScsXG4gIG5hbWU6ICdUaW55SW50JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICd0aW55aW50JztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbSW50Ti5pZCwgMHgwMV0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoMSk7XG4gICAgYnVmZmVyLndyaXRlVUludDgoTnVtYmVyKHBhcmFtZXRlci52YWx1ZSksIDApO1xuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMjU1KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1LCBpbmNsdXNpdmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIHwgMDtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlueUludDtcbm1vZHVsZS5leHBvcnRzID0gVGlueUludDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWSxDQUFDLElBQUQsQ0FBWixDQUFwQjtBQUNBLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFQLENBQVksQ0FBQyxJQUFELENBQVosQ0FBcEI7QUFFQSxNQUFNRSxPQUFpQixHQUFHO0VBQ3hCQyxFQUFFLEVBQUUsSUFEb0I7RUFFeEJDLElBQUksRUFBRSxNQUZrQjtFQUd4QkMsSUFBSSxFQUFFLFNBSGtCO0VBS3hCQyxXQUFXLEVBQUUsWUFBVztJQUN0QixPQUFPLFNBQVA7RUFDRCxDQVB1Qjs7RUFTeEJDLGdCQUFnQixHQUFHO0lBQ2pCLE9BQU9SLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLENBQUNRLGNBQUtMLEVBQU4sRUFBVSxJQUFWLENBQVosQ0FBUDtFQUNELENBWHVCOztFQWF4Qk0sdUJBQXVCLENBQUNDLFNBQUQsRUFBWUMsT0FBWixFQUFxQjtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQVYsSUFBbUIsSUFBdkIsRUFBNkI7TUFDM0IsT0FBT1gsV0FBUDtJQUNEOztJQUVELE9BQU9ILFdBQVA7RUFDRCxDQW5CdUI7O0VBcUJ4QixDQUFFZSxxQkFBRixDQUF3QkgsU0FBeEIsRUFBbUNDLE9BQW5DLEVBQTRDO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBVixJQUFtQixJQUF2QixFQUE2QjtNQUMzQjtJQUNEOztJQUVELE1BQU1FLE1BQU0sR0FBR2YsTUFBTSxDQUFDZ0IsS0FBUCxDQUFhLENBQWIsQ0FBZjtJQUNBRCxNQUFNLENBQUNFLFVBQVAsQ0FBa0JDLE1BQU0sQ0FBQ1AsU0FBUyxDQUFDRSxLQUFYLENBQXhCLEVBQTJDLENBQTNDO0lBQ0EsTUFBTUUsTUFBTjtFQUNELENBN0J1Qjs7RUErQnhCSSxRQUFRLEVBQUUsVUFBU04sS0FBVCxFQUErQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBYixFQUFtQjtNQUNqQixPQUFPLElBQVA7SUFDRDs7SUFFRCxJQUFJLE9BQU9BLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7TUFDN0JBLEtBQUssR0FBR0ssTUFBTSxDQUFDTCxLQUFELENBQWQ7SUFDRDs7SUFFRCxJQUFJTyxLQUFLLENBQUNQLEtBQUQsQ0FBVCxFQUFrQjtNQUNoQixNQUFNLElBQUlRLFNBQUosQ0FBYyxpQkFBZCxDQUFOO0lBQ0Q7O0lBRUQsSUFBSVIsS0FBSyxHQUFHLENBQVIsSUFBYUEsS0FBSyxHQUFHLEdBQXpCLEVBQThCO01BQzVCLE1BQU0sSUFBSVEsU0FBSixDQUFjLDZDQUFkLENBQU47SUFDRDs7SUFFRCxPQUFPUixLQUFLLEdBQUcsQ0FBZjtFQUNEO0FBakR1QixDQUExQjtlQW9EZVYsTzs7QUFDZm1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnBCLE9BQWpCIn0=
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlRpbnlJbnQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiSW50TiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4IiwiTnVtYmVyIiwidmFsaWRhdGUiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3RpbnlpbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IEludE4gZnJvbSAnLi9pbnRuJztcblxuY29uc3QgREFUQV9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMV0pO1xuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG5jb25zdCBUaW55SW50OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MzAsXG4gIHR5cGU6ICdJTlQxJyxcbiAgbmFtZTogJ1RpbnlJbnQnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3RpbnlpbnQnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtJbnROLmlkLCAweDAxXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygxKTtcbiAgICBidWZmZXIud3JpdGVVSW50OChOdW1iZXIocGFyYW1ldGVyLnZhbHVlKSwgMCk7XG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbnVtYmVyLicpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiAyNTUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUsIGluY2x1c2l2ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUgfCAwO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaW55SW50O1xubW9kdWxlLmV4cG9ydHMgPSBUaW55SW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxPQUFpQixHQUFHO0VBQ3hCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsU0FBUztFQUVmQyxXQUFXLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3RCLE9BQU8sU0FBUztFQUNsQixDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE9BQU9SLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNRLGFBQUksQ0FBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3JDLENBQUM7RUFFRE0sdUJBQXVCQSxDQUFDQyxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0IsT0FBT1gsV0FBVztJQUNwQjtJQUVBLE9BQU9ILFdBQVc7RUFDcEIsQ0FBQztFQUVELENBQUVlLHFCQUFxQkEsQ0FBQ0gsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCO0lBQ0Y7SUFFQSxNQUFNRSxNQUFNLEdBQUdmLE1BQU0sQ0FBQ2dCLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUJELE1BQU0sQ0FBQ0UsVUFBVSxDQUFDQyxNQUFNLENBQUNQLFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLE1BQU1FLE1BQU07RUFDZCxDQUFDO0VBRURJLFFBQVEsRUFBRSxTQUFBQSxDQUFTTixLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7TUFDN0JBLEtBQUssR0FBR0ssTUFBTSxDQUFDTCxLQUFLLENBQUM7SUFDdkI7SUFFQSxJQUFJTyxLQUFLLENBQUNQLEtBQUssQ0FBQyxFQUFFO01BQ2hCLE1BQU0sSUFBSVEsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDO0lBRUEsSUFBSVIsS0FBSyxHQUFHLENBQUMsSUFBSUEsS0FBSyxHQUFHLEdBQUcsRUFBRTtNQUM1QixNQUFNLElBQUlRLFNBQVMsQ0FBQyw2Q0FBNkMsQ0FBQztJQUNwRTtJQUVBLE9BQU9SLEtBQUssR0FBRyxDQUFDO0VBQ2xCO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FFYW5CLE9BQU87QUFBQW9CLE9BQUEsQ0FBQXpCLE9BQUEsR0FBQXdCLFFBQUE7QUFDdEJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHcEIsT0FBTyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinyint.js","names":["_intn","_interopRequireDefault","require","obj","__esModule","default","DATA_LENGTH","Buffer","from","NULL_LENGTH","TinyInt","id","type","name","declaration","generateTypeInfo","IntN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeUInt8","Number","validate","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/tinyint.ts"],"sourcesContent":["import { DataType } from '../data-type';\nimport IntN from './intn';\n\nconst DATA_LENGTH = Buffer.from([0x01]);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst TinyInt: DataType = {\n id: 0x30,\n type: 'INT1',\n name: 'TinyInt',\n\n declaration: function() {\n return 'tinyint';\n },\n\n generateTypeInfo() {\n return Buffer.from([IntN.id, 0x01]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const buffer = Buffer.alloc(1);\n buffer.writeUInt8(Number(parameter.value), 0);\n yield buffer;\n },\n\n validate: function(value): number | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'number') {\n value = Number(value);\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n\n if (value < 0 || value > 255) {\n throw new TypeError('Value must be between 0 and 255, inclusive.');\n }\n\n return value | 0;\n }\n};\n\nexport default TinyInt;\nmodule.exports = TinyInt;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1B,MAAMG,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,OAAiB,GAAG;EACxBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,SAAS;EAEfC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,SAAS;EAClB,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,aAAI,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,OAAOH,WAAW;EACpB,CAAC;EAED,CAAEe,qBAAqBA,CAACH,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAME,MAAM,GAAGf,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC;IAC9BD,MAAM,CAACE,UAAU,CAACC,MAAM,CAACP,SAAS,CAACE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAME,MAAM;EACd,CAAC;EAEDI,QAAQ,EAAE,SAAAA,CAASN,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7BA,KAAK,GAAGK,MAAM,CAACL,KAAK,CAAC;IACvB;IAEA,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAIR,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,GAAG,EAAE;MAC5B,MAAM,IAAIQ,SAAS,CAAC,6CAA6C,CAAC;IACpE;IAEA,OAAOR,KAAK,GAAG,CAAC;EAClB;AACF,CAAC;AAAC,IAAAS,QAAA,GAEanB,OAAO;AAAAoB,OAAA,CAAAzB,OAAA,GAAAwB,QAAA;AACtBE,MAAM,CAACD,OAAO,GAAGpB,OAAO"}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
9
  const TVP_ROW_TOKEN = Buffer.from([0x01]);
13
10
  const TVP_END_TOKEN = Buffer.from([0x00]);
14
11
  const NULL_LENGTH = Buffer.from([0xFF, 0xFF]);
@@ -18,13 +15,10 @@ const TVP = {
18
15
  name: 'TVP',
19
16
  declaration: function (parameter) {
20
17
  const value = parameter.value; // Temporary solution. Remove 'any' later.
21
-
22
18
  return value.name + ' readonly';
23
19
  },
24
-
25
20
  generateTypeInfo(parameter) {
26
21
  var _parameter$value, _parameter$value2;
27
-
28
22
  const databaseName = '';
29
23
  const schema = ((_parameter$value = parameter.value) === null || _parameter$value === void 0 ? void 0 : _parameter$value.schema) ?? '';
30
24
  const typeName = ((_parameter$value2 = parameter.value) === null || _parameter$value2 === void 0 ? void 0 : _parameter$value2.name) ?? '';
@@ -36,12 +30,10 @@ const TVP = {
36
30
  buffer.writeBVarchar(typeName);
37
31
  return buffer.data;
38
32
  },
39
-
40
33
  generateParameterLength(parameter, options) {
41
34
  if (parameter.value == null) {
42
35
  return NULL_LENGTH;
43
36
  }
44
-
45
37
  const {
46
38
  columns
47
39
  } = parameter.value;
@@ -49,39 +41,36 @@ const TVP = {
49
41
  buffer.writeUInt16LE(columns.length, 0);
50
42
  return buffer;
51
43
  },
52
-
53
44
  *generateParameterData(parameter, options) {
54
45
  if (parameter.value == null) {
55
46
  yield TVP_END_TOKEN;
56
47
  yield TVP_END_TOKEN;
57
48
  return;
58
49
  }
59
-
60
50
  const {
61
51
  columns,
62
52
  rows
63
53
  } = parameter.value;
64
-
65
54
  for (let i = 0, len = columns.length; i < len; i++) {
66
55
  const column = columns[i];
67
- const buff = Buffer.alloc(6); // UserType
68
-
69
- buff.writeUInt32LE(0x00000000, 0); // Flags
56
+ const buff = Buffer.alloc(6);
57
+ // UserType
58
+ buff.writeUInt32LE(0x00000000, 0);
70
59
 
60
+ // Flags
71
61
  buff.writeUInt16LE(0x0000, 4);
72
- yield buff; // TYPE_INFO
62
+ yield buff;
73
63
 
74
- yield column.type.generateTypeInfo(column); // ColName
64
+ // TYPE_INFO
65
+ yield column.type.generateTypeInfo(column);
75
66
 
67
+ // ColName
76
68
  yield Buffer.from([0x00]);
77
69
  }
78
-
79
70
  yield TVP_END_TOKEN;
80
-
81
71
  for (let i = 0, length = rows.length; i < length; i++) {
82
72
  yield TVP_ROW_TOKEN;
83
73
  const row = rows[i];
84
-
85
74
  for (let k = 0, len2 = row.length; k < len2; k++) {
86
75
  const column = columns[k];
87
76
  const value = row[k];
@@ -90,37 +79,32 @@ const TVP = {
90
79
  length: column.length,
91
80
  scale: column.scale,
92
81
  precision: column.precision
93
- }; // TvpColumnData
82
+ };
94
83
 
84
+ // TvpColumnData
95
85
  yield column.type.generateParameterLength(param, options);
96
86
  yield* column.type.generateParameterData(param, options);
97
87
  }
98
88
  }
99
-
100
89
  yield TVP_END_TOKEN;
101
90
  },
102
-
103
91
  validate: function (value) {
104
92
  if (value == null) {
105
93
  return null;
106
94
  }
107
-
108
95
  if (typeof value !== 'object') {
109
96
  throw new TypeError('Invalid table.');
110
97
  }
111
-
112
98
  if (!Array.isArray(value.columns)) {
113
99
  throw new TypeError('Invalid table.');
114
100
  }
115
-
116
101
  if (!Array.isArray(value.rows)) {
117
102
  throw new TypeError('Invalid table.');
118
103
  }
119
-
120
104
  return value;
121
105
  }
122
106
  };
123
107
  var _default = TVP;
124
108
  exports.default = _default;
125
109
  module.exports = TVP;
126
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUVlBfUk9XX1RPS0VOIiwiQnVmZmVyIiwiZnJvbSIsIlRWUF9FTkRfVE9LRU4iLCJOVUxMX0xFTkdUSCIsIlRWUCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInZhbHVlIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImRhdGFiYXNlTmFtZSIsInNjaGVtYSIsInR5cGVOYW1lIiwiYnVmZmVyTGVuZ3RoIiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVCVmFyY2hhciIsImRhdGEiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiYWxsb2MiLCJ3cml0ZVVJbnQxNkxFIiwibGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwicm93cyIsImkiLCJsZW4iLCJjb2x1bW4iLCJidWZmIiwid3JpdGVVSW50MzJMRSIsInJvdyIsImsiLCJsZW4yIiwicGFyYW0iLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsInNjYWxlIiwicHJlY2lzaW9uIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3R2cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgVFZQX1JPV19UT0tFTiA9IEJ1ZmZlci5mcm9tKFsweDAxXSk7XG5jb25zdCBUVlBfRU5EX1RPS0VOID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBUVlA6IERhdGFUeXBlID0ge1xuICBpZDogMHhGMyxcbiAgdHlwZTogJ1RWUFRZUEUnLFxuICBuYW1lOiAnVFZQJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cbiAgICByZXR1cm4gdmFsdWUubmFtZSArICcgcmVhZG9ubHknO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgZGF0YWJhc2VOYW1lID0gJyc7XG4gICAgY29uc3Qgc2NoZW1hID0gcGFyYW1ldGVyLnZhbHVlPy5zY2hlbWEgPz8gJyc7XG4gICAgY29uc3QgdHlwZU5hbWUgPSBwYXJhbWV0ZXIudmFsdWU/Lm5hbWUgPz8gJyc7XG5cbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSAxICtcbiAgICAgIDEgKyBCdWZmZXIuYnl0ZUxlbmd0aChkYXRhYmFzZU5hbWUsICd1Y3MyJykgK1xuICAgICAgMSArIEJ1ZmZlci5ieXRlTGVuZ3RoKHNjaGVtYSwgJ3VjczInKSArXG4gICAgICAxICsgQnVmZmVyLmJ5dGVMZW5ndGgodHlwZU5hbWUsICd1Y3MyJyk7XG5cbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihidWZmZXJMZW5ndGgsICd1Y3MyJyk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5pZCk7XG4gICAgYnVmZmVyLndyaXRlQlZhcmNoYXIoZGF0YWJhc2VOYW1lKTtcbiAgICBidWZmZXIud3JpdGVCVmFyY2hhcihzY2hlbWEpO1xuICAgIGJ1ZmZlci53cml0ZUJWYXJjaGFyKHR5cGVOYW1lKTtcblxuICAgIHJldHVybiBidWZmZXIuZGF0YTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbHVtbnMgfSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoMik7XG4gICAgYnVmZmVyLndyaXRlVUludDE2TEUoY29sdW1ucy5sZW5ndGgsIDApO1xuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgKmdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHlpZWxkIFRWUF9FTkRfVE9LRU47XG4gICAgICB5aWVsZCBUVlBfRU5EX1RPS0VOO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY29sdW1ucywgcm93cyB9ID0gcGFyYW1ldGVyLnZhbHVlO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbaV07XG5cbiAgICAgIGNvbnN0IGJ1ZmYgPSBCdWZmZXIuYWxsb2MoNik7XG4gICAgICAvLyBVc2VyVHlwZVxuICAgICAgYnVmZi53cml0ZVVJbnQzMkxFKDB4MDAwMDAwMDAsIDApO1xuXG4gICAgICAvLyBGbGFnc1xuICAgICAgYnVmZi53cml0ZVVJbnQxNkxFKDB4MDAwMCwgNCk7XG4gICAgICB5aWVsZCBidWZmO1xuXG4gICAgICAvLyBUWVBFX0lORk9cbiAgICAgIHlpZWxkIGNvbHVtbi50eXBlLmdlbmVyYXRlVHlwZUluZm8oY29sdW1uKTtcblxuICAgICAgLy8gQ29sTmFtZVxuICAgICAgeWllbGQgQnVmZmVyLmZyb20oWzB4MDBdKTtcbiAgICB9XG5cbiAgICB5aWVsZCBUVlBfRU5EX1RPS0VOO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IHJvd3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHlpZWxkIFRWUF9ST1dfVE9LRU47XG5cbiAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaV07XG4gICAgICBmb3IgKGxldCBrID0gMCwgbGVuMiA9IHJvdy5sZW5ndGg7IGsgPCBsZW4yOyBrKyspIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1trXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByb3dba107XG5cbiAgICAgICAgY29uc3QgcGFyYW0gPSB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbi50eXBlLnZhbGlkYXRlKHZhbHVlLCBwYXJhbWV0ZXIuY29sbGF0aW9uKSxcbiAgICAgICAgICBsZW5ndGg6IGNvbHVtbi5sZW5ndGgsXG4gICAgICAgICAgc2NhbGU6IGNvbHVtbi5zY2FsZSxcbiAgICAgICAgICBwcmVjaXNpb246IGNvbHVtbi5wcmVjaXNpb25cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBUdnBDb2x1bW5EYXRhXG4gICAgICAgIHlpZWxkIGNvbHVtbi50eXBlLmdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtLCBvcHRpb25zKTtcbiAgICAgICAgeWllbGQgKiBjb2x1bW4udHlwZS5nZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW0sIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHlpZWxkIFRWUF9FTkRfVE9LRU47XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHRhYmxlLicpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZS5jb2x1bW5zKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCB0YWJsZS4nKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUucm93cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgdGFibGUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUVlA7XG5tb2R1bGUuZXhwb3J0cyA9IFRWUDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7O0FBRUEsTUFBTUEsYUFBYSxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWSxDQUFDLElBQUQsQ0FBWixDQUF0QjtBQUNBLE1BQU1DLGFBQWEsR0FBR0YsTUFBTSxDQUFDQyxJQUFQLENBQVksQ0FBQyxJQUFELENBQVosQ0FBdEI7QUFFQSxNQUFNRSxXQUFXLEdBQUdILE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FBWixDQUFwQjtBQUVBLE1BQU1HLEdBQWEsR0FBRztFQUNwQkMsRUFBRSxFQUFFLElBRGdCO0VBRXBCQyxJQUFJLEVBQUUsU0FGYztFQUdwQkMsSUFBSSxFQUFFLEtBSGM7RUFLcEJDLFdBQVcsRUFBRSxVQUFTQyxTQUFULEVBQW9CO0lBQy9CLE1BQU1DLEtBQUssR0FBR0QsU0FBUyxDQUFDQyxLQUF4QixDQUQrQixDQUNPOztJQUN0QyxPQUFPQSxLQUFLLENBQUNILElBQU4sR0FBYSxXQUFwQjtFQUNELENBUm1COztFQVVwQkksZ0JBQWdCLENBQUNGLFNBQUQsRUFBWTtJQUFBOztJQUMxQixNQUFNRyxZQUFZLEdBQUcsRUFBckI7SUFDQSxNQUFNQyxNQUFNLEdBQUcscUJBQUFKLFNBQVMsQ0FBQ0MsS0FBVixzRUFBaUJHLE1BQWpCLEtBQTJCLEVBQTFDO0lBQ0EsTUFBTUMsUUFBUSxHQUFHLHNCQUFBTCxTQUFTLENBQUNDLEtBQVYsd0VBQWlCSCxJQUFqQixLQUF5QixFQUExQztJQUVBLE1BQU1RLFlBQVksR0FBRyxJQUNuQixDQURtQixHQUNmZixNQUFNLENBQUNn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
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJUVlBfUk9XX1RPS0VOIiwiQnVmZmVyIiwiZnJvbSIsIlRWUF9FTkRfVE9LRU4iLCJOVUxMX0xFTkdUSCIsIlRWUCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInZhbHVlIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIl9wYXJhbWV0ZXIkdmFsdWUiLCJfcGFyYW1ldGVyJHZhbHVlMiIsImRhdGFiYXNlTmFtZSIsInNjaGVtYSIsInR5cGVOYW1lIiwiYnVmZmVyTGVuZ3RoIiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVCVmFyY2hhciIsImRhdGEiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiYWxsb2MiLCJ3cml0ZVVJbnQxNkxFIiwibGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwicm93cyIsImkiLCJsZW4iLCJjb2x1bW4iLCJidWZmIiwid3JpdGVVSW50MzJMRSIsInJvdyIsImsiLCJsZW4yIiwicGFyYW0iLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsInNjYWxlIiwicHJlY2lzaW9uIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvdHZwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBUVlBfUk9XX1RPS0VOID0gQnVmZmVyLmZyb20oWzB4MDFdKTtcbmNvbnN0IFRWUF9FTkRfVE9LRU4gPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGXSk7XG5cbmNvbnN0IFRWUDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweEYzLFxuICB0eXBlOiAnVFZQVFlQRScsXG4gIG5hbWU6ICdUVlAnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIHJldHVybiB2YWx1ZS5uYW1lICsgJyByZWFkb25seSc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCBkYXRhYmFzZU5hbWUgPSAnJztcbiAgICBjb25zdCBzY2hlbWEgPSBwYXJhbWV0ZXIudmFsdWU/LnNjaGVtYSA/PyAnJztcbiAgICBjb25zdCB0eXBlTmFtZSA9IHBhcmFtZXRlci52YWx1ZT8ubmFtZSA/PyAnJztcblxuICAgIGNvbnN0IGJ1ZmZlckxlbmd0aCA9IDEgK1xuICAgICAgMSArIEJ1ZmZlci5ieXRlTGVuZ3RoKGRhdGFiYXNlTmFtZSwgJ3VjczInKSArXG4gICAgICAxICsgQnVmZmVyLmJ5dGVMZW5ndGgoc2NoZW1hLCAndWNzMicpICtcbiAgICAgIDEgKyBCdWZmZXIuYnl0ZUxlbmd0aCh0eXBlTmFtZSwgJ3VjczInKTtcblxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKGJ1ZmZlckxlbmd0aCwgJ3VjczInKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkKTtcbiAgICBidWZmZXIud3JpdGVCVmFyY2hhcihkYXRhYmFzZU5hbWUpO1xuICAgIGJ1ZmZlci53cml0ZUJWYXJjaGFyKHNjaGVtYSk7XG4gICAgYnVmZmVyLndyaXRlQlZhcmNoYXIodHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIGJ1ZmZlci5kYXRhO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gcGFyYW1ldGVyLnZhbHVlO1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShjb2x1bW5zLmxlbmd0aCwgMCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICAqZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgeWllbGQgVFZQX0VORF9UT0tFTjtcbiAgICAgIHlpZWxkIFRWUF9FTkRfVE9LRU47XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb2x1bW5zLCByb3dzIH0gPSBwYXJhbWV0ZXIudmFsdWU7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY29sdW1ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tpXTtcblxuICAgICAgY29uc3QgYnVmZiA9IEJ1ZmZlci5hbGxvYyg2KTtcbiAgICAgIC8vIFVzZXJUeXBlXG4gICAgICBidWZmLndyaXRlVUludDMyTEUoMHgwMDAwMDAwMCwgMCk7XG5cbiAgICAgIC8vIEZsYWdzXG4gICAgICBidWZmLndyaXRlVUludDE2TEUoMHgwMDAwLCA0KTtcbiAgICAgIHlpZWxkIGJ1ZmY7XG5cbiAgICAgIC8vIFRZUEVfSU5GT1xuICAgICAgeWllbGQgY29sdW1uLnR5cGUuZ2VuZXJhdGVUeXBlSW5mbyhjb2x1bW4pO1xuXG4gICAgICAvLyBDb2xOYW1lXG4gICAgICB5aWVsZCBCdWZmZXIuZnJvbShbMHgwMF0pO1xuICAgIH1cblxuICAgIHlpZWxkIFRWUF9FTkRfVE9LRU47XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gcm93cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgeWllbGQgVFZQX1JPV19UT0tFTjtcblxuICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgIGZvciAobGV0IGsgPSAwLCBsZW4yID0gcm93Lmxlbmd0aDsgayA8IGxlbjI7IGsrKykge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2tdO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJvd1trXTtcblxuICAgICAgICBjb25zdCBwYXJhbSA9IHtcbiAgICAgICAgICB2YWx1ZTogY29sdW1uLnR5cGUudmFsaWRhdGUodmFsdWUsIHBhcmFtZXRlci5jb2xsYXRpb24pLFxuICAgICAgICAgIGxlbmd0aDogY29sdW1uLmxlbmd0aCxcbiAgICAgICAgICBzY2FsZTogY29sdW1uLnNjYWxlLFxuICAgICAgICAgIHByZWNpc2lvbjogY29sdW1uLnByZWNpc2lvblxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFR2cENvbHVtbkRhdGFcbiAgICAgICAgeWllbGQgY29sdW1uLnR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW0sIG9wdGlvbnMpO1xuICAgICAgICB5aWVsZCAqIGNvbHVtbi50eXBlLmdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgeWllbGQgVFZQX0VORF9UT0tFTjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBCdWZmZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgdGFibGUuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlLmNvbHVtbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHRhYmxlLicpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZS5yb3dzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCB0YWJsZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRWUDtcbm1vZHVsZS5leHBvcnRzID0gVFZQO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQWlGLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpGLE1BQU1HLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxNQUFNQyxhQUFhLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFekMsTUFBTUUsV0FBVyxHQUFHSCxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU3QyxNQUFNRyxHQUFhLEdBQUc7RUFDcEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxTQUFTO0VBQ2ZDLElBQUksRUFBRSxLQUFLO0VBRVhDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQVksQ0FBQyxDQUFDO0lBQ3RDLE9BQU9BLEtBQUssQ0FBQ0gsSUFBSSxHQUFHLFdBQVc7RUFDakMs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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tvp.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","obj","__esModule","default","TVP_ROW_TOKEN","Buffer","from","TVP_END_TOKEN","NULL_LENGTH","TVP","id","type","name","declaration","parameter","value","generateTypeInfo","_parameter$value","_parameter$value2","databaseName","schema","typeName","bufferLength","byteLength","buffer","WritableTrackingBuffer","writeUInt8","writeBVarchar","data","generateParameterLength","options","columns","alloc","writeUInt16LE","length","generateParameterData","rows","i","len","column","buff","writeUInt32LE","row","k","len2","param","validate","collation","scale","precision","TypeError","Array","isArray","_default","exports","module"],"sources":["../../src/data-types/tvp.ts"],"sourcesContent":["import { DataType } from '../data-type';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst TVP_ROW_TOKEN = Buffer.from([0x01]);\nconst TVP_END_TOKEN = Buffer.from([0x00]);\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\n\nconst TVP: DataType = {\n id: 0xF3,\n type: 'TVPTYPE',\n name: 'TVP',\n\n declaration: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n return value.name + ' readonly';\n },\n\n generateTypeInfo(parameter) {\n const databaseName = '';\n const schema = parameter.value?.schema ?? '';\n const typeName = parameter.value?.name ?? '';\n\n const bufferLength = 1 +\n 1 + Buffer.byteLength(databaseName, 'ucs2') +\n 1 + Buffer.byteLength(schema, 'ucs2') +\n 1 + Buffer.byteLength(typeName, 'ucs2');\n\n const buffer = new WritableTrackingBuffer(bufferLength, 'ucs2');\n buffer.writeUInt8(this.id);\n buffer.writeBVarchar(databaseName);\n buffer.writeBVarchar(schema);\n buffer.writeBVarchar(typeName);\n\n return buffer.data;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n const { columns } = parameter.value;\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(columns.length, 0);\n return buffer;\n },\n\n *generateParameterData(parameter, options) {\n if (parameter.value == null) {\n yield TVP_END_TOKEN;\n yield TVP_END_TOKEN;\n return;\n }\n\n const { columns, rows } = parameter.value;\n\n for (let i = 0, len = columns.length; i < len; i++) {\n const column = columns[i];\n\n const buff = Buffer.alloc(6);\n // UserType\n buff.writeUInt32LE(0x00000000, 0);\n\n // Flags\n buff.writeUInt16LE(0x0000, 4);\n yield buff;\n\n // TYPE_INFO\n yield column.type.generateTypeInfo(column);\n\n // ColName\n yield Buffer.from([0x00]);\n }\n\n yield TVP_END_TOKEN;\n\n for (let i = 0, length = rows.length; i < length; i++) {\n yield TVP_ROW_TOKEN;\n\n const row = rows[i];\n for (let k = 0, len2 = row.length; k < len2; k++) {\n const column = columns[k];\n const value = row[k];\n\n const param = {\n value: column.type.validate(value, parameter.collation),\n length: column.length,\n scale: column.scale,\n precision: column.precision\n };\n\n // TvpColumnData\n yield column.type.generateParameterLength(param, options);\n yield * column.type.generateParameterData(param, options);\n }\n }\n\n yield TVP_END_TOKEN;\n },\n\n validate: function(value): Buffer | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'object') {\n throw new TypeError('Invalid table.');\n }\n\n if (!Array.isArray(value.columns)) {\n throw new TypeError('Invalid table.');\n }\n\n if (!Array.isArray(value.rows)) {\n throw new TypeError('Invalid table.');\n }\n\n return value;\n }\n};\n\nexport default TVP;\nmodule.exports = TVP;\n"],"mappings":";;;;;;AACA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiF,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjF,MAAMG,aAAa,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,MAAMC,aAAa,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEzC,MAAME,WAAW,GAAGH,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7C,MAAMG,GAAa,GAAG;EACpBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,KAAK;EAEXC,WAAW,EAAE,SAAAA,CAASC,SAAS,EAAE;IAC/B,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAY,CAAC,CAAC;IACtC,OAAOA,KAAK,CAACH,IAAI,GAAG,WAAW;EACjC,CAAC;EAEDI,gBAAgBA,CAACF,SAAS,EAAE;IAAA,IAAAG,gBAAA,EAAAC,iBAAA;IAC1B,MAAMC,YAAY,GAAG,EAAE;IACvB,MAAMC,MAAM,GAAG,EAAAH,gBAAA,GAAAH,SAAS,CAACC,KAAK,cAAAE,gBAAA,uBAAfA,gBAAA,CAAiBG,MAAM,KAAI,EAAE;IAC5C,MAAMC,QAAQ,GAAG,EAAAH,iBAAA,GAAAJ,SAAS,CAACC,KAAK,cAAAG,iBAAA,uBAAfA,iBAAA,CAAiBN,IAAI,KAAI,EAAE;IAE5C,MAAMU,YAAY,GAAG,CAAC,GACpB,CAAC,GAAGjB,MAAM,CAACkB,UAAU,CAACJ,YAAY,EAAE,MAAM,CAAC,GAC3C,CAAC,GAAGd,MAAM,CAACkB,UAAU,CAACH,MAAM,EAAE,MAAM,CAAC,GACrC,CAAC,GAAGf,MAAM,CAACkB,UAAU,CAACF,QAAQ,EAAE,MAAM,CAAC;IAEzC,MAAMG,MAAM,GAAG,IAAIC,+BAAsB,CAACH,YAAY,EAAE,MAAM,CAAC;IAC/DE,MAAM,CAACE,UAAU,CAAC,IAAI,CAAChB,EAAE,CAAC;IAC1Bc,MAAM,CAACG,aAAa,CAACR,YAAY,CAAC;IAClCK,MAAM,CAACG,aAAa,CAACP,MAAM,CAAC;IAC5BI,MAAM,CAACG,aAAa,CAACN,QAAQ,CAAC;IAE9B,OAAOG,MAAM,CAACI,IAAI;EACpB,CAAC;EAEDC,uBAAuBA,CAACf,SAAS,EAAEgB,OAAO,EAAE;IAC1C,IAAIhB,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOP,WAAW;IACpB;IAEA,MAAM;MAAEuB;IAAQ,CAAC,GAAGjB,SAAS,CAACC,KAAK;IACnC,MAAMS,MAAM,GAAGnB,MAAM,CAAC2B,KAAK,CAAC,CAAC,CAAC;IAC9BR,MAAM,CAACS,aAAa,CAACF,OAAO,CAACG,MAAM,EAAE,CAAC,CAAC;IACvC,OAAOV,MAAM;EACf,CAAC;EAED,CAACW,qBAAqBA,CAACrB,SAAS,EAAEgB,OAAO,EAAE;IACzC,IAAIhB,SAAS,CAACC,KAAK,IAAI,IAAI,EAAE;MAC3B,MAAMR,aAAa;MACnB,MAAMA,aAAa;MACnB;IACF;IAEA,MAAM;MAAEwB,OAAO;MAAEK;IAAK,CAAC,GAAGtB,SAAS,CAACC,KAAK;IAEzC,KAAK,IAAIsB,CAAC,GAAG,CAAC,EAAEC,GAAG,GAAGP,OAAO,CAACG,MAAM,EAAEG,CAAC,GAAGC,GAAG,EAAED,CAAC,EAAE,EAAE;MAClD,MAAME,MAAM,GAAGR,OAAO,CAACM,CAAC,CAAC;MAEzB,MAAMG,IAAI,GAAGnC,MAAM,CAAC2B,KAAK,CAAC,CAAC,CAAC;MAC5B;MACAQ,IAAI,CAACC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;;MAEjC;MACAD,IAAI,CAACP,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;MAC7B,MAAMO,IAAI;;MAEV;MACA,MAAMD,MAAM,CAAC5B,IAAI,CAACK,gBAAgB,CAACuB,MAAM,CAAC;;MAE1C;MACA,MAAMlC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3B;IAEA,MAAMC,aAAa;IAEnB,KAAK,IAAI8B,CAAC,GAAG,CAAC,EAAEH,MAAM,GAAGE,IAAI,CAACF,MAAM,EAAEG,CAAC,GAAGH,MAAM,EAAEG,CAAC,EAAE,EAAE;MACrD,MAAMjC,aAAa;MAEnB,MAAMsC,GAAG,GAAGN,IAAI,CAACC,CAAC,CAAC;MACnB,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEC,IAAI,GAAGF,GAAG,CAACR,MAAM,EAAES,CAAC,GAAGC,IAAI,EAAED,CAAC,EAAE,EAAE;QAChD,MAAMJ,MAAM,GAAGR,OAAO,CAACY,CAAC,CAAC;QACzB,MAAM5B,KAAK,GAAG2B,GAAG,CAACC,CAAC,CAAC;QAEpB,MAAME,KAAK,GAAG;UACZ9B,KAAK,EAAEwB,MAAM,CAAC5B,IAAI,CAACmC,QAAQ,CAAC/B,KAAK,EAAED,SAAS,CAACiC,SAAS,CAAC;UACvDb,MAAM,EAAEK,MAAM,CAACL,MAAM;UACrBc,KAAK,EAAET,MAAM,CAACS,KAAK;UACnBC,SAAS,EAAEV,MAAM,CAACU;QACpB,CAAC;;QAED;QACA,MAAMV,MAAM,CAAC5B,IAAI,CAACkB,uBAAuB,CAACgB,KAAK,EAAEf,OAAO,CAAC;QACzD,OAAQS,MAAM,CAAC5B,IAAI,CAACwB,qBAAqB,CAACU,KAAK,EAAEf,OAAO,CAAC;MAC3D;IACF;IAEA,MAAMvB,aAAa;EACrB,CAAC;EAEDuC,QAAQ,EAAE,SAAAA,CAAS/B,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,MAAM,IAAImC,SAAS,CAAC,gBAAgB,CAAC;IACvC;IAEA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACrC,KAAK,CAACgB,OAAO,CAAC,EAAE;MACjC,MAAM,IAAImB,SAAS,CAAC,gBAAgB,CAAC;IACvC;IAEA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACrC,KAAK,CAACqB,IAAI,CAAC,EAAE;MAC9B,MAAM,IAAIc,SAAS,CAAC,gBAAgB,CAAC;IACvC;IAEA,OAAOnC,KAAK;EACd;AACF,CAAC;AAAC,IAAAsC,QAAA,GAEa5C,GAAG;AAAA6C,OAAA,CAAAnD,OAAA,GAAAkD,QAAA;AAClBE,MAAM,CAACD,OAAO,GAAG7C,GAAG"}
@@ -8,29 +8,23 @@ const UDT = {
8
8
  id: 0xF0,
9
9
  type: 'UDTTYPE',
10
10
  name: 'UDT',
11
-
12
11
  declaration() {
13
12
  throw new Error('not implemented');
14
13
  },
15
-
16
14
  generateTypeInfo() {
17
15
  throw new Error('not implemented');
18
16
  },
19
-
20
17
  generateParameterLength() {
21
18
  throw new Error('not implemented');
22
19
  },
23
-
24
20
  generateParameterData() {
25
21
  throw new Error('not implemented');
26
22
  },
27
-
28
23
  validate() {
29
24
  throw new Error('not implemented');
30
25
  }
31
-
32
26
  };
33
27
  var _default = UDT;
34
28
  exports.default = _default;
35
29
  module.exports = UDT;
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVRFQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3VkdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IFVEVDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweEYwLFxuICB0eXBlOiAnVURUVFlQRScsXG4gIG5hbWU6ICdVRFQnLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVURUO1xubW9kdWxlLmV4cG9ydHMgPSBVRFQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLEdBQWEsR0FBRztFQUNwQkMsRUFBRSxFQUFFLElBRGdCO0VBRXBCQyxJQUFJLEVBQUUsU0FGYztFQUdwQkMsSUFBSSxFQUFFLEtBSGM7O0VBS3BCQyxXQUFXLEdBQUc7SUFDWixNQUFNLElBQUlDLEtBQUosQ0FBVSxpQkFBVixDQUFOO0VBQ0QsQ0FQbUI7O0VBU3BCQyxnQkFBZ0IsR0FBRztJQUNqQixNQUFNLElBQUlELEtBQUosQ0FBVSxpQkFBVixDQUFOO0VBQ0QsQ0FYbUI7O0VBYXBCRSx1QkFBdUIsR0FBRztJQUN4QixNQUFNLElBQUlGLEtBQUosQ0FBVSxpQkFBVixDQUFOO0VBQ0QsQ0FmbUI7O0VBaUJwQkcscUJBQXFCLEdBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFKLENBQVUsaUJBQVYsQ0FBTjtFQUNELENBbkJtQjs7RUFxQnBCSSxRQUFRLEdBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUosQ0FBVSxpQkFBVixDQUFOO0VBQ0Q7O0FBdkJtQixDQUF0QjtlQTBCZUwsRzs7QUFDZlUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWCxHQUFqQiJ9
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVRFQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3VkdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IFVEVDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweEYwLFxuICB0eXBlOiAnVURUVFlQRScsXG4gIG5hbWU6ICdVRFQnLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVURUO1xubW9kdWxlLmV4cG9ydHMgPSBVRFQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLEdBQWEsR0FBRztFQUNwQkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFLEtBQUs7RUFFWEMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBRWFWLEdBQUc7QUFBQVcsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDbEJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxHQUFHIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"udt.js","names":["UDT","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/udt.ts"],"sourcesContent":["import { DataType } from '../data-type';\n\nconst UDT: DataType = {\n id: 0xF0,\n type: 'UDTTYPE',\n name: 'UDT',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default UDT;\nmodule.exports = UDT;\n"],"mappings":";;;;;;AAEA,MAAMA,GAAa,GAAG;EACpBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,SAAS;EACfC,IAAI,EAAE,KAAK;EAEXC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAEaV,GAAG;AAAAW,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAClBG,MAAM,CAACF,OAAO,GAAGX,GAAG"}
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _guidParser = require("../guid-parser");
9
-
10
8
  const NULL_LENGTH = Buffer.from([0x00]);
11
9
  const DATA_LENGTH = Buffer.from([0x10]);
12
10
  const UniqueIdentifier = {
@@ -19,43 +17,35 @@ const UniqueIdentifier = {
19
17
  resolveLength: function () {
20
18
  return 16;
21
19
  },
22
-
23
20
  generateTypeInfo() {
24
21
  return Buffer.from([this.id, 0x10]);
25
22
  },
26
-
27
23
  generateParameterLength(parameter, options) {
28
24
  if (parameter.value == null) {
29
25
  return NULL_LENGTH;
30
26
  }
31
-
32
27
  return DATA_LENGTH;
33
28
  },
34
-
35
29
  generateParameterData: function* (parameter, options) {
36
30
  if (parameter.value == null) {
37
31
  return;
38
32
  }
39
-
40
33
  yield Buffer.from((0, _guidParser.guidToArray)(parameter.value));
41
34
  },
42
35
  validate: function (value) {
43
36
  if (value == null) {
44
37
  return null;
45
38
  }
46
-
47
39
  if (typeof value !== 'string') {
48
40
  throw new TypeError('Invalid string.');
49
41
  }
50
-
51
42
  if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) {
52
43
  throw new TypeError('Invalid GUID.');
53
44
  }
54
-
55
45
  return value;
56
46
  }
57
47
  };
58
48
  var _default = UniqueIdentifier;
59
49
  exports.default = _default;
60
50
  module.exports = UniqueIdentifier;
61
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsIlVuaXF1ZUlkZW50aWZpZXIiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwidmFsaWRhdGUiLCJUeXBlRXJyb3IiLCJ0ZXN0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3VuaXF1ZWlkZW50aWZpZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgZ3VpZFRvQXJyYXkgfSBmcm9tICcuLi9ndWlkLXBhcnNlcic7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MTBdKTtcblxuY29uc3QgVW5pcXVlSWRlbnRpZmllcjogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDI0LFxuICB0eXBlOiAnR1VJRE4nLFxuICBuYW1lOiAnVW5pcXVlSWRlbnRpZmllcicsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAndW5pcXVlaWRlbnRpZmllcic7XG4gIH0sXG5cbiAgcmVzb2x2ZUxlbmd0aDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIDE2O1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFt0aGlzLmlkLCAweDEwXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YTogZnVuY3Rpb24qKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHlpZWxkIEJ1ZmZlci5mcm9tKGd1aWRUb0FycmF5KHBhcmFtZXRlci52YWx1ZSkpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJpbmcuJyk7XG4gICAgfVxuXG4gICAgaWYgKCEvXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfSQvaS50ZXN0KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBHVUlELicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVW5pcXVlSWRlbnRpZmllcjtcbm1vZHVsZS5leHBvcnRzID0gVW5pcXVlSWRlbnRpZmllcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUVBLE1BQU1BLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVksQ0FBQyxJQUFELENBQVosQ0FBcEI7QUFDQSxNQUFNQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLENBQUMsSUFBRCxDQUFaLENBQXBCO0FBRUEsTUFBTUUsZ0JBQTBCLEdBQUc7RUFDakNDLEVBQUUsRUFBRSxJQUQ2QjtFQUVqQ0MsSUFBSSxFQUFFLE9BRjJCO0VBR2pDQyxJQUFJLEVBQUUsa0JBSDJCO0VBS2pDQyxXQUFXLEVBQUUsWUFBVztJQUN0QixPQUFPLGtCQUFQO0VBQ0QsQ0FQZ0M7RUFTakNDLGFBQWEsRUFBRSxZQUFXO0lBQ3hCLE9BQU8sRUFBUDtFQUNELENBWGdDOztFQWFqQ0MsZ0JBQWdCLEdBQUc7SUFDakIsT0FBT1QsTUFBTSxDQUFDQyxJQUFQLENBQVksQ0FBQyxLQUFLRyxFQUFOLEVBQVUsSUFBVixDQUFaLENBQVA7RUFDRCxDQWZnQzs7RUFpQmpDTSx1QkFBdUIsQ0FBQ0MsU0FBRCxFQUFZQyxPQUFaLEVBQXFCO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBVixJQUFtQixJQUF2QixFQUE2QjtNQUMzQixPQUFPZCxXQUFQO0lBQ0Q7O0lBRUQsT0FBT0csV0FBUDtFQUNELENBdkJnQzs7RUF5QmpDWSxxQkFBcUIsRUFBRSxXQUFVSCxTQUFWLEVBQXFCQyxPQUFyQixFQUE4QjtJQUNuRCxJQUFJRCxTQUFTLENBQUNFLEtBQVYsSUFBbUIsSUFBdkIsRUFBNkI7TUFDM0I7SUFDRDs7SUFFRCxNQUFNYixNQUFNLENBQUNDLElBQVAsQ0FBWSw2QkFBWVUsU0FBUyxDQUFDRSxLQUF0QixDQUFaLENBQU47RUFDRCxDQS9CZ0M7RUFpQ2pDRSxRQUFRLEVBQUUsVUFBU0YsS0FBVCxFQUErQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBYixFQUFtQjtNQUNqQixPQUFPLElBQVA7SUFDRDs7SUFFRCxJQUFJLE9BQU9BLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7TUFDN0IsTUFBTSxJQUFJRyxTQUFKLENBQWMsaUJBQWQsQ0FBTjtJQUNEOztJQUVELElBQUksQ0FBQyxrRUFBa0VDLElBQWxFLENBQXVFSixLQUF2RSxDQUFMLEVBQW9GO01BQ2xGLE1BQU0sSUFBSUcsU0FBSixDQUFjLGVBQWQsQ0FBTjtJQUNEOztJQUVELE9BQU9ILEtBQVA7RUFDRDtBQS9DZ0MsQ0FBbkM7ZUFrRGVWLGdCOztBQUNmZSxNQUFNLENBQUNDLE9BQVAsR0FBaUJoQixnQkFBakIifQ==
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3VpZFBhcnNlciIsInJlcXVpcmUiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsIlVuaXF1ZUlkZW50aWZpZXIiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiZ3VpZFRvQXJyYXkiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsInRlc3QiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvdW5pcXVlaWRlbnRpZmllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBndWlkVG9BcnJheSB9IGZyb20gJy4uL2d1aWQtcGFyc2VyJztcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuY29uc3QgREFUQV9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgxMF0pO1xuXG5jb25zdCBVbmlxdWVJZGVudGlmaWVyOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjQsXG4gIHR5cGU6ICdHVUlETicsXG4gIG5hbWU6ICdVbmlxdWVJZGVudGlmaWVyJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICd1bmlxdWVpZGVudGlmaWVyJztcbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gMTY7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW3RoaXMuaWQsIDB4MTBdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhOiBmdW5jdGlvbioocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgeWllbGQgQnVmZmVyLmZyb20oZ3VpZFRvQXJyYXkocGFyYW1ldGVyLnZhbHVlKSk7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIS9eWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JC9pLnRlc3QodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIEdVSUQuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBVbmlxdWVJZGVudGlmaWVyO1xubW9kdWxlLmV4cG9ydHMgPSBVbmlxdWVJZGVudGlmaWVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFFQSxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1FLGdCQUEwQixHQUFHO0VBQ2pDQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxJQUFJLEVBQUUsa0JBQWtCO0VBRXhCQyxXQUFXLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3RCLE9BQU8sa0JBQWtCO0VBQzNCLENBQUM7RUFFREMsYUFBYSxFQUFFLFNBQUFBLENBQUEsRUFBVztJQUN4QixPQUFPLEVBQUU7RUFDWCxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE9BQU9ULE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDckMsQ0FBQztFQUVETSx1QkFBdUJBLENBQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPZCxXQUFXO0lBQ3BCO0lBRUEsT0FBT0csV0FBVztFQUNwQixDQUFDO0VBRURZLHFCQUFxQixFQUFFLFVBQUFBLENBQVVILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQ25ELElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTWIsTUFBTSxDQUFDQyxJQUFJLENBQUMsSUFBQWMsdUJBQVcsRUFBQ0osU0FBUyxDQUFDRSxLQUFLLENBQUMsQ0FBQztFQUNqRCxDQUFDO0VBRURHLFFBQVEsRUFBRSxTQUFBQSxDQUFTSCxLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7TUFDN0IsTUFBTSxJQUFJSSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxJQUFJLENBQUMsaUVBQWlFLENBQUNDLElBQUksQ0FBQ0wsS0FBSyxDQUFDLEVBQUU7TUFDbEYsTUFBTSxJQUFJSSxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ3RDO0lBRUEsT0FBT0osS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFNLFFBQUEsR0FFYWhCLGdCQUFnQjtBQUFBaUIsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDL0JHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHakIsZ0JBQWdCIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniqueidentifier.js","names":["_guidParser","require","NULL_LENGTH","Buffer","from","DATA_LENGTH","UniqueIdentifier","id","type","name","declaration","resolveLength","generateTypeInfo","generateParameterLength","parameter","options","value","generateParameterData","guidToArray","validate","TypeError","test","_default","exports","default","module"],"sources":["../../src/data-types/uniqueidentifier.ts"],"sourcesContent":["import { DataType } from '../data-type';\nimport { guidToArray } from '../guid-parser';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x10]);\n\nconst UniqueIdentifier: DataType = {\n id: 0x24,\n type: 'GUIDN',\n name: 'UniqueIdentifier',\n\n declaration: function() {\n return 'uniqueidentifier';\n },\n\n resolveLength: function() {\n return 16;\n },\n\n generateTypeInfo() {\n return Buffer.from([this.id, 0x10]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n generateParameterData: function*(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n yield Buffer.from(guidToArray(parameter.value));\n },\n\n validate: function(value): string | null {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) {\n throw new TypeError('Invalid GUID.');\n }\n\n return value;\n }\n};\n\nexport default UniqueIdentifier;\nmodule.exports = UniqueIdentifier;\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,MAAMC,WAAW,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAME,gBAA0B,GAAG;EACjCC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,kBAAkB;EAExBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,kBAAkB;EAC3B,CAAC;EAEDC,aAAa,EAAE,SAAAA,CAAA,EAAW;IACxB,OAAO,EAAE;EACX,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOT,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAACG,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC;EAEDM,uBAAuBA,CAACC,SAAS,EAAEC,OAAO,EAAE;IAC1C,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOd,WAAW;IACpB;IAEA,OAAOG,WAAW;EACpB,CAAC;EAEDY,qBAAqB,EAAE,UAAAA,CAAUH,SAAS,EAAEC,OAAO,EAAE;IACnD,IAAID,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMb,MAAM,CAACC,IAAI,CAAC,IAAAc,uBAAW,EAACJ,SAAS,CAACE,KAAK,CAAC,CAAC;EACjD,CAAC;EAEDG,QAAQ,EAAE,SAAAA,CAASH,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,MAAM,IAAII,SAAS,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAI,CAAC,iEAAiE,CAACC,IAAI,CAACL,KAAK,CAAC,EAAE;MAClF,MAAM,IAAII,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,OAAOJ,KAAK;EACd;AACF,CAAC;AAAC,IAAAM,QAAA,GAEahB,gBAAgB;AAAAiB,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAC/BG,MAAM,CAACF,OAAO,GAAGjB,gBAAgB"}
@@ -16,9 +16,7 @@ const VarBinary = {
16
16
  maximumLength: 8000,
17
17
  declaration: function (parameter) {
18
18
  const value = parameter.value; // Temporary solution. Remove 'any' later.
19
-
20
19
  let length;
21
-
22
20
  if (parameter.length) {
23
21
  length = parameter.length;
24
22
  } else if (value != null) {
@@ -28,7 +26,6 @@ const VarBinary = {
28
26
  } else {
29
27
  length = this.maximumLength;
30
28
  }
31
-
32
29
  if (length <= this.maximumLength) {
33
30
  return 'varbinary(' + length + ')';
34
31
  } else {
@@ -37,7 +34,6 @@ const VarBinary = {
37
34
  },
38
35
  resolveLength: function (parameter) {
39
36
  const value = parameter.value; // Temporary solution. Remove 'any' later.
40
-
41
37
  if (parameter.length != null) {
42
38
  return parameter.length;
43
39
  } else if (value != null) {
@@ -49,16 +45,13 @@ const VarBinary = {
49
45
  generateTypeInfo: function (parameter) {
50
46
  const buffer = Buffer.alloc(3);
51
47
  buffer.writeUInt8(this.id, 0);
52
-
53
48
  if (parameter.length <= this.maximumLength) {
54
49
  buffer.writeUInt16LE(parameter.length, 1);
55
50
  } else {
56
51
  buffer.writeUInt16LE(MAX, 1);
57
52
  }
58
-
59
53
  return buffer;
60
54
  },
61
-
62
55
  generateParameterLength(parameter, options) {
63
56
  if (parameter.value == null) {
64
57
  if (parameter.length <= this.maximumLength) {
@@ -67,15 +60,11 @@ const VarBinary = {
67
60
  return MAX_NULL_LENGTH;
68
61
  }
69
62
  }
70
-
71
63
  let value = parameter.value;
72
-
73
64
  if (!Buffer.isBuffer(value)) {
74
65
  value = value.toString();
75
66
  }
76
-
77
67
  const length = Buffer.byteLength(value, 'ucs2');
78
-
79
68
  if (parameter.length <= this.maximumLength) {
80
69
  const buffer = Buffer.alloc(2);
81
70
  buffer.writeUInt16LE(length, 0);
@@ -85,14 +74,11 @@ const VarBinary = {
85
74
  return UNKNOWN_PLP_LEN;
86
75
  }
87
76
  },
88
-
89
77
  *generateParameterData(parameter, options) {
90
78
  if (parameter.value == null) {
91
79
  return;
92
80
  }
93
-
94
81
  let value = parameter.value;
95
-
96
82
  if (parameter.length <= this.maximumLength) {
97
83
  if (Buffer.isBuffer(value)) {
98
84
  yield value;
@@ -104,38 +90,31 @@ const VarBinary = {
104
90
  if (!Buffer.isBuffer(value)) {
105
91
  value = value.toString();
106
92
  }
107
-
108
93
  const length = Buffer.byteLength(value, 'ucs2');
109
-
110
94
  if (length > 0) {
111
95
  const buffer = Buffer.alloc(4);
112
96
  buffer.writeUInt32LE(length, 0);
113
97
  yield buffer;
114
-
115
98
  if (Buffer.isBuffer(value)) {
116
99
  yield value;
117
100
  } else {
118
101
  yield Buffer.from(value, 'ucs2');
119
102
  }
120
103
  }
121
-
122
104
  yield PLP_TERMINATOR;
123
105
  }
124
106
  },
125
-
126
107
  validate: function (value) {
127
108
  if (value == null) {
128
109
  return null;
129
110
  }
130
-
131
111
  if (!Buffer.isBuffer(value)) {
132
112
  throw new TypeError('Invalid buffer.');
133
113
  }
134
-
135
114
  return value;
136
115
  }
137
116
  };
138
117
  var _default = VarBinary;
139
118
  exports.default = _default;
140
119
  module.exports = VarBinary;
141
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVgiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiUExQX1RFUk1JTkFUT1IiLCJOVUxMX0xFTkdUSCIsIk1BWF9OVUxMX0xFTkdUSCIsIlZhckJpbmFyeSIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsIm91dHB1dCIsInJlc29sdmVMZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImlzQnVmZmVyIiwidG9TdHJpbmciLCJieXRlTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwid3JpdGVVSW50MzJMRSIsInZhbGlkYXRlIiwiVHlwZUVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3ZhcmJpbmFyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE1BWCA9ICgxIDw8IDE2KSAtIDE7XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSBCdWZmZXIuZnJvbShbMHhmZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZl0pO1xuY29uc3QgUExQX1RFUk1JTkFUT1IgPSBCdWZmZXIuZnJvbShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGXSk7XG5jb25zdCBNQVhfTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBWYXJCaW5hcnk6IHsgbWF4aW11bUxlbmd0aDogbnVtYmVyIH0gJiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4QTUsXG4gIHR5cGU6ICdCSUdWQVJCSU4nLFxuICBuYW1lOiAnVmFyQmluYXJ5JyxcbiAgbWF4aW11bUxlbmd0aDogODAwMCxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhcGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5tYXhpbXVtTGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ3ZhcmJpbmFyeSgnICsgbGVuZ3RoICsgJyknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ3ZhcmJpbmFyeShtYXgpJztcbiAgICB9XG4gIH0sXG5cbiAgcmVzb2x2ZUxlbmd0aDogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm86IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygzKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcblxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoISA8PSB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUoTUFYLCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTUFYX05VTExfTEVOR1RIO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgJ3VjczInKTtcblxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoISA8PSB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH0gZWxzZSB7IC8vIHdyaXRlUExQQm9keVxuICAgICAgcmV0dXJuIFVOS05PV05fUExQX0xFTjtcbiAgICB9XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5aWVsZCBCdWZmZXIuZnJvbSh2YWx1ZS50b1N0cmluZygpLCAndWNzMicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7IC8vIHdyaXRlUExQQm9keVxuICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsICd1Y3MyJyk7XG5cbiAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUobGVuZ3RoLCAwKTtcbiAgICAgICAgeWllbGQgYnVmZmVyO1xuXG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgeWllbGQgQnVmZmVyLmZyb20odmFsdWUsICd1Y3MyJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgeWllbGQgUExQX1RFUk1JTkFUT1I7XG4gICAgfVxuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IEJ1ZmZlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGJ1ZmZlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWYXJCaW5hcnk7XG5tb2R1bGUuZXhwb3J0cyA9IFZhckJpbmFyeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFOLElBQVksQ0FBeEI7QUFDQSxNQUFNQyxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxJQUFiLEVBQW1CLElBQW5CLEVBQXlCLElBQXpCLEVBQStCLElBQS9CLEVBQXFDLElBQXJDLEVBQTJDLElBQTNDLENBQVosQ0FBeEI7QUFDQSxNQUFNQyxjQUFjLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxJQUFiLEVBQW1CLElBQW5CLENBQVosQ0FBdkI7QUFFQSxNQUFNRSxXQUFXLEdBQUdILE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FBWixDQUFwQjtBQUNBLE1BQU1HLGVBQWUsR0FBR0osTUFBTSxDQUFDQyxJQUFQLENBQVksQ0FBQyxJQUFELEVBQU8sSUFBUCxFQUFhLElBQWIsRUFBbUIsSUFBbkIsRUFBeUIsSUFBekIsRUFBK0IsSUFBL0IsRUFBcUMsSUFBckMsRUFBMkMsSUFBM0MsQ0FBWixDQUF4QjtBQUVBLE1BQU1JLFNBQStDLEdBQUc7RUFDdERDLEVBQUUsRUFBRSxJ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
120
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVgiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiUExQX1RFUk1JTkFUT1IiLCJOVUxMX0xFTkdUSCIsIk1BWF9OVUxMX0xFTkdUSCIsIlZhckJpbmFyeSIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsIm91dHB1dCIsInJlc29sdmVMZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImlzQnVmZmVyIiwidG9TdHJpbmciLCJieXRlTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwid3JpdGVVSW50MzJMRSIsInZhbGlkYXRlIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3ZhcmJpbmFyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE1BWCA9ICgxIDw8IDE2KSAtIDE7XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSBCdWZmZXIuZnJvbShbMHhmZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZl0pO1xuY29uc3QgUExQX1RFUk1JTkFUT1IgPSBCdWZmZXIuZnJvbShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGXSk7XG5jb25zdCBNQVhfTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBWYXJCaW5hcnk6IHsgbWF4aW11bUxlbmd0aDogbnVtYmVyIH0gJiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4QTUsXG4gIHR5cGU6ICdCSUdWQVJCSU4nLFxuICBuYW1lOiAnVmFyQmluYXJ5JyxcbiAgbWF4aW11bUxlbmd0aDogODAwMCxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhcGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5tYXhpbXVtTGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ3ZhcmJpbmFyeSgnICsgbGVuZ3RoICsgJyknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ3ZhcmJpbmFyeShtYXgpJztcbiAgICB9XG4gIH0sXG5cbiAgcmVzb2x2ZUxlbmd0aDogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm86IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygzKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcblxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoISA8PSB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUoTUFYLCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTUFYX05VTExfTEVOR1RIO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgJ3VjczInKTtcblxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoISA8PSB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH0gZWxzZSB7IC8vIHdyaXRlUExQQm9keVxuICAgICAgcmV0dXJuIFVOS05PV05fUExQX0xFTjtcbiAgICB9XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5aWVsZCBCdWZmZXIuZnJvbSh2YWx1ZS50b1N0cmluZygpLCAndWNzMicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7IC8vIHdyaXRlUExQQm9keVxuICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsICd1Y3MyJyk7XG5cbiAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUobGVuZ3RoLCAwKTtcbiAgICAgICAgeWllbGQgYnVmZmVyO1xuXG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgeWllbGQgQnVmZmVyLmZyb20odmFsdWUsICd1Y3MyJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgeWllbGQgUExQX1RFUk1JTkFUT1I7XG4gICAgfVxuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IEJ1ZmZlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGJ1ZmZlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWYXJCaW5hcnk7XG5tb2R1bGUuZXhwb3J0cyA9IFZhckJpbmFyeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3pCLE1BQU1DLGVBQWUsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckYsTUFBTUMsY0FBYyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTVELE1BQU1FLFdBQVcsR0FBR0gsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsTUFBTUcsZUFBZSxHQUFHSixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVyRixNQUFNSSxTQUErQyxHQUFHO0VBQ3REQyxFQUFFLEVB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"varbinary.js","names":["MAX","UNKNOWN_PLP_LEN","Buffer","from","PLP_TERMINATOR","NULL_LENGTH","MAX_NULL_LENGTH","VarBinary","id","type","name","maximumLength","declaration","parameter","value","length","output","resolveLength","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","generateParameterLength","options","isBuffer","toString","byteLength","generateParameterData","writeUInt32LE","validate","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/varbinary.ts"],"sourcesContent":["import { DataType } from '../data-type';\n\nconst MAX = (1 << 16) - 1;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\n\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\n\nconst VarBinary: { maximumLength: number } & DataType = {\n id: 0xA5,\n type: 'BIGVARBIN',\n name: 'VarBinary',\n maximumLength: 8000,\n\n declaration: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.length || 1;\n } else if (value === null && !parameter.output) {\n length = 1;\n } else {\n length = this.maximumLength;\n }\n\n if (length <= this.maximumLength) {\n return 'varbinary(' + length + ')';\n } else {\n return 'varbinary(max)';\n }\n },\n\n resolveLength: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n if (parameter.length != null) {\n return parameter.length;\n } else if (value != null) {\n return value.length;\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo: function(parameter) {\n const buffer = Buffer.alloc(3);\n buffer.writeUInt8(this.id, 0);\n\n if (parameter.length! <= this.maximumLength) {\n buffer.writeUInt16LE(parameter.length!, 1);\n } else {\n buffer.writeUInt16LE(MAX, 1);\n }\n\n return buffer;\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n if (parameter.length! <= this.maximumLength) {\n return NULL_LENGTH;\n } else {\n return MAX_NULL_LENGTH;\n }\n }\n\n let value = parameter.value;\n if (!Buffer.isBuffer(value)) {\n value = value.toString();\n }\n\n const length = Buffer.byteLength(value, 'ucs2');\n\n if (parameter.length! <= this.maximumLength) {\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(length, 0);\n return buffer;\n } else { // writePLPBody\n return UNKNOWN_PLP_LEN;\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n let value = parameter.value;\n\n if (parameter.length! <= this.maximumLength) {\n if (Buffer.isBuffer(value)) {\n yield value;\n } else {\n yield Buffer.from(value.toString(), 'ucs2');\n }\n } else { // writePLPBody\n if (!Buffer.isBuffer(value)) {\n value = value.toString();\n }\n\n const length = Buffer.byteLength(value, 'ucs2');\n\n if (length > 0) {\n const buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(length, 0);\n yield buffer;\n\n if (Buffer.isBuffer(value)) {\n yield value;\n } else {\n yield Buffer.from(value, 'ucs2');\n }\n }\n\n yield PLP_TERMINATOR;\n }\n },\n\n validate: function(value): Buffer | null {\n if (value == null) {\n return null;\n }\n if (!Buffer.isBuffer(value)) {\n throw new TypeError('Invalid buffer.');\n }\n return value;\n }\n};\n\nexport default VarBinary;\nmodule.exports = VarBinary;\n"],"mappings":"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"}