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.
- package/appveyor.yml +2 -0
- package/lib/all-headers.js +2 -5
- package/lib/buffertools.js +1 -1
- package/lib/bulk-load.js +18 -27
- package/lib/collation.js +78 -6
- package/lib/connection.js +120 -159
- package/lib/data-type.js +73 -72
- package/lib/debug.js +5 -17
- package/lib/errors.js +8 -16
- package/lib/guid-parser.js +2 -5
- package/lib/instance-lookup.js +7 -16
- package/lib/library.js +1 -5
- package/lib/login7-payload.js +16 -34
- package/lib/message-io.js +21 -35
- package/lib/metadata-parser.js +22 -18
- package/lib/ntlm-payload.js +9 -24
- package/lib/packet.js +11 -18
- package/lib/prelogin-payload.js +10 -19
- package/lib/request.js +15 -24
- package/lib/rpcrequest-payload.js +7 -16
- package/lib/special-stored-procedure.js +3 -7
- package/lib/sqlbatch-payload.js +7 -16
- package/lib/stream-parser.js +24 -36
- package/lib/tds-versions.js +2 -8
- package/lib/tedious.js +8 -52
- package/lib/token/colmetadata-token-parser.js +4 -14
- package/lib/token/done-token-parser.js +6 -9
- package/lib/token/env-change-token-parser.js +4 -9
- package/lib/token/infoerror-token-parser.js +9 -12
- package/lib/token/loginack-token-parser.js +8 -8
- package/lib/token/nbcrow-token-parser.js +5 -15
- package/lib/token/order-token-parser.js +3 -9
- package/lib/token/returnstatus-token-parser.js +3 -9
- package/lib/token/returnvalue-token-parser.js +7 -20
- package/lib/token/row-token-parser.js +5 -15
- package/lib/token/sspi-token-parser.js +3 -8
- package/lib/token/stream-parser.js +60 -58
- package/lib/token/token-stream-parser.js +14 -23
- package/lib/token/token.js +3 -7
- package/lib/tracking-buffer/bigint.js +2 -5
- package/lib/tracking-buffer/readable-tracking-buffer.js +6 -13
- package/lib/tracking-buffer/tracking-buffer.js +2 -16
- package/lib/tracking-buffer/writable-tracking-buffer.js +3 -15
- package/lib/transaction.js +7 -12
- package/lib/value-parser.js +95 -69
- package/package.json +6 -1
package/lib/data-type.js
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, '__esModule', {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
var _guidParser = require('./guid-parser');
|
|
10
|
-
|
|
11
|
-
var guidParser = _interopRequireWildcard(_guidParser);
|
|
3
|
+
var guidParser = require('./guid-parser');
|
|
12
4
|
|
|
13
5
|
var NULL = (1 << 16) - 1;
|
|
14
6
|
var EPOCH_DATE = new Date(1900, 0, 1);
|
|
@@ -17,10 +9,9 @@ var YEAR_ONE = new Date(2000, 0, -730118);
|
|
|
17
9
|
var UTC_YEAR_ONE = Date.UTC(2000, 0, -730118);
|
|
18
10
|
var MAX = (1 << 16) - 1;
|
|
19
11
|
|
|
20
|
-
var typeByName = {};
|
|
12
|
+
var typeByName = module.exports.typeByName = {};
|
|
21
13
|
|
|
22
|
-
exports.
|
|
23
|
-
var TYPE = {
|
|
14
|
+
var TYPE = module.exports.TYPE = {
|
|
24
15
|
0x1F: {
|
|
25
16
|
type: 'NULL',
|
|
26
17
|
name: 'Null'
|
|
@@ -54,10 +45,10 @@ var TYPE = {
|
|
|
54
45
|
}
|
|
55
46
|
value = parseInt(value);
|
|
56
47
|
if (isNaN(value)) {
|
|
57
|
-
return new TypeError(
|
|
48
|
+
return new TypeError('Invalid number.');
|
|
58
49
|
}
|
|
59
50
|
if (value < 0 || value > 255) {
|
|
60
|
-
return new TypeError(
|
|
51
|
+
return new TypeError('Value must be between 0 and 255.');
|
|
61
52
|
}
|
|
62
53
|
return value;
|
|
63
54
|
}
|
|
@@ -125,10 +116,10 @@ var TYPE = {
|
|
|
125
116
|
}
|
|
126
117
|
value = parseInt(value);
|
|
127
118
|
if (isNaN(value)) {
|
|
128
|
-
return new TypeError(
|
|
119
|
+
return new TypeError('Invalid number.');
|
|
129
120
|
}
|
|
130
121
|
if (value < -32768 || value > 32767) {
|
|
131
|
-
return new TypeError(
|
|
122
|
+
return new TypeError('Value must be between -32768 and 32767.');
|
|
132
123
|
}
|
|
133
124
|
return value;
|
|
134
125
|
}
|
|
@@ -162,10 +153,10 @@ var TYPE = {
|
|
|
162
153
|
}
|
|
163
154
|
value = parseInt(value);
|
|
164
155
|
if (isNaN(value)) {
|
|
165
|
-
return new TypeError(
|
|
156
|
+
return new TypeError('Invalid number.');
|
|
166
157
|
}
|
|
167
158
|
if (value < -2147483648 || value > 2147483647) {
|
|
168
|
-
return new TypeError(
|
|
159
|
+
return new TypeError('Value must be between -2147483648 and 2147483647.');
|
|
169
160
|
}
|
|
170
161
|
return value;
|
|
171
162
|
}
|
|
@@ -217,7 +208,7 @@ var TYPE = {
|
|
|
217
208
|
}
|
|
218
209
|
|
|
219
210
|
if (isNaN(value)) {
|
|
220
|
-
return new TypeError(
|
|
211
|
+
return new TypeError('Invalid date.');
|
|
221
212
|
}
|
|
222
213
|
|
|
223
214
|
return value;
|
|
@@ -252,7 +243,7 @@ var TYPE = {
|
|
|
252
243
|
}
|
|
253
244
|
value = parseFloat(value);
|
|
254
245
|
if (isNaN(value)) {
|
|
255
|
-
return new TypeError(
|
|
246
|
+
return new TypeError('Invalid number.');
|
|
256
247
|
}
|
|
257
248
|
return value;
|
|
258
249
|
}
|
|
@@ -263,7 +254,7 @@ var TYPE = {
|
|
|
263
254
|
name: 'Money',
|
|
264
255
|
|
|
265
256
|
declaration: function declaration() {
|
|
266
|
-
return
|
|
257
|
+
return 'money';
|
|
267
258
|
},
|
|
268
259
|
|
|
269
260
|
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
@@ -286,7 +277,7 @@ var TYPE = {
|
|
|
286
277
|
}
|
|
287
278
|
value = parseFloat(value);
|
|
288
279
|
if (isNaN(value)) {
|
|
289
|
-
return new TypeError(
|
|
280
|
+
return new TypeError('Invalid number.');
|
|
290
281
|
}
|
|
291
282
|
return value;
|
|
292
283
|
}
|
|
@@ -347,7 +338,7 @@ var TYPE = {
|
|
|
347
338
|
value = Date.parse(value);
|
|
348
339
|
}
|
|
349
340
|
if (isNaN(value)) {
|
|
350
|
-
return new TypeError(
|
|
341
|
+
return new TypeError('Invalid date.');
|
|
351
342
|
}
|
|
352
343
|
return value;
|
|
353
344
|
}
|
|
@@ -381,7 +372,7 @@ var TYPE = {
|
|
|
381
372
|
}
|
|
382
373
|
value = parseFloat(value);
|
|
383
374
|
if (isNaN(value)) {
|
|
384
|
-
return new TypeError(
|
|
375
|
+
return new TypeError('Invalid number.');
|
|
385
376
|
}
|
|
386
377
|
return value;
|
|
387
378
|
}
|
|
@@ -394,7 +385,7 @@ var TYPE = {
|
|
|
394
385
|
hasScale: true,
|
|
395
386
|
|
|
396
387
|
declaration: function declaration(parameter) {
|
|
397
|
-
return
|
|
388
|
+
return 'decimal(' + this.resolvePrecision(parameter) + ', ' + this.resolveScale(parameter) + ')';
|
|
398
389
|
},
|
|
399
390
|
|
|
400
391
|
resolvePrecision: function resolvePrecision(parameter) {
|
|
@@ -465,7 +456,7 @@ var TYPE = {
|
|
|
465
456
|
}
|
|
466
457
|
value = parseFloat(value);
|
|
467
458
|
if (isNaN(value)) {
|
|
468
|
-
return new TypeError(
|
|
459
|
+
return new TypeError('Invalid number.');
|
|
469
460
|
}
|
|
470
461
|
return value;
|
|
471
462
|
}
|
|
@@ -478,7 +469,7 @@ var TYPE = {
|
|
|
478
469
|
hasScale: true,
|
|
479
470
|
|
|
480
471
|
declaration: function declaration(parameter) {
|
|
481
|
-
return
|
|
472
|
+
return 'numeric(' + this.resolvePrecision(parameter) + ', ' + this.resolveScale(parameter) + ')';
|
|
482
473
|
},
|
|
483
474
|
|
|
484
475
|
resolvePrecision: function resolvePrecision(parameter) {
|
|
@@ -549,7 +540,7 @@ var TYPE = {
|
|
|
549
540
|
}
|
|
550
541
|
value = parseFloat(value);
|
|
551
542
|
if (isNaN(value)) {
|
|
552
|
-
return new TypeError(
|
|
543
|
+
return new TypeError('Invalid number.');
|
|
553
544
|
}
|
|
554
545
|
return value;
|
|
555
546
|
}
|
|
@@ -560,7 +551,7 @@ var TYPE = {
|
|
|
560
551
|
name: 'SmallMoney',
|
|
561
552
|
|
|
562
553
|
declaration: function declaration() {
|
|
563
|
-
return
|
|
554
|
+
return 'smallmoney';
|
|
564
555
|
},
|
|
565
556
|
|
|
566
557
|
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
@@ -583,10 +574,10 @@ var TYPE = {
|
|
|
583
574
|
}
|
|
584
575
|
value = parseFloat(value);
|
|
585
576
|
if (isNaN(value)) {
|
|
586
|
-
return new TypeError(
|
|
577
|
+
return new TypeError('Invalid number.');
|
|
587
578
|
}
|
|
588
579
|
if (value < -214748.3648 || value > 214748.3647) {
|
|
589
|
-
return new TypeError(
|
|
580
|
+
return new TypeError('Value must be between -214748.3648 and 214748.3647.');
|
|
590
581
|
}
|
|
591
582
|
return value;
|
|
592
583
|
}
|
|
@@ -661,7 +652,7 @@ var TYPE = {
|
|
|
661
652
|
return null;
|
|
662
653
|
}
|
|
663
654
|
if (!Buffer.isBuffer(value)) {
|
|
664
|
-
return new TypeError(
|
|
655
|
+
return new TypeError('Invalid buffer.');
|
|
665
656
|
}
|
|
666
657
|
return value;
|
|
667
658
|
}
|
|
@@ -708,7 +699,7 @@ var TYPE = {
|
|
|
708
699
|
}
|
|
709
700
|
if (typeof value !== 'string') {
|
|
710
701
|
if (typeof value.toString !== 'function') {
|
|
711
|
-
return TypeError(
|
|
702
|
+
return TypeError('Invalid string.');
|
|
712
703
|
}
|
|
713
704
|
value = value.toString();
|
|
714
705
|
}
|
|
@@ -750,7 +741,7 @@ var TYPE = {
|
|
|
750
741
|
}
|
|
751
742
|
if (typeof value !== 'string') {
|
|
752
743
|
if (typeof value.toString !== 'function') {
|
|
753
|
-
return TypeError(
|
|
744
|
+
return TypeError('Invalid string.');
|
|
754
745
|
}
|
|
755
746
|
value = value.toString();
|
|
756
747
|
}
|
|
@@ -831,9 +822,9 @@ var TYPE = {
|
|
|
831
822
|
}
|
|
832
823
|
|
|
833
824
|
if (length <= this.maximumLength) {
|
|
834
|
-
return
|
|
825
|
+
return 'varbinary(' + length + ')';
|
|
835
826
|
} else {
|
|
836
|
-
return
|
|
827
|
+
return 'varbinary(max)';
|
|
837
828
|
}
|
|
838
829
|
},
|
|
839
830
|
|
|
@@ -878,7 +869,7 @@ var TYPE = {
|
|
|
878
869
|
return null;
|
|
879
870
|
}
|
|
880
871
|
if (!Buffer.isBuffer(value)) {
|
|
881
|
-
return new TypeError(
|
|
872
|
+
return new TypeError('Invalid buffer.');
|
|
882
873
|
}
|
|
883
874
|
return value;
|
|
884
875
|
}
|
|
@@ -904,9 +895,9 @@ var TYPE = {
|
|
|
904
895
|
}
|
|
905
896
|
|
|
906
897
|
if (length <= this.maximumLength) {
|
|
907
|
-
return
|
|
898
|
+
return 'varchar(' + length + ')';
|
|
908
899
|
} else {
|
|
909
|
-
return
|
|
900
|
+
return 'varchar(max)';
|
|
910
901
|
}
|
|
911
902
|
},
|
|
912
903
|
|
|
@@ -957,7 +948,7 @@ var TYPE = {
|
|
|
957
948
|
}
|
|
958
949
|
if (typeof value !== 'string') {
|
|
959
950
|
if (typeof value.toString !== 'function') {
|
|
960
|
-
return TypeError(
|
|
951
|
+
return TypeError('Invalid string.');
|
|
961
952
|
}
|
|
962
953
|
value = value.toString();
|
|
963
954
|
}
|
|
@@ -982,7 +973,7 @@ var TYPE = {
|
|
|
982
973
|
} else {
|
|
983
974
|
length = this.maximumLength;
|
|
984
975
|
}
|
|
985
|
-
return
|
|
976
|
+
return 'binary(' + length + ')';
|
|
986
977
|
},
|
|
987
978
|
|
|
988
979
|
resolveLength: function resolveLength(parameter) {
|
|
@@ -1012,7 +1003,7 @@ var TYPE = {
|
|
|
1012
1003
|
return null;
|
|
1013
1004
|
}
|
|
1014
1005
|
if (!Buffer.isBuffer(value)) {
|
|
1015
|
-
return new TypeError(
|
|
1006
|
+
return new TypeError('Invalid buffer.');
|
|
1016
1007
|
}
|
|
1017
1008
|
return value;
|
|
1018
1009
|
}
|
|
@@ -1038,9 +1029,9 @@ var TYPE = {
|
|
|
1038
1029
|
}
|
|
1039
1030
|
|
|
1040
1031
|
if (length < this.maximumLength) {
|
|
1041
|
-
return
|
|
1032
|
+
return 'char(' + length + ')';
|
|
1042
1033
|
} else {
|
|
1043
|
-
return
|
|
1034
|
+
return 'char(' + this.maximumLength + ')';
|
|
1044
1035
|
}
|
|
1045
1036
|
},
|
|
1046
1037
|
|
|
@@ -1078,7 +1069,7 @@ var TYPE = {
|
|
|
1078
1069
|
}
|
|
1079
1070
|
if (typeof value !== 'string') {
|
|
1080
1071
|
if (typeof value.toString !== 'function') {
|
|
1081
|
-
return TypeError(
|
|
1072
|
+
return TypeError('Invalid string.');
|
|
1082
1073
|
}
|
|
1083
1074
|
value = value.toString();
|
|
1084
1075
|
}
|
|
@@ -1106,9 +1097,9 @@ var TYPE = {
|
|
|
1106
1097
|
}
|
|
1107
1098
|
|
|
1108
1099
|
if (length <= this.maximumLength) {
|
|
1109
|
-
return
|
|
1100
|
+
return 'nvarchar(' + length + ')';
|
|
1110
1101
|
} else {
|
|
1111
|
-
return
|
|
1102
|
+
return 'nvarchar(max)';
|
|
1112
1103
|
}
|
|
1113
1104
|
},
|
|
1114
1105
|
|
|
@@ -1159,7 +1150,7 @@ var TYPE = {
|
|
|
1159
1150
|
}
|
|
1160
1151
|
if (typeof value !== 'string') {
|
|
1161
1152
|
if (typeof value.toString !== 'function') {
|
|
1162
|
-
return TypeError(
|
|
1153
|
+
return TypeError('Invalid string.');
|
|
1163
1154
|
}
|
|
1164
1155
|
value = value.toString();
|
|
1165
1156
|
}
|
|
@@ -1187,9 +1178,9 @@ var TYPE = {
|
|
|
1187
1178
|
}
|
|
1188
1179
|
|
|
1189
1180
|
if (length < this.maximumLength) {
|
|
1190
|
-
return
|
|
1181
|
+
return 'nchar(' + length + ')';
|
|
1191
1182
|
} else {
|
|
1192
|
-
return
|
|
1183
|
+
return 'nchar(' + this.maximumLength + ')';
|
|
1193
1184
|
}
|
|
1194
1185
|
},
|
|
1195
1186
|
|
|
@@ -1227,7 +1218,7 @@ var TYPE = {
|
|
|
1227
1218
|
}
|
|
1228
1219
|
if (typeof value !== 'string') {
|
|
1229
1220
|
if (typeof value.toString !== 'function') {
|
|
1230
|
-
return TypeError(
|
|
1221
|
+
return TypeError('Invalid string.');
|
|
1231
1222
|
}
|
|
1232
1223
|
value = value.toString();
|
|
1233
1224
|
}
|
|
@@ -1246,7 +1237,7 @@ var TYPE = {
|
|
|
1246
1237
|
name: 'TimeN',
|
|
1247
1238
|
aliases: ['Time'],
|
|
1248
1239
|
hasScale: true,
|
|
1249
|
-
dataLengthLength:
|
|
1240
|
+
dataLengthLength: 1,
|
|
1250
1241
|
|
|
1251
1242
|
dataLengthFromScale: function dataLengthFromScale(scale) {
|
|
1252
1243
|
switch (scale) {
|
|
@@ -1265,7 +1256,7 @@ var TYPE = {
|
|
|
1265
1256
|
},
|
|
1266
1257
|
|
|
1267
1258
|
declaration: function declaration(parameter) {
|
|
1268
|
-
return
|
|
1259
|
+
return 'time(' + this.resolveScale(parameter) + ')';
|
|
1269
1260
|
},
|
|
1270
1261
|
|
|
1271
1262
|
resolveScale: function resolveScale(parameter) {
|
|
@@ -1323,7 +1314,7 @@ var TYPE = {
|
|
|
1323
1314
|
}
|
|
1324
1315
|
value = Date.parse(value);
|
|
1325
1316
|
if (isNaN(value)) {
|
|
1326
|
-
return new TypeError(
|
|
1317
|
+
return new TypeError('Invalid time.');
|
|
1327
1318
|
}
|
|
1328
1319
|
return value;
|
|
1329
1320
|
}
|
|
@@ -1333,10 +1324,11 @@ var TYPE = {
|
|
|
1333
1324
|
type: 'DATEN',
|
|
1334
1325
|
name: 'DateN',
|
|
1335
1326
|
aliases: ['Date'],
|
|
1336
|
-
dataLengthLength:
|
|
1327
|
+
dataLengthLength: 1,
|
|
1328
|
+
fixedDataLength: 3,
|
|
1337
1329
|
|
|
1338
1330
|
declaration: function declaration() {
|
|
1339
|
-
return
|
|
1331
|
+
return 'date';
|
|
1340
1332
|
},
|
|
1341
1333
|
|
|
1342
1334
|
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
@@ -1365,7 +1357,7 @@ var TYPE = {
|
|
|
1365
1357
|
value = Date.parse(value);
|
|
1366
1358
|
}
|
|
1367
1359
|
if (isNaN(value)) {
|
|
1368
|
-
return new TypeError(
|
|
1360
|
+
return new TypeError('Invalid date.');
|
|
1369
1361
|
}
|
|
1370
1362
|
return value;
|
|
1371
1363
|
}
|
|
@@ -1376,7 +1368,7 @@ var TYPE = {
|
|
|
1376
1368
|
name: 'DateTime2N',
|
|
1377
1369
|
aliases: ['DateTime2'],
|
|
1378
1370
|
hasScale: true,
|
|
1379
|
-
dataLengthLength:
|
|
1371
|
+
dataLengthLength: 1,
|
|
1380
1372
|
|
|
1381
1373
|
dataLengthFromScale: function dataLengthFromScale(scale) {
|
|
1382
1374
|
switch (scale) {
|
|
@@ -1395,7 +1387,7 @@ var TYPE = {
|
|
|
1395
1387
|
},
|
|
1396
1388
|
|
|
1397
1389
|
declaration: function declaration(parameter) {
|
|
1398
|
-
return
|
|
1390
|
+
return 'datetime2(' + this.resolveScale(parameter) + ')';
|
|
1399
1391
|
},
|
|
1400
1392
|
|
|
1401
1393
|
resolveScale: function resolveScale(parameter) {
|
|
@@ -1460,7 +1452,7 @@ var TYPE = {
|
|
|
1460
1452
|
value = Date.parse(value);
|
|
1461
1453
|
}
|
|
1462
1454
|
if (isNaN(value)) {
|
|
1463
|
-
return new TypeError(
|
|
1455
|
+
return new TypeError('Invalid date.');
|
|
1464
1456
|
}
|
|
1465
1457
|
return value;
|
|
1466
1458
|
}
|
|
@@ -1471,7 +1463,7 @@ var TYPE = {
|
|
|
1471
1463
|
name: 'DateTimeOffsetN',
|
|
1472
1464
|
aliases: ['DateTimeOffset'],
|
|
1473
1465
|
hasScale: true,
|
|
1474
|
-
dataLengthLength:
|
|
1466
|
+
dataLengthLength: 1,
|
|
1475
1467
|
dataLengthFromScale: function dataLengthFromScale(scale) {
|
|
1476
1468
|
switch (scale) {
|
|
1477
1469
|
case 0:
|
|
@@ -1488,7 +1480,7 @@ var TYPE = {
|
|
|
1488
1480
|
}
|
|
1489
1481
|
},
|
|
1490
1482
|
declaration: function declaration(parameter) {
|
|
1491
|
-
return
|
|
1483
|
+
return 'datetimeoffset(' + this.resolveScale(parameter) + ')';
|
|
1492
1484
|
},
|
|
1493
1485
|
resolveScale: function resolveScale(parameter) {
|
|
1494
1486
|
if (parameter.scale != null) {
|
|
@@ -1544,7 +1536,7 @@ var TYPE = {
|
|
|
1544
1536
|
value = Date.parse(value);
|
|
1545
1537
|
}
|
|
1546
1538
|
if (isNaN(value)) {
|
|
1547
|
-
return new TypeError(
|
|
1539
|
+
return new TypeError('Invalid date.');
|
|
1548
1540
|
}
|
|
1549
1541
|
return value;
|
|
1550
1542
|
}
|
|
@@ -1561,7 +1553,7 @@ var TYPE = {
|
|
|
1561
1553
|
name: 'TVP',
|
|
1562
1554
|
|
|
1563
1555
|
declaration: function declaration(parameter) {
|
|
1564
|
-
return parameter.value.name +
|
|
1556
|
+
return parameter.value.name + ' readonly';
|
|
1565
1557
|
},
|
|
1566
1558
|
|
|
1567
1559
|
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
|
|
@@ -1570,9 +1562,9 @@ var TYPE = {
|
|
|
1570
1562
|
ref2 = undefined,
|
|
1571
1563
|
ref3 = undefined;
|
|
1572
1564
|
buffer.writeUInt8(this.id);
|
|
1573
|
-
buffer.writeBVarchar(
|
|
1574
|
-
buffer.writeBVarchar((ref = (ref1 = parameter.value) != null ? ref1.schema : void 0) != null ? ref :
|
|
1575
|
-
buffer.writeBVarchar((ref2 = (ref3 = parameter.value) != null ? ref3.name : void 0) != null ? ref2 :
|
|
1565
|
+
buffer.writeBVarchar('');
|
|
1566
|
+
buffer.writeBVarchar((ref = (ref1 = parameter.value) != null ? ref1.schema : void 0) != null ? ref : '');
|
|
1567
|
+
buffer.writeBVarchar((ref2 = (ref3 = parameter.value) != null ? ref3.name : void 0) != null ? ref2 : '');
|
|
1576
1568
|
},
|
|
1577
1569
|
|
|
1578
1570
|
writeParameterData: function writeParameterData(buffer, parameter, options) {
|
|
@@ -1591,7 +1583,7 @@ var TYPE = {
|
|
|
1591
1583
|
buffer.writeUInt32LE(0x00000000);
|
|
1592
1584
|
buffer.writeUInt16LE(0x0000);
|
|
1593
1585
|
column.type.writeTypeInfo(buffer, column);
|
|
1594
|
-
buffer.writeBVarchar(
|
|
1586
|
+
buffer.writeBVarchar('');
|
|
1595
1587
|
}
|
|
1596
1588
|
|
|
1597
1589
|
buffer.writeUInt8(0x00);
|
|
@@ -1622,23 +1614,32 @@ var TYPE = {
|
|
|
1622
1614
|
}
|
|
1623
1615
|
|
|
1624
1616
|
if (typeof value !== 'object') {
|
|
1625
|
-
return new TypeError(
|
|
1617
|
+
return new TypeError('Invalid table.');
|
|
1626
1618
|
}
|
|
1627
1619
|
|
|
1628
1620
|
if (!Array.isArray(value.columns)) {
|
|
1629
|
-
return new TypeError(
|
|
1621
|
+
return new TypeError('Invalid table.');
|
|
1630
1622
|
}
|
|
1631
1623
|
|
|
1632
1624
|
if (!Array.isArray(value.rows)) {
|
|
1633
|
-
return new TypeError(
|
|
1625
|
+
return new TypeError('Invalid table.');
|
|
1634
1626
|
}
|
|
1635
1627
|
|
|
1636
1628
|
return value;
|
|
1637
1629
|
}
|
|
1630
|
+
},
|
|
1631
|
+
|
|
1632
|
+
0x62: {
|
|
1633
|
+
type: 'SSVARIANTTYPE',
|
|
1634
|
+
name: 'Variant',
|
|
1635
|
+
dataLengthLength: 4,
|
|
1636
|
+
|
|
1637
|
+
declaration: function declaration(parameter) {
|
|
1638
|
+
return 'sql_variant';
|
|
1639
|
+
}
|
|
1638
1640
|
}
|
|
1639
1641
|
};
|
|
1640
1642
|
|
|
1641
|
-
exports.TYPE = TYPE;
|
|
1642
1643
|
/*
|
|
1643
1644
|
CHARTYPE: 0x2F # Char (legacy support)
|
|
1644
1645
|
VARCHARTYPE: 0x27 # VarChar (legacy support)
|
package/lib/debug.js
CHANGED
|
@@ -8,19 +8,10 @@ var _createClass = require('babel-runtime/helpers/create-class')['default'];
|
|
|
8
8
|
|
|
9
9
|
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var EventEmitter = require('events').EventEmitter;
|
|
12
|
+
var util = require('util');
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
var _events = require('events');
|
|
18
|
-
|
|
19
|
-
var _util = require('util');
|
|
20
|
-
|
|
21
|
-
var _util2 = _interopRequireDefault(_util);
|
|
22
|
-
|
|
23
|
-
var Debug = (function (_EventEmitter) {
|
|
14
|
+
module.exports = (function (_EventEmitter) {
|
|
24
15
|
_inherits(Debug, _EventEmitter);
|
|
25
16
|
|
|
26
17
|
/*
|
|
@@ -70,7 +61,7 @@ var Debug = (function (_EventEmitter) {
|
|
|
70
61
|
key: 'token',
|
|
71
62
|
value: function token(_token) {
|
|
72
63
|
if (this.haveListeners() && this.options.token) {
|
|
73
|
-
this.log(
|
|
64
|
+
this.log(util.inspect(_token, false, 5, true));
|
|
74
65
|
}
|
|
75
66
|
}
|
|
76
67
|
}, {
|
|
@@ -86,7 +77,4 @@ var Debug = (function (_EventEmitter) {
|
|
|
86
77
|
}]);
|
|
87
78
|
|
|
88
79
|
return Debug;
|
|
89
|
-
})(
|
|
90
|
-
|
|
91
|
-
exports['default'] = Debug;
|
|
92
|
-
module.exports = exports['default'];
|
|
80
|
+
})(EventEmitter);
|
package/lib/errors.js
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.ConnectionError = ConnectionError;
|
|
9
|
-
exports.RequestError = RequestError;
|
|
10
|
-
|
|
11
|
-
var _util = require('util');
|
|
12
|
-
|
|
13
|
-
var _util2 = _interopRequireDefault(_util);
|
|
3
|
+
var util = require('util');
|
|
14
4
|
|
|
5
|
+
module.exports.ConnectionError = ConnectionError;
|
|
15
6
|
function ConnectionError(message, code) {
|
|
16
7
|
if (!(this instanceof ConnectionError)) {
|
|
17
8
|
if (message instanceof ConnectionError) {
|
|
@@ -29,10 +20,11 @@ function ConnectionError(message, code) {
|
|
|
29
20
|
Error.captureStackTrace(this, this.constructor);
|
|
30
21
|
}
|
|
31
22
|
|
|
32
|
-
|
|
23
|
+
util.inherits(ConnectionError, Error);
|
|
33
24
|
|
|
34
|
-
ConnectionError.prototype.name =
|
|
25
|
+
ConnectionError.prototype.name = 'ConnectionError';
|
|
35
26
|
|
|
27
|
+
module.exports.RequestError = RequestError;
|
|
36
28
|
function RequestError(message, code) {
|
|
37
29
|
if (!(this instanceof RequestError)) {
|
|
38
30
|
if (message instanceof RequestError) {
|
|
@@ -50,6 +42,6 @@ function RequestError(message, code) {
|
|
|
50
42
|
Error.captureStackTrace(this, this.constructor);
|
|
51
43
|
}
|
|
52
44
|
|
|
53
|
-
|
|
45
|
+
util.inherits(RequestError, Error);
|
|
54
46
|
|
|
55
|
-
RequestError.prototype.name =
|
|
47
|
+
RequestError.prototype.name = 'RequestError';
|
package/lib/guid-parser.js
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.arrayToGuid = arrayToGuid;
|
|
7
|
-
exports.guidToArray = guidToArray;
|
|
8
3
|
function formatHex(number) {
|
|
9
4
|
var hex = number.toString(16);
|
|
10
5
|
if (hex.length === 1) {
|
|
@@ -13,10 +8,12 @@ function formatHex(number) {
|
|
|
13
8
|
return hex;
|
|
14
9
|
}
|
|
15
10
|
|
|
11
|
+
module.exports.arrayToGuid = arrayToGuid;
|
|
16
12
|
function arrayToGuid(array) {
|
|
17
13
|
return (formatHex(array[3]) + formatHex(array[2]) + formatHex(array[1]) + formatHex(array[0]) + '-' + formatHex(array[5]) + formatHex(array[4]) + '-' + formatHex(array[7]) + formatHex(array[6]) + '-' + formatHex(array[8]) + formatHex(array[9]) + '-' + formatHex(array[10]) + formatHex(array[11]) + formatHex(array[12]) + formatHex(array[13]) + formatHex(array[14]) + formatHex(array[15])).toUpperCase();
|
|
18
14
|
}
|
|
19
15
|
|
|
16
|
+
module.exports.guidToArray = guidToArray;
|
|
20
17
|
function guidToArray(guid) {
|
|
21
18
|
return [parseInt(guid.substring(6, 8), 16), parseInt(guid.substring(4, 6), 16), parseInt(guid.substring(2, 4), 16), parseInt(guid.substring(0, 2), 16), parseInt(guid.substring(11, 13), 16), parseInt(guid.substring(9, 11), 16), parseInt(guid.substring(16, 18), 16), parseInt(guid.substring(14, 16), 16), parseInt(guid.substring(19, 21), 16), parseInt(guid.substring(21, 23), 16), parseInt(guid.substring(24, 26), 16), parseInt(guid.substring(26, 28), 16), parseInt(guid.substring(28, 30), 16), parseInt(guid.substring(30, 32), 16), parseInt(guid.substring(32, 34), 16), parseInt(guid.substring(34, 36), 16)];
|
|
22
19
|
}
|
package/lib/instance-lookup.js
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, '__esModule', {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.instanceLookup = instanceLookup;
|
|
9
|
-
exports.parseBrowserResponse = parseBrowserResponse;
|
|
10
|
-
|
|
11
|
-
var _dgram = require('dgram');
|
|
12
|
-
|
|
13
|
-
var _dgram2 = _interopRequireDefault(_dgram);
|
|
3
|
+
var dgram = require('dgram');
|
|
14
4
|
|
|
15
5
|
var SQL_SERVER_BROWSER_PORT = 1434;
|
|
16
6
|
var TIMEOUT = 2 * 1000;
|
|
@@ -19,7 +9,7 @@ var RETRIES = 3;
|
|
|
19
9
|
var MYSTERY_HEADER_LENGTH = 3;
|
|
20
10
|
|
|
21
11
|
// Most of the functionality has been determined from from jTDS's MSSqlServerInfo class.
|
|
22
|
-
|
|
12
|
+
module.exports.instanceLookup = instanceLookup;
|
|
23
13
|
function instanceLookup(server, instanceName, callback, timeout, retries) {
|
|
24
14
|
var socket = undefined,
|
|
25
15
|
timer = undefined;
|
|
@@ -37,7 +27,7 @@ function instanceLookup(server, instanceName, callback, timeout, retries) {
|
|
|
37
27
|
if (port) {
|
|
38
28
|
return callback(undefined, port);
|
|
39
29
|
} else {
|
|
40
|
-
return callback(
|
|
30
|
+
return callback('Port for ' + instanceName + ' not found in ' + message);
|
|
41
31
|
}
|
|
42
32
|
}
|
|
43
33
|
|
|
@@ -47,7 +37,7 @@ function instanceLookup(server, instanceName, callback, timeout, retries) {
|
|
|
47
37
|
timer = undefined;
|
|
48
38
|
}
|
|
49
39
|
socket.close();
|
|
50
|
-
return callback(
|
|
40
|
+
return callback('Failed to lookup instance on ' + server + ' - ' + err.message);
|
|
51
41
|
}
|
|
52
42
|
|
|
53
43
|
function onTimeout() {
|
|
@@ -60,19 +50,20 @@ function instanceLookup(server, instanceName, callback, timeout, retries) {
|
|
|
60
50
|
if (retriesLeft > 0) {
|
|
61
51
|
retriesLeft--;
|
|
62
52
|
var request = new Buffer([0x02]);
|
|
63
|
-
socket =
|
|
53
|
+
socket = dgram.createSocket('udp4');
|
|
64
54
|
socket.on('error', onError);
|
|
65
55
|
socket.on('message', onMessage);
|
|
66
56
|
socket.send(request, 0, request.length, SQL_SERVER_BROWSER_PORT, server);
|
|
67
57
|
return timer = setTimeout(onTimeout, timeout);
|
|
68
58
|
} else {
|
|
69
|
-
return callback(
|
|
59
|
+
return callback('Failed to get response from SQL Server Browser on ' + server);
|
|
70
60
|
}
|
|
71
61
|
}
|
|
72
62
|
|
|
73
63
|
return makeAttempt();
|
|
74
64
|
}
|
|
75
65
|
|
|
66
|
+
module.exports.parseBrowserResponse = parseBrowserResponse;
|
|
76
67
|
function parseBrowserResponse(response, instanceName) {
|
|
77
68
|
var getPort = undefined;
|
|
78
69
|
|