tedious 20.2.3 → 20.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 (109) hide show
  1. package/lib/always-encrypted/get-parameter-encryption-metadata.js +5 -2
  2. package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -1
  3. package/lib/bulk-load-payload.js +9 -5
  4. package/lib/bulk-load-payload.js.map +1 -1
  5. package/lib/bulk-load.js +17 -6
  6. package/lib/bulk-load.js.map +1 -1
  7. package/lib/connection.d.ts +5 -0
  8. package/lib/connection.js +33 -26
  9. package/lib/connection.js.map +1 -1
  10. package/lib/data-type.d.ts +47 -3
  11. package/lib/data-type.js +113 -2
  12. package/lib/data-type.js.map +1 -1
  13. package/lib/data-types/bigint.js +10 -17
  14. package/lib/data-types/bigint.js.map +1 -1
  15. package/lib/data-types/binary.js +10 -17
  16. package/lib/data-types/binary.js.map +1 -1
  17. package/lib/data-types/bit.js +10 -14
  18. package/lib/data-types/bit.js.map +1 -1
  19. package/lib/data-types/bitn.js +3 -6
  20. package/lib/data-types/bitn.js.map +1 -1
  21. package/lib/data-types/char.js +12 -17
  22. package/lib/data-types/char.js.map +1 -1
  23. package/lib/data-types/date.js +11 -27
  24. package/lib/data-types/date.js.map +1 -1
  25. package/lib/data-types/datetime.js +17 -37
  26. package/lib/data-types/datetime.js.map +1 -1
  27. package/lib/data-types/datetime2.js +12 -67
  28. package/lib/data-types/datetime2.js.map +1 -1
  29. package/lib/data-types/datetimen.js +3 -6
  30. package/lib/data-types/datetimen.js.map +1 -1
  31. package/lib/data-types/datetimeoffset.js +13 -60
  32. package/lib/data-types/datetimeoffset.js.map +1 -1
  33. package/lib/data-types/decimal-common.d.ts +18 -0
  34. package/lib/data-types/decimal-common.js +79 -0
  35. package/lib/data-types/decimal-common.js.map +1 -0
  36. package/lib/data-types/decimal.js +6 -67
  37. package/lib/data-types/decimal.js.map +1 -1
  38. package/lib/data-types/decimaln.js +3 -6
  39. package/lib/data-types/decimaln.js.map +1 -1
  40. package/lib/data-types/float.js +10 -15
  41. package/lib/data-types/float.js.map +1 -1
  42. package/lib/data-types/floatn.js +3 -6
  43. package/lib/data-types/floatn.js.map +1 -1
  44. package/lib/data-types/image.js +10 -17
  45. package/lib/data-types/image.js.map +1 -1
  46. package/lib/data-types/int.js +8 -15
  47. package/lib/data-types/int.js.map +1 -1
  48. package/lib/data-types/intn.js +3 -6
  49. package/lib/data-types/intn.js.map +1 -1
  50. package/lib/data-types/money.js +14 -18
  51. package/lib/data-types/money.js.map +1 -1
  52. package/lib/data-types/moneyn.js +3 -6
  53. package/lib/data-types/moneyn.js.map +1 -1
  54. package/lib/data-types/nchar.js +17 -31
  55. package/lib/data-types/nchar.js.map +1 -1
  56. package/lib/data-types/ntext.js +13 -17
  57. package/lib/data-types/ntext.js.map +1 -1
  58. package/lib/data-types/null.js +3 -6
  59. package/lib/data-types/null.js.map +1 -1
  60. package/lib/data-types/numeric.js +6 -67
  61. package/lib/data-types/numeric.js.map +1 -1
  62. package/lib/data-types/numericn.js +3 -6
  63. package/lib/data-types/numericn.js.map +1 -1
  64. package/lib/data-types/nvarchar.js +68 -57
  65. package/lib/data-types/nvarchar.js.map +1 -1
  66. package/lib/data-types/plp-stream.d.ts +19 -0
  67. package/lib/data-types/plp-stream.js +59 -0
  68. package/lib/data-types/plp-stream.js.map +1 -0
  69. package/lib/data-types/real.js +10 -16
  70. package/lib/data-types/real.js.map +1 -1
  71. package/lib/data-types/smalldatetime.js +17 -23
  72. package/lib/data-types/smalldatetime.js.map +1 -1
  73. package/lib/data-types/smallint.js +10 -16
  74. package/lib/data-types/smallint.js.map +1 -1
  75. package/lib/data-types/smallmoney.js +10 -16
  76. package/lib/data-types/smallmoney.js.map +1 -1
  77. package/lib/data-types/sql-variant.js +3 -6
  78. package/lib/data-types/sql-variant.js.map +1 -1
  79. package/lib/data-types/temporal.d.ts +22 -0
  80. package/lib/data-types/temporal.js +72 -0
  81. package/lib/data-types/temporal.js.map +1 -0
  82. package/lib/data-types/text.js +12 -18
  83. package/lib/data-types/text.js.map +1 -1
  84. package/lib/data-types/time.js +11 -55
  85. package/lib/data-types/time.js.map +1 -1
  86. package/lib/data-types/tinyint.js +10 -16
  87. package/lib/data-types/tinyint.js.map +1 -1
  88. package/lib/data-types/tvp.js +145 -87
  89. package/lib/data-types/tvp.js.map +1 -1
  90. package/lib/data-types/udt.js +3 -6
  91. package/lib/data-types/udt.js.map +1 -1
  92. package/lib/data-types/uniqueidentifier.js +12 -14
  93. package/lib/data-types/uniqueidentifier.js.map +1 -1
  94. package/lib/data-types/varbinary.js +58 -48
  95. package/lib/data-types/varbinary.js.map +1 -1
  96. package/lib/data-types/varchar.js +84 -50
  97. package/lib/data-types/varchar.js.map +1 -1
  98. package/lib/data-types/xml.js +3 -6
  99. package/lib/data-types/xml.js.map +1 -1
  100. package/lib/request.d.ts +23 -3
  101. package/lib/request.js +29 -3
  102. package/lib/request.js.map +1 -1
  103. package/lib/rpcrequest-payload.d.ts +21 -9
  104. package/lib/rpcrequest-payload.js +62 -51
  105. package/lib/rpcrequest-payload.js.map +1 -1
  106. package/lib/tedious.d.ts +2 -2
  107. package/lib/tedious.js +7 -1
  108. package/lib/tedious.js.map +1 -1
  109. package/package.json +1 -1
@@ -4,11 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _plpStream = require("./plp-stream");
7
8
  const MAX = (1 << 16) - 1;
8
9
  const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
9
10
  const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);
10
11
  const NULL_LENGTH = Buffer.from([0xFF, 0xFF]);
11
12
  const MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);
13
+ const NO_COLLATION = Buffer.alloc(5);
14
+ function encodeUcs2(chunk) {
15
+ if (typeof chunk !== 'string') {
16
+ throw new TypeError('Invalid string.');
17
+ }
18
+ return Buffer.from(chunk, 'ucs2');
19
+ }
12
20
  const NVarChar = {
13
21
  id: 0xE7,
14
22
  type: 'NVARCHAR',
@@ -17,6 +25,9 @@ const NVarChar = {
17
25
  declaration: function (parameter) {
18
26
  const value = parameter.value; // Temporary solution. Remove 'any' later.
19
27
 
28
+ if ((0, _plpStream.isAsyncIterable)(value)) {
29
+ return 'nvarchar(max)';
30
+ }
20
31
  let length;
21
32
  if (parameter.length) {
22
33
  length = parameter.length;
@@ -47,75 +58,49 @@ const NVarChar = {
47
58
  return this.maximumLength;
48
59
  }
49
60
  },
50
- generateTypeInfo(parameter) {
51
- const buffer = Buffer.alloc(8);
52
- buffer.writeUInt8(this.id, 0);
61
+ writeTypeInfo(buffer, parameter) {
62
+ buffer.writeUInt8(this.id);
53
63
  if (parameter.length <= this.maximumLength) {
54
- buffer.writeUInt16LE(parameter.length * 2, 1);
64
+ buffer.writeUInt16LE(parameter.length * 2);
55
65
  } else {
56
- buffer.writeUInt16LE(MAX, 1);
66
+ buffer.writeUInt16LE(MAX);
57
67
  }
58
68
  if (parameter.collation) {
59
- parameter.collation.toBuffer().copy(buffer, 3, 0, 5);
60
- }
61
- return buffer;
62
- },
63
- generateParameterLength(parameter, options) {
64
- if (parameter.value == null) {
65
- if (parameter.length <= this.maximumLength) {
66
- return NULL_LENGTH;
67
- } else {
68
- return MAX_NULL_LENGTH;
69
- }
70
- }
71
- let value = parameter.value;
72
- if (parameter.length <= this.maximumLength) {
73
- let length;
74
- if (value instanceof Buffer) {
75
- length = value.length;
76
- } else {
77
- value = value.toString();
78
- length = Buffer.byteLength(value, 'ucs2');
79
- }
80
- const buffer = Buffer.alloc(2);
81
- buffer.writeUInt16LE(length, 0);
82
- return buffer;
69
+ buffer.writeBuffer(parameter.collation.toBuffer().subarray(0, 5));
83
70
  } else {
84
- return UNKNOWN_PLP_LEN;
71
+ buffer.writeBuffer(NO_COLLATION);
85
72
  }
86
73
  },
87
- *generateParameterData(parameter, options) {
74
+ writeValue(buffer, parameter) {
88
75
  if (parameter.value == null) {
76
+ buffer.writeBuffer(parameter.length <= this.maximumLength ? NULL_LENGTH : MAX_NULL_LENGTH);
89
77
  return;
90
78
  }
91
- let value = parameter.value;
79
+
80
+ // Read from its source while the request is written; `resolve` declared
81
+ // it as `nvarchar(max)`.
82
+ if ((0, _plpStream.isAsyncIterable)(parameter.value)) {
83
+ return (0, _plpStream.writePlpStream)(buffer, parameter.value, encodeUcs2);
84
+ }
85
+ const value = parameter.value instanceof Buffer ? parameter.value : parameter.value.toString();
86
+ const length = typeof value === 'string' ? value.length * 2 : value.length;
92
87
  if (parameter.length <= this.maximumLength) {
93
- if (value instanceof Buffer) {
94
- yield value;
95
- } else {
96
- value = value.toString();
97
- yield Buffer.from(value, 'ucs2');
98
- }
88
+ buffer.writeUInt16LE(length);
99
89
  } else {
100
- if (value instanceof Buffer) {
101
- const length = value.length;
102
- if (length > 0) {
103
- const buffer = Buffer.alloc(4);
104
- buffer.writeUInt32LE(length, 0);
105
- yield buffer;
106
- yield value;
107
- }
108
- } else {
109
- value = value.toString();
110
- const length = Buffer.byteLength(value, 'ucs2');
111
- if (length > 0) {
112
- const buffer = Buffer.alloc(4);
113
- buffer.writeUInt32LE(length, 0);
114
- yield buffer;
115
- yield Buffer.from(value, 'ucs2');
116
- }
90
+ buffer.writeBuffer(UNKNOWN_PLP_LEN);
91
+ if (length === 0) {
92
+ buffer.writeBuffer(PLP_TERMINATOR);
93
+ return;
117
94
  }
118
- yield PLP_TERMINATOR;
95
+ buffer.writeUInt32LE(length);
96
+ }
97
+ if (typeof value === 'string') {
98
+ buffer.writeString(value, 'ucs2');
99
+ } else {
100
+ buffer.writeBuffer(value);
101
+ }
102
+ if (parameter.length > this.maximumLength) {
103
+ buffer.writeBuffer(PLP_TERMINATOR);
119
104
  }
120
105
  },
121
106
  validate: function (value) {
@@ -126,8 +111,34 @@ const NVarChar = {
126
111
  throw new TypeError('Invalid string.');
127
112
  }
128
113
  return value;
114
+ },
115
+ resolve(parameter, collation) {
116
+ if ((0, _plpStream.isAsyncIterable)(parameter.value)) {
117
+ // Read from its source while the request is written, and sent as
118
+ // `nvarchar(max)` since its length is not known up front.
119
+ const data = {
120
+ value: parameter.value,
121
+ length: MAX
122
+ };
123
+ if (collation) {
124
+ data.collation = collation;
125
+ }
126
+ return data;
127
+ }
128
+ const value = this.validate(parameter.value, collation);
129
+ const data = {
130
+ value
131
+ };
132
+ data.length = parameter.length != null ? parameter.length : this.resolveLength({
133
+ ...parameter,
134
+ value
135
+ });
136
+ if (collation) {
137
+ data.collation = collation;
138
+ }
139
+ return data;
129
140
  }
130
141
  };
131
142
  var _default = exports.default = NVarChar;
132
143
  module.exports = NVarChar;
133
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVgiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiUExQX1RFUk1JTkFUT1IiLCJOVUxMX0xFTkdUSCIsIk1BWF9OVUxMX0xFTkdUSCIsIk5WYXJDaGFyIiwiaWQiLCJ0eXBlIiwibmFtZSIsIm1heGltdW1MZW5ndGgiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInZhbHVlIiwibGVuZ3RoIiwidG9TdHJpbmciLCJvdXRwdXQiLCJyZXNvbHZlTGVuZ3RoIiwiaXNCdWZmZXIiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImNvbGxhdGlvbiIsInRvQnVmZmVyIiwiY29weSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImJ5dGVMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ3cml0ZVVJbnQzMkxFIiwidmFsaWRhdGUiLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbnZhcmNoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE1BWCA9ICgxIDw8IDE2KSAtIDE7XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSBCdWZmZXIuZnJvbShbMHhmZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZl0pO1xuY29uc3QgUExQX1RFUk1JTkFUT1IgPSBCdWZmZXIuZnJvbShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGXSk7XG5jb25zdCBNQVhfTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBOVmFyQ2hhcjogeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSAmIERhdGFUeXBlID0ge1xuICBpZDogMHhFNyxcbiAgdHlwZTogJ05WQVJDSEFSJyxcbiAgbmFtZTogJ05WYXJDaGFyJyxcbiAgbWF4aW11bUxlbmd0aDogNDAwMCxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cblxuICAgIGxldCBsZW5ndGg7XG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgIGxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZW5ndGggPSB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCB8fCAxO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwgJiYgIXBhcmFtZXRlci5vdXRwdXQpIHtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgcmV0dXJuICdudmFyY2hhcignICsgbGVuZ3RoICsgJyknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ252YXJjaGFyKG1heCknO1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZS5sZW5ndGggLyAyKSB8fCAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEgKiAyLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUoTUFYLCAxKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1ldGVyLmNvbGxhdGlvbikge1xuICAgICAgcGFyYW1ldGVyLmNvbGxhdGlvbi50b0J1ZmZlcigpLmNvcHkoYnVmZmVyLCAzLCAwLCA1KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTUFYX05VTExfTEVOR1RIO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBsZXQgbGVuZ3RoO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsICd1Y3MyJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVU5LTk9XTl9QTFBfTEVOO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG5cbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLCAndWNzMicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuXG4gICAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGxlbmd0aCwgMCk7XG4gICAgICAgICAgeWllbGQgYnVmZmVyO1xuICAgICAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlLCAndWNzMicpO1xuXG4gICAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGxlbmd0aCwgMCk7XG4gICAgICAgICAgeWllbGQgYnVmZmVyO1xuICAgICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLCAndWNzMicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHlpZWxkIFBMUF9URVJNSU5BVE9SO1xuICAgIH1cbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTlZhckNoYXI7XG5tb2R1bGUuZXhwb3J0cyA9IE5WYXJDaGFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFD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
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGxwU3RyZWFtIiwicmVxdWlyZSIsIk1BWCIsIlVOS05PV05fUExQX0xFTiIsIkJ1ZmZlciIsImZyb20iLCJQTFBfVEVSTUlOQVRPUiIsIk5VTExfTEVOR1RIIiwiTUFYX05VTExfTEVOR1RIIiwiTk9fQ09MTEFUSU9OIiwiYWxsb2MiLCJlbmNvZGVVY3MyIiwiY2h1bmsiLCJUeXBlRXJyb3IiLCJOVmFyQ2hhciIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImlzQXN5bmNJdGVyYWJsZSIsImxlbmd0aCIsInRvU3RyaW5nIiwib3V0cHV0IiwicmVzb2x2ZUxlbmd0aCIsImlzQnVmZmVyIiwid3JpdGVUeXBlSW5mbyIsImJ1ZmZlciIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkxFIiwiY29sbGF0aW9uIiwid3JpdGVCdWZmZXIiLCJ0b0J1ZmZlciIsInN1YmFycmF5Iiwid3JpdGVWYWx1ZSIsIndyaXRlUGxwU3RyZWFtIiwid3JpdGVVSW50MzJMRSIsIndyaXRlU3RyaW5nIiwidmFsaWRhdGUiLCJyZXNvbHZlIiwiZGF0YSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9udmFyY2hhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlLCB0eXBlIFBhcmFtZXRlckRhdGEgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgaXNBc3luY0l0ZXJhYmxlLCB3cml0ZVBscFN0cmVhbSB9IGZyb20gJy4vcGxwLXN0cmVhbSc7XG5cbmNvbnN0IE1BWCA9ICgxIDw8IDE2KSAtIDE7XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSBCdWZmZXIuZnJvbShbMHhmZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZl0pO1xuY29uc3QgUExQX1RFUk1JTkFUT1IgPSBCdWZmZXIuZnJvbShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGXSk7XG5jb25zdCBNQVhfTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuY29uc3QgTk9fQ09MTEFUSU9OID0gQnVmZmVyLmFsbG9jKDUpO1xuXG5mdW5jdGlvbiBlbmNvZGVVY3MyKGNodW5rOiB1bmtub3duKTogQnVmZmVyIHtcbiAgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgfVxuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmssICd1Y3MyJyk7XG59XG5cbmNvbnN0IE5WYXJDaGFyOiB7IG1heGltdW1MZW5ndGg6IG51bWJlciB9ICYgRGF0YVR5cGUgPSB7XG4gIGlkOiAweEU3LFxuICB0eXBlOiAnTlZBUkNIQVInLFxuICBuYW1lOiAnTlZhckNoYXInLFxuICBtYXhpbXVtTGVuZ3RoOiA0MDAwLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuXG4gICAgaWYgKGlzQXN5bmNJdGVyYWJsZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnbnZhcmNoYXIobWF4KSc7XG4gICAgfVxuXG4gICAgbGV0IGxlbmd0aDtcbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCkge1xuICAgICAgbGVuZ3RoID0gcGFyYW1ldGVyLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGxlbmd0aCA9IHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhcGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5tYXhpbXVtTGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ252YXJjaGFyKCcgKyBsZW5ndGggKyAnKSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnbnZhcmNoYXIobWF4KSc7XG4gICAgfVxuICB9LFxuXG4gIHJlc29sdmVMZW5ndGg6IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIGFueTsgLy8gVGVtcG9yYXJ5IHNvbHV0aW9uLiBSZW1vdmUgJ2FueScgbGF0ZXIuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gKHZhbHVlLmxlbmd0aCAvIDIpIHx8IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5sZW5ndGggfHwgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG4gIH0sXG5cbiAgd3JpdGVUeXBlSW5mbyhidWZmZXIsIHBhcmFtZXRlcikge1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQpO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEgKiAyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUoTUFYKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1ldGVyLmNvbGxhdGlvbikge1xuICAgICAgYnVmZmVyLndyaXRlQnVmZmVyKHBhcmFtZXRlci5jb2xsYXRpb24udG9CdWZmZXIoKS5zdWJhcnJheSgwLCA1KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZUJ1ZmZlcihOT19DT0xMQVRJT04pO1xuICAgIH1cbiAgfSxcblxuICB3cml0ZVZhbHVlKGJ1ZmZlciwgcGFyYW1ldGVyKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICBidWZmZXIud3JpdGVCdWZmZXIocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoID8gTlVMTF9MRU5HVEggOiBNQVhfTlVMTF9MRU5HVEgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlYWQgZnJvbSBpdHMgc291cmNlIHdoaWxlIHRoZSByZXF1ZXN0IGlzIHdyaXR0ZW47IGByZXNvbHZlYCBkZWNsYXJlZFxuICAgIC8vIGl0IGFzIGBudmFyY2hhcihtYXgpYC5cbiAgICBpZiAoaXNBc3luY0l0ZXJhYmxlKHBhcmFtZXRlci52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB3cml0ZVBscFN0cmVhbShidWZmZXIsIHBhcmFtZXRlci52YWx1ZSwgZW5jb2RlVWNzMik7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIgPyBwYXJhbWV0ZXIudmFsdWUgOiBwYXJhbWV0ZXIudmFsdWUudG9TdHJpbmcoKTtcbiAgICBjb25zdCBsZW5ndGggPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUubGVuZ3RoICogMiA6IHZhbHVlLmxlbmd0aDtcblxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoISA8PSB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZUJ1ZmZlcihVTktOT1dOX1BMUF9MRU4pO1xuICAgICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgICBidWZmZXIud3JpdGVCdWZmZXIoUExQX1RFUk1JTkFUT1IpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRShsZW5ndGgpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBidWZmZXIud3JpdGVTdHJpbmcodmFsdWUsICd1Y3MyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZUJ1ZmZlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghID4gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBidWZmZXIud3JpdGVCdWZmZXIoUExQX1RFUk1JTkFUT1IpO1xuICAgIH1cbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcblxuICByZXNvbHZlKHBhcmFtZXRlciwgY29sbGF0aW9uKSB7XG4gICAgaWYgKGlzQXN5bmNJdGVyYWJsZShwYXJhbWV0ZXIudmFsdWUpKSB7XG4gICAgICAvLyBSZWFkIGZyb20gaXRzIHNvdXJjZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyB3cml0dGVuLCBhbmQgc2VudCBhc1xuICAgICAgLy8gYG52YXJjaGFyKG1heClgIHNpbmNlIGl0cyBsZW5ndGggaXMgbm90IGtub3duIHVwIGZyb250LlxuICAgICAgY29uc3QgZGF0YTogUGFyYW1ldGVyRGF0YSA9IHsgdmFsdWU6IHBhcmFtZXRlci52YWx1ZSwgbGVuZ3RoOiBNQVggfTtcbiAgICAgIGlmIChjb2xsYXRpb24pIHtcbiAgICAgICAgZGF0YS5jb2xsYXRpb24gPSBjb2xsYXRpb247XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsaWRhdGUocGFyYW1ldGVyLnZhbHVlLCBjb2xsYXRpb24pO1xuICAgIGNvbnN0IGRhdGE6IFBhcmFtZXRlckRhdGEgPSB7IHZhbHVlIH07XG4gICAgZGF0YS5sZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwgPyBwYXJhbWV0ZXIubGVuZ3RoIDogdGhpcy5yZXNvbHZlTGVuZ3RoISh7IC4uLnBhcmFtZXRlciwgdmFsdWUgfSk7XG4gICAgaWYgKGNvbGxhdGlvbikge1xuICAgICAgZGF0YS5jb2xsYXRpb24gPSBjb2xsYXRpb247XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOVmFyQ2hhcjtcbm1vZHVsZS5leHBvcnRzID0gTlZhckNoYXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUN6QixNQUFNQyxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JGLE1BQU1DLGNBQWMsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU1RCxNQUFNRSxX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
@@ -1 +1 @@
1
- {"version":3,"file":"nvarchar.js","names":["MAX","UNKNOWN_PLP_LEN","Buffer","from","PLP_TERMINATOR","NULL_LENGTH","MAX_NULL_LENGTH","NVarChar","id","type","name","maximumLength","declaration","parameter","value","length","toString","output","resolveLength","isBuffer","generateTypeInfo","buffer","alloc","writeUInt8","writeUInt16LE","collation","toBuffer","copy","generateParameterLength","options","byteLength","generateParameterData","writeUInt32LE","validate","TypeError","_default","exports","default","module"],"sources":["../../src/data-types/nvarchar.ts"],"sourcesContent":["import { type 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 NVarChar: { maximumLength: number } & DataType = {\n id: 0xE7,\n type: 'NVARCHAR',\n name: 'NVarChar',\n maximumLength: 4000,\n\n declaration: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.toString().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 'nvarchar(' + length + ')';\n } else {\n return 'nvarchar(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 if (Buffer.isBuffer(value)) {\n return (value.length / 2) || 1;\n } else {\n return value.toString().length || 1;\n }\n } else {\n return this.maximumLength;\n }\n },\n\n generateTypeInfo(parameter) {\n const buffer = Buffer.alloc(8);\n buffer.writeUInt8(this.id, 0);\n\n if (parameter.length! <= this.maximumLength) {\n buffer.writeUInt16LE(parameter.length! * 2, 1);\n } else {\n buffer.writeUInt16LE(MAX, 1);\n }\n\n if (parameter.collation) {\n parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\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 (parameter.length! <= this.maximumLength) {\n let length;\n if (value instanceof Buffer) {\n length = value.length;\n } else {\n value = value.toString();\n length = Buffer.byteLength(value, 'ucs2');\n }\n\n const buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(length, 0);\n return buffer;\n } else {\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 (value instanceof Buffer) {\n yield value;\n } else {\n value = value.toString();\n yield Buffer.from(value, 'ucs2');\n }\n } else {\n if (value instanceof Buffer) {\n const length = value.length;\n\n if (length > 0) {\n const buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(length, 0);\n yield buffer;\n yield value;\n }\n } else {\n value = value.toString();\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 yield Buffer.from(value, 'ucs2');\n }\n }\n\n yield PLP_TERMINATOR;\n }\n },\n\n validate: function(value): null | string {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n return value;\n }\n};\n\nexport default NVarChar;\nmodule.exports = NVarChar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"nvarchar.js","names":["_plpStream","require","MAX","UNKNOWN_PLP_LEN","Buffer","from","PLP_TERMINATOR","NULL_LENGTH","MAX_NULL_LENGTH","NO_COLLATION","alloc","encodeUcs2","chunk","TypeError","NVarChar","id","type","name","maximumLength","declaration","parameter","value","isAsyncIterable","length","toString","output","resolveLength","isBuffer","writeTypeInfo","buffer","writeUInt8","writeUInt16LE","collation","writeBuffer","toBuffer","subarray","writeValue","writePlpStream","writeUInt32LE","writeString","validate","resolve","data","_default","exports","default","module"],"sources":["../../src/data-types/nvarchar.ts"],"sourcesContent":["import { type DataType, type ParameterData } from '../data-type';\nimport { isAsyncIterable, writePlpStream } from './plp-stream';\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]);\nconst NO_COLLATION = Buffer.alloc(5);\n\nfunction encodeUcs2(chunk: unknown): Buffer {\n if (typeof chunk !== 'string') {\n throw new TypeError('Invalid string.');\n }\n return Buffer.from(chunk, 'ucs2');\n}\n\nconst NVarChar: { maximumLength: number } & DataType = {\n id: 0xE7,\n type: 'NVARCHAR',\n name: 'NVarChar',\n maximumLength: 4000,\n\n declaration: function(parameter) {\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n if (isAsyncIterable(value)) {\n return 'nvarchar(max)';\n }\n\n let length;\n if (parameter.length) {\n length = parameter.length;\n } else if (value != null) {\n length = value.toString().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 'nvarchar(' + length + ')';\n } else {\n return 'nvarchar(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 if (Buffer.isBuffer(value)) {\n return (value.length / 2) || 1;\n } else {\n return value.toString().length || 1;\n }\n } else {\n return this.maximumLength;\n }\n },\n\n writeTypeInfo(buffer, parameter) {\n buffer.writeUInt8(this.id);\n\n if (parameter.length! <= this.maximumLength) {\n buffer.writeUInt16LE(parameter.length! * 2);\n } else {\n buffer.writeUInt16LE(MAX);\n }\n\n if (parameter.collation) {\n buffer.writeBuffer(parameter.collation.toBuffer().subarray(0, 5));\n } else {\n buffer.writeBuffer(NO_COLLATION);\n }\n },\n\n writeValue(buffer, parameter) {\n if (parameter.value == null) {\n buffer.writeBuffer(parameter.length! <= this.maximumLength ? NULL_LENGTH : MAX_NULL_LENGTH);\n return;\n }\n\n // Read from its source while the request is written; `resolve` declared\n // it as `nvarchar(max)`.\n if (isAsyncIterable(parameter.value)) {\n return writePlpStream(buffer, parameter.value, encodeUcs2);\n }\n\n const value = parameter.value instanceof Buffer ? parameter.value : parameter.value.toString();\n const length = typeof value === 'string' ? value.length * 2 : value.length;\n\n if (parameter.length! <= this.maximumLength) {\n buffer.writeUInt16LE(length);\n } else {\n buffer.writeBuffer(UNKNOWN_PLP_LEN);\n if (length === 0) {\n buffer.writeBuffer(PLP_TERMINATOR);\n return;\n }\n buffer.writeUInt32LE(length);\n }\n\n if (typeof value === 'string') {\n buffer.writeString(value, 'ucs2');\n } else {\n buffer.writeBuffer(value);\n }\n\n if (parameter.length! > this.maximumLength) {\n buffer.writeBuffer(PLP_TERMINATOR);\n }\n },\n\n validate: function(value): null | string {\n if (value == null) {\n return null;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError('Invalid string.');\n }\n\n return value;\n },\n\n resolve(parameter, collation) {\n if (isAsyncIterable(parameter.value)) {\n // Read from its source while the request is written, and sent as\n // `nvarchar(max)` since its length is not known up front.\n const data: ParameterData = { value: parameter.value, length: MAX };\n if (collation) {\n data.collation = collation;\n }\n return data;\n }\n\n const value = this.validate(parameter.value, collation);\n const data: ParameterData = { value };\n data.length = parameter.length != null ? parameter.length : this.resolveLength!({ ...parameter, value });\n if (collation) {\n data.collation = collation;\n }\n return data;\n }\n};\n\nexport default NVarChar;\nmodule.exports = NVarChar;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';
2
+ /**
3
+ * A value that is read while the request is written, rather than being fully
4
+ * in memory: the `max` text and binary types accept an async iterable of
5
+ * chunks (strings or buffers) here.
6
+ */
7
+ export declare function isAsyncIterable(value: unknown): value is AsyncIterable<unknown>;
8
+ /**
9
+ * Writes an in-memory PLP value into `buffer`: the unknown-length marker,
10
+ * the bytes as one chunk if there are any, then the terminator.
11
+ */
12
+ export declare function writePlpValue(buffer: WritableTrackingBuffer, bytes: Buffer): void;
13
+ /**
14
+ * Writes a PLP value read from `source` into `buffer`: the unknown-length
15
+ * marker, then one length-prefixed chunk per non-empty encoded piece, then
16
+ * the terminator. Yields whenever the buffer holds a chunk's worth, as the
17
+ * rest of a `DataType.writeValue` promises.
18
+ */
19
+ export declare function writePlpStream(buffer: WritableTrackingBuffer, source: AsyncIterable<unknown>, encode: (chunk: unknown) => Buffer): AsyncGenerator<void, void>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isAsyncIterable = isAsyncIterable;
7
+ exports.writePlpStream = writePlpStream;
8
+ exports.writePlpValue = writePlpValue;
9
+ var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
12
+ const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);
13
+
14
+ /**
15
+ * A value that is read while the request is written, rather than being fully
16
+ * in memory: the `max` text and binary types accept an async iterable of
17
+ * chunks (strings or buffers) here.
18
+ */
19
+ function isAsyncIterable(value) {
20
+ return value != null && typeof value[Symbol.asyncIterator] === 'function';
21
+ }
22
+
23
+ /**
24
+ * Writes an in-memory PLP value into `buffer`: the unknown-length marker,
25
+ * the bytes as one chunk if there are any, then the terminator.
26
+ */
27
+ function writePlpValue(buffer, bytes) {
28
+ buffer.writeBuffer(UNKNOWN_PLP_LEN);
29
+ if (bytes.length > 0) {
30
+ buffer.writeUInt32LE(bytes.length);
31
+ buffer.writeBuffer(bytes);
32
+ }
33
+ buffer.writeBuffer(PLP_TERMINATOR);
34
+ }
35
+
36
+ /**
37
+ * Writes a PLP value read from `source` into `buffer`: the unknown-length
38
+ * marker, then one length-prefixed chunk per non-empty encoded piece, then
39
+ * the terminator. Yields whenever the buffer holds a chunk's worth, as the
40
+ * rest of a `DataType.writeValue` promises.
41
+ */
42
+ async function* writePlpStream(buffer, source, encode) {
43
+ buffer.writeBuffer(UNKNOWN_PLP_LEN);
44
+ for await (const chunk of source) {
45
+ const bytes = encode(chunk);
46
+
47
+ // A zero-length PLP chunk would be read as the terminator.
48
+ if (bytes.length === 0) {
49
+ continue;
50
+ }
51
+ buffer.writeUInt32LE(bytes.length);
52
+ buffer.writeBuffer(bytes);
53
+ if (buffer.length >= _writableTrackingBuffer.default.CHUNK_SIZE) {
54
+ yield;
55
+ }
56
+ }
57
+ buffer.writeBuffer(PLP_TERMINATOR);
58
+ }
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiVU5LTk9XTl9QTFBfTEVOIiwiQnVmZmVyIiwiZnJvbSIsIlBMUF9URVJNSU5BVE9SIiwiaXNBc3luY0l0ZXJhYmxlIiwidmFsdWUiLCJTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwid3JpdGVQbHBWYWx1ZSIsImJ1ZmZlciIsImJ5dGVzIiwid3JpdGVCdWZmZXIiLCJsZW5ndGgiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVQbHBTdHJlYW0iLCJzb3VyY2UiLCJlbmNvZGUiLCJjaHVuayIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJDSFVOS19TSVpFIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvcGxwLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgVU5LTk9XTl9QTFBfTEVOID0gQnVmZmVyLmZyb20oWzB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmZdKTtcbmNvbnN0IFBMUF9URVJNSU5BVE9SID0gQnVmZmVyLmZyb20oWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDBdKTtcblxuLyoqXG4gKiBBIHZhbHVlIHRoYXQgaXMgcmVhZCB3aGlsZSB0aGUgcmVxdWVzdCBpcyB3cml0dGVuLCByYXRoZXIgdGhhbiBiZWluZyBmdWxseVxuICogaW4gbWVtb3J5OiB0aGUgYG1heGAgdGV4dCBhbmQgYmluYXJ5IHR5cGVzIGFjY2VwdCBhbiBhc3luYyBpdGVyYWJsZSBvZlxuICogY2h1bmtzIChzdHJpbmdzIG9yIGJ1ZmZlcnMpIGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FzeW5jSXRlcmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBBc3luY0l0ZXJhYmxlPHVua25vd24+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mICh2YWx1ZSBhcyB7IFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0/OiB1bmtub3duIH0pW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBXcml0ZXMgYW4gaW4tbWVtb3J5IFBMUCB2YWx1ZSBpbnRvIGBidWZmZXJgOiB0aGUgdW5rbm93bi1sZW5ndGggbWFya2VyLFxuICogdGhlIGJ5dGVzIGFzIG9uZSBjaHVuayBpZiB0aGVyZSBhcmUgYW55LCB0aGVuIHRoZSB0ZXJtaW5hdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVQbHBWYWx1ZShidWZmZXI6IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIsIGJ5dGVzOiBCdWZmZXIpIHtcbiAgYnVmZmVyLndyaXRlQnVmZmVyKFVOS05PV05fUExQX0xFTik7XG4gIGlmIChieXRlcy5sZW5ndGggPiAwKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDMyTEUoYnl0ZXMubGVuZ3RoKTtcbiAgICBidWZmZXIud3JpdGVCdWZmZXIoYnl0ZXMpO1xuICB9XG4gIGJ1ZmZlci53cml0ZUJ1ZmZlcihQTFBfVEVSTUlOQVRPUik7XG59XG5cbi8qKlxuICogV3JpdGVzIGEgUExQIHZhbHVlIHJlYWQgZnJvbSBgc291cmNlYCBpbnRvIGBidWZmZXJgOiB0aGUgdW5rbm93bi1sZW5ndGhcbiAqIG1hcmtlciwgdGhlbiBvbmUgbGVuZ3RoLXByZWZpeGVkIGNodW5rIHBlciBub24tZW1wdHkgZW5jb2RlZCBwaWVjZSwgdGhlblxuICogdGhlIHRlcm1pbmF0b3IuIFlpZWxkcyB3aGVuZXZlciB0aGUgYnVmZmVyIGhvbGRzIGEgY2h1bmsncyB3b3J0aCwgYXMgdGhlXG4gKiByZXN0IG9mIGEgYERhdGFUeXBlLndyaXRlVmFsdWVgIHByb21pc2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gKiB3cml0ZVBscFN0cmVhbShidWZmZXI6IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIsIHNvdXJjZTogQXN5bmNJdGVyYWJsZTx1bmtub3duPiwgZW5jb2RlOiAoY2h1bms6IHVua25vd24pID0+IEJ1ZmZlcik6IEFzeW5jR2VuZXJhdG9yPHZvaWQsIHZvaWQ+IHtcbiAgYnVmZmVyLndyaXRlQnVmZmVyKFVOS05PV05fUExQX0xFTik7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzb3VyY2UpIHtcbiAgICBjb25zdCBieXRlcyA9IGVuY29kZShjaHVuayk7XG5cbiAgICAvLyBBIHplcm8tbGVuZ3RoIFBMUCBjaHVuayB3b3VsZCBiZSByZWFkIGFzIHRoZSB0ZXJtaW5hdG9yLlxuICAgIGlmIChieXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGJ5dGVzLmxlbmd0aCk7XG4gICAgYnVmZmVyLndyaXRlQnVmZmVyKGJ5dGVzKTtcblxuICAgIGlmIChidWZmZXIubGVuZ3RoID49IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIuQ0hVTktfU0laRSkge1xuICAgICAgeWllbGQ7XG4gICAgfVxuICB9XG5cbiAgYnVmZmVyLndyaXRlQnVmZmVyKFBMUF9URVJNSU5BVE9SKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQWlGLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRWpGLE1BQU1HLGVBQWUsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckYsTUFBTUMsY0FBYyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZUFBZUEsQ0FBQ0MsS0FBYyxFQUFtQztFQUMvRSxPQUFPQSxLQUFLLElBQUksSUFBSSxJQUFJLE9BQVFBLEtBQUssQ0FBMENDLE1BQU0sQ0FBQ0MsYUFBYSxDQUFDLEtBQUssVUFBVTtBQUNySDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGFBQWFBLENBQUNDLE1BQThCLEVBQUVDLEtBQWEsRUFBRTtFQUMzRUQsTUFBTSxDQUFDRSxXQUFXLENBQUNYLGVBQWUsQ0FBQztFQUNuQyxJQUFJVSxLQUFLLENBQUNFLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDcEJILE1BQU0sQ0FBQ0ksYUFBYSxDQUFDSCxLQUFLLENBQUNFLE1BQU0sQ0FBQztJQUNsQ0gsTUFBTSxDQUFDRSxXQUFXLENBQUNELEtBQUssQ0FBQztFQUMzQjtFQUNBRCxNQUFNLENBQUNFLFdBQVcsQ0FBQ1IsY0FBYyxDQUFDO0FBQ3BDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLGdCQUFpQlcsY0FBY0EsQ0FBQ0wsTUFBOEIsRUFBRU0sTUFBOEIsRUFBRUMsTUFBa0MsRUFBOEI7RUFDcktQLE1BQU0sQ0FBQ0UsV0FBVyxDQUFDWCxlQUFlLENBQUM7RUFFbkMsV0FBVyxNQUFNaUIsS0FBSyxJQUFJRixNQUFNLEVBQUU7SUFDaEMsTUFBTUwsS0FBSyxHQUFHTSxNQUFNLENBQUNDLEtBQUssQ0FBQzs7SUFFM0I7SUFDQSxJQUFJUCxLQUFLLENBQUNFLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDdEI7SUFDRjtJQUVBSCxNQUFNLENBQUNJLGFBQWEsQ0FBQ0gsS0FBSyxDQUFDRSxNQUFNLENBQUM7SUFDbENILE1BQU0sQ0FBQ0UsV0FBVyxDQUFDRCxLQUFLLENBQUM7SUFFekIsSUFBSUQsTUFBTSxDQUFDRyxNQUFNLElBQUlNLCtCQUFzQixDQUFDQyxVQUFVLEVBQUU7TUFDdEQsS0FBSztJQUNQO0VBQ0Y7RUFFQVYsTUFBTSxDQUFDRSxXQUFXLENBQUNSLGNBQWMsQ0FBQztBQUNwQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plp-stream.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","e","__esModule","default","UNKNOWN_PLP_LEN","Buffer","from","PLP_TERMINATOR","isAsyncIterable","value","Symbol","asyncIterator","writePlpValue","buffer","bytes","writeBuffer","length","writeUInt32LE","writePlpStream","source","encode","chunk","WritableTrackingBuffer","CHUNK_SIZE"],"sources":["../../src/data-types/plp-stream.ts"],"sourcesContent":["import WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\n\n/**\n * A value that is read while the request is written, rather than being fully\n * in memory: the `max` text and binary types accept an async iterable of\n * chunks (strings or buffers) here.\n */\nexport function isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return value != null && typeof (value as { [Symbol.asyncIterator]?: unknown })[Symbol.asyncIterator] === 'function';\n}\n\n/**\n * Writes an in-memory PLP value into `buffer`: the unknown-length marker,\n * the bytes as one chunk if there are any, then the terminator.\n */\nexport function writePlpValue(buffer: WritableTrackingBuffer, bytes: Buffer) {\n buffer.writeBuffer(UNKNOWN_PLP_LEN);\n if (bytes.length > 0) {\n buffer.writeUInt32LE(bytes.length);\n buffer.writeBuffer(bytes);\n }\n buffer.writeBuffer(PLP_TERMINATOR);\n}\n\n/**\n * Writes a PLP value read from `source` into `buffer`: the unknown-length\n * marker, then one length-prefixed chunk per non-empty encoded piece, then\n * the terminator. Yields whenever the buffer holds a chunk's worth, as the\n * rest of a `DataType.writeValue` promises.\n */\nexport async function * writePlpStream(buffer: WritableTrackingBuffer, source: AsyncIterable<unknown>, encode: (chunk: unknown) => Buffer): AsyncGenerator<void, void> {\n buffer.writeBuffer(UNKNOWN_PLP_LEN);\n\n for await (const chunk of source) {\n const bytes = encode(chunk);\n\n // A zero-length PLP chunk would be read as the terminator.\n if (bytes.length === 0) {\n continue;\n }\n\n buffer.writeUInt32LE(bytes.length);\n buffer.writeBuffer(bytes);\n\n if (buffer.length >= WritableTrackingBuffer.CHUNK_SIZE) {\n yield;\n }\n }\n\n buffer.writeBuffer(PLP_TERMINATOR);\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiF,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjF,MAAMG,eAAe,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrF,MAAMC,cAAc,GAAGF,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;;AAE5D;AACA;AACA;AACA;AACA;AACO,SAASE,eAAeA,CAACC,KAAc,EAAmC;EAC/E,OAAOA,KAAK,IAAI,IAAI,IAAI,OAAQA,KAAK,CAA0CC,MAAM,CAACC,aAAa,CAAC,KAAK,UAAU;AACrH;;AAEA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAACC,MAA8B,EAAEC,KAAa,EAAE;EAC3ED,MAAM,CAACE,WAAW,CAACX,eAAe,CAAC;EACnC,IAAIU,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;IACpBH,MAAM,CAACI,aAAa,CAACH,KAAK,CAACE,MAAM,CAAC;IAClCH,MAAM,CAACE,WAAW,CAACD,KAAK,CAAC;EAC3B;EACAD,MAAM,CAACE,WAAW,CAACR,cAAc,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,gBAAiBW,cAAcA,CAACL,MAA8B,EAAEM,MAA8B,EAAEC,MAAkC,EAA8B;EACrKP,MAAM,CAACE,WAAW,CAACX,eAAe,CAAC;EAEnC,WAAW,MAAMiB,KAAK,IAAIF,MAAM,EAAE;IAChC,MAAML,KAAK,GAAGM,MAAM,CAACC,KAAK,CAAC;;IAE3B;IACA,IAAIP,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;MACtB;IACF;IAEAH,MAAM,CAACI,aAAa,CAACH,KAAK,CAACE,MAAM,CAAC;IAClCH,MAAM,CAACE,WAAW,CAACD,KAAK,CAAC;IAEzB,IAAID,MAAM,CAACG,MAAM,IAAIM,+BAAsB,CAACC,UAAU,EAAE;MACtD,KAAK;IACP;EACF;EAEAV,MAAM,CAACE,WAAW,CAACR,cAAc,CAAC;AACpC","ignoreList":[]}
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _floatn = _interopRequireDefault(require("./floatn"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
- const NULL_LENGTH = Buffer.from([0x00]);
10
- const DATA_LENGTH = Buffer.from([0x04]);
9
+ const TYPE_INFO = Buffer.from([_floatn.default.id, 0x04]);
11
10
  const Real = {
12
11
  id: 0x3B,
13
12
  type: 'FLT4',
@@ -15,22 +14,17 @@ const Real = {
15
14
  declaration: function () {
16
15
  return 'real';
17
16
  },
18
- generateTypeInfo() {
19
- return Buffer.from([_floatn.default.id, 0x04]);
17
+ writeTypeInfo(buffer) {
18
+ buffer.writeBuffer(TYPE_INFO);
20
19
  },
21
- generateParameterLength(parameter, options) {
22
- if (parameter.value == null) {
23
- return NULL_LENGTH;
24
- }
25
- return DATA_LENGTH;
26
- },
27
- *generateParameterData(parameter, options) {
28
- if (parameter.value == null) {
20
+ writeValue(buffer, parameter) {
21
+ const value = parameter.value;
22
+ if (value == null) {
23
+ buffer.writeUInt8(0x00);
29
24
  return;
30
25
  }
31
- const buffer = Buffer.alloc(4);
32
- buffer.writeFloatLE(parseFloat(parameter.value), 0);
33
- yield buffer;
26
+ buffer.writeUInt8(0x04);
27
+ buffer.writeFloatLE(value);
34
28
  },
35
29
  validate: function (value) {
36
30
  if (value == null) {
@@ -45,4 +39,4 @@ const Real = {
45
39
  };
46
40
  var _default = exports.default = Real;
47
41
  module.exports = Real;
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmxvYXRuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsIlJlYWwiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiRmxvYXROIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlRmxvYXRMRSIsInBhcnNlRmxvYXQiLCJ2YWxpZGF0ZSIsImlzTmFOIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvcmVhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBGbG9hdE4gZnJvbSAnLi9mbG9hdG4nO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDA0XSk7XG5cbmNvbnN0IFJlYWw6IERhdGFUeXBlID0ge1xuICBpZDogMHgzQixcbiAgdHlwZTogJ0ZMVDQnLFxuICBuYW1lOiAnUmVhbCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAncmVhbCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0Zsb2F0Ti5pZCwgMHgwNF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgYnVmZmVyLndyaXRlRmxvYXRMRShwYXJzZUZsb2F0KHBhcmFtZXRlci52YWx1ZSksIDApO1xuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhbDtcbm1vZHVsZS5leHBvcnRzID0gUmVhbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQThCLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTlCLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUUsSUFBYyxHQUFHO0VBQ3JCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsTUFBTTtFQUVaQyxXQUFXLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3RCLE9BQU8sTUFBTTtFQUNmLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsT0FBT1IsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ1EsZUFBTSxDQUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDdkMsQ0FBQztFQUVETSx1QkFBdUJBLENBQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPZCxXQUFXO0lBQ3BCO0lBRUEsT0FBT0csV0FBVztFQUNwQixDQUFDO0VBRUQsQ0FBRVkscUJBQXFCQSxDQUFDSCxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1FLE1BQU0sR0FBR2YsTUFBTSxDQUFDZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRSxZQUFZLENBQUNDLFVBQVUsQ0FBQ1AsU0FBUyxDQUFDRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsTUFBTUUsTUFBTTtFQUNkLENBQUM7RUFFREksUUFBUSxFQUFFLFNBQUFBLENBQVNOLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUNBQSxLQUFLLEdBQUdLLFVBQVUsQ0FBQ0wsS0FBSyxDQUFDO0lBQ3pCLElBQUlPLEtBQUssQ0FBQ1AsS0FBSyxDQUFDLEVBQUU7TUFDaEIsTUFBTSxJQUFJUSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFDQSxPQUFPUixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQVMsUUFBQSxHQUFBQyxPQUFBLENBQUF6QixPQUFBLEdBRWFLLElBQUk7QUFDbkJxQixNQUFNLENBQUNELE9BQU8sR0FBR3BCLElBQUkiLCJpZ25vcmVMaXN0IjpbXX0=
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmxvYXRuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJUWVBFX0lORk8iLCJCdWZmZXIiLCJmcm9tIiwiRmxvYXROIiwiaWQiLCJSZWFsIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsIndyaXRlVHlwZUluZm8iLCJidWZmZXIiLCJ3cml0ZUJ1ZmZlciIsIndyaXRlVmFsdWUiLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsIndyaXRlVUludDgiLCJ3cml0ZUZsb2F0TEUiLCJ2YWxpZGF0ZSIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3JlYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgRmxvYXROIGZyb20gJy4vZmxvYXRuJztcblxuY29uc3QgVFlQRV9JTkZPID0gQnVmZmVyLmZyb20oW0Zsb2F0Ti5pZCwgMHgwNF0pO1xuXG5jb25zdCBSZWFsOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4M0IsXG4gIHR5cGU6ICdGTFQ0JyxcbiAgbmFtZTogJ1JlYWwnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3JlYWwnO1xuICB9LFxuXG4gIHdyaXRlVHlwZUluZm8oYnVmZmVyKSB7XG4gICAgYnVmZmVyLndyaXRlQnVmZmVyKFRZUEVfSU5GTyk7XG4gIH0sXG5cbiAgd3JpdGVWYWx1ZShidWZmZXIsIHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIG51bWJlciB8IG51bGw7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDQpO1xuICAgIGJ1ZmZlci53cml0ZUZsb2F0TEUodmFsdWUpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bGwgfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFsO1xubW9kdWxlLmV4cG9ydHMgPSBSZWFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFOUIsTUFBTUcsU0FBUyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDQyxlQUFNLENBQUNDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVoRCxNQUFNQyxJQUFjLEdBQUc7RUFDckJELEVBQUUsRUFBRSxJQUFJO0VBQ1JFLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxNQUFNO0VBRVpDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxNQUFNO0VBQ2YsQ0FBQztFQUVEQyxhQUFhQSxDQUFDQyxNQUFNLEVBQUU7SUFDcEJBLE1BQU0sQ0FBQ0MsV0FBVyxDQUFDWCxTQUFTLENBQUM7RUFDL0IsQ0FBQztFQUVEWSxVQUFVQSxDQUFDRixNQUFNLEVBQUVHLFNBQVMsRUFBRTtJQUM1QixNQUFNQyxLQUFLLEdBQUdELFNBQVMsQ0FBQ0MsS0FBc0I7SUFDOUMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQkosTUFBTSxDQUFDSyxVQUFVLENBQUMsSUFBSSxDQUFDO01BQ3ZCO0lBQ0Y7SUFFQUwsTUFBTSxDQUFDSyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3ZCTCxNQUFNLENBQUNNLFlBQVksQ0FBQ0YsS0FBSyxDQUFDO0VBQzVCLENBQUM7RUFFREcsUUFBUSxFQUFFLFNBQUFBLENBQVNILEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUNBQSxLQUFLLEdBQUdJLFVBQVUsQ0FBQ0osS0FBSyxDQUFDO0lBQ3pCLElBQUlLLEtBQUssQ0FBQ0wsS0FBSyxDQUFDLEVBQUU7TUFDaEIsTUFBTSxJQUFJTSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFDQSxPQUFPTixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQU8sUUFBQSxHQUFBQyxPQUFBLENBQUF2QixPQUFBLEdBRWFNLElBQUk7QUFDbkJrQixNQUFNLENBQUNELE9BQU8sR0FBR2pCLElBQUkiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"real.js","names":["_floatn","_interopRequireDefault","require","e","__esModule","default","NULL_LENGTH","Buffer","from","DATA_LENGTH","Real","id","type","name","declaration","generateTypeInfo","FloatN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","writeFloatLE","parseFloat","validate","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/real.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport FloatN from './floatn';\n\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x04]);\n\nconst Real: DataType = {\n id: 0x3B,\n type: 'FLT4',\n name: 'Real',\n\n declaration: function() {\n return 'real';\n },\n\n generateTypeInfo() {\n return Buffer.from([FloatN.id, 0x04]);\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(4);\n buffer.writeFloatLE(parseFloat(parameter.value), 0);\n yield buffer;\n },\n\n validate: function(value): null | number {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n return value;\n }\n};\n\nexport default Real;\nmodule.exports = Real;\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B,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,IAAc,GAAG;EACrBC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EAEZC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,MAAM;EACf,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,OAAOR,MAAM,CAACC,IAAI,CAAC,CAACQ,eAAM,CAACL,EAAE,EAAE,IAAI,CAAC,CAAC;EACvC,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;EAED,CAAEY,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,YAAY,CAACC,UAAU,CAACP,SAAS,CAACE,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,MAAME,MAAM;EACd,CAAC;EAEDI,QAAQ,EAAE,SAAAA,CAASN,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACAA,KAAK,GAAGK,UAAU,CAACL,KAAK,CAAC;IACzB,IAAIO,KAAK,CAACP,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIQ,SAAS,CAAC,iBAAiB,CAAC;IACxC;IACA,OAAOR,KAAK;EACd;AACF,CAAC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEaK,IAAI;AACnBqB,MAAM,CAACD,OAAO,GAAGpB,IAAI","ignoreList":[]}
1
+ {"version":3,"file":"real.js","names":["_floatn","_interopRequireDefault","require","e","__esModule","default","TYPE_INFO","Buffer","from","FloatN","id","Real","type","name","declaration","writeTypeInfo","buffer","writeBuffer","writeValue","parameter","value","writeUInt8","writeFloatLE","validate","parseFloat","isNaN","TypeError","_default","exports","module"],"sources":["../../src/data-types/real.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport FloatN from './floatn';\n\nconst TYPE_INFO = Buffer.from([FloatN.id, 0x04]);\n\nconst Real: DataType = {\n id: 0x3B,\n type: 'FLT4',\n name: 'Real',\n\n declaration: function() {\n return 'real';\n },\n\n writeTypeInfo(buffer) {\n buffer.writeBuffer(TYPE_INFO);\n },\n\n writeValue(buffer, parameter) {\n const value = parameter.value as number | null;\n if (value == null) {\n buffer.writeUInt8(0x00);\n return;\n }\n\n buffer.writeUInt8(0x04);\n buffer.writeFloatLE(value);\n },\n\n validate: function(value): null | number {\n if (value == null) {\n return null;\n }\n value = parseFloat(value);\n if (isNaN(value)) {\n throw new TypeError('Invalid number.');\n }\n return value;\n }\n};\n\nexport default Real;\nmodule.exports = Real;\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B,MAAMG,SAAS,GAAGC,MAAM,CAACC,IAAI,CAAC,CAACC,eAAM,CAACC,EAAE,EAAE,IAAI,CAAC,CAAC;AAEhD,MAAMC,IAAc,GAAG;EACrBD,EAAE,EAAE,IAAI;EACRE,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EAEZC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,MAAM;EACf,CAAC;EAEDC,aAAaA,CAACC,MAAM,EAAE;IACpBA,MAAM,CAACC,WAAW,CAACX,SAAS,CAAC;EAC/B,CAAC;EAEDY,UAAUA,CAACF,MAAM,EAAEG,SAAS,EAAE;IAC5B,MAAMC,KAAK,GAAGD,SAAS,CAACC,KAAsB;IAC9C,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjBJ,MAAM,CAACK,UAAU,CAAC,IAAI,CAAC;MACvB;IACF;IAEAL,MAAM,CAACK,UAAU,CAAC,IAAI,CAAC;IACvBL,MAAM,CAACM,YAAY,CAACF,KAAK,CAAC;EAC5B,CAAC;EAEDG,QAAQ,EAAE,SAAAA,CAASH,KAAK,EAAiB;IACvC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IACAA,KAAK,GAAGI,UAAU,CAACJ,KAAK,CAAC;IACzB,IAAIK,KAAK,CAACL,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIM,SAAS,CAAC,iBAAiB,CAAC;IACxC;IACA,OAAON,KAAK;EACd;AACF,CAAC;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAAvB,OAAA,GAEaM,IAAI;AACnBkB,MAAM,CAACD,OAAO,GAAGjB,IAAI","ignoreList":[]}
@@ -8,8 +8,7 @@ var _datetimen = _interopRequireDefault(require("./datetimen"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  const EPOCH_DATE = new Date(1900, 0, 1);
10
10
  const UTC_EPOCH_DATE = new Date(Date.UTC(1900, 0, 1));
11
- const DATA_LENGTH = Buffer.from([0x04]);
12
- const NULL_LENGTH = Buffer.from([0x00]);
11
+ const TYPE_INFO = Buffer.from([_datetimen.default.id, 0x04]);
13
12
  const SmallDateTime = {
14
13
  id: 0x3A,
15
14
  type: 'DATETIM4',
@@ -17,32 +16,27 @@ const SmallDateTime = {
17
16
  declaration: function () {
18
17
  return 'smalldatetime';
19
18
  },
20
- generateTypeInfo() {
21
- return Buffer.from([_datetimen.default.id, 0x04]);
19
+ writeTypeInfo(buffer) {
20
+ buffer.writeBuffer(TYPE_INFO);
22
21
  },
23
- generateParameterLength(parameter, options) {
24
- if (parameter.value == null) {
25
- return NULL_LENGTH;
26
- }
27
- return DATA_LENGTH;
28
- },
29
- generateParameterData: function* (parameter, options) {
30
- if (parameter.value == null) {
22
+ writeValue(buffer, parameter, options) {
23
+ const value = parameter.value;
24
+ if (value == null) {
25
+ buffer.writeUInt8(0x00);
31
26
  return;
32
27
  }
33
- const buffer = Buffer.alloc(4);
34
- let days, dstDiff, minutes;
28
+ let days, minutes;
35
29
  if (options.useUTC) {
36
- days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24));
37
- minutes = parameter.value.getUTCHours() * 60 + parameter.value.getUTCMinutes();
30
+ days = Math.floor((value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24));
31
+ minutes = value.getUTCHours() * 60 + value.getUTCMinutes();
38
32
  } else {
39
- dstDiff = -(parameter.value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000;
40
- days = Math.floor((parameter.value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24));
41
- minutes = parameter.value.getHours() * 60 + parameter.value.getMinutes();
33
+ const dstDiff = -(value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000;
34
+ days = Math.floor((value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24));
35
+ minutes = value.getHours() * 60 + value.getMinutes();
42
36
  }
43
- buffer.writeUInt16LE(days, 0);
44
- buffer.writeUInt16LE(minutes, 2);
45
- yield buffer;
37
+ buffer.writeUInt8(0x04);
38
+ buffer.writeUInt16LE(days);
39
+ buffer.writeUInt16LE(minutes);
46
40
  },
47
41
  validate: function (value, collation, options) {
48
42
  if (value == null) {
@@ -80,4 +74,4 @@ const SmallDateTime = {
80
74
  };
81
75
  var _default = exports.default = SmallDateTime;
82
76
  module.exports = SmallDateTime;
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0ZXRpbWVuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJFUE9DSF9EQVRFIiwiRGF0ZSIsIlVUQ19FUE9DSF9EQVRFIiwiVVRDIiwiREFUQV9MRU5HVEgiLCJCdWZmZXIiLCJmcm9tIiwiTlVMTF9MRU5HVEgiLCJTbWFsbERhdGVUaW1lIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkRhdGVUaW1lTiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiYWxsb2MiLCJkYXlzIiwiZHN0RGlmZiIsIm1pbnV0ZXMiLCJ1c2VVVEMiLCJNYXRoIiwiZmxvb3IiLCJnZXRUaW1lIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJ3cml0ZVVJbnQxNkxFIiwidmFsaWRhdGUiLCJjb2xsYXRpb24iLCJwYXJzZSIsInllYXIiLCJtb250aCIsImRhdGUiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiVHlwZUVycm9yIiwiaXNOYU4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9zbWFsbGRhdGV0aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IERhdGVUaW1lTiBmcm9tICcuL2RhdGV0aW1lbic7XG5cbmNvbnN0IEVQT0NIX0RBVEUgPSBuZXcgRGF0ZSgxOTAwLCAwLCAxKTtcbmNvbnN0IFVUQ19FUE9DSF9EQVRFID0gbmV3IERhdGUoRGF0ZS5VVEMoMTkwMCwgMCwgMSkpO1xuXG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDA0XSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IFNtYWxsRGF0ZVRpbWU6IERhdGFUeXBlID0ge1xuICBpZDogMHgzQSxcbiAgdHlwZTogJ0RBVEVUSU00JyxcbiAgbmFtZTogJ1NtYWxsRGF0ZVRpbWUnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3NtYWxsZGF0ZXRpbWUnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtEYXRlVGltZU4uaWQsIDB4MDRdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhOiBmdW5jdGlvbioocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuXG4gICAgbGV0IGRheXM6IG51bWJlciwgZHN0RGlmZjogbnVtYmVyLCBtaW51dGVzOiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICBkYXlzID0gTWF0aC5mbG9vcigocGFyYW1ldGVyLnZhbHVlLmdldFRpbWUoKSAtIFVUQ19FUE9DSF9EQVRFLmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgbWludXRlcyA9IChwYXJhbWV0ZXIudmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwKSArIHBhcmFtZXRlci52YWx1ZS5nZXRVVENNaW51dGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRzdERpZmYgPSAtKHBhcmFtZXRlci52YWx1ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gRVBPQ0hfREFURS5nZXRUaW1lem9uZU9mZnNldCgpKSAqIDYwICogMTAwMDtcbiAgICAgIGRheXMgPSBNYXRoLmZsb29yKChwYXJhbWV0ZXIudmFsdWUuZ2V0VGltZSgpIC0gRVBPQ0hfREFURS5nZXRUaW1lKCkgKyBkc3REaWZmKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICBtaW51dGVzID0gKHBhcmFtZXRlci52YWx1ZS5nZXRIb3VycygpICogNjApICsgcGFyYW1ldGVyLnZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShkYXlzLCAwKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShtaW51dGVzLCAyKTtcblxuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUsIGNvbGxhdGlvbiwgb3B0aW9ucyk6IG51bGwgfCBEYXRlIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdmFsdWUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2YWx1ZSBhcyBEYXRlO1xuXG4gICAgbGV0IHllYXIsIG1vbnRoLCBkYXRlO1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgIG1vbnRoID0gdmFsdWUuZ2V0VVRDTW9udGgoKTtcbiAgICAgIGRhdGUgPSB2YWx1ZS5nZXRVVENEYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgbW9udGggPSB2YWx1ZS5nZXRNb250aCgpO1xuICAgICAgZGF0ZSA9IHZhbHVlLmdldERhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAoeWVhciA8IDE5MDAgfHwgeWVhciA+IDIwNzkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dCBvZiByYW5nZS4nKTtcbiAgICB9XG5cbiAgICBpZiAoeWVhciA9PT0gMjA3OSkge1xuICAgICAgLy8gTW9udGggaXMgMC1pbmRleGVkLCBpLmUuIEphbiA9IDAsIERlYyA9IDExXG4gICAgICAvLyBTZWU6IGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9zcWwvdC1zcWwvZGF0YS10eXBlcy9zbWFsbGRhdGV0aW1lLXRyYW5zYWN0LXNxbD92aWV3PXNxbC1zZXJ2ZXItdmVyMTZcbiAgICAgIGlmIChtb250aCA+IDUgfHwgKG1vbnRoID09PSA1ICYmIGRhdGUgPiA2KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXQgb2YgcmFuZ2UuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU21hbGxEYXRlVGltZTtcbm1vZHVsZS5leHBvcnRzID0gU21hbGxEYXRlVGltZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQW9DLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRXBDLE1BQU1HLFVBQVUsR0FBRyxJQUFJQyxJQUFJLENBQUMs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
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0ZXRpbWVuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJFUE9DSF9EQVRFIiwiRGF0ZSIsIlVUQ19FUE9DSF9EQVRFIiwiVVRDIiwiVFlQRV9JTkZPIiwiQnVmZmVyIiwiZnJvbSIsIkRhdGVUaW1lTiIsImlkIiwiU21hbGxEYXRlVGltZSIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJ3cml0ZVR5cGVJbmZvIiwiYnVmZmVyIiwid3JpdGVCdWZmZXIiLCJ3cml0ZVZhbHVlIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwid3JpdGVVSW50OCIsImRheXMiLCJtaW51dGVzIiwidXNlVVRDIiwiTWF0aCIsImZsb29yIiwiZ2V0VGltZSIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImRzdERpZmYiLCJnZXRUaW1lem9uZU9mZnNldCIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsIndyaXRlVUludDE2TEUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsInBhcnNlIiwieWVhciIsIm1vbnRoIiwiZGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJUeXBlRXJyb3IiLCJpc05hTiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3NtYWxsZGF0ZXRpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgRGF0ZVRpbWVOIGZyb20gJy4vZGF0ZXRpbWVuJztcblxuY29uc3QgRVBPQ0hfREFURSA9IG5ldyBEYXRlKDE5MDAsIDAsIDEpO1xuY29uc3QgVVRDX0VQT0NIX0RBVEUgPSBuZXcgRGF0ZShEYXRlLlVUQygxOTAwLCAwLCAxKSk7XG5cbmNvbnN0IFRZUEVfSU5GTyA9IEJ1ZmZlci5mcm9tKFtEYXRlVGltZU4uaWQsIDB4MDRdKTtcblxuY29uc3QgU21hbGxEYXRlVGltZTogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDNBLFxuICB0eXBlOiAnREFURVRJTTQnLFxuICBuYW1lOiAnU21hbGxEYXRlVGltZScsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAnc21hbGxkYXRldGltZSc7XG4gIH0sXG5cbiAgd3JpdGVUeXBlSW5mbyhidWZmZXIpIHtcbiAgICBidWZmZXIud3JpdGVCdWZmZXIoVFlQRV9JTkZPKTtcbiAgfSxcblxuICB3cml0ZVZhbHVlKGJ1ZmZlciwgcGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgRGF0ZSB8IG51bGw7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkYXlzOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlcjtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGRheXMgPSBNYXRoLmZsb29yKCh2YWx1ZS5nZXRUaW1lKCkgLSBVVENfRVBPQ0hfREFURS5nZXRUaW1lKCkpIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcbiAgICAgIG1pbnV0ZXMgPSAodmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwKSArIHZhbHVlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZHN0RGlmZiA9IC0odmFsdWUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIEVQT0NIX0RBVEUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MCAqIDEwMDA7XG4gICAgICBkYXlzID0gTWF0aC5mbG9vcigodmFsdWUuZ2V0VGltZSgpIC0gRVBPQ0hfREFURS5nZXRUaW1lKCkgKyBkc3REaWZmKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICBtaW51dGVzID0gKHZhbHVlLmdldEhvdXJzKCkgKiA2MCkgKyB2YWx1ZS5nZXRNaW51dGVzKCk7XG4gICAgfVxuXG4gICAgYnVmZmVyLndyaXRlVUludDgoMHgwNCk7XG4gICAgYnVmZmVyLndyaXRlVUludDE2TEUoZGF5cyk7XG4gICAgYnVmZmVyLndyaXRlVUludDE2TEUobWludXRlcyk7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlLCBjb2xsYXRpb24sIG9wdGlvbnMpOiBudWxsIHwgRGF0ZSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgYXMgRGF0ZTtcblxuICAgIGxldCB5ZWFyLCBtb250aCwgZGF0ZTtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnVzZVVUQykge1xuICAgICAgeWVhciA9IHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICBtb250aCA9IHZhbHVlLmdldFVUQ01vbnRoKCk7XG4gICAgICBkYXRlID0gdmFsdWUuZ2V0VVRDRGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICAgIG1vbnRoID0gdmFsdWUuZ2V0TW9udGgoKTtcbiAgICAgIGRhdGUgPSB2YWx1ZS5nZXREYXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHllYXIgPCAxOTAwIHx8IHllYXIgPiAyMDc5KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXQgb2YgcmFuZ2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKHllYXIgPT09IDIwNzkpIHtcbiAgICAgIC8vIE1vbnRoIGlzIDAtaW5kZXhlZCwgaS5lLiBKYW4gPSAwLCBEZWMgPSAxMVxuICAgICAgLy8gU2VlOiBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvc3FsL3Qtc3FsL2RhdGEtdHlwZXMvc21hbGxkYXRldGltZS10cmFuc2FjdC1zcWw/dmlldz1zcWwtc2VydmVyLXZlcjE2XG4gICAgICBpZiAobW9udGggPiA1IHx8IChtb250aCA9PT0gNSAmJiBkYXRlID4gNikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0IG9mIHJhbmdlLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNtYWxsRGF0ZVRpbWU7XG5tb2R1bGUuZXhwb3J0cyA9IFNtYWxsRGF0ZVRpbWU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFvQyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVwQyxNQUFNRyxVQUFVLEdBQUcsSUFBSUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLGNBQWMsR0FBRyxJQUFJRCxJQUFJLENBQUNBLElBQUksQ0FBQ0UsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFckQsTUFBTUMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDQyxrQkFBUyxDQUFDQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbkQsTUFBTUMsYUFBdUIsR0FBRztFQUM5QkQsRUFBRSxFQUFFLElBQUk7RUFDUkUsSUFBSSxFQUFFLFVBQVU7RUFDaEJDLElB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
@@ -1 +1 @@
1
- {"version":3,"file":"smalldatetime.js","names":["_datetimen","_interopRequireDefault","require","e","__esModule","default","EPOCH_DATE","Date","UTC_EPOCH_DATE","UTC","DATA_LENGTH","Buffer","from","NULL_LENGTH","SmallDateTime","id","type","name","declaration","generateTypeInfo","DateTimeN","generateParameterLength","parameter","options","value","generateParameterData","buffer","alloc","days","dstDiff","minutes","useUTC","Math","floor","getTime","getUTCHours","getUTCMinutes","getTimezoneOffset","getHours","getMinutes","writeUInt16LE","validate","collation","parse","year","month","date","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/smalldatetime.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport DateTimeN from './datetimen';\n\nconst EPOCH_DATE = new Date(1900, 0, 1);\nconst UTC_EPOCH_DATE = new Date(Date.UTC(1900, 0, 1));\n\nconst DATA_LENGTH = Buffer.from([0x04]);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst SmallDateTime: DataType = {\n id: 0x3A,\n type: 'DATETIM4',\n name: 'SmallDateTime',\n\n declaration: function() {\n return 'smalldatetime';\n },\n\n generateTypeInfo() {\n return Buffer.from([DateTimeN.id, 0x04]);\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 const buffer = Buffer.alloc(4);\n\n let days: number, dstDiff: number, minutes: number;\n if (options.useUTC) {\n days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24));\n minutes = (parameter.value.getUTCHours() * 60) + parameter.value.getUTCMinutes();\n } else {\n dstDiff = -(parameter.value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000;\n days = Math.floor((parameter.value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24));\n minutes = (parameter.value.getHours() * 60) + parameter.value.getMinutes();\n }\n\n buffer.writeUInt16LE(days, 0);\n buffer.writeUInt16LE(minutes, 2);\n\n yield buffer;\n },\n\n validate: function(value, collation, options): null | Date {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year, month, date;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n month = value.getUTCMonth();\n date = value.getUTCDate();\n } else {\n year = value.getFullYear();\n month = value.getMonth();\n date = value.getDate();\n }\n\n if (year < 1900 || year > 2079) {\n throw new TypeError('Out of range.');\n }\n\n if (year === 2079) {\n // Month is 0-indexed, i.e. Jan = 0, Dec = 11\n // See: https://learn.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql?view=sql-server-ver16\n if (month > 5 || (month === 5 && date > 6)) {\n throw new TypeError('Out of range.');\n }\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default SmallDateTime;\nmodule.exports = SmallDateTime;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"smalldatetime.js","names":["_datetimen","_interopRequireDefault","require","e","__esModule","default","EPOCH_DATE","Date","UTC_EPOCH_DATE","UTC","TYPE_INFO","Buffer","from","DateTimeN","id","SmallDateTime","type","name","declaration","writeTypeInfo","buffer","writeBuffer","writeValue","parameter","options","value","writeUInt8","days","minutes","useUTC","Math","floor","getTime","getUTCHours","getUTCMinutes","dstDiff","getTimezoneOffset","getHours","getMinutes","writeUInt16LE","validate","collation","parse","year","month","date","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/smalldatetime.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport DateTimeN from './datetimen';\n\nconst EPOCH_DATE = new Date(1900, 0, 1);\nconst UTC_EPOCH_DATE = new Date(Date.UTC(1900, 0, 1));\n\nconst TYPE_INFO = Buffer.from([DateTimeN.id, 0x04]);\n\nconst SmallDateTime: DataType = {\n id: 0x3A,\n type: 'DATETIM4',\n name: 'SmallDateTime',\n\n declaration: function() {\n return 'smalldatetime';\n },\n\n writeTypeInfo(buffer) {\n buffer.writeBuffer(TYPE_INFO);\n },\n\n writeValue(buffer, parameter, options) {\n const value = parameter.value as Date | null;\n if (value == null) {\n buffer.writeUInt8(0x00);\n return;\n }\n\n let days: number, minutes: number;\n if (options.useUTC) {\n days = Math.floor((value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24));\n minutes = (value.getUTCHours() * 60) + value.getUTCMinutes();\n } else {\n const dstDiff = -(value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000;\n days = Math.floor((value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24));\n minutes = (value.getHours() * 60) + value.getMinutes();\n }\n\n buffer.writeUInt8(0x04);\n buffer.writeUInt16LE(days);\n buffer.writeUInt16LE(minutes);\n },\n\n validate: function(value, collation, options): null | Date {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year, month, date;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n month = value.getUTCMonth();\n date = value.getUTCDate();\n } else {\n year = value.getFullYear();\n month = value.getMonth();\n date = value.getDate();\n }\n\n if (year < 1900 || year > 2079) {\n throw new TypeError('Out of range.');\n }\n\n if (year === 2079) {\n // Month is 0-indexed, i.e. Jan = 0, Dec = 11\n // See: https://learn.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql?view=sql-server-ver16\n if (month > 5 || (month === 5 && date > 6)) {\n throw new TypeError('Out of range.');\n }\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default SmallDateTime;\nmodule.exports = SmallDateTime;\n"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAoC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpC,MAAMG,UAAU,GAAG,IAAIC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,MAAMC,cAAc,GAAG,IAAID,IAAI,CAACA,IAAI,CAACE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAErD,MAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAAC,CAACC,kBAAS,CAACC,EAAE,EAAE,IAAI,CAAC,CAAC;AAEnD,MAAMC,aAAuB,GAAG;EAC9BD,EAAE,EAAE,IAAI;EACRE,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,eAAe;EAErBC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,eAAe;EACxB,CAAC;EAEDC,aAAaA,CAACC,MAAM,EAAE;IACpBA,MAAM,CAACC,WAAW,CAACX,SAAS,CAAC;EAC/B,CAAC;EAEDY,UAAUA,CAACF,MAAM,EAAEG,SAAS,EAAEC,OAAO,EAAE;IACrC,MAAMC,KAAK,GAAGF,SAAS,CAACE,KAAoB;IAC5C,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjBL,MAAM,CAACM,UAAU,CAAC,IAAI,CAAC;MACvB;IACF;IAEA,IAAIC,IAAY,EAAEC,OAAe;IACjC,IAAIJ,OAAO,CAACK,MAAM,EAAE;MAClBF,IAAI,GAAGG,IAAI,CAACC,KAAK,CAAC,CAACN,KAAK,CAACO,OAAO,CAAC,CAAC,GAAGxB,cAAc,CAACwB,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;MACvFJ,OAAO,GAAIH,KAAK,CAACQ,WAAW,CAAC,CAAC,GAAG,EAAE,GAAIR,KAAK,CAACS,aAAa,CAAC,CAAC;IAC9D,CAAC,MAAM;MACL,MAAMC,OAAO,GAAG,EAAEV,KAAK,CAACW,iBAAiB,CAAC,CAAC,GAAG9B,UAAU,CAAC8B,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI;MACzFT,IAAI,GAAGG,IAAI,CAACC,KAAK,CAAC,CAACN,KAAK,CAACO,OAAO,CAAC,CAAC,GAAG1B,UAAU,CAAC0B,OAAO,CAAC,CAAC,GAAGG,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;MAC7FP,OAAO,GAAIH,KAAK,CAACY,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAIZ,KAAK,CAACa,UAAU,CAAC,CAAC;IACxD;IAEAlB,MAAM,CAACM,UAAU,CAAC,IAAI,CAAC;IACvBN,MAAM,CAACmB,aAAa,CAACZ,IAAI,CAAC;IAC1BP,MAAM,CAACmB,aAAa,CAACX,OAAO,CAAC;EAC/B,CAAC;EAEDY,QAAQ,EAAE,SAAAA,CAASf,KAAK,EAAEgB,SAAS,EAAEjB,OAAO,EAAe;IACzD,IAAIC,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,EAAEA,KAAK,YAAYlB,IAAI,CAAC,EAAE;MAC5BkB,KAAK,GAAG,IAAIlB,IAAI,CAACA,IAAI,CAACmC,KAAK,CAACjB,KAAK,CAAC,CAAC;IACrC;IAEAA,KAAK,GAAGA,KAAa;IAErB,IAAIkB,IAAI,EAAEC,KAAK,EAAEC,IAAI;IACrB,IAAIrB,OAAO,IAAIA,OAAO,CAACK,MAAM,EAAE;MAC7Bc,IAAI,GAAGlB,KAAK,CAACqB,cAAc,CAAC,CAAC;MAC7BF,KAAK,GAAGnB,KAAK,CAACsB,WAAW,CAAC,CAAC;MAC3BF,IAAI,GAAGpB,KAAK,CAACuB,UAAU,CAAC,CAAC;IAC3B,CAAC,MAAM;MACLL,IAAI,GAAGlB,KAAK,CAACwB,WAAW,CAAC,CAAC;MAC1BL,KAAK,GAAGnB,KAAK,CAACyB,QAAQ,CAAC,CAAC;MACxBL,IAAI,GAAGpB,KAAK,CAAC0B,OAAO,CAAC,CAAC;IACxB;IAEA,IAAIR,IAAI,GAAG,IAAI,IAAIA,IAAI,GAAG,IAAI,EAAE;MAC9B,MAAM,IAAIS,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,IAAIT,IAAI,KAAK,IAAI,EAAE;MACjB;MACA;MACA,IAAIC,KAAK,GAAG,CAAC,IAAKA,KAAK,KAAK,CAAC,IAAIC,IAAI,GAAG,CAAE,EAAE;QAC1C,MAAM,IAAIO,SAAS,CAAC,eAAe,CAAC;MACtC;IACF;IAEA,IAAIC,KAAK,CAAC5B,KAAK,CAAC,EAAE;MAChB,MAAM,IAAI2B,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,OAAO3B,KAAK;EACd;AACF,CAAC;AAAC,IAAA6B,QAAA,GAAAC,OAAA,CAAAlD,OAAA,GAEaU,aAAa;AAC5ByC,MAAM,CAACD,OAAO,GAAGxC,aAAa","ignoreList":[]}