tedious 6.4.0 → 6.6.2
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/lib/bulk-load.js +17 -22
- package/lib/connection.js +363 -251
- package/lib/connector.js +3 -1
- package/lib/data-type.js +111 -109
- package/lib/data-types/bigint.js +19 -7
- package/lib/data-types/binary.js +19 -10
- package/lib/data-types/bit.js +14 -4
- package/lib/data-types/bitn.js +26 -3
- package/lib/data-types/char.js +26 -13
- package/lib/data-types/date.js +18 -9
- package/lib/data-types/datetime.js +23 -5
- package/lib/data-types/datetime2.js +10 -22
- package/lib/data-types/datetimen.js +26 -3
- package/lib/data-types/datetimeoffset.js +11 -22
- package/lib/data-types/decimal.js +14 -6
- package/lib/data-types/decimaln.js +26 -5
- package/lib/data-types/float.js +14 -4
- package/lib/data-types/floatn.js +26 -3
- package/lib/data-types/image.js +12 -5
- package/lib/data-types/int.js +14 -4
- package/lib/data-types/intn.js +26 -3
- package/lib/data-types/money.js +14 -4
- package/lib/data-types/moneyn.js +26 -3
- package/lib/data-types/nchar.js +17 -6
- package/lib/data-types/ntext.js +26 -5
- package/lib/data-types/null.js +27 -3
- package/lib/data-types/numeric.js +14 -6
- package/lib/data-types/numericn.js +26 -5
- package/lib/data-types/nvarchar.js +20 -11
- package/lib/data-types/real.js +14 -4
- package/lib/data-types/smalldatetime.js +14 -4
- package/lib/data-types/smallint.js +14 -4
- package/lib/data-types/smallmoney.js +14 -4
- package/lib/data-types/sql-variant.js +23 -4
- package/lib/data-types/text.js +13 -7
- package/lib/data-types/time.js +9 -21
- package/lib/data-types/tinyint.js +14 -4
- package/lib/data-types/tvp.js +12 -3
- package/lib/data-types/udt.js +26 -3
- package/lib/data-types/uniqueidentifier.js +12 -5
- package/lib/data-types/varbinary.js +18 -8
- package/lib/data-types/varchar.js +19 -10
- package/lib/data-types/xml.js +26 -3
- package/lib/debug.js +3 -1
- package/lib/guid-parser.js +6 -6
- package/lib/incoming-message-stream.js +10 -7
- package/lib/instance-lookup.js +12 -6
- package/lib/library.js +6 -1
- package/lib/login7-payload.js +2 -3
- package/lib/message-io.js +14 -3
- package/lib/message.js +2 -3
- package/lib/metadata-parser.js +259 -136
- package/lib/ntlm-payload.js +12 -21
- package/lib/outgoing-message-stream.js +7 -6
- package/lib/packet.js +4 -5
- package/lib/prelogin-payload.js +3 -4
- package/lib/request.js +11 -11
- package/lib/rpcrequest-payload.js +28 -22
- package/lib/sender.js +25 -11
- package/lib/special-stored-procedure.js +9 -2
- package/lib/tds-versions.js +8 -2
- package/lib/tedious.js +75 -9
- package/lib/token/colmetadata-token-parser.js +20 -10
- package/lib/token/done-token-parser.js +32 -25
- package/lib/token/env-change-token-parser.js +50 -20
- package/lib/token/feature-ext-ack-parser.js +19 -14
- package/lib/token/fedauth-info-parser.js +17 -11
- package/lib/token/infoerror-token-parser.js +14 -14
- package/lib/token/loginack-token-parser.js +21 -12
- package/lib/token/nbcrow-token-parser.js +35 -23
- package/lib/token/order-token-parser.js +14 -7
- package/lib/token/returnstatus-token-parser.js +14 -7
- package/lib/token/returnvalue-token-parser.js +22 -11
- package/lib/token/row-token-parser.js +34 -22
- package/lib/token/sspi-token-parser.js +14 -8
- package/lib/token/stream-parser.js +95 -36
- package/lib/token/token-stream-parser.js +16 -10
- package/lib/token/token.js +396 -2
- package/lib/tracking-buffer/writable-tracking-buffer.js +37 -5
- package/lib/transaction.js +25 -16
- package/lib/transient-error-lookup.js +6 -1
- package/lib/value-parser.js +412 -315
- package/package.json +24 -21
- package/pull_request_template.md +1 -1
- package/tsconfig.json +1 -1
- package/lib/tracking-buffer/bigint.js +0 -102
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
3
10
|
const FEDAUTHINFOID = {
|
|
4
11
|
STSURL: 0x01,
|
|
5
12
|
SPN: 0x02
|
|
6
13
|
};
|
|
7
14
|
|
|
8
|
-
|
|
15
|
+
function fedAuthInfoParser(parser, _colMetadata, _options, callback) {
|
|
9
16
|
parser.readUInt32LE(tokenLength => {
|
|
10
17
|
parser.readBuffer(tokenLength, data => {
|
|
11
|
-
|
|
12
|
-
'name': 'FEDAUTHINFO',
|
|
13
|
-
'event': 'fedAuthInfo',
|
|
14
|
-
'spn': undefined,
|
|
15
|
-
'stsurl': undefined
|
|
16
|
-
};
|
|
18
|
+
let spn, stsurl;
|
|
17
19
|
let offset = 0;
|
|
18
20
|
const countOfInfoIDs = data.readUInt32LE(offset);
|
|
19
21
|
offset += 4;
|
|
@@ -28,11 +30,11 @@ module.exports = function fedAuthInfoParser(parser, colMetadata, options, callba
|
|
|
28
30
|
|
|
29
31
|
switch (fedauthInfoID) {
|
|
30
32
|
case FEDAUTHINFOID.SPN:
|
|
31
|
-
|
|
33
|
+
spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
|
|
32
34
|
break;
|
|
33
35
|
|
|
34
36
|
case FEDAUTHINFOID.STSURL:
|
|
35
|
-
|
|
37
|
+
stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
|
|
36
38
|
break;
|
|
37
39
|
// ignoring unknown fedauthinfo options
|
|
38
40
|
|
|
@@ -41,7 +43,11 @@ module.exports = function fedAuthInfoParser(parser, colMetadata, options, callba
|
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
callback(
|
|
46
|
+
callback(new _token.FedAuthInfoToken(spn, stsurl));
|
|
45
47
|
});
|
|
46
48
|
});
|
|
47
|
-
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var _default = fedAuthInfoParser;
|
|
52
|
+
exports.default = _default;
|
|
53
|
+
module.exports = fedAuthInfoParser;
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.infoParser = infoParser;
|
|
7
|
+
exports.errorParser = errorParser;
|
|
8
|
+
|
|
9
|
+
var _token = require("./token");
|
|
10
|
+
|
|
3
11
|
function parseToken(parser, options, callback) {
|
|
4
12
|
// length
|
|
5
13
|
parser.readUInt16LE(() => {
|
|
@@ -29,22 +37,14 @@ function parseToken(parser, options, callback) {
|
|
|
29
37
|
});
|
|
30
38
|
}
|
|
31
39
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
parseToken(parser, options, token => {
|
|
36
|
-
token.name = 'INFO';
|
|
37
|
-
token.event = 'infoMessage';
|
|
38
|
-
callback(token);
|
|
40
|
+
function infoParser(parser, _colMetadata, options, callback) {
|
|
41
|
+
parseToken(parser, options, data => {
|
|
42
|
+
callback(new _token.InfoMessageToken(data));
|
|
39
43
|
});
|
|
40
44
|
}
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
parseToken(parser, options, token => {
|
|
46
|
-
token.name = 'ERROR';
|
|
47
|
-
token.event = 'errorMessage';
|
|
48
|
-
callback(token);
|
|
46
|
+
function errorParser(parser, _colMetadata, options, callback) {
|
|
47
|
+
parseToken(parser, options, data => {
|
|
48
|
+
callback(new _token.ErrorMessageToken(data));
|
|
49
49
|
});
|
|
50
50
|
}
|
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
10
|
+
var _tdsVersions = require("../tds-versions");
|
|
4
11
|
|
|
5
12
|
const interfaceTypes = {
|
|
6
13
|
0: 'SQL_DFLT',
|
|
7
14
|
1: 'SQL_TSQL'
|
|
8
15
|
};
|
|
9
16
|
|
|
10
|
-
|
|
17
|
+
function loginAckParser(parser, _colMetadata, _options, callback) {
|
|
11
18
|
// length
|
|
12
19
|
parser.readUInt16LE(() => {
|
|
13
20
|
parser.readUInt8(interfaceNumber => {
|
|
14
21
|
const interfaceType = interfaceTypes[interfaceNumber];
|
|
15
22
|
parser.readUInt32BE(tdsVersionNumber => {
|
|
16
|
-
const tdsVersion =
|
|
23
|
+
const tdsVersion = _tdsVersions.versionsByValue[tdsVersionNumber];
|
|
17
24
|
parser.readBVarChar(progName => {
|
|
18
25
|
parser.readUInt8(major => {
|
|
19
26
|
parser.readUInt8(minor => {
|
|
20
27
|
parser.readUInt8(buildNumHi => {
|
|
21
28
|
parser.readUInt8(buildNumLow => {
|
|
22
|
-
callback({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'progName': progName,
|
|
28
|
-
'progVersion': {
|
|
29
|
+
callback(new _token.LoginAckToken({
|
|
30
|
+
interface: interfaceType,
|
|
31
|
+
tdsVersion: tdsVersion,
|
|
32
|
+
progName: progName,
|
|
33
|
+
progVersion: {
|
|
29
34
|
major: major,
|
|
30
35
|
minor: minor,
|
|
31
36
|
buildNumHi: buildNumHi,
|
|
32
37
|
buildNumLow: buildNumLow
|
|
33
38
|
}
|
|
34
|
-
});
|
|
39
|
+
}));
|
|
35
40
|
});
|
|
36
41
|
});
|
|
37
42
|
});
|
|
@@ -40,4 +45,8 @@ module.exports = function (parser, colMetadata, options, callback) {
|
|
|
40
45
|
});
|
|
41
46
|
});
|
|
42
47
|
});
|
|
43
|
-
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
var _default = loginAckParser;
|
|
51
|
+
exports.default = _default;
|
|
52
|
+
module.exports = loginAckParser;
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
10
|
+
var _valueParser = _interopRequireDefault(require("../value-parser"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
13
|
|
|
6
|
-
|
|
14
|
+
// s2.2.7.13 (introduced in TDS 7.3.B)
|
|
15
|
+
function nullHandler(_parser, _columnMetadata, _options, callback) {
|
|
7
16
|
callback(null);
|
|
8
17
|
}
|
|
9
18
|
|
|
10
|
-
|
|
19
|
+
function nbcRowParser(parser, columnsMetaData, options, callback) {
|
|
11
20
|
const length = Math.ceil(columnsMetaData.length / 8);
|
|
12
21
|
parser.readBuffer(length, bytes => {
|
|
13
22
|
const bitmap = [];
|
|
@@ -20,7 +29,7 @@ module.exports = function (parser, columnsMetaData, options, callback) {
|
|
|
20
29
|
}
|
|
21
30
|
}
|
|
22
31
|
|
|
23
|
-
const columns =
|
|
32
|
+
const columns = [];
|
|
24
33
|
const len = columnsMetaData.length;
|
|
25
34
|
let i = 0;
|
|
26
35
|
|
|
@@ -30,31 +39,34 @@ module.exports = function (parser, columnsMetaData, options, callback) {
|
|
|
30
39
|
}
|
|
31
40
|
|
|
32
41
|
const columnMetaData = columnsMetaData[i];
|
|
33
|
-
(bitmap[i] ? nullHandler :
|
|
34
|
-
|
|
42
|
+
(bitmap[i] ? nullHandler : _valueParser.default)(parser, columnMetaData, options, value => {
|
|
43
|
+
columns.push({
|
|
35
44
|
value: value,
|
|
36
45
|
metadata: columnMetaData
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
if (options.useColumnNames) {
|
|
40
|
-
if (columns[columnMetaData.colName] == null) {
|
|
41
|
-
columns[columnMetaData.colName] = column;
|
|
42
|
-
}
|
|
43
|
-
} else {
|
|
44
|
-
columns.push(column);
|
|
45
|
-
}
|
|
46
|
-
|
|
46
|
+
});
|
|
47
47
|
i++;
|
|
48
48
|
next(done);
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
next(() => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
if (options.useColumnNames) {
|
|
54
|
+
const columnsMap = {};
|
|
55
|
+
columns.forEach(column => {
|
|
56
|
+
const colName = column.metadata.colName;
|
|
57
|
+
|
|
58
|
+
if (columnsMap[colName] == null) {
|
|
59
|
+
columnsMap[colName] = column;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
callback(new _token.NBCRowToken(columnsMap));
|
|
63
|
+
} else {
|
|
64
|
+
callback(new _token.NBCRowToken(columns));
|
|
65
|
+
}
|
|
58
66
|
});
|
|
59
67
|
});
|
|
60
|
-
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
var _default = nbcRowParser;
|
|
71
|
+
exports.default = _default;
|
|
72
|
+
module.exports = nbcRowParser;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
3
10
|
// s2.2.7.14
|
|
4
|
-
|
|
11
|
+
function orderParser(parser, _colMetadata, _options, callback) {
|
|
5
12
|
parser.readUInt16LE(length => {
|
|
6
13
|
const columnCount = length / 2;
|
|
7
14
|
const orderColumns = [];
|
|
@@ -20,11 +27,11 @@ module.exports = function (parser, colMetadata, options, callback) {
|
|
|
20
27
|
}
|
|
21
28
|
|
|
22
29
|
next(() => {
|
|
23
|
-
callback(
|
|
24
|
-
name: 'ORDER',
|
|
25
|
-
event: 'order',
|
|
26
|
-
orderColumns: orderColumns
|
|
27
|
-
});
|
|
30
|
+
callback(new _token.OrderToken(orderColumns));
|
|
28
31
|
});
|
|
29
32
|
});
|
|
30
|
-
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var _default = orderParser;
|
|
36
|
+
exports.default = _default;
|
|
37
|
+
module.exports = orderParser;
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
3
10
|
// s2.2.7.16
|
|
4
|
-
|
|
11
|
+
function returnStatusParser(parser, _colMetadata, _options, callback) {
|
|
5
12
|
parser.readInt32LE(value => {
|
|
6
|
-
callback(
|
|
7
|
-
name: 'RETURNSTATUS',
|
|
8
|
-
event: 'returnStatus',
|
|
9
|
-
value: value
|
|
10
|
-
});
|
|
13
|
+
callback(new _token.ReturnStatusToken(value));
|
|
11
14
|
});
|
|
12
|
-
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
var _default = returnStatusParser;
|
|
18
|
+
exports.default = _default;
|
|
19
|
+
module.exports = returnStatusParser;
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
10
|
+
var _metadataParser = _interopRequireDefault(require("../metadata-parser"));
|
|
5
11
|
|
|
6
|
-
|
|
12
|
+
var _valueParser = _interopRequireDefault(require("../value-parser"));
|
|
7
13
|
|
|
8
|
-
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
// s2.2.7.16
|
|
17
|
+
function returnParser(parser, _colMetadata, options, callback) {
|
|
9
18
|
parser.readUInt16LE(paramOrdinal => {
|
|
10
19
|
parser.readBVarChar(paramName => {
|
|
11
20
|
if (paramName.charAt(0) === '@') {
|
|
@@ -14,19 +23,21 @@ module.exports = function (parser, colMetadata, options, callback) {
|
|
|
14
23
|
|
|
15
24
|
|
|
16
25
|
parser.readUInt8(() => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
callback({
|
|
20
|
-
name: 'RETURNVALUE',
|
|
21
|
-
event: 'returnValue',
|
|
26
|
+
(0, _metadataParser.default)(parser, options, metadata => {
|
|
27
|
+
(0, _valueParser.default)(parser, metadata, options, value => {
|
|
28
|
+
callback(new _token.ReturnValueToken({
|
|
22
29
|
paramOrdinal: paramOrdinal,
|
|
23
30
|
paramName: paramName,
|
|
24
31
|
metadata: metadata,
|
|
25
32
|
value: value
|
|
26
|
-
});
|
|
33
|
+
}));
|
|
27
34
|
});
|
|
28
35
|
});
|
|
29
36
|
});
|
|
30
37
|
});
|
|
31
38
|
});
|
|
32
|
-
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
var _default = returnParser;
|
|
42
|
+
exports.default = _default;
|
|
43
|
+
module.exports = returnParser;
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
10
|
+
var _valueParser = _interopRequireDefault(require("../value-parser"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
13
|
|
|
6
|
-
|
|
7
|
-
|
|
14
|
+
// s2.2.7.17
|
|
15
|
+
function rowParser(parser, colMetadata, options, callback) {
|
|
16
|
+
const columns = [];
|
|
8
17
|
const len = colMetadata.length;
|
|
9
18
|
let i = 0;
|
|
10
19
|
|
|
@@ -14,30 +23,33 @@ module.exports = function (parser, colMetadata, options, callback) {
|
|
|
14
23
|
}
|
|
15
24
|
|
|
16
25
|
const columnMetaData = colMetadata[i];
|
|
17
|
-
|
|
18
|
-
|
|
26
|
+
(0, _valueParser.default)(parser, columnMetaData, options, value => {
|
|
27
|
+
columns.push({
|
|
19
28
|
value: value,
|
|
20
29
|
metadata: columnMetaData
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
if (options.useColumnNames) {
|
|
24
|
-
if (columns[columnMetaData.colName] == null) {
|
|
25
|
-
columns[columnMetaData.colName] = column;
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
columns.push(column);
|
|
29
|
-
}
|
|
30
|
-
|
|
30
|
+
});
|
|
31
31
|
i++;
|
|
32
32
|
next(done);
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
next(() => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
if (options.useColumnNames) {
|
|
38
|
+
const columnsMap = {};
|
|
39
|
+
columns.forEach(column => {
|
|
40
|
+
const colName = column.metadata.colName;
|
|
41
|
+
|
|
42
|
+
if (columnsMap[colName] == null) {
|
|
43
|
+
columnsMap[colName] = column;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
callback(new _token.RowToken(columnsMap));
|
|
47
|
+
} else {
|
|
48
|
+
callback(new _token.RowToken(columns));
|
|
49
|
+
}
|
|
42
50
|
});
|
|
43
|
-
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
var _default = rowParser;
|
|
54
|
+
exports.default = _default;
|
|
55
|
+
module.exports = rowParser;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
3
10
|
function parseChallenge(buffer) {
|
|
4
11
|
const challenge = {};
|
|
5
12
|
challenge.magic = buffer.slice(0, 8).toString('utf8');
|
|
@@ -19,13 +26,12 @@ function parseChallenge(buffer) {
|
|
|
19
26
|
return challenge;
|
|
20
27
|
}
|
|
21
28
|
|
|
22
|
-
|
|
29
|
+
function sspiParser(parser, _colMetadata, _options, callback) {
|
|
23
30
|
parser.readUsVarByte(buffer => {
|
|
24
|
-
callback(
|
|
25
|
-
name: 'SSPICHALLENGE',
|
|
26
|
-
event: 'sspichallenge',
|
|
27
|
-
ntlmpacket: parseChallenge(buffer),
|
|
28
|
-
ntlmpacketBuffer: buffer
|
|
29
|
-
});
|
|
31
|
+
callback(new _token.SSPIToken(parseChallenge(buffer), buffer));
|
|
30
32
|
});
|
|
31
|
-
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var _default = sspiParser;
|
|
36
|
+
exports.default = _default;
|
|
37
|
+
module.exports = sspiParser;
|
|
@@ -1,27 +1,66 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _jsbi = _interopRequireDefault(require("jsbi"));
|
|
9
|
+
|
|
10
|
+
var _readableStream = require("readable-stream");
|
|
11
|
+
|
|
12
|
+
var _token = require("./token");
|
|
13
|
+
|
|
14
|
+
var _colmetadataTokenParser = _interopRequireDefault(require("./colmetadata-token-parser"));
|
|
15
|
+
|
|
16
|
+
var _doneTokenParser = require("./done-token-parser");
|
|
17
|
+
|
|
18
|
+
var _envChangeTokenParser = _interopRequireDefault(require("./env-change-token-parser"));
|
|
19
|
+
|
|
20
|
+
var _infoerrorTokenParser = require("./infoerror-token-parser");
|
|
21
|
+
|
|
22
|
+
var _fedauthInfoParser = _interopRequireDefault(require("./fedauth-info-parser"));
|
|
23
|
+
|
|
24
|
+
var _featureExtAckParser = _interopRequireDefault(require("./feature-ext-ack-parser"));
|
|
25
|
+
|
|
26
|
+
var _loginackTokenParser = _interopRequireDefault(require("./loginack-token-parser"));
|
|
27
|
+
|
|
28
|
+
var _orderTokenParser = _interopRequireDefault(require("./order-token-parser"));
|
|
29
|
+
|
|
30
|
+
var _returnstatusTokenParser = _interopRequireDefault(require("./returnstatus-token-parser"));
|
|
31
|
+
|
|
32
|
+
var _returnvalueTokenParser = _interopRequireDefault(require("./returnvalue-token-parser"));
|
|
33
|
+
|
|
34
|
+
var _rowTokenParser = _interopRequireDefault(require("./row-token-parser"));
|
|
35
|
+
|
|
36
|
+
var _nbcrowTokenParser = _interopRequireDefault(require("./nbcrow-token-parser"));
|
|
37
|
+
|
|
38
|
+
var _sspiTokenParser = _interopRequireDefault(require("./sspi-token-parser"));
|
|
39
|
+
|
|
40
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
41
|
+
|
|
42
|
+
const tokenParsers = {
|
|
43
|
+
[_token.TYPE.COLMETADATA]: _colmetadataTokenParser.default,
|
|
44
|
+
[_token.TYPE.DONE]: _doneTokenParser.doneParser,
|
|
45
|
+
[_token.TYPE.DONEINPROC]: _doneTokenParser.doneInProcParser,
|
|
46
|
+
[_token.TYPE.DONEPROC]: _doneTokenParser.doneProcParser,
|
|
47
|
+
[_token.TYPE.ENVCHANGE]: _envChangeTokenParser.default,
|
|
48
|
+
[_token.TYPE.ERROR]: _infoerrorTokenParser.errorParser,
|
|
49
|
+
[_token.TYPE.FEDAUTHINFO]: _fedauthInfoParser.default,
|
|
50
|
+
[_token.TYPE.FEATUREEXTACK]: _featureExtAckParser.default,
|
|
51
|
+
[_token.TYPE.INFO]: _infoerrorTokenParser.infoParser,
|
|
52
|
+
[_token.TYPE.LOGINACK]: _loginackTokenParser.default,
|
|
53
|
+
[_token.TYPE.ORDER]: _orderTokenParser.default,
|
|
54
|
+
[_token.TYPE.RETURNSTATUS]: _returnstatusTokenParser.default,
|
|
55
|
+
[_token.TYPE.RETURNVALUE]: _returnvalueTokenParser.default,
|
|
56
|
+
[_token.TYPE.ROW]: _rowTokenParser.default,
|
|
57
|
+
[_token.TYPE.NBCROW]: _nbcrowTokenParser.default,
|
|
58
|
+
[_token.TYPE.SSPI]: _sspiTokenParser.default
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
class EndOfMessageMarker {}
|
|
62
|
+
|
|
63
|
+
class Parser extends _readableStream.Transform {
|
|
25
64
|
constructor(debug, colMetadata, options) {
|
|
26
65
|
super({
|
|
27
66
|
objectMode: true
|
|
@@ -29,21 +68,16 @@ module.exports = class Parser extends Transform {
|
|
|
29
68
|
this.debug = debug;
|
|
30
69
|
this.colMetadata = colMetadata;
|
|
31
70
|
this.options = options;
|
|
32
|
-
this.endOfMessageMarker =
|
|
71
|
+
this.endOfMessageMarker = new EndOfMessageMarker();
|
|
33
72
|
this.buffer = Buffer.alloc(0);
|
|
34
73
|
this.position = 0;
|
|
35
74
|
this.suspended = false;
|
|
36
75
|
this.next = undefined;
|
|
37
76
|
}
|
|
38
77
|
|
|
39
|
-
_transform(input,
|
|
40
|
-
if (input
|
|
41
|
-
done(
|
|
42
|
-
// generate endOfMessage pseudo token
|
|
43
|
-
name: 'EOM',
|
|
44
|
-
event: 'endOfMessage'
|
|
45
|
-
});
|
|
46
|
-
return;
|
|
78
|
+
_transform(input, _encoding, done) {
|
|
79
|
+
if (input instanceof EndOfMessageMarker) {
|
|
80
|
+
return done(undefined, new _token.EndOfMessageToken());
|
|
47
81
|
}
|
|
48
82
|
|
|
49
83
|
if (this.position === this.buffer.length) {
|
|
@@ -57,7 +91,8 @@ module.exports = class Parser extends Transform {
|
|
|
57
91
|
if (this.suspended) {
|
|
58
92
|
// Unsuspend and continue from where ever we left off.
|
|
59
93
|
this.suspended = false;
|
|
60
|
-
this.next
|
|
94
|
+
const next = this.next;
|
|
95
|
+
next();
|
|
61
96
|
} // If we're no longer suspended, parse new tokens
|
|
62
97
|
|
|
63
98
|
|
|
@@ -72,9 +107,8 @@ module.exports = class Parser extends Transform {
|
|
|
72
107
|
parseTokens() {
|
|
73
108
|
const doneParsing = token => {
|
|
74
109
|
if (token) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
this.colMetadata = token.columns;
|
|
110
|
+
if (token instanceof _token.ColMetadataToken) {
|
|
111
|
+
this.colMetadata = token.columns;
|
|
78
112
|
}
|
|
79
113
|
|
|
80
114
|
this.push(token);
|
|
@@ -188,6 +222,16 @@ module.exports = class Parser extends Transform {
|
|
|
188
222
|
});
|
|
189
223
|
}
|
|
190
224
|
|
|
225
|
+
readBigInt64LE(callback) {
|
|
226
|
+
this.awaitData(8, () => {
|
|
227
|
+
const result = _jsbi.default.add(_jsbi.default.leftShift(_jsbi.default.BigInt(this.buffer[this.position + 4] + this.buffer[this.position + 5] * Math.pow(2, 8) + this.buffer[this.position + 6] * Math.pow(2, 16) + (this.buffer[this.position + 7] << 24) // Overflow
|
|
228
|
+
), _jsbi.default.BigInt(32)), _jsbi.default.BigInt(this.buffer[this.position] + this.buffer[this.position + 1] * Math.pow(2, 8) + this.buffer[this.position + 2] * Math.pow(2, 16) + this.buffer[this.position + 3] * Math.pow(2, 24)));
|
|
229
|
+
|
|
230
|
+
this.position += 8;
|
|
231
|
+
callback(result);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
|
|
191
235
|
readInt64LE(callback) {
|
|
192
236
|
this.awaitData(8, () => {
|
|
193
237
|
const data = Math.pow(2, 32) * this.buffer.readInt32LE(this.position + 4) + ((this.buffer[this.position + 4] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32LE(this.position);
|
|
@@ -204,6 +248,17 @@ module.exports = class Parser extends Transform {
|
|
|
204
248
|
});
|
|
205
249
|
}
|
|
206
250
|
|
|
251
|
+
readBigUInt64LE(callback) {
|
|
252
|
+
this.awaitData(8, () => {
|
|
253
|
+
const low = _jsbi.default.BigInt(this.buffer.readUInt32LE(this.position));
|
|
254
|
+
|
|
255
|
+
const high = _jsbi.default.BigInt(this.buffer.readUInt32LE(this.position + 4));
|
|
256
|
+
|
|
257
|
+
this.position += 8;
|
|
258
|
+
callback(_jsbi.default.add(low, _jsbi.default.leftShift(high, _jsbi.default.BigInt(32))));
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
|
|
207
262
|
readUInt64LE(callback) {
|
|
208
263
|
this.awaitData(8, () => {
|
|
209
264
|
const data = Math.pow(2, 32) * this.buffer.readUInt32LE(this.position + 4) + this.buffer.readUInt32LE(this.position);
|
|
@@ -341,4 +396,8 @@ module.exports = class Parser extends Transform {
|
|
|
341
396
|
});
|
|
342
397
|
}
|
|
343
398
|
|
|
344
|
-
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
var _default = Parser;
|
|
402
|
+
exports.default = _default;
|
|
403
|
+
module.exports = Parser;
|