tedious 1.13.2 → 1.14.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 (46) hide show
  1. package/appveyor.yml +2 -0
  2. package/lib/all-headers.js +2 -5
  3. package/lib/buffertools.js +1 -1
  4. package/lib/bulk-load.js +18 -27
  5. package/lib/collation.js +78 -6
  6. package/lib/connection.js +120 -159
  7. package/lib/data-type.js +73 -72
  8. package/lib/debug.js +5 -17
  9. package/lib/errors.js +8 -16
  10. package/lib/guid-parser.js +2 -5
  11. package/lib/instance-lookup.js +7 -16
  12. package/lib/library.js +1 -5
  13. package/lib/login7-payload.js +16 -34
  14. package/lib/message-io.js +21 -35
  15. package/lib/metadata-parser.js +22 -18
  16. package/lib/ntlm-payload.js +9 -24
  17. package/lib/packet.js +11 -18
  18. package/lib/prelogin-payload.js +10 -19
  19. package/lib/request.js +15 -24
  20. package/lib/rpcrequest-payload.js +7 -16
  21. package/lib/special-stored-procedure.js +3 -7
  22. package/lib/sqlbatch-payload.js +7 -16
  23. package/lib/stream-parser.js +24 -36
  24. package/lib/tds-versions.js +2 -8
  25. package/lib/tedious.js +8 -52
  26. package/lib/token/colmetadata-token-parser.js +4 -14
  27. package/lib/token/done-token-parser.js +6 -9
  28. package/lib/token/env-change-token-parser.js +4 -9
  29. package/lib/token/infoerror-token-parser.js +9 -12
  30. package/lib/token/loginack-token-parser.js +8 -8
  31. package/lib/token/nbcrow-token-parser.js +5 -15
  32. package/lib/token/order-token-parser.js +3 -9
  33. package/lib/token/returnstatus-token-parser.js +3 -9
  34. package/lib/token/returnvalue-token-parser.js +7 -20
  35. package/lib/token/row-token-parser.js +5 -15
  36. package/lib/token/sspi-token-parser.js +3 -8
  37. package/lib/token/stream-parser.js +60 -58
  38. package/lib/token/token-stream-parser.js +14 -23
  39. package/lib/token/token.js +3 -7
  40. package/lib/tracking-buffer/bigint.js +2 -5
  41. package/lib/tracking-buffer/readable-tracking-buffer.js +6 -13
  42. package/lib/tracking-buffer/tracking-buffer.js +2 -16
  43. package/lib/tracking-buffer/writable-tracking-buffer.js +3 -15
  44. package/lib/transaction.js +7 -12
  45. package/lib/value-parser.js +95 -69
  46. package/package.json +6 -1
@@ -1,10 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', {
4
- value: true
5
- });
6
- exports.convertLEBytesToString = convertLEBytesToString;
7
- exports.numberToInt64LE = numberToInt64LE;
8
3
  function isZero(array) {
9
4
  for (var j = 0, len = array.length; j < len; j++) {
10
5
  var byte = array[j];
@@ -46,6 +41,7 @@ function invert(array) {
46
41
  }
47
42
  }
48
43
 
44
+ module.exports.convertLEBytesToString = convertLEBytesToString;
49
45
  function convertLEBytesToString(buffer) {
50
46
  var array = Array.prototype.slice.call(buffer, 0, buffer.length);
51
47
  if (isZero(array)) {
@@ -67,6 +63,7 @@ function convertLEBytesToString(buffer) {
67
63
  }
68
64
  }
69
65
 
66
+ module.exports.numberToInt64LE = numberToInt64LE;
70
67
  function numberToInt64LE(num) {
71
68
  // adapted from https://github.com/broofa/node-int64
72
69
  var negate = num < 0;
@@ -4,11 +4,7 @@ var _createClass = require('babel-runtime/helpers/create-class')['default'];
4
4
 
5
5
  var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
6
6
 
7
- Object.defineProperty(exports, '__esModule', {
8
- value: true
9
- });
10
-
11
- var _bigint = require('./bigint');
7
+ var convertLEBytesToString = require('./bigint').convertLEBytesToString;
12
8
 
13
9
  /*
14
10
  A Buffer-like class that tracks position.
@@ -17,7 +13,7 @@ var _bigint = require('./bigint');
17
13
  When reading, if the read would pass the end of the buffer, an error object is thrown.
18
14
  */
19
15
 
20
- var ReadableTrackingBuffer = (function () {
16
+ module.exports = (function () {
21
17
  function ReadableTrackingBuffer(buffer, encoding) {
22
18
  _classCallCheck(this, ReadableTrackingBuffer);
23
19
 
@@ -43,7 +39,7 @@ var ReadableTrackingBuffer = (function () {
43
39
  this.previousPosition = this.position;
44
40
  var available = this.buffer.length - this.position;
45
41
  if (available < lengthRequired) {
46
- var e = new Error("required : " + lengthRequired + ", available : " + available);
42
+ var e = new Error('required : ' + lengthRequired + ', available : ' + available);
47
43
  e.code = 'oob';
48
44
  throw e;
49
45
  }
@@ -180,7 +176,7 @@ var ReadableTrackingBuffer = (function () {
180
176
  var low = this.readUInt32LE();
181
177
  var high = this.readUInt32LE();
182
178
  if (high >= 2 << 53 - 32) {
183
- console.warn("Read UInt64LE > 53 bits : high=" + high + ", low=" + low);
179
+ console.warn('Read UInt64LE > 53 bits : high=' + high + ', low=' + low);
184
180
  }
185
181
  return low + 0x100000000 * high;
186
182
  }
@@ -249,7 +245,7 @@ var ReadableTrackingBuffer = (function () {
249
245
  value: function readAsStringBigIntLE(length) {
250
246
  this.assertEnoughLeftFor(length);
251
247
  this.position += length;
252
- return (0, _bigint.convertLEBytesToString)(this.buffer.slice(this.position - length, this.position));
248
+ return convertLEBytesToString(this.buffer.slice(this.position - length, this.position));
253
249
  }
254
250
  }, {
255
251
  key: 'readAsStringInt64LE',
@@ -259,7 +255,4 @@ var ReadableTrackingBuffer = (function () {
259
255
  }]);
260
256
 
261
257
  return ReadableTrackingBuffer;
262
- })();
263
-
264
- exports['default'] = ReadableTrackingBuffer;
265
- module.exports = exports['default'];
258
+ })();
@@ -1,18 +1,4 @@
1
1
  'use strict';
2
2
 
3
- var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
4
-
5
- Object.defineProperty(exports, '__esModule', {
6
- value: true
7
- });
8
-
9
- var _readableTrackingBuffer = require('./readable-tracking-buffer');
10
-
11
- var _readableTrackingBuffer2 = _interopRequireDefault(_readableTrackingBuffer);
12
-
13
- var _writableTrackingBuffer = require('./writable-tracking-buffer');
14
-
15
- var _writableTrackingBuffer2 = _interopRequireDefault(_writableTrackingBuffer);
16
-
17
- exports.ReadableTrackingBuffer = _readableTrackingBuffer2['default'];
18
- exports.WritableTrackingBuffer = _writableTrackingBuffer2['default'];
3
+ module.exports.ReadableTrackingBuffer = require('./readable-tracking-buffer');
4
+ module.exports.WritableTrackingBuffer = require('./writable-tracking-buffer');
@@ -4,15 +4,7 @@ var _createClass = require('babel-runtime/helpers/create-class')['default'];
4
4
 
5
5
  var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
6
6
 
7
- var _interopRequireWildcard = require('babel-runtime/helpers/interop-require-wildcard')['default'];
8
-
9
- Object.defineProperty(exports, '__esModule', {
10
- value: true
11
- });
12
-
13
- var _bigint = require('./bigint');
14
-
15
- var bigint = _interopRequireWildcard(_bigint);
7
+ var bigint = require('./bigint');
16
8
 
17
9
  require('../buffertools');
18
10
 
@@ -26,8 +18,7 @@ var UNKNOWN_PLP_LEN = new Buffer([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
26
18
  As values are written, the position advances by the size of the written data.
27
19
  When writing, automatically allocates new buffers if there's not enough space.
28
20
  */
29
-
30
- var WritableTrackingBuffer = (function () {
21
+ module.exports = (function () {
31
22
  function WritableTrackingBuffer(initialSize, encoding, doubleSizeGrowth) {
32
23
  _classCallCheck(this, WritableTrackingBuffer);
33
24
 
@@ -322,7 +313,4 @@ var WritableTrackingBuffer = (function () {
322
313
  }]);
323
314
 
324
315
  return WritableTrackingBuffer;
325
- })();
326
-
327
- exports['default'] = WritableTrackingBuffer;
328
- module.exports = exports['default'];
316
+ })();
@@ -4,9 +4,6 @@ var _createClass = require('babel-runtime/helpers/create-class')['default'];
4
4
 
5
5
  var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
6
6
 
7
- Object.defineProperty(exports, '__esModule', {
8
- value: true
9
- });
10
7
  var WritableTrackingBuffer = require('./tracking-buffer/writable-tracking-buffer');
11
8
  var writeAllHeaders = require('./all-headers').writeToTrackingBuffer;
12
9
 
@@ -14,7 +11,7 @@ var writeAllHeaders = require('./all-headers').writeToTrackingBuffer;
14
11
  s2.2.6.8
15
12
  */
16
13
 
17
- var OPERATION_TYPE = {
14
+ var OPERATION_TYPE = module.exports.OPERATION_TYPE = {
18
15
  TM_GET_DTC_ADDRESS: 0x00,
19
16
  TM_PROPAGATE_XACT: 0x01,
20
17
  TM_BEGIN_XACT: 0x05,
@@ -24,8 +21,7 @@ var OPERATION_TYPE = {
24
21
  TM_SAVE_XACT: 0x09
25
22
  };
26
23
 
27
- exports.OPERATION_TYPE = OPERATION_TYPE;
28
- var ISOLATION_LEVEL = {
24
+ var ISOLATION_LEVEL = module.exports.ISOLATION_LEVEL = {
29
25
  NO_CHANGE: 0x00,
30
26
  READ_UNCOMMITTED: 0x01,
31
27
  READ_COMMITTED: 0x02,
@@ -34,7 +30,6 @@ var ISOLATION_LEVEL = {
34
30
  SNAPSHOT: 0x05
35
31
  };
36
32
 
37
- exports.ISOLATION_LEVEL = ISOLATION_LEVEL;
38
33
  var isolationLevelByValue = {};
39
34
  for (var _name in ISOLATION_LEVEL) {
40
35
  var value = ISOLATION_LEVEL[_name];
@@ -65,7 +60,7 @@ var Transaction = (function () {
65
60
  return {
66
61
  data: buffer.data,
67
62
  toString: function toString() {
68
- return "Begin Transaction: name=" + _this.name + ", isolationLevel=" + isolationLevelByValue[_this.isolationLevel];
63
+ return 'Begin Transaction: name=' + _this.name + ', isolationLevel=' + isolationLevelByValue[_this.isolationLevel];
69
64
  }
70
65
  };
71
66
  }
@@ -85,7 +80,7 @@ var Transaction = (function () {
85
80
  return {
86
81
  data: buffer.data,
87
82
  toString: function toString() {
88
- return "Commit Transaction: name=" + _this2.name;
83
+ return 'Commit Transaction: name=' + _this2.name;
89
84
  }
90
85
  };
91
86
  }
@@ -105,7 +100,7 @@ var Transaction = (function () {
105
100
  return {
106
101
  data: buffer.data,
107
102
  toString: function toString() {
108
- return "Rollback Transaction: name=" + _this3.name;
103
+ return 'Rollback Transaction: name=' + _this3.name;
109
104
  }
110
105
  };
111
106
  }
@@ -123,7 +118,7 @@ var Transaction = (function () {
123
118
  return {
124
119
  data: buffer.data,
125
120
  toString: function toString() {
126
- return "Save Transaction: name=" + _this4.name;
121
+ return 'Save Transaction: name=' + _this4.name;
127
122
  }
128
123
  };
129
124
  }
@@ -149,4 +144,4 @@ var Transaction = (function () {
149
144
  return Transaction;
150
145
  })();
151
146
 
152
- exports.Transaction = Transaction;
147
+ module.exports.Transaction = Transaction;
@@ -1,24 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
3
+ var iconv = require('iconv-lite');
4
+ var sprintf = require('sprintf').sprintf;
5
+ var TYPE = require('./data-type').TYPE;
6
+ var guidParser = require('./guid-parser');
4
7
 
5
- var _interopRequireWildcard = require('babel-runtime/helpers/interop-require-wildcard')['default'];
6
-
7
- Object.defineProperty(exports, '__esModule', {
8
- value: true
9
- });
10
-
11
- var _iconvLite = require('iconv-lite');
12
-
13
- var _iconvLite2 = _interopRequireDefault(_iconvLite);
14
-
15
- var _sprintf = require('sprintf');
16
-
17
- var _guidParser = require('./guid-parser');
18
-
19
- var guidParser = _interopRequireWildcard(_guidParser);
20
-
21
- var _trackingBufferBigint = require('./tracking-buffer/bigint');
8
+ var readPrecision = require('./metadata-parser').readPrecision;
9
+ var readScale = require('./metadata-parser').readScale;
10
+ var readCollation = require('./metadata-parser').readCollation;
11
+ var convertLEBytesToString = require('./tracking-buffer/bigint').convertLEBytesToString;
22
12
 
23
13
  var NULL = (1 << 16) - 1;
24
14
  var MAX = (1 << 16) - 1;
@@ -52,6 +42,10 @@ function readDataLength(parser, type, metaData, textPointerNull, callback) {
52
42
  return callback(0);
53
43
  }
54
44
 
45
+ if (metaData.isVariantValue) {
46
+ return callback(metaData.dataLength);
47
+ }
48
+
55
49
  // s2.2.4.2.1
56
50
  switch (type.id & 0x30) {
57
51
  case 0x10:
@@ -76,18 +70,20 @@ function readDataLength(parser, type, metaData, textPointerNull, callback) {
76
70
  return parser.readUInt32LE(callback);
77
71
 
78
72
  default:
79
- return parser.emit('error', new Error("Unsupported dataLengthLength " + type.dataLengthLength + " for data type " + type.name));
73
+ return parser.emit('error', new Error('Unsupported dataLengthLength ' + type.dataLengthLength + ' for data type ' + type.name));
80
74
  }
81
75
  } else {
82
76
  return callback(undefined);
83
77
  }
78
+ break;
84
79
 
85
80
  case 0x30:
86
81
  return callback(1 << ((type.id & 0x0C) >> 2));
87
82
  }
88
83
  }
89
84
 
90
- exports['default'] = function (parser, metaData, options, callback) {
85
+ module.exports = valueParse;
86
+ function valueParse(parser, metaData, options, callback) {
91
87
  var type = metaData.type;
92
88
 
93
89
  readTextPointerNull(parser, type, function (textPointerNull) {
@@ -107,7 +103,7 @@ exports['default'] = function (parser, metaData, options, callback) {
107
103
 
108
104
  case 'BigInt':
109
105
  return parser.readBuffer(8, function (buffer) {
110
- callback((0, _trackingBufferBigint.convertLEBytesToString)(buffer));
106
+ callback(convertLEBytesToString(buffer));
111
107
  });
112
108
 
113
109
  case 'IntN':
@@ -122,12 +118,13 @@ exports['default'] = function (parser, metaData, options, callback) {
122
118
  return parser.readInt32LE(callback);
123
119
  case 8:
124
120
  return parser.readBuffer(8, function (buffer) {
125
- callback((0, _trackingBufferBigint.convertLEBytesToString)(buffer));
121
+ callback(convertLEBytesToString(buffer));
126
122
  });
127
123
 
128
124
  default:
129
- return parser.emit('error', new Error("Unsupported dataLength " + dataLength + " for IntN"));
125
+ return parser.emit('error', new Error('Unsupported dataLength ' + dataLength + ' for IntN'));
130
126
  }
127
+ break;
131
128
 
132
129
  case 'Real':
133
130
  return parser.readFloatLE(callback);
@@ -145,8 +142,9 @@ exports['default'] = function (parser, metaData, options, callback) {
145
142
  return parser.readDoubleLE(callback);
146
143
 
147
144
  default:
148
- return parser.emit('error', new Error("Unsupported dataLength " + dataLength + " for FloatN"));
145
+ return parser.emit('error', new Error('Unsupported dataLength ' + dataLength + ' for FloatN'));
149
146
  }
147
+ break;
150
148
 
151
149
  case 'Money':
152
150
  case 'SmallMoney':
@@ -166,8 +164,9 @@ exports['default'] = function (parser, metaData, options, callback) {
166
164
  });
167
165
 
168
166
  default:
169
- return parser.emit('error', new Error("Unsupported dataLength " + dataLength + " for MoneyN"));
167
+ return parser.emit('error', new Error('Unsupported dataLength ' + dataLength + ' for MoneyN'));
170
168
  }
169
+ break;
171
170
 
172
171
  case 'Bit':
173
172
  return parser.readUInt8(function (value) {
@@ -183,6 +182,7 @@ exports['default'] = function (parser, metaData, options, callback) {
183
182
  callback(!!value);
184
183
  });
185
184
  }
185
+ break;
186
186
 
187
187
  case 'VarChar':
188
188
  case 'Char':
@@ -192,6 +192,7 @@ exports['default'] = function (parser, metaData, options, callback) {
192
192
  } else {
193
193
  return readChars(parser, dataLength, codepage, callback);
194
194
  }
195
+ break;
195
196
 
196
197
  case 'NVarChar':
197
198
  case 'NChar':
@@ -200,6 +201,7 @@ exports['default'] = function (parser, metaData, options, callback) {
200
201
  } else {
201
202
  return readNChars(parser, dataLength, callback);
202
203
  }
204
+ break;
203
205
 
204
206
  case 'VarBinary':
205
207
  case 'Binary':
@@ -232,6 +234,7 @@ exports['default'] = function (parser, metaData, options, callback) {
232
234
  } else {
233
235
  return readBinary(parser, dataLength, callback);
234
236
  }
237
+ break;
235
238
 
236
239
  case 'Xml':
237
240
  return readMaxNChars(parser, callback);
@@ -251,42 +254,39 @@ exports['default'] = function (parser, metaData, options, callback) {
251
254
  case 8:
252
255
  return readDateTime(parser, options.useUTC, callback);
253
256
  }
257
+ break;
254
258
 
255
259
  case 'TimeN':
256
- return parser.readUInt8(function (dataLength) {
257
- if (dataLength === 0) {
258
- return callback(null);
259
- } else {
260
- return readTime(parser, dataLength, metaData.scale, options.useUTC, callback);
261
- }
262
- });
260
+ if (dataLength === 0) {
261
+ return callback(null);
262
+ } else {
263
+ return readTime(parser, dataLength, metaData.scale, options.useUTC, callback);
264
+ }
265
+ break;
263
266
 
264
267
  case 'DateN':
265
- return parser.readUInt8(function (dataLength) {
266
- if (dataLength === 0) {
267
- return callback(null);
268
- } else {
269
- return readDate(parser, options.useUTC, callback);
270
- }
271
- });
268
+ if (dataLength === 0) {
269
+ return callback(null);
270
+ } else {
271
+ return readDate(parser, options.useUTC, callback);
272
+ }
273
+ break;
272
274
 
273
275
  case 'DateTime2N':
274
- return parser.readUInt8(function (dataLength) {
275
- if (dataLength === 0) {
276
- return callback(null);
277
- } else {
278
- return readDateTime2(parser, dataLength, metaData.scale, options.useUTC, callback);
279
- }
280
- });
276
+ if (dataLength === 0) {
277
+ return callback(null);
278
+ } else {
279
+ return readDateTime2(parser, dataLength, metaData.scale, options.useUTC, callback);
280
+ }
281
+ break;
281
282
 
282
283
  case 'DateTimeOffsetN':
283
- return parser.readUInt8(function (dataLength) {
284
- if (dataLength === 0) {
285
- return callback(null);
286
- } else {
287
- return readDateTimeOffset(parser, dataLength, metaData.scale, callback);
288
- }
289
- });
284
+ if (dataLength === 0) {
285
+ return callback(null);
286
+ } else {
287
+ return readDateTimeOffset(parser, dataLength, metaData.scale, callback);
288
+ }
289
+ break;
290
290
 
291
291
  case 'NumericN':
292
292
  case 'DecimalN':
@@ -311,7 +311,7 @@ exports['default'] = function (parser, metaData, options, callback) {
311
311
  readValue = parser.readUNumeric128LE;
312
312
  break;
313
313
  default:
314
- return parser.emit('error', new Error((0, _sprintf.sprintf)('Unsupported numeric size %d', dataLength - 1)));
314
+ return parser.emit('error', new Error(sprintf('Unsupported numeric size %d', dataLength - 1)));
315
315
  }
316
316
 
317
317
  readValue.call(parser, function (value) {
@@ -331,18 +331,46 @@ exports['default'] = function (parser, metaData, options, callback) {
331
331
  });
332
332
 
333
333
  default:
334
- return parser.emit('error', new Error((0, _sprintf.sprintf)('Unsupported guid size %d', dataLength - 1)));
334
+ return parser.emit('error', new Error(sprintf('Unsupported guid size %d', dataLength - 1)));
335
335
  }
336
+ break;
336
337
 
337
338
  case 'UDT':
338
339
  return readMaxBinary(parser, callback);
339
340
 
341
+ case 'Variant':
342
+ var valueMetaData = metaData.valueMetaData = {};
343
+ Object.defineProperty(valueMetaData, 'isVariantValue', { value: true });
344
+ return parser.readUInt8(function (baseType) {
345
+ return parser.readUInt8(function (propBytes) {
346
+ valueMetaData.dataLength = dataLength - propBytes - 2;
347
+ valueMetaData.type = TYPE[baseType];
348
+ return readPrecision(parser, valueMetaData.type, function (precision) {
349
+ valueMetaData.precision = precision;
350
+ return readScale(parser, valueMetaData.type, function (scale) {
351
+ valueMetaData.scale = scale;
352
+ return readCollation(parser, valueMetaData.type, function (collation) {
353
+ valueMetaData.collation = collation;
354
+ if (baseType === 0xA5 || baseType === 0xAD || baseType === 0xA7 || baseType === 0xAF || baseType === 0xE7 || baseType === 0xEF) {
355
+ return readDataLength(parser, valueMetaData.type, {}, null, function (maxDataLength) {
356
+ valueMetaData.dataLength = maxDataLength;
357
+ return valueParse(parser, valueMetaData, options, callback);
358
+ });
359
+ } else {
360
+ return valueParse(parser, valueMetaData, options, callback);
361
+ }
362
+ });
363
+ });
364
+ });
365
+ });
366
+ });
367
+
340
368
  default:
341
- return parser.emit('error', new Error((0, _sprintf.sprintf)('Unrecognised type %s', type.name)));
369
+ return parser.emit('error', new Error(sprintf('Unrecognised type %s', type.name)));
342
370
  }
343
371
  });
344
372
  });
345
- };
373
+ }
346
374
 
347
375
  function readBinary(parser, dataLength, callback) {
348
376
  if (dataLength === NULL) {
@@ -361,7 +389,7 @@ function readChars(parser, dataLength, codepage, callback) {
361
389
  return callback(null);
362
390
  } else {
363
391
  return parser.readBuffer(dataLength, function (data) {
364
- callback(_iconvLite2['default'].decode(data, codepage));
392
+ callback(iconv.decode(data, codepage));
365
393
  });
366
394
  }
367
395
  }
@@ -371,7 +399,7 @@ function readNChars(parser, dataLength, callback) {
371
399
  return callback(null);
372
400
  } else {
373
401
  return parser.readBuffer(dataLength, function (data) {
374
- callback(data.toString("ucs2"));
402
+ callback(data.toString('ucs2'));
375
403
  });
376
404
  }
377
405
  }
@@ -387,7 +415,7 @@ function readMaxChars(parser, codepage, callback) {
387
415
 
388
416
  readMax(parser, function (data) {
389
417
  if (data) {
390
- callback(_iconvLite2['default'].decode(data, codepage));
418
+ callback(iconv.decode(data, codepage));
391
419
  } else {
392
420
  callback(null);
393
421
  }
@@ -415,7 +443,7 @@ function readMax(parser, callback) {
415
443
  var high = type.readUInt32LE(4);
416
444
 
417
445
  if (high >= 2 << 53 - 32) {
418
- console.warn("Read UInt64LE > 53 bits : high=" + high + ", low=" + low);
446
+ console.warn('Read UInt64LE > 53 bits : high=' + high + ', low=' + low);
419
447
  }
420
448
 
421
449
  var expectedLength = low + 0x100000000 * high;
@@ -427,8 +455,7 @@ function readMax(parser, callback) {
427
455
  function readMaxKnownLength(parser, totalLength, callback) {
428
456
  var data = new Buffer(totalLength);
429
457
 
430
- var offset = 0,
431
- chunkLength = undefined;
458
+ var offset = 0;
432
459
  function next(done) {
433
460
  parser.readUInt32LE(function (chunkLength) {
434
461
  if (!chunkLength) {
@@ -446,7 +473,7 @@ function readMaxKnownLength(parser, totalLength, callback) {
446
473
 
447
474
  next(function () {
448
475
  if (offset !== totalLength) {
449
- parser.emit('error', new Error("Partially Length-prefixed Bytes unmatched lengths : expected " + totalLength + ", but got " + offset + " bytes"));
476
+ parser.emit('error', new Error('Partially Length-prefixed Bytes unmatched lengths : expected ' + totalLength + ', but got ' + offset + ' bytes'));
450
477
  }
451
478
 
452
479
  callback(data);
@@ -542,7 +569,7 @@ function readTime(parser, dataLength, scale, useUTC, callback) {
542
569
  } else {
543
570
  date = new Date(1970, 0, 1, 0, 0, 0, value / 10000);
544
571
  }
545
- Object.defineProperty(date, "nanosecondsDelta", {
572
+ Object.defineProperty(date, 'nanosecondsDelta', {
546
573
  enumerable: false,
547
574
  value: value % 10000 / Math.pow(10, 7)
548
575
  });
@@ -569,7 +596,7 @@ function readDateTime2(parser, dataLength, scale, useUTC, callback) {
569
596
  } else {
570
597
  date = new Date(2000, 0, days - 730118, time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());
571
598
  }
572
- Object.defineProperty(date, "nanosecondsDelta", {
599
+ Object.defineProperty(date, 'nanosecondsDelta', {
573
600
  enumerable: false,
574
601
  value: time.nanosecondsDelta
575
602
  });
@@ -584,7 +611,7 @@ function readDateTimeOffset(parser, dataLength, scale, callback) {
584
611
  // offset
585
612
  parser.readInt16LE(function () {
586
613
  var date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time));
587
- Object.defineProperty(date, "nanosecondsDelta", {
614
+ Object.defineProperty(date, 'nanosecondsDelta', {
588
615
  enumerable: false,
589
616
  value: time.nanosecondsDelta
590
617
  });
@@ -592,5 +619,4 @@ function readDateTimeOffset(parser, dataLength, scale, callback) {
592
619
  });
593
620
  });
594
621
  });
595
- }
596
- module.exports = exports['default'];
622
+ }
package/package.json CHANGED
@@ -27,7 +27,7 @@
27
27
  "homepage": "https://github.com/pekim/tedious",
28
28
  "bugs": "https://github.com/pekim/tedious/issues",
29
29
  "license": "MIT",
30
- "version": "1.13.2",
30
+ "version": "1.14.0",
31
31
  "main": "./lib/tedious.js",
32
32
  "repository": {
33
33
  "type": "git",
@@ -42,6 +42,7 @@
42
42
  "bl": "^1.0.0",
43
43
  "iconv-lite": "^0.4.11",
44
44
  "readable-stream": "^2.0.2",
45
+ "semver": "^5.1.0",
45
46
  "sprintf": "0.1.5"
46
47
  },
47
48
  "devDependencies": {
@@ -49,11 +50,15 @@
49
50
  "babel": "^5.8.19",
50
51
  "benchmark": "^1.0.0",
51
52
  "coffee-script": "^1.9.3",
53
+ "eslint": "^1.10.3",
52
54
  "nodeunit": "^0.9.1"
53
55
  },
54
56
  "scripts": {
57
+ "pretest": "eslint src test",
55
58
  "test": "nodeunit --reporter minimal test/setup.js test/unit/ test/unit/token/ test/unit/tracking-buffer",
59
+ "pretest-all": "eslint src test",
56
60
  "test-all": "nodeunit --reporter minimal test/setup.js test/unit/ test/unit/token/ test/unit/tracking-buffer test/integration/",
61
+ "pretest-integration": "eslint src test",
57
62
  "test-integration": "nodeunit --reporter minimal test/setup.js test/integration/",
58
63
  "prepublish": "coffee scripts/build.coffee"
59
64
  },