tedious 2.2.3 → 2.2.4
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/README.md +1 -1
- package/lib/bulk-load.js +1 -1
- package/lib/connection.js +148 -131
- package/lib/data-type.js +79 -1669
- package/lib/data-types/bigint.js +46 -0
- package/lib/data-types/binary.js +57 -0
- package/lib/data-types/bit.js +38 -0
- package/lib/data-types/bitn.js +8 -0
- package/lib/data-types/char.js +72 -0
- package/lib/data-types/daten.js +48 -0
- package/lib/data-types/datetime.js +68 -0
- package/lib/data-types/datetime2n.js +105 -0
- package/lib/data-types/datetimen.js +8 -0
- package/lib/data-types/datetimeoffsetn.js +91 -0
- package/lib/data-types/decimal.js +88 -0
- package/lib/data-types/decimaln.js +10 -0
- package/lib/data-types/float.js +38 -0
- package/lib/data-types/floatn.js +8 -0
- package/lib/data-types/image.js +46 -0
- package/lib/data-types/int.js +41 -0
- package/lib/data-types/intn.js +8 -0
- package/lib/data-types/money.js +38 -0
- package/lib/data-types/moneyn.js +8 -0
- package/lib/data-types/nchar.js +72 -0
- package/lib/data-types/ntext.js +11 -0
- package/lib/data-types/null.js +7 -0
- package/lib/data-types/numeric.js +88 -0
- package/lib/data-types/numericn.js +10 -0
- package/lib/data-types/nvarchar.js +86 -0
- package/lib/data-types/real.js +38 -0
- package/lib/data-types/smalldatetime.js +60 -0
- package/lib/data-types/smallint.js +41 -0
- package/lib/data-types/smallmoney.js +41 -0
- package/lib/data-types/sql-variant.js +12 -0
- package/lib/data-types/text.js +51 -0
- package/lib/data-types/timen.js +95 -0
- package/lib/data-types/tinyint.js +41 -0
- package/lib/data-types/tvp.js +83 -0
- package/lib/data-types/udt.js +8 -0
- package/lib/data-types/uniqueidentifiern.js +46 -0
- package/lib/data-types/varbinary.js +77 -0
- package/lib/data-types/varchar.js +86 -0
- package/lib/data-types/xml.js +8 -0
- package/lib/instance-lookup.js +8 -7
- package/lib/message-io.js +1 -1
- package/lib/packet.js +2 -2
- package/lib/prelogin-payload.js +6 -6
- package/lib/request.js +8 -8
- package/lib/tracking-buffer/writable-tracking-buffer.js +29 -31
- package/package.json +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
id: 0x22,
|
|
5
|
+
type: 'IMAGE',
|
|
6
|
+
name: 'Image',
|
|
7
|
+
hasTableName: true,
|
|
8
|
+
hasTextPointerAndTimestamp: true,
|
|
9
|
+
dataLengthLength: 4,
|
|
10
|
+
|
|
11
|
+
declaration: function declaration() {
|
|
12
|
+
return 'image';
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
resolveLength: function resolveLength(parameter) {
|
|
16
|
+
if (parameter.value != null) {
|
|
17
|
+
return parameter.value.length;
|
|
18
|
+
} else {
|
|
19
|
+
return -1;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
|
|
24
|
+
buffer.writeUInt8(this.id);
|
|
25
|
+
buffer.writeInt32LE(parameter.length);
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
29
|
+
if (parameter.value != null) {
|
|
30
|
+
buffer.writeInt32LE(parameter.length);
|
|
31
|
+
buffer.writeBuffer(parameter.value);
|
|
32
|
+
} else {
|
|
33
|
+
buffer.writeInt32LE(parameter.length);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
validate: function validate(value) {
|
|
38
|
+
if (value == null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (!Buffer.isBuffer(value)) {
|
|
42
|
+
return new TypeError('Invalid buffer.');
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var IntN = require('./intn');
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
id: 0x38,
|
|
7
|
+
type: 'INT4',
|
|
8
|
+
name: 'Int',
|
|
9
|
+
|
|
10
|
+
declaration: function declaration() {
|
|
11
|
+
return 'int';
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
15
|
+
buffer.writeUInt8(IntN.id);
|
|
16
|
+
buffer.writeUInt8(4);
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
20
|
+
if (parameter.value != null) {
|
|
21
|
+
buffer.writeUInt8(4);
|
|
22
|
+
buffer.writeInt32LE(parseInt(parameter.value));
|
|
23
|
+
} else {
|
|
24
|
+
buffer.writeUInt8(0);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
validate: function validate(value) {
|
|
29
|
+
if (value == null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
value = parseInt(value);
|
|
33
|
+
if (isNaN(value)) {
|
|
34
|
+
return new TypeError('Invalid number.');
|
|
35
|
+
}
|
|
36
|
+
if (value < -2147483648 || value > 2147483647) {
|
|
37
|
+
return new TypeError('Value must be between -2147483648 and 2147483647.');
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var MoneyN = require('./moneyn');
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
id: 0x3C,
|
|
7
|
+
type: 'MONEY',
|
|
8
|
+
name: 'Money',
|
|
9
|
+
|
|
10
|
+
declaration: function declaration() {
|
|
11
|
+
return 'money';
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
15
|
+
buffer.writeUInt8(MoneyN.id);
|
|
16
|
+
buffer.writeUInt8(8);
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
20
|
+
if (parameter.value != null) {
|
|
21
|
+
buffer.writeUInt8(8);
|
|
22
|
+
buffer.writeMoney(parameter.value * 10000);
|
|
23
|
+
} else {
|
|
24
|
+
buffer.writeUInt8(0);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
validate: function validate(value) {
|
|
29
|
+
if (value == null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
value = parseFloat(value);
|
|
33
|
+
if (isNaN(value)) {
|
|
34
|
+
return new TypeError('Invalid number.');
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var NULL = (1 << 16) - 1;
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
id: 0xEF,
|
|
7
|
+
type: 'NCHAR',
|
|
8
|
+
name: 'NChar',
|
|
9
|
+
hasCollation: true,
|
|
10
|
+
dataLengthLength: 2,
|
|
11
|
+
maximumLength: 4000,
|
|
12
|
+
|
|
13
|
+
declaration: function declaration(parameter) {
|
|
14
|
+
var length = void 0;
|
|
15
|
+
if (parameter.length) {
|
|
16
|
+
length = parameter.length;
|
|
17
|
+
} else if (parameter.value != null) {
|
|
18
|
+
length = parameter.value.toString().length || 1;
|
|
19
|
+
} else if (parameter.value === null && !parameter.output) {
|
|
20
|
+
length = 1;
|
|
21
|
+
} else {
|
|
22
|
+
length = this.maximumLength;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (length < this.maximumLength) {
|
|
26
|
+
return 'nchar(' + length + ')';
|
|
27
|
+
} else {
|
|
28
|
+
return 'nchar(' + this.maximumLength + ')';
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
resolveLength: function resolveLength(parameter) {
|
|
33
|
+
if (parameter.length != null) {
|
|
34
|
+
return parameter.length;
|
|
35
|
+
} else if (parameter.value != null) {
|
|
36
|
+
if (Buffer.isBuffer(parameter.value)) {
|
|
37
|
+
return parameter.value.length / 2 || 1;
|
|
38
|
+
} else {
|
|
39
|
+
return parameter.value.toString().length || 1;
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
return this.maximumLength;
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
|
|
47
|
+
buffer.writeUInt8(this.id);
|
|
48
|
+
buffer.writeUInt16LE(parameter.length * 2);
|
|
49
|
+
buffer.writeBuffer(new Buffer([0x00, 0x00, 0x00, 0x00, 0x00]));
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
53
|
+
if (parameter.value != null) {
|
|
54
|
+
buffer.writeUsVarbyte(parameter.value, 'ucs2');
|
|
55
|
+
} else {
|
|
56
|
+
buffer.writeUInt16LE(NULL);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
validate: function validate(value) {
|
|
61
|
+
if (value == null) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
if (typeof value !== 'string') {
|
|
65
|
+
if (typeof value.toString !== 'function') {
|
|
66
|
+
return TypeError('Invalid string.');
|
|
67
|
+
}
|
|
68
|
+
value = value.toString();
|
|
69
|
+
}
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var NumericN = require('./numericn');
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
id: 0x3F,
|
|
7
|
+
type: 'NUMERIC',
|
|
8
|
+
name: 'Numeric',
|
|
9
|
+
hasPrecision: true,
|
|
10
|
+
hasScale: true,
|
|
11
|
+
|
|
12
|
+
declaration: function declaration(parameter) {
|
|
13
|
+
return 'numeric(' + this.resolvePrecision(parameter) + ', ' + this.resolveScale(parameter) + ')';
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
resolvePrecision: function resolvePrecision(parameter) {
|
|
17
|
+
if (parameter.precision != null) {
|
|
18
|
+
return parameter.precision;
|
|
19
|
+
} else if (parameter.value === null) {
|
|
20
|
+
return 1;
|
|
21
|
+
} else {
|
|
22
|
+
return 18;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
resolveScale: function resolveScale(parameter) {
|
|
27
|
+
if (parameter.scale != null) {
|
|
28
|
+
return parameter.scale;
|
|
29
|
+
} else {
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
|
|
35
|
+
buffer.writeUInt8(NumericN.id);
|
|
36
|
+
if (parameter.precision <= 9) {
|
|
37
|
+
buffer.writeUInt8(5);
|
|
38
|
+
} else if (parameter.precision <= 19) {
|
|
39
|
+
buffer.writeUInt8(9);
|
|
40
|
+
} else if (parameter.precision <= 28) {
|
|
41
|
+
buffer.writeUInt8(13);
|
|
42
|
+
} else {
|
|
43
|
+
buffer.writeUInt8(17);
|
|
44
|
+
}
|
|
45
|
+
buffer.writeUInt8(parameter.precision);
|
|
46
|
+
buffer.writeUInt8(parameter.scale);
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
50
|
+
if (parameter.value != null) {
|
|
51
|
+
var sign = parameter.value < 0 ? 0 : 1;
|
|
52
|
+
var value = Math.round(Math.abs(parameter.value * Math.pow(10, parameter.scale)));
|
|
53
|
+
if (parameter.precision <= 9) {
|
|
54
|
+
buffer.writeUInt8(5);
|
|
55
|
+
buffer.writeUInt8(sign);
|
|
56
|
+
buffer.writeUInt32LE(value);
|
|
57
|
+
} else if (parameter.precision <= 19) {
|
|
58
|
+
buffer.writeUInt8(9);
|
|
59
|
+
buffer.writeUInt8(sign);
|
|
60
|
+
buffer.writeUInt64LE(value);
|
|
61
|
+
} else if (parameter.precision <= 28) {
|
|
62
|
+
buffer.writeUInt8(13);
|
|
63
|
+
buffer.writeUInt8(sign);
|
|
64
|
+
buffer.writeUInt64LE(value);
|
|
65
|
+
buffer.writeUInt32LE(0x00000000);
|
|
66
|
+
} else {
|
|
67
|
+
buffer.writeUInt8(17);
|
|
68
|
+
buffer.writeUInt8(sign);
|
|
69
|
+
buffer.writeUInt64LE(value);
|
|
70
|
+
buffer.writeUInt32LE(0x00000000);
|
|
71
|
+
buffer.writeUInt32LE(0x00000000);
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
buffer.writeUInt8(0);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
validate: function validate(value) {
|
|
79
|
+
if (value == null) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
value = parseFloat(value);
|
|
83
|
+
if (isNaN(value)) {
|
|
84
|
+
return new TypeError('Invalid number.');
|
|
85
|
+
}
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var NULL = (1 << 16) - 1;
|
|
4
|
+
var MAX = (1 << 16) - 1;
|
|
5
|
+
|
|
6
|
+
module.exports = {
|
|
7
|
+
id: 0xE7,
|
|
8
|
+
type: 'NVARCHAR',
|
|
9
|
+
name: 'NVarChar',
|
|
10
|
+
hasCollation: true,
|
|
11
|
+
dataLengthLength: 2,
|
|
12
|
+
maximumLength: 4000,
|
|
13
|
+
|
|
14
|
+
declaration: function declaration(parameter) {
|
|
15
|
+
var length = void 0;
|
|
16
|
+
if (parameter.length) {
|
|
17
|
+
length = parameter.length;
|
|
18
|
+
} else if (parameter.value != null) {
|
|
19
|
+
length = parameter.value.toString().length || 1;
|
|
20
|
+
} else if (parameter.value === null && !parameter.output) {
|
|
21
|
+
length = 1;
|
|
22
|
+
} else {
|
|
23
|
+
length = this.maximumLength;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (length <= this.maximumLength) {
|
|
27
|
+
return 'nvarchar(' + length + ')';
|
|
28
|
+
} else {
|
|
29
|
+
return 'nvarchar(max)';
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
resolveLength: function resolveLength(parameter) {
|
|
34
|
+
if (parameter.length != null) {
|
|
35
|
+
return parameter.length;
|
|
36
|
+
} else if (parameter.value != null) {
|
|
37
|
+
if (Buffer.isBuffer(parameter.value)) {
|
|
38
|
+
return parameter.value.length / 2 || 1;
|
|
39
|
+
} else {
|
|
40
|
+
return parameter.value.toString().length || 1;
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
return this.maximumLength;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
|
|
48
|
+
buffer.writeUInt8(this.id);
|
|
49
|
+
if (parameter.length <= this.maximumLength) {
|
|
50
|
+
buffer.writeUInt16LE(parameter.length * 2);
|
|
51
|
+
} else {
|
|
52
|
+
buffer.writeUInt16LE(MAX);
|
|
53
|
+
}
|
|
54
|
+
buffer.writeBuffer(new Buffer([0x00, 0x00, 0x00, 0x00, 0x00]));
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
58
|
+
if (parameter.value != null) {
|
|
59
|
+
if (parameter.length <= this.maximumLength) {
|
|
60
|
+
buffer.writeUsVarbyte(parameter.value, 'ucs2');
|
|
61
|
+
} else {
|
|
62
|
+
buffer.writePLPBody(parameter.value, 'ucs2');
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
if (parameter.length <= this.maximumLength) {
|
|
66
|
+
buffer.writeUInt16LE(NULL);
|
|
67
|
+
} else {
|
|
68
|
+
buffer.writeUInt32LE(0xFFFFFFFF);
|
|
69
|
+
buffer.writeUInt32LE(0xFFFFFFFF);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
validate: function validate(value) {
|
|
75
|
+
if (value == null) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
if (typeof value !== 'string') {
|
|
79
|
+
if (typeof value.toString !== 'function') {
|
|
80
|
+
return TypeError('Invalid string.');
|
|
81
|
+
}
|
|
82
|
+
value = value.toString();
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var FloatN = require('./floatn');
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
id: 0x3B,
|
|
7
|
+
type: 'FLT4',
|
|
8
|
+
name: 'Real',
|
|
9
|
+
|
|
10
|
+
declaration: function declaration() {
|
|
11
|
+
return 'real';
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
15
|
+
buffer.writeUInt8(FloatN.id);
|
|
16
|
+
buffer.writeUInt8(4);
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
20
|
+
if (parameter.value != null) {
|
|
21
|
+
buffer.writeUInt8(4);
|
|
22
|
+
buffer.writeFloatLE(parseFloat(parameter.value));
|
|
23
|
+
} else {
|
|
24
|
+
buffer.writeUInt8(0);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
validate: function validate(value) {
|
|
29
|
+
if (value == null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
value = parseFloat(value);
|
|
33
|
+
if (isNaN(value)) {
|
|
34
|
+
return new TypeError('Invalid number.');
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var DateTimeN = require('./datetimen');
|
|
4
|
+
|
|
5
|
+
var EPOCH_DATE = new Date(1900, 0, 1);
|
|
6
|
+
var UTC_EPOCH_DATE = new Date(Date.UTC(1900, 0, 1));
|
|
7
|
+
|
|
8
|
+
module.exports = {
|
|
9
|
+
id: 0x3A,
|
|
10
|
+
type: 'DATETIM4',
|
|
11
|
+
name: 'SmallDateTime',
|
|
12
|
+
|
|
13
|
+
declaration: function declaration() {
|
|
14
|
+
return 'smalldatetime';
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
18
|
+
buffer.writeUInt8(DateTimeN.id);
|
|
19
|
+
buffer.writeUInt8(4);
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
writeParameterData: function writeParameterData(buffer, parameter, options) {
|
|
23
|
+
if (parameter.value != null) {
|
|
24
|
+
var days = void 0,
|
|
25
|
+
dstDiff = void 0,
|
|
26
|
+
minutes = void 0;
|
|
27
|
+
if (options.useUTC) {
|
|
28
|
+
days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24));
|
|
29
|
+
minutes = parameter.value.getUTCHours() * 60 + parameter.value.getUTCMinutes();
|
|
30
|
+
} else {
|
|
31
|
+
dstDiff = -(parameter.value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000;
|
|
32
|
+
days = Math.floor((parameter.value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24));
|
|
33
|
+
minutes = parameter.value.getHours() * 60 + parameter.value.getMinutes();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
buffer.writeUInt8(4);
|
|
37
|
+
buffer.writeUInt16LE(days);
|
|
38
|
+
|
|
39
|
+
buffer.writeUInt16LE(minutes);
|
|
40
|
+
} else {
|
|
41
|
+
buffer.writeUInt8(0);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
validate: function validate(value) {
|
|
46
|
+
if (value == null) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (!(value instanceof Date)) {
|
|
51
|
+
value = Date.parse(value);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (isNaN(value)) {
|
|
55
|
+
return new TypeError('Invalid date.');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var IntN = require('./intn');
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
id: 0x34,
|
|
7
|
+
type: 'INT2',
|
|
8
|
+
name: 'SmallInt',
|
|
9
|
+
|
|
10
|
+
declaration: function declaration() {
|
|
11
|
+
return 'smallint';
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
15
|
+
buffer.writeUInt8(IntN.id);
|
|
16
|
+
buffer.writeUInt8(2);
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
20
|
+
if (parameter.value != null) {
|
|
21
|
+
buffer.writeUInt8(2);
|
|
22
|
+
buffer.writeInt16LE(parseInt(parameter.value));
|
|
23
|
+
} else {
|
|
24
|
+
buffer.writeUInt8(0);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
validate: function validate(value) {
|
|
29
|
+
if (value == null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
value = parseInt(value);
|
|
33
|
+
if (isNaN(value)) {
|
|
34
|
+
return new TypeError('Invalid number.');
|
|
35
|
+
}
|
|
36
|
+
if (value < -32768 || value > 32767) {
|
|
37
|
+
return new TypeError('Value must be between -32768 and 32767.');
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var MoneyN = require('./moneyn');
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
id: 0x7A,
|
|
7
|
+
type: 'MONEY4',
|
|
8
|
+
name: 'SmallMoney',
|
|
9
|
+
|
|
10
|
+
declaration: function declaration() {
|
|
11
|
+
return 'smallmoney';
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
writeTypeInfo: function writeTypeInfo(buffer) {
|
|
15
|
+
buffer.writeUInt8(MoneyN.id);
|
|
16
|
+
buffer.writeUInt8(4);
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
20
|
+
if (parameter.value != null) {
|
|
21
|
+
buffer.writeUInt8(4);
|
|
22
|
+
buffer.writeInt32LE(parameter.value * 10000);
|
|
23
|
+
} else {
|
|
24
|
+
buffer.writeUInt8(0);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
validate: function validate(value) {
|
|
29
|
+
if (value == null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
value = parseFloat(value);
|
|
33
|
+
if (isNaN(value)) {
|
|
34
|
+
return new TypeError('Invalid number.');
|
|
35
|
+
}
|
|
36
|
+
if (value < -214748.3648 || value > 214748.3647) {
|
|
37
|
+
return new TypeError('Value must be between -214748.3648 and 214748.3647.');
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
id: 0x23,
|
|
5
|
+
type: 'TEXT',
|
|
6
|
+
name: 'Text',
|
|
7
|
+
hasCollation: true,
|
|
8
|
+
hasTableName: true,
|
|
9
|
+
hasTextPointerAndTimestamp: true,
|
|
10
|
+
dataLengthLength: 4,
|
|
11
|
+
|
|
12
|
+
declaration: function declaration() {
|
|
13
|
+
return 'text';
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
resolveLength: function resolveLength(parameter) {
|
|
17
|
+
if (parameter.value != null) {
|
|
18
|
+
return parameter.value.length;
|
|
19
|
+
} else {
|
|
20
|
+
return -1;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
|
|
25
|
+
buffer.writeUInt8(this.id);
|
|
26
|
+
buffer.writeInt32LE(parameter.length);
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
writeParameterData: function writeParameterData(buffer, parameter) {
|
|
30
|
+
buffer.writeBuffer(new Buffer([0x00, 0x00, 0x00, 0x00, 0x00]));
|
|
31
|
+
if (parameter.value != null) {
|
|
32
|
+
buffer.writeInt32LE(parameter.length);
|
|
33
|
+
buffer.writeString(parameter.value.toString(), 'ascii');
|
|
34
|
+
} else {
|
|
35
|
+
buffer.writeInt32LE(parameter.length);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
validate: function validate(value) {
|
|
40
|
+
if (value == null) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
if (typeof value !== 'string') {
|
|
44
|
+
if (typeof value.toString !== 'function') {
|
|
45
|
+
return TypeError('Invalid string.');
|
|
46
|
+
}
|
|
47
|
+
value = value.toString();
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
};
|