tedious 16.5.0 → 16.6.1
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/connection.js +4 -4
- package/lib/connection.js.map +1 -1
- package/lib/data-types/date.js +2 -2
- package/lib/data-types/date.js.map +1 -1
- package/lib/message-io.js +2 -2
- package/lib/message-io.js.map +1 -1
- package/lib/metadata-parser.js +361 -241
- package/lib/metadata-parser.js.map +1 -1
- package/lib/request.js +3 -3
- package/lib/request.js.map +1 -1
- package/lib/token/colmetadata-token-parser.js +103 -74
- package/lib/token/colmetadata-token-parser.js.map +1 -1
- package/lib/token/done-token-parser.js +52 -40
- package/lib/token/done-token-parser.js.map +1 -1
- package/lib/token/env-change-token-parser.js +110 -81
- package/lib/token/env-change-token-parser.js.map +1 -1
- package/lib/token/feature-ext-ack-parser.js +30 -22
- package/lib/token/feature-ext-ack-parser.js.map +1 -1
- package/lib/token/fedauth-info-parser.js +47 -30
- package/lib/token/fedauth-info-parser.js.map +1 -1
- package/lib/token/helpers.js +205 -0
- package/lib/token/helpers.js.map +1 -0
- package/lib/token/infoerror-token-parser.js +69 -36
- package/lib/token/infoerror-token-parser.js.map +1 -1
- package/lib/token/loginack-token-parser.js +59 -31
- package/lib/token/loginack-token-parser.js.map +1 -1
- package/lib/token/nbcrow-token-parser.js +60 -23
- package/lib/token/nbcrow-token-parser.js.map +1 -1
- package/lib/token/order-token-parser.js +22 -20
- package/lib/token/order-token-parser.js.map +1 -1
- package/lib/token/returnstatus-token-parser.js +9 -5
- package/lib/token/returnstatus-token-parser.js.map +1 -1
- package/lib/token/returnvalue-token-parser.js +79 -22
- package/lib/token/returnvalue-token-parser.js.map +1 -1
- package/lib/token/row-token-parser.js +50 -20
- package/lib/token/row-token-parser.js.map +1 -1
- package/lib/token/sspi-token-parser.js +14 -5
- package/lib/token/sspi-token-parser.js.map +1 -1
- package/lib/token/stream-parser.js +292 -324
- package/lib/token/stream-parser.js.map +1 -1
- package/lib/token/token.js +1 -1
- package/lib/token/token.js.map +1 -1
- package/lib/value-parser.js +655 -438
- package/lib/value-parser.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _helpers = require("./helpers");
|
|
7
8
|
var _token = require("./token");
|
|
8
9
|
const FEATURE_ID = {
|
|
9
10
|
SESSIONRECOVERY: 0x01,
|
|
@@ -14,32 +15,39 @@ const FEATURE_ID = {
|
|
|
14
15
|
UTF8_SUPPORT: 0x0A,
|
|
15
16
|
TERMINATOR: 0xFF
|
|
16
17
|
};
|
|
17
|
-
function featureExtAckParser(
|
|
18
|
+
function featureExtAckParser(buf, offset, _options) {
|
|
18
19
|
let fedAuth;
|
|
19
20
|
let utf8Support;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
21
|
+
while (true) {
|
|
22
|
+
let featureId;
|
|
23
|
+
({
|
|
24
|
+
value: featureId,
|
|
25
|
+
offset
|
|
26
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
27
|
+
if (featureId === FEATURE_ID.TERMINATOR) {
|
|
28
|
+
return new _helpers.Result(new _token.FeatureExtAckToken(fedAuth, utf8Support), offset);
|
|
29
|
+
}
|
|
30
|
+
let featureAckDataLen;
|
|
31
|
+
({
|
|
32
|
+
value: featureAckDataLen,
|
|
33
|
+
offset
|
|
34
|
+
} = (0, _helpers.readUInt32LE)(buf, offset));
|
|
35
|
+
if (buf.length < offset + featureAckDataLen) {
|
|
36
|
+
throw new _helpers.NotEnoughDataError(offset + featureAckDataLen);
|
|
37
|
+
}
|
|
38
|
+
const featureData = buf.slice(offset, offset + featureAckDataLen);
|
|
39
|
+
offset += featureAckDataLen;
|
|
40
|
+
switch (featureId) {
|
|
41
|
+
case FEATURE_ID.FEDAUTH:
|
|
42
|
+
fedAuth = featureData;
|
|
43
|
+
break;
|
|
44
|
+
case FEATURE_ID.UTF8_SUPPORT:
|
|
45
|
+
utf8Support = !!featureData[0];
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
39
48
|
}
|
|
40
|
-
next();
|
|
41
49
|
}
|
|
42
50
|
var _default = featureExtAckParser;
|
|
43
51
|
exports.default = _default;
|
|
44
52
|
module.exports = featureExtAckParser;
|
|
45
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRUFUVVJFX0lEIiwiU0VTU0lPTlJFQ09WRVJZIiwiRkVEQVVUSCIsIkNPTFVNTkVOQ1JZUFRJT04iLCJHTE9CQUxUUkFOU0FDVElPTlMiLCJBWlVSRVNRTFNVUFBPUlQiLCJVVEY4X1NVUFBPUlQiLCJURVJNSU5BVE9SIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsImJ1ZiIsIm9mZnNldCIsIl9vcHRpb25zIiwiZmVkQXV0aCIsInV0ZjhTdXBwb3J0IiwiZmVhdHVyZUlkIiwidmFsdWUiLCJyZWFkVUludDgiLCJSZXN1bHQiLCJGZWF0dXJlRXh0QWNrVG9rZW4iLCJmZWF0dXJlQWNrRGF0YUxlbiIsInJlYWRVSW50MzJMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsImZlYXR1cmVEYXRhIiwic2xpY2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDMyTEUsIHJlYWRVSW50OCwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5cbmltcG9ydCB7IEZlYXR1cmVFeHRBY2tUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5jb25zdCBGRUFUVVJFX0lEID0ge1xuICBTRVNTSU9OUkVDT1ZFUlk6IDB4MDEsXG4gIEZFREFVVEg6IDB4MDIsXG4gIENPTFVNTkVOQ1JZUFRJT046IDB4MDQsXG4gIEdMT0JBTFRSQU5TQUNUSU9OUzogMHgwNSxcbiAgQVpVUkVTUUxTVVBQT1JUOiAweDA4LFxuICBVVEY4X1NVUFBPUlQ6IDB4MEEsXG4gIFRFUk1JTkFUT1I6IDB4RkZcbn07XG5cbmZ1bmN0aW9uIGZlYXR1cmVFeHRBY2tQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxGZWF0dXJlRXh0QWNrVG9rZW4+IHtcbiAgbGV0IGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgbGV0IHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbGV0IGZlYXR1cmVJZDtcbiAgICAoeyB2YWx1ZTogZmVhdHVyZUlkLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGZlYXR1cmVJZCA9PT0gRkVBVFVSRV9JRC5URVJNSU5BVE9SKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgRmVhdHVyZUV4dEFja1Rva2VuKGZlZEF1dGgsIHV0ZjhTdXBwb3J0KSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBsZXQgZmVhdHVyZUFja0RhdGFMZW47XG4gICAgKHsgdmFsdWU6IGZlYXR1cmVBY2tEYXRhTGVuLCBvZmZzZXQgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbikge1xuICAgICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgfVxuXG4gICAgY29uc3QgZmVhdHVyZURhdGEgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgb2Zmc2V0ICs9IGZlYXR1cmVBY2tEYXRhTGVuO1xuXG4gICAgc3dpdGNoIChmZWF0dXJlSWQpIHtcbiAgICAgIGNhc2UgRkVBVFVSRV9JRC5GRURBVVRIOlxuICAgICAgICBmZWRBdXRoID0gZmVhdHVyZURhdGE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGRUFUVVJFX0lELlVURjhfU1VQUE9SVDpcbiAgICAgICAgdXRmOFN1cHBvcnQgPSAhIWZlYXR1cmVEYXRhWzBdO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZmVhdHVyZUV4dEFja1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVhdHVyZUV4dEFja1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsTUFBTUUsVUFBVSxHQUFHO0VBQ2pCQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsa0JBQWtCLEVBQUUsSUFBSTtFQUN4QkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxVQUFVLEVBQUU7QUFDZCxDQUFDO0FBRUQsU0FBU0MsbUJBQW1CQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBRUMsUUFBdUIsRUFBOEI7RUFDN0csSUFBSUMsT0FBMkI7RUFDL0IsSUFBSUMsV0FBZ0M7RUFFcEMsT0FBTyxJQUFJLEVBQUU7SUFDWCxJQUFJQyxTQUFTO0lBQ2IsQ0FBQztNQUFFQyxLQUFLLEVBQUVELFNBQVM7TUFBRUo7SUFBTyxDQUFDLEdBQUcsSUFBQU0sa0JBQVMsRUFBQ1AsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFdEQsSUFBSUksU0FBUyxLQUFLZCxVQUFVLENBQUNPLFVBQVUsRUFBRTtNQUN2QyxPQUFPLElBQUlVLGVBQU0sQ0FBQyxJQUFJQyx5QkFBa0IsQ0FBQ04sT0FBTyxFQUFFQyxXQUFXLENBQUMsRUFBRUgsTUFBTSxDQUFDO0lBQ3pFO0lBRUEsSUFBSVMsaUJBQWlCO0lBQ3JCLENBQUM7TUFBRUosS0FBSyxFQUFFSSxpQkFBaUI7TUFBRVQ7SUFBTyxDQUFDLEdBQUcsSUFBQVUscUJBQVksRUFBQ1gsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFakUsSUFBSUQsR0FBRyxDQUFDWSxNQUFNLEdBQUdYLE1BQU0sR0FBR1MsaUJBQWlCLEVBQUU7TUFDM0MsTUFBTSxJQUFJRywyQkFBa0IsQ0FBQ1osTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUMxRDtJQUVBLE1BQU1JLFdBQVcsR0FBR2QsR0FBRyxDQUFDZSxLQUFLLENBQUNkLE1BQU0sRUFBRUEsTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUNqRVQsTUFBTSxJQUFJUyxpQkFBaUI7SUFFM0IsUUFBUUwsU0FBUztNQUNmLEtBQUtkLFVBQVUsQ0FBQ0UsT0FBTztRQUNyQlUsT0FBTyxHQUFHVyxXQUFXO1FBQ3JCO01BQ0YsS0FBS3ZCLFVBQVUsQ0FBQ00sWUFBWTtRQUMxQk8sV0FBVyxHQUFHLENBQUMsQ0FBQ1UsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM5QjtJQUNKO0VBQ0Y7QUFDRjtBQUFDLElBQUFFLFFBQUEsR0FFY2pCLG1CQUFtQjtBQUFBa0IsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDbENHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHbEIsbUJBQW1CIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-ext-ack-parser.js","names":["
|
|
1
|
+
{"version":3,"file":"feature-ext-ack-parser.js","names":["_helpers","require","_token","FEATURE_ID","SESSIONRECOVERY","FEDAUTH","COLUMNENCRYPTION","GLOBALTRANSACTIONS","AZURESQLSUPPORT","UTF8_SUPPORT","TERMINATOR","featureExtAckParser","buf","offset","_options","fedAuth","utf8Support","featureId","value","readUInt8","Result","FeatureExtAckToken","featureAckDataLen","readUInt32LE","length","NotEnoughDataError","featureData","slice","_default","exports","default","module"],"sources":["../../src/token/feature-ext-ack-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readUInt32LE, readUInt8, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\n\nimport { FeatureExtAckToken } from './token';\n\nconst FEATURE_ID = {\n SESSIONRECOVERY: 0x01,\n FEDAUTH: 0x02,\n COLUMNENCRYPTION: 0x04,\n GLOBALTRANSACTIONS: 0x05,\n AZURESQLSUPPORT: 0x08,\n UTF8_SUPPORT: 0x0A,\n TERMINATOR: 0xFF\n};\n\nfunction featureExtAckParser(buf: Buffer, offset: number, _options: ParserOptions): Result<FeatureExtAckToken> {\n let fedAuth: Buffer | undefined;\n let utf8Support: boolean | undefined;\n\n while (true) {\n let featureId;\n ({ value: featureId, offset } = readUInt8(buf, offset));\n\n if (featureId === FEATURE_ID.TERMINATOR) {\n return new Result(new FeatureExtAckToken(fedAuth, utf8Support), offset);\n }\n\n let featureAckDataLen;\n ({ value: featureAckDataLen, offset } = readUInt32LE(buf, offset));\n\n if (buf.length < offset + featureAckDataLen) {\n throw new NotEnoughDataError(offset + featureAckDataLen);\n }\n\n const featureData = buf.slice(offset, offset + featureAckDataLen);\n offset += featureAckDataLen;\n\n switch (featureId) {\n case FEATURE_ID.FEDAUTH:\n fedAuth = featureData;\n break;\n case FEATURE_ID.UTF8_SUPPORT:\n utf8Support = !!featureData[0];\n break;\n }\n }\n}\n\nexport default featureExtAckParser;\nmodule.exports = featureExtAckParser;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAG;EACjBC,eAAe,EAAE,IAAI;EACrBC,OAAO,EAAE,IAAI;EACbC,gBAAgB,EAAE,IAAI;EACtBC,kBAAkB,EAAE,IAAI;EACxBC,eAAe,EAAE,IAAI;EACrBC,YAAY,EAAE,IAAI;EAClBC,UAAU,EAAE;AACd,CAAC;AAED,SAASC,mBAAmBA,CAACC,GAAW,EAAEC,MAAc,EAAEC,QAAuB,EAA8B;EAC7G,IAAIC,OAA2B;EAC/B,IAAIC,WAAgC;EAEpC,OAAO,IAAI,EAAE;IACX,IAAIC,SAAS;IACb,CAAC;MAAEC,KAAK,EAAED,SAAS;MAAEJ;IAAO,CAAC,GAAG,IAAAM,kBAAS,EAACP,GAAG,EAAEC,MAAM,CAAC;IAEtD,IAAII,SAAS,KAAKd,UAAU,CAACO,UAAU,EAAE;MACvC,OAAO,IAAIU,eAAM,CAAC,IAAIC,yBAAkB,CAACN,OAAO,EAAEC,WAAW,CAAC,EAAEH,MAAM,CAAC;IACzE;IAEA,IAAIS,iBAAiB;IACrB,CAAC;MAAEJ,KAAK,EAAEI,iBAAiB;MAAET;IAAO,CAAC,GAAG,IAAAU,qBAAY,EAACX,GAAG,EAAEC,MAAM,CAAC;IAEjE,IAAID,GAAG,CAACY,MAAM,GAAGX,MAAM,GAAGS,iBAAiB,EAAE;MAC3C,MAAM,IAAIG,2BAAkB,CAACZ,MAAM,GAAGS,iBAAiB,CAAC;IAC1D;IAEA,MAAMI,WAAW,GAAGd,GAAG,CAACe,KAAK,CAACd,MAAM,EAAEA,MAAM,GAAGS,iBAAiB,CAAC;IACjET,MAAM,IAAIS,iBAAiB;IAE3B,QAAQL,SAAS;MACf,KAAKd,UAAU,CAACE,OAAO;QACrBU,OAAO,GAAGW,WAAW;QACrB;MACF,KAAKvB,UAAU,CAACM,YAAY;QAC1BO,WAAW,GAAG,CAAC,CAACU,WAAW,CAAC,CAAC,CAAC;QAC9B;IACJ;EACF;AACF;AAAC,IAAAE,QAAA,GAEcjB,mBAAmB;AAAAkB,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAClCG,MAAM,CAACF,OAAO,GAAGlB,mBAAmB"}
|
|
@@ -4,43 +4,60 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _helpers = require("./helpers");
|
|
7
8
|
var _token = require("./token");
|
|
8
9
|
const FEDAUTHINFOID = {
|
|
9
10
|
STSURL: 0x01,
|
|
10
11
|
SPN: 0x02
|
|
11
12
|
};
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
|
|
32
|
-
break;
|
|
13
|
+
function readFedAuthInfo(data) {
|
|
14
|
+
let offset = 0;
|
|
15
|
+
let spn, stsurl;
|
|
16
|
+
const countOfInfoIDs = data.readUInt32LE(offset);
|
|
17
|
+
offset += 4;
|
|
18
|
+
for (let i = 0; i < countOfInfoIDs; i++) {
|
|
19
|
+
const fedauthInfoID = data.readUInt8(offset);
|
|
20
|
+
offset += 1;
|
|
21
|
+
const fedAuthInfoDataLen = data.readUInt32LE(offset);
|
|
22
|
+
offset += 4;
|
|
23
|
+
const fedAuthInfoDataOffset = data.readUInt32LE(offset);
|
|
24
|
+
offset += 4;
|
|
25
|
+
switch (fedauthInfoID) {
|
|
26
|
+
case FEDAUTHINFOID.SPN:
|
|
27
|
+
spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
|
|
28
|
+
break;
|
|
29
|
+
case FEDAUTHINFOID.STSURL:
|
|
30
|
+
stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);
|
|
31
|
+
break;
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
// ignoring unknown fedauthinfo options
|
|
34
|
+
default:
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
spn,
|
|
40
|
+
stsurl
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function fedAuthInfoParser(buf, offset, _options) {
|
|
44
|
+
let tokenLength;
|
|
45
|
+
({
|
|
46
|
+
offset,
|
|
47
|
+
value: tokenLength
|
|
48
|
+
} = (0, _helpers.readUInt32LE)(buf, offset));
|
|
49
|
+
if (buf.length < offset + tokenLength) {
|
|
50
|
+
throw new _helpers.NotEnoughDataError(offset + tokenLength);
|
|
51
|
+
}
|
|
52
|
+
const data = buf.slice(offset, offset + tokenLength);
|
|
53
|
+
offset += tokenLength;
|
|
54
|
+
const {
|
|
55
|
+
spn,
|
|
56
|
+
stsurl
|
|
57
|
+
} = readFedAuthInfo(data);
|
|
58
|
+
return new _helpers.Result(new _token.FedAuthInfoToken(spn, stsurl), offset);
|
|
42
59
|
}
|
|
43
60
|
var _default = fedAuthInfoParser;
|
|
44
61
|
exports.default = _default;
|
|
45
62
|
module.exports = fedAuthInfoParser;
|
|
46
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRURBVVRISU5GT0lEIiwiU1RTVVJMIiwiU1BOIiwicmVhZEZlZEF1dGhJbmZvIiwiZGF0YSIsIm9mZnNldCIsInNwbiIsInN0c3VybCIsImNvdW50T2ZJbmZvSURzIiwicmVhZFVJbnQzMkxFIiwiaSIsImZlZGF1dGhJbmZvSUQiLCJyZWFkVUludDgiLCJmZWRBdXRoSW5mb0RhdGFMZW4iLCJmZWRBdXRoSW5mb0RhdGFPZmZzZXQiLCJ0b1N0cmluZyIsImZlZEF1dGhJbmZvUGFyc2VyIiwiYnVmIiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwic2xpY2UiLCJSZXN1bHQiLCJGZWRBdXRoSW5mb1Rva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9mZWRhdXRoLWluZm8tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciwgcmVhZFVJbnQzMkxFLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IEZlZEF1dGhJbmZvVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuY29uc3QgRkVEQVVUSElORk9JRCA9IHtcbiAgU1RTVVJMOiAweDAxLFxuICBTUE46IDB4MDJcbn07XG5cbmZ1bmN0aW9uIHJlYWRGZWRBdXRoSW5mbyhkYXRhOiBCdWZmZXIpOiB7IHNwbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCB9IHtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCBzcG4sIHN0c3VybDtcblxuICBjb25zdCBjb3VudE9mSW5mb0lEcyA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gIG9mZnNldCArPSA0O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRPZkluZm9JRHM7IGkrKykge1xuICAgIGNvbnN0IGZlZGF1dGhJbmZvSUQgPSBkYXRhLnJlYWRVSW50OChvZmZzZXQpO1xuICAgIG9mZnNldCArPSAxO1xuXG4gICAgY29uc3QgZmVkQXV0aEluZm9EYXRhTGVuID0gZGF0YS5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gNDtcblxuICAgIGNvbnN0IGZlZEF1dGhJbmZvRGF0YU9mZnNldCA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IDQ7XG5cbiAgICBzd2l0Y2ggKGZlZGF1dGhJbmZvSUQpIHtcbiAgICAgIGNhc2UgRkVEQVVUSElORk9JRC5TUE46XG4gICAgICAgIHNwbiA9IGRhdGEudG9TdHJpbmcoJ3VjczInLCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQsIGZlZEF1dGhJbmZvRGF0YU9mZnNldCArIGZlZEF1dGhJbmZvRGF0YUxlbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEZFREFVVEhJTkZPSUQuU1RTVVJMOlxuICAgICAgICBzdHN1cmwgPSBkYXRhLnRvU3RyaW5nKCd1Y3MyJywgZmVkQXV0aEluZm9EYXRhT2Zmc2V0LCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQgKyBmZWRBdXRoSW5mb0RhdGFMZW4pO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gaWdub3JpbmcgdW5rbm93biBmZWRhdXRoaW5mbyBvcHRpb25zXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzcG4sIHN0c3VybCB9O1xufVxuXG5mdW5jdGlvbiBmZWRBdXRoSW5mb1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIF9vcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PEZlZEF1dGhJbmZvVG9rZW4+IHtcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRva2VuTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IHRva2VuTGVuZ3RoO1xuXG4gIGNvbnN0IHsgc3BuLCBzdHN1cmwgfSA9IHJlYWRGZWRBdXRoSW5mbyhkYXRhKTtcbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEZlZEF1dGhJbmZvVG9rZW4oc3BuLCBzdHN1cmwpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmZWRBdXRoSW5mb1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVkQXV0aEluZm9QYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLE1BQU1FLGFBQWEsR0FBRztFQUNwQkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVELFNBQVNDLGVBQWVBLENBQUNDLElBQVksRUFBMkQ7RUFDOUYsSUFBSUMsTUFBTSxHQUFHLENBQUM7RUFDZCxJQUFJQyxHQUFHLEVBQUVDLE1BQU07RUFFZixNQUFNQyxjQUFjLEdBQUdKLElBQUksQ0FBQ0ssWUFBWSxDQUFDSixNQUFNLENBQUM7RUFDaERBLE1BQU0sSUFBSSxDQUFDO0VBRVgsS0FBSyxJQUFJSyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLGNBQWMsRUFBRUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsTUFBTUMsYUFBYSxHQUFHUCxJQUFJLENBQUNRLFNBQVMsQ0FBQ1AsTUFBTSxDQUFDO0lBQzVDQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1RLGtCQUFrQixHQUFHVCxJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3BEQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1TLHFCQUFxQixHQUFHVixJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3ZEQSxNQUFNLElBQUksQ0FBQztJQUVYLFFBQVFNLGFBQWE7TUFDbkIsS0FBS1gsYUFBYSxDQUFDRSxHQUFHO1FBQ3BCSSxHQUFHLEdBQUdGLElBQUksQ0FBQ1csUUFBUSxDQUFDLE1BQU0sRUFBRUQscUJBQXFCLEVBQUVBLHFCQUFxQixHQUFHRCxrQkFBa0IsQ0FBQztRQUM5RjtNQUVGLEtBQUtiLGFBQWEsQ0FBQ0MsTUFBTTtRQUN2Qk0sTUFBTSxHQUFHSCxJQUFJLENBQUNXLFFBQVEsQ0FBQyxNQUFNLEVBQUVELHFCQUFxQixFQUFFQSxxQkFBcUIsR0FBR0Qsa0JBQWtCLENBQUM7UUFDakc7O01BRUY7TUFDQTtRQUNFO0lBQ0o7RUFDRjtFQUVBLE9BQU87SUFBRVAsR0FBRztJQUFFQztFQUFPLENBQUM7QUFDeEI7QUFFQSxTQUFTUyxpQkFBaUJBLENBQUNDLEdBQVcsRUFBRVosTUFBYyxFQUFFYSxRQUF1QixFQUE0QjtFQUN6RyxJQUFJQyxXQUFXO0VBQ2YsQ0FBQztJQUFFZCxNQUFNO0lBQUVlLEtBQUssRUFBRUQ7RUFBWSxDQUFDLEdBQUcsSUFBQVYscUJBQVksRUFBQ1EsR0FBRyxFQUFFWixNQUFNLENBQUM7RUFFM0QsSUFBSVksR0FBRyxDQUFDSSxNQUFNLEdBQUdoQixNQUFNLEdBQUdjLFdBQVcsRUFBRTtJQUNyQyxNQUFNLElBQUlHLDJCQUFrQixDQUFDakIsTUFBTSxHQUFHYyxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNZixJQUFJLEdBQUdhLEdBQUcsQ0FBQ00sS0FBSyxDQUFDbEIsTUFBTSxFQUFFQSxNQUFNLEdBQUdjLFdBQVcsQ0FBQztFQUNwRGQsTUFBTSxJQUFJYyxXQUFXO0VBRXJCLE1BQU07SUFBRWIsR0FBRztJQUFFQztFQUFPLENBQUMsR0FBR0osZUFBZSxDQUFDQyxJQUFJLENBQUM7RUFDN0MsT0FBTyxJQUFJb0IsZUFBTSxDQUFDLElBQUlDLHVCQUFnQixDQUFDbkIsR0FBRyxFQUFFQyxNQUFNLENBQUMsRUFBRUYsTUFBTSxDQUFDO0FBQzlEO0FBQUMsSUFBQXFCLFFBQUEsR0FFY1YsaUJBQWlCO0FBQUFXLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ2hDRyxNQUFNLENBQUNGLE9BQU8sR0FBR1gsaUJBQWlCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fedauth-info-parser.js","names":["
|
|
1
|
+
{"version":3,"file":"fedauth-info-parser.js","names":["_helpers","require","_token","FEDAUTHINFOID","STSURL","SPN","readFedAuthInfo","data","offset","spn","stsurl","countOfInfoIDs","readUInt32LE","i","fedauthInfoID","readUInt8","fedAuthInfoDataLen","fedAuthInfoDataOffset","toString","fedAuthInfoParser","buf","_options","tokenLength","value","length","NotEnoughDataError","slice","Result","FedAuthInfoToken","_default","exports","default","module"],"sources":["../../src/token/fedauth-info-parser.ts"],"sourcesContent":["import { NotEnoughDataError, readUInt32LE, Result } from './helpers';\nimport { type ParserOptions } from './stream-parser';\nimport { FedAuthInfoToken } from './token';\n\nconst FEDAUTHINFOID = {\n STSURL: 0x01,\n SPN: 0x02\n};\n\nfunction readFedAuthInfo(data: Buffer): { spn: string | undefined, stsurl: string | undefined } {\n let offset = 0;\n let spn, stsurl;\n\n const countOfInfoIDs = data.readUInt32LE(offset);\n offset += 4;\n\n for (let i = 0; i < countOfInfoIDs; i++) {\n const fedauthInfoID = data.readUInt8(offset);\n offset += 1;\n\n const fedAuthInfoDataLen = data.readUInt32LE(offset);\n offset += 4;\n\n const fedAuthInfoDataOffset = data.readUInt32LE(offset);\n offset += 4;\n\n switch (fedauthInfoID) {\n case FEDAUTHINFOID.SPN:\n spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n case FEDAUTHINFOID.STSURL:\n stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n break;\n\n // ignoring unknown fedauthinfo options\n default:\n break;\n }\n }\n\n return { spn, stsurl };\n}\n\nfunction fedAuthInfoParser(buf: Buffer, offset: number, _options: ParserOptions): Result<FedAuthInfoToken> {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt32LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n const data = buf.slice(offset, offset + tokenLength);\n offset += tokenLength;\n\n const { spn, stsurl } = readFedAuthInfo(data);\n return new Result(new FedAuthInfoToken(spn, stsurl), offset);\n}\n\nexport default fedAuthInfoParser;\nmodule.exports = fedAuthInfoParser;\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,aAAa,GAAG;EACpBC,MAAM,EAAE,IAAI;EACZC,GAAG,EAAE;AACP,CAAC;AAED,SAASC,eAAeA,CAACC,IAAY,EAA2D;EAC9F,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,GAAG,EAAEC,MAAM;EAEf,MAAMC,cAAc,GAAGJ,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;EAChDA,MAAM,IAAI,CAAC;EAEX,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,cAAc,EAAEE,CAAC,EAAE,EAAE;IACvC,MAAMC,aAAa,GAAGP,IAAI,CAACQ,SAAS,CAACP,MAAM,CAAC;IAC5CA,MAAM,IAAI,CAAC;IAEX,MAAMQ,kBAAkB,GAAGT,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;IACpDA,MAAM,IAAI,CAAC;IAEX,MAAMS,qBAAqB,GAAGV,IAAI,CAACK,YAAY,CAACJ,MAAM,CAAC;IACvDA,MAAM,IAAI,CAAC;IAEX,QAAQM,aAAa;MACnB,KAAKX,aAAa,CAACE,GAAG;QACpBI,GAAG,GAAGF,IAAI,CAACW,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;QAC9F;MAEF,KAAKb,aAAa,CAACC,MAAM;QACvBM,MAAM,GAAGH,IAAI,CAACW,QAAQ,CAAC,MAAM,EAAED,qBAAqB,EAAEA,qBAAqB,GAAGD,kBAAkB,CAAC;QACjG;;MAEF;MACA;QACE;IACJ;EACF;EAEA,OAAO;IAAEP,GAAG;IAAEC;EAAO,CAAC;AACxB;AAEA,SAASS,iBAAiBA,CAACC,GAAW,EAAEZ,MAAc,EAAEa,QAAuB,EAA4B;EACzG,IAAIC,WAAW;EACf,CAAC;IAAEd,MAAM;IAAEe,KAAK,EAAED;EAAY,CAAC,GAAG,IAAAV,qBAAY,EAACQ,GAAG,EAAEZ,MAAM,CAAC;EAE3D,IAAIY,GAAG,CAACI,MAAM,GAAGhB,MAAM,GAAGc,WAAW,EAAE;IACrC,MAAM,IAAIG,2BAAkB,CAACjB,MAAM,GAAGc,WAAW,CAAC;EACpD;EAEA,MAAMf,IAAI,GAAGa,GAAG,CAACM,KAAK,CAAClB,MAAM,EAAEA,MAAM,GAAGc,WAAW,CAAC;EACpDd,MAAM,IAAIc,WAAW;EAErB,MAAM;IAAEb,GAAG;IAAEC;EAAO,CAAC,GAAGJ,eAAe,CAACC,IAAI,CAAC;EAC7C,OAAO,IAAIoB,eAAM,CAAC,IAAIC,uBAAgB,CAACnB,GAAG,EAAEC,MAAM,CAAC,EAAEF,MAAM,CAAC;AAC9D;AAAC,IAAAqB,QAAA,GAEcV,iBAAiB;AAAAW,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAChCG,MAAM,CAACF,OAAO,GAAGX,iBAAiB"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Result = exports.NotEnoughDataError = void 0;
|
|
7
|
+
exports.readBVarByte = readBVarByte;
|
|
8
|
+
exports.readBVarChar = readBVarChar;
|
|
9
|
+
exports.readBigInt64LE = readBigInt64LE;
|
|
10
|
+
exports.readBigUInt64LE = readBigUInt64LE;
|
|
11
|
+
exports.readDoubleLE = readDoubleLE;
|
|
12
|
+
exports.readFloatLE = readFloatLE;
|
|
13
|
+
exports.readInt16LE = readInt16LE;
|
|
14
|
+
exports.readInt32LE = readInt32LE;
|
|
15
|
+
exports.readUInt16LE = readUInt16LE;
|
|
16
|
+
exports.readUInt24LE = readUInt24LE;
|
|
17
|
+
exports.readUInt32BE = readUInt32BE;
|
|
18
|
+
exports.readUInt32LE = readUInt32LE;
|
|
19
|
+
exports.readUInt40LE = readUInt40LE;
|
|
20
|
+
exports.readUInt8 = readUInt8;
|
|
21
|
+
exports.readUNumeric128LE = readUNumeric128LE;
|
|
22
|
+
exports.readUNumeric64LE = readUNumeric64LE;
|
|
23
|
+
exports.readUNumeric96LE = readUNumeric96LE;
|
|
24
|
+
exports.readUsVarByte = readUsVarByte;
|
|
25
|
+
exports.readUsVarChar = readUsVarChar;
|
|
26
|
+
class Result {
|
|
27
|
+
constructor(value, offset) {
|
|
28
|
+
this.value = value;
|
|
29
|
+
this.offset = offset;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Result = Result;
|
|
33
|
+
class NotEnoughDataError extends Error {
|
|
34
|
+
byteCount;
|
|
35
|
+
constructor(byteCount) {
|
|
36
|
+
super();
|
|
37
|
+
this.byteCount = byteCount;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.NotEnoughDataError = NotEnoughDataError;
|
|
41
|
+
function readUInt8(buf, offset) {
|
|
42
|
+
offset = +offset;
|
|
43
|
+
if (buf.length < offset + 1) {
|
|
44
|
+
throw new NotEnoughDataError(offset + 1);
|
|
45
|
+
}
|
|
46
|
+
return new Result(buf.readUInt8(offset), offset + 1);
|
|
47
|
+
}
|
|
48
|
+
function readUInt16LE(buf, offset) {
|
|
49
|
+
offset = +offset;
|
|
50
|
+
if (buf.length < offset + 2) {
|
|
51
|
+
throw new NotEnoughDataError(offset + 2);
|
|
52
|
+
}
|
|
53
|
+
return new Result(buf.readUInt16LE(offset), offset + 2);
|
|
54
|
+
}
|
|
55
|
+
function readInt16LE(buf, offset) {
|
|
56
|
+
offset = +offset;
|
|
57
|
+
if (buf.length < offset + 2) {
|
|
58
|
+
throw new NotEnoughDataError(offset + 2);
|
|
59
|
+
}
|
|
60
|
+
return new Result(buf.readInt16LE(offset), offset + 2);
|
|
61
|
+
}
|
|
62
|
+
function readUInt24LE(buf, offset) {
|
|
63
|
+
offset = +offset;
|
|
64
|
+
if (buf.length < offset + 3) {
|
|
65
|
+
throw new NotEnoughDataError(offset + 3);
|
|
66
|
+
}
|
|
67
|
+
return new Result(buf.readUIntLE(offset, 3), offset + 3);
|
|
68
|
+
}
|
|
69
|
+
function readUInt32LE(buf, offset) {
|
|
70
|
+
offset = +offset;
|
|
71
|
+
if (buf.length < offset + 4) {
|
|
72
|
+
throw new NotEnoughDataError(offset + 4);
|
|
73
|
+
}
|
|
74
|
+
return new Result(buf.readUInt32LE(offset), offset + 4);
|
|
75
|
+
}
|
|
76
|
+
function readUInt32BE(buf, offset) {
|
|
77
|
+
offset = +offset;
|
|
78
|
+
if (buf.length < offset + 4) {
|
|
79
|
+
throw new NotEnoughDataError(offset + 4);
|
|
80
|
+
}
|
|
81
|
+
return new Result(buf.readUInt32BE(offset), offset + 4);
|
|
82
|
+
}
|
|
83
|
+
function readUInt40LE(buf, offset) {
|
|
84
|
+
offset = +offset;
|
|
85
|
+
if (buf.length < offset + 5) {
|
|
86
|
+
throw new NotEnoughDataError(offset + 5);
|
|
87
|
+
}
|
|
88
|
+
return new Result(buf.readUIntLE(offset, 5), offset + 5);
|
|
89
|
+
}
|
|
90
|
+
function readInt32LE(buf, offset) {
|
|
91
|
+
offset = +offset;
|
|
92
|
+
if (buf.length < offset + 4) {
|
|
93
|
+
throw new NotEnoughDataError(offset + 4);
|
|
94
|
+
}
|
|
95
|
+
return new Result(buf.readInt32LE(offset), offset + 4);
|
|
96
|
+
}
|
|
97
|
+
function readBigUInt64LE(buf, offset) {
|
|
98
|
+
offset = +offset;
|
|
99
|
+
if (buf.length < offset + 8) {
|
|
100
|
+
throw new NotEnoughDataError(offset + 8);
|
|
101
|
+
}
|
|
102
|
+
return new Result(buf.readBigUInt64LE(offset), offset + 8);
|
|
103
|
+
}
|
|
104
|
+
function readBigInt64LE(buf, offset) {
|
|
105
|
+
offset = +offset;
|
|
106
|
+
if (buf.length < offset + 8) {
|
|
107
|
+
throw new NotEnoughDataError(offset + 8);
|
|
108
|
+
}
|
|
109
|
+
return new Result(buf.readBigInt64LE(offset), offset + 8);
|
|
110
|
+
}
|
|
111
|
+
function readFloatLE(buf, offset) {
|
|
112
|
+
offset = +offset;
|
|
113
|
+
if (buf.length < offset + 4) {
|
|
114
|
+
throw new NotEnoughDataError(offset + 4);
|
|
115
|
+
}
|
|
116
|
+
return new Result(buf.readFloatLE(offset), offset + 4);
|
|
117
|
+
}
|
|
118
|
+
function readDoubleLE(buf, offset) {
|
|
119
|
+
offset = +offset;
|
|
120
|
+
if (buf.length < offset + 8) {
|
|
121
|
+
throw new NotEnoughDataError(offset + 8);
|
|
122
|
+
}
|
|
123
|
+
return new Result(buf.readDoubleLE(offset), offset + 8);
|
|
124
|
+
}
|
|
125
|
+
function readBVarChar(buf, offset) {
|
|
126
|
+
offset = +offset;
|
|
127
|
+
let charCount;
|
|
128
|
+
({
|
|
129
|
+
offset,
|
|
130
|
+
value: charCount
|
|
131
|
+
} = readUInt8(buf, offset));
|
|
132
|
+
const byteLength = charCount * 2;
|
|
133
|
+
if (buf.length < offset + byteLength) {
|
|
134
|
+
throw new NotEnoughDataError(offset + byteLength);
|
|
135
|
+
}
|
|
136
|
+
return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);
|
|
137
|
+
}
|
|
138
|
+
function readBVarByte(buf, offset) {
|
|
139
|
+
offset = +offset;
|
|
140
|
+
let byteLength;
|
|
141
|
+
({
|
|
142
|
+
offset,
|
|
143
|
+
value: byteLength
|
|
144
|
+
} = readUInt8(buf, offset));
|
|
145
|
+
if (buf.length < offset + byteLength) {
|
|
146
|
+
throw new NotEnoughDataError(offset + byteLength);
|
|
147
|
+
}
|
|
148
|
+
return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);
|
|
149
|
+
}
|
|
150
|
+
function readUsVarChar(buf, offset) {
|
|
151
|
+
offset = +offset;
|
|
152
|
+
let charCount;
|
|
153
|
+
({
|
|
154
|
+
offset,
|
|
155
|
+
value: charCount
|
|
156
|
+
} = readUInt16LE(buf, offset));
|
|
157
|
+
const byteLength = charCount * 2;
|
|
158
|
+
if (buf.length < offset + byteLength) {
|
|
159
|
+
throw new NotEnoughDataError(offset + byteLength);
|
|
160
|
+
}
|
|
161
|
+
return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);
|
|
162
|
+
}
|
|
163
|
+
function readUsVarByte(buf, offset) {
|
|
164
|
+
offset = +offset;
|
|
165
|
+
let byteLength;
|
|
166
|
+
({
|
|
167
|
+
offset,
|
|
168
|
+
value: byteLength
|
|
169
|
+
} = readUInt16LE(buf, offset));
|
|
170
|
+
if (buf.length < offset + byteLength) {
|
|
171
|
+
throw new NotEnoughDataError(offset + byteLength);
|
|
172
|
+
}
|
|
173
|
+
return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);
|
|
174
|
+
}
|
|
175
|
+
function readUNumeric64LE(buf, offset) {
|
|
176
|
+
offset = +offset;
|
|
177
|
+
if (buf.length < offset + 8) {
|
|
178
|
+
throw new NotEnoughDataError(offset + 8);
|
|
179
|
+
}
|
|
180
|
+
const low = buf.readUInt32LE(offset);
|
|
181
|
+
const high = buf.readUInt32LE(offset + 4);
|
|
182
|
+
return new Result(0x100000000 * high + low, offset + 8);
|
|
183
|
+
}
|
|
184
|
+
function readUNumeric96LE(buf, offset) {
|
|
185
|
+
offset = +offset;
|
|
186
|
+
if (buf.length < offset + 12) {
|
|
187
|
+
throw new NotEnoughDataError(offset + 12);
|
|
188
|
+
}
|
|
189
|
+
const dword1 = buf.readUInt32LE(offset);
|
|
190
|
+
const dword2 = buf.readUInt32LE(offset + 4);
|
|
191
|
+
const dword3 = buf.readUInt32LE(offset + 8);
|
|
192
|
+
return new Result(dword1 + 0x100000000 * dword2 + 0x100000000 * 0x100000000 * dword3, offset + 12);
|
|
193
|
+
}
|
|
194
|
+
function readUNumeric128LE(buf, offset) {
|
|
195
|
+
offset = +offset;
|
|
196
|
+
if (buf.length < offset + 16) {
|
|
197
|
+
throw new NotEnoughDataError(offset + 16);
|
|
198
|
+
}
|
|
199
|
+
const dword1 = buf.readUInt32LE(offset);
|
|
200
|
+
const dword2 = buf.readUInt32LE(offset + 4);
|
|
201
|
+
const dword3 = buf.readUInt32LE(offset + 8);
|
|
202
|
+
const dword4 = buf.readUInt32LE(offset + 12);
|
|
203
|
+
return new Result(dword1 + 0x100000000 * dword2 + 0x100000000 * 0x100000000 * dword3 + 0x100000000 * 0x100000000 * 0x100000000 * dword4, offset + 16);
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXN1bHQiLCJjb25zdHJ1Y3RvciIsInZhbHVlIiwib2Zmc2V0IiwiZXhwb3J0cyIsIk5vdEVub3VnaERhdGFFcnJvciIsIkVycm9yIiwiYnl0ZUNvdW50IiwicmVhZFVJbnQ4IiwiYnVmIiwibGVuZ3RoIiwicmVhZFVJbnQxNkxFIiwicmVhZEludDE2TEUiLCJyZWFkVUludDI0TEUiLCJyZWFkVUludExFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZFVJbnQ0MExFIiwicmVhZEludDMyTEUiLCJyZWFkQmlnVUludDY0TEUiLCJyZWFkQmlnSW50NjRMRSIsInJlYWRGbG9hdExFIiwicmVhZERvdWJsZUxFIiwicmVhZEJWYXJDaGFyIiwiY2hhckNvdW50IiwiYnl0ZUxlbmd0aCIsInRvU3RyaW5nIiwicmVhZEJWYXJCeXRlIiwic2xpY2UiLCJyZWFkVXNWYXJDaGFyIiwicmVhZFVzVmFyQnl0ZSIsInJlYWRVTnVtZXJpYzY0TEUiLCJsb3ciLCJoaWdoIiwicmVhZFVOdW1lcmljOTZMRSIsImR3b3JkMSIsImR3b3JkMiIsImR3b3JkMyIsInJlYWRVTnVtZXJpYzEyOExFIiwiZHdvcmQ0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2hlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJlc3VsdDxUPiB7XG4gIGRlY2xhcmUgdmFsdWU6IFQ7XG4gIGRlY2xhcmUgb2Zmc2V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQsIG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RFbm91Z2hEYXRhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGJ5dGVDb3VudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGJ5dGVDb3VudDogbnVtYmVyKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYnl0ZUNvdW50ID0gYnl0ZUNvdW50O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDgoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgMSkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgMSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZFVJbnQ4KG9mZnNldCksIG9mZnNldCArIDEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQxNkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDIpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDIpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50MTZMRShvZmZzZXQpLCBvZmZzZXQgKyAyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJbnQxNkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDIpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDIpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRJbnQxNkxFKG9mZnNldCksIG9mZnNldCArIDIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQyNExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDMpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50TEUob2Zmc2V0LCAzKSwgb2Zmc2V0ICsgMyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDMyTEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgNCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgNCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZFVJbnQzMkxFKG9mZnNldCksIG9mZnNldCArIDQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDQpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50MzJCRShvZmZzZXQpLCBvZmZzZXQgKyA0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVSW50NDBMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyA1KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyA1KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KGJ1Zi5yZWFkVUludExFKG9mZnNldCwgNSksIG9mZnNldCArIDUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJbnQzMkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDQpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRJbnQzMkxFKG9mZnNldCksIG9mZnNldCArIDQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEJpZ1VJbnQ2NExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxiaWdpbnQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRCaWdVSW50NjRMRShvZmZzZXQpLCBvZmZzZXQgKyA4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRCaWdJbnQ2NExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxiaWdpbnQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRCaWdJbnQ2NExFKG9mZnNldCksIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZsb2F0TEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgNCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgNCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZEZsb2F0TEUob2Zmc2V0KSwgb2Zmc2V0ICsgNCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRG91YmxlTEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgOCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgOCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZERvdWJsZUxFKG9mZnNldCksIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEJWYXJDaGFyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxzdHJpbmc+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgY2hhckNvdW50O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjaGFyQ291bnQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGJ5dGVMZW5ndGggPSBjaGFyQ291bnQgKiAyO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYudG9TdHJpbmcoJ3VjczInLCBvZmZzZXQsIG9mZnNldCArIGJ5dGVMZW5ndGgpLCBvZmZzZXQgKyBieXRlTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRCVmFyQnl0ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8QnVmZmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgbGV0IGJ5dGVMZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IGJ5dGVMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBieXRlTGVuZ3RoKSwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVXNWYXJDaGFyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxzdHJpbmc+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgY2hhckNvdW50O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjaGFyQ291bnQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGJ5dGVMZW5ndGggPSBjaGFyQ291bnQgKiAyO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYudG9TdHJpbmcoJ3VjczInLCBvZmZzZXQsIG9mZnNldCArIGJ5dGVMZW5ndGgpLCBvZmZzZXQgKyBieXRlTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVc1ZhckJ5dGUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PEJ1ZmZlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGxldCBieXRlTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBieXRlTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIGJ5dGVMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIGJ5dGVMZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCksIG9mZnNldCArIGJ5dGVMZW5ndGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVOdW1lcmljNjRMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyA4KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyA4KTtcbiAgfVxuXG4gIGNvbnN0IGxvdyA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgY29uc3QgaGlnaCA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgNCk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoKDB4MTAwMDAwMDAwICogaGlnaCkgKyBsb3csIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVOdW1lcmljOTZMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyAxMikge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgMTIpO1xuICB9XG5cbiAgY29uc3QgZHdvcmQxID0gYnVmLnJlYWRVSW50MzJMRShvZmZzZXQpO1xuICBjb25zdCBkd29yZDIgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCArIDQpO1xuICBjb25zdCBkd29yZDMgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCArIDgpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KGR3b3JkMSArICgweDEwMDAwMDAwMCAqIGR3b3JkMikgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkMyksIG9mZnNldCArIDEyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVTnVtZXJpYzEyOExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDE2KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyAxNik7XG4gIH1cblxuICBjb25zdCBkd29yZDEgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gIGNvbnN0IGR3b3JkMiA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgNCk7XG4gIGNvbnN0IGR3b3JkMyA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgOCk7XG4gIGNvbnN0IGR3b3JkNCA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgMTIpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KGR3b3JkMSArICgweDEwMDAwMDAwMCAqIGR3b3JkMikgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkMykgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIDB4MTAwMDAwMDAwICogZHdvcmQ0KSwgb2Zmc2V0ICsgMTYpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sTUFBTUEsTUFBTSxDQUFJO0VBSXJCQyxXQUFXQSxDQUFDQyxLQUFRLEVBQUVDLE1BQWMsRUFBRTtJQUNwQyxJQUFJLENBQUNELEtBQUssR0FBR0EsS0FBSztJQUNsQixJQUFJLENBQUNDLE1BQU0sR0FBR0EsTUFBTTtFQUN0QjtBQUNGO0FBQUNDLE9BQUEsQ0FBQUosTUFBQSxHQUFBQSxNQUFBO0FBRU0sTUFBTUssa0JBQWtCLFNBQVNDLEtBQUssQ0FBQztFQUM1Q0MsU0FBUztFQUVUTixXQUFXQSxD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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["Result","constructor","value","offset","exports","NotEnoughDataError","Error","byteCount","readUInt8","buf","length","readUInt16LE","readInt16LE","readUInt24LE","readUIntLE","readUInt32LE","readUInt32BE","readUInt40LE","readInt32LE","readBigUInt64LE","readBigInt64LE","readFloatLE","readDoubleLE","readBVarChar","charCount","byteLength","toString","readBVarByte","slice","readUsVarChar","readUsVarByte","readUNumeric64LE","low","high","readUNumeric96LE","dword1","dword2","dword3","readUNumeric128LE","dword4"],"sources":["../../src/token/helpers.ts"],"sourcesContent":["export class Result<T> {\n declare value: T;\n declare offset: number;\n\n constructor(value: T, offset: number) {\n this.value = value;\n this.offset = offset;\n }\n}\n\nexport class NotEnoughDataError extends Error {\n byteCount: number;\n\n constructor(byteCount: number) {\n super();\n\n this.byteCount = byteCount;\n }\n}\n\nexport function readUInt8(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 1) {\n throw new NotEnoughDataError(offset + 1);\n }\n\n return new Result(buf.readUInt8(offset), offset + 1);\n}\n\nexport function readUInt16LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 2) {\n throw new NotEnoughDataError(offset + 2);\n }\n\n return new Result(buf.readUInt16LE(offset), offset + 2);\n}\n\nexport function readInt16LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 2) {\n throw new NotEnoughDataError(offset + 2);\n }\n\n return new Result(buf.readInt16LE(offset), offset + 2);\n}\n\nexport function readUInt24LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 3) {\n throw new NotEnoughDataError(offset + 3);\n }\n\n return new Result(buf.readUIntLE(offset, 3), offset + 3);\n}\n\nexport function readUInt32LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readUInt32LE(offset), offset + 4);\n}\n\nexport function readUInt32BE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readUInt32BE(offset), offset + 4);\n}\n\nexport function readUInt40LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 5) {\n throw new NotEnoughDataError(offset + 5);\n }\n\n return new Result(buf.readUIntLE(offset, 5), offset + 5);\n}\nexport function readInt32LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readInt32LE(offset), offset + 4);\n}\n\nexport function readBigUInt64LE(buf: Buffer, offset: number): Result<bigint> {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n return new Result(buf.readBigUInt64LE(offset), offset + 8);\n}\n\nexport function readBigInt64LE(buf: Buffer, offset: number): Result<bigint> {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n return new Result(buf.readBigInt64LE(offset), offset + 8);\n}\n\nexport function readFloatLE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 4) {\n throw new NotEnoughDataError(offset + 4);\n }\n\n return new Result(buf.readFloatLE(offset), offset + 4);\n}\n\nexport function readDoubleLE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n return new Result(buf.readDoubleLE(offset), offset + 8);\n}\n\nexport function readBVarChar(buf: Buffer, offset: number): Result<string> {\n offset = +offset;\n\n let charCount;\n ({ offset, value: charCount } = readUInt8(buf, offset));\n\n const byteLength = charCount * 2;\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readBVarByte(buf: Buffer, offset: number): Result<Buffer> {\n offset = +offset;\n\n let byteLength;\n ({ offset, value: byteLength } = readUInt8(buf, offset));\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readUsVarChar(buf: Buffer, offset: number): Result<string> {\n offset = +offset;\n\n let charCount;\n ({ offset, value: charCount } = readUInt16LE(buf, offset));\n\n const byteLength = charCount * 2;\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readUsVarByte(buf: Buffer, offset: number): Result<Buffer> {\n offset = +offset;\n\n let byteLength;\n ({ offset, value: byteLength } = readUInt16LE(buf, offset));\n\n if (buf.length < offset + byteLength) {\n throw new NotEnoughDataError(offset + byteLength);\n }\n\n return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);\n}\n\nexport function readUNumeric64LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 8) {\n throw new NotEnoughDataError(offset + 8);\n }\n\n const low = buf.readUInt32LE(offset);\n const high = buf.readUInt32LE(offset + 4);\n\n return new Result((0x100000000 * high) + low, offset + 8);\n}\n\nexport function readUNumeric96LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 12) {\n throw new NotEnoughDataError(offset + 12);\n }\n\n const dword1 = buf.readUInt32LE(offset);\n const dword2 = buf.readUInt32LE(offset + 4);\n const dword3 = buf.readUInt32LE(offset + 8);\n\n return new Result(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3), offset + 12);\n}\n\nexport function readUNumeric128LE(buf: Buffer, offset: number): Result<number> {\n offset = +offset;\n\n if (buf.length < offset + 16) {\n throw new NotEnoughDataError(offset + 16);\n }\n\n const dword1 = buf.readUInt32LE(offset);\n const dword2 = buf.readUInt32LE(offset + 4);\n const dword3 = buf.readUInt32LE(offset + 8);\n const dword4 = buf.readUInt32LE(offset + 12);\n\n return new Result(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3) + (0x100000000 * 0x100000000 * 0x100000000 * dword4), offset + 16);\n}\n"],"mappings":"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"}
|