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.
Files changed (45) hide show
  1. package/lib/connection.js +4 -4
  2. package/lib/connection.js.map +1 -1
  3. package/lib/data-types/date.js +2 -2
  4. package/lib/data-types/date.js.map +1 -1
  5. package/lib/message-io.js +2 -2
  6. package/lib/message-io.js.map +1 -1
  7. package/lib/metadata-parser.js +361 -241
  8. package/lib/metadata-parser.js.map +1 -1
  9. package/lib/request.js +3 -3
  10. package/lib/request.js.map +1 -1
  11. package/lib/token/colmetadata-token-parser.js +103 -74
  12. package/lib/token/colmetadata-token-parser.js.map +1 -1
  13. package/lib/token/done-token-parser.js +52 -40
  14. package/lib/token/done-token-parser.js.map +1 -1
  15. package/lib/token/env-change-token-parser.js +110 -81
  16. package/lib/token/env-change-token-parser.js.map +1 -1
  17. package/lib/token/feature-ext-ack-parser.js +30 -22
  18. package/lib/token/feature-ext-ack-parser.js.map +1 -1
  19. package/lib/token/fedauth-info-parser.js +47 -30
  20. package/lib/token/fedauth-info-parser.js.map +1 -1
  21. package/lib/token/helpers.js +205 -0
  22. package/lib/token/helpers.js.map +1 -0
  23. package/lib/token/infoerror-token-parser.js +69 -36
  24. package/lib/token/infoerror-token-parser.js.map +1 -1
  25. package/lib/token/loginack-token-parser.js +59 -31
  26. package/lib/token/loginack-token-parser.js.map +1 -1
  27. package/lib/token/nbcrow-token-parser.js +60 -23
  28. package/lib/token/nbcrow-token-parser.js.map +1 -1
  29. package/lib/token/order-token-parser.js +22 -20
  30. package/lib/token/order-token-parser.js.map +1 -1
  31. package/lib/token/returnstatus-token-parser.js +9 -5
  32. package/lib/token/returnstatus-token-parser.js.map +1 -1
  33. package/lib/token/returnvalue-token-parser.js +79 -22
  34. package/lib/token/returnvalue-token-parser.js.map +1 -1
  35. package/lib/token/row-token-parser.js +50 -20
  36. package/lib/token/row-token-parser.js.map +1 -1
  37. package/lib/token/sspi-token-parser.js +14 -5
  38. package/lib/token/sspi-token-parser.js.map +1 -1
  39. package/lib/token/stream-parser.js +292 -324
  40. package/lib/token/stream-parser.js.map +1 -1
  41. package/lib/token/token.js +1 -1
  42. package/lib/token/token.js.map +1 -1
  43. package/lib/value-parser.js +655 -438
  44. package/lib/value-parser.js.map +1 -1
  45. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"colmetadata-token-parser.js","names":["_metadataParser","_interopRequireDefault","require","_token","obj","__esModule","default","readTableName","parser","options","metadata","callback","type","hasTableName","tdsVersion","readUInt8","numberOfTableNameParts","tableName","i","next","done","readUsVarChar","part","push","undefined","readColumnName","index","readBVarChar","colName","columnNameReplacer","camelCaseColumns","replace","s","toLowerCase","readColumn","metadataParse","userType","flags","collation","precision","scale","udtInfo","dataLength","schema","colMetadataParser","buffer","length","position","streamBuffer","waitForChunk","columnCount","readUInt16LE","columns","column","c","suspended","ColMetadataToken","_default","exports","module"],"sources":["../../src/token/colmetadata-token-parser.ts"],"sourcesContent":["import metadataParse, { type Metadata } from '../metadata-parser';\n\nimport Parser, { type ParserOptions } from './stream-parser';\nimport { ColMetadataToken } from './token';\n\nexport interface ColumnMetadata extends Metadata {\n /**\n * The column's name。\n */\n colName: string;\n\n tableName?: string | string[] | undefined;\n}\n\nfunction readTableName(parser: Parser, options: ParserOptions, metadata: Metadata, callback: (tableName?: string | string[]) => void) {\n if (metadata.type.hasTableName) {\n if (options.tdsVersion >= '7_2') {\n parser.readUInt8((numberOfTableNameParts) => {\n const tableName: string[] = [];\n\n let i = 0;\n function next(done: () => void) {\n if (numberOfTableNameParts === i) {\n return done();\n }\n\n parser.readUsVarChar((part) => {\n tableName.push(part);\n\n i++;\n\n next(done);\n });\n }\n\n next(() => {\n callback(tableName);\n });\n });\n } else {\n parser.readUsVarChar(callback);\n }\n } else {\n callback(undefined);\n }\n}\n\nfunction readColumnName(parser: Parser, options: ParserOptions, index: number, metadata: Metadata, callback: (colName: string) => void) {\n parser.readBVarChar((colName) => {\n if (options.columnNameReplacer) {\n callback(options.columnNameReplacer(colName, index, metadata));\n } else if (options.camelCaseColumns) {\n callback(colName.replace(/^[A-Z]/, function(s) {\n return s.toLowerCase();\n }));\n } else {\n callback(colName);\n }\n });\n}\n\nfunction readColumn(parser: Parser, options: ParserOptions, index: number, callback: (column: ColumnMetadata) => void) {\n metadataParse(parser, options, (metadata) => {\n readTableName(parser, options, metadata, (tableName) => {\n readColumnName(parser, options, index, metadata, (colName) => {\n callback({\n userType: metadata.userType,\n flags: metadata.flags,\n type: metadata.type,\n collation: metadata.collation,\n precision: metadata.precision,\n scale: metadata.scale,\n udtInfo: metadata.udtInfo,\n dataLength: metadata.dataLength,\n schema: metadata.schema,\n colName: colName,\n tableName: tableName\n });\n });\n });\n });\n}\n\nasync function colMetadataParser(parser: Parser): Promise<ColMetadataToken> {\n while (parser.buffer.length - parser.position < 2) {\n await parser.streamBuffer.waitForChunk();\n }\n\n const columnCount = parser.buffer.readUInt16LE(parser.position);\n parser.position += 2;\n\n const columns: ColumnMetadata[] = [];\n for (let i = 0; i < columnCount; i++) {\n let column: ColumnMetadata;\n\n readColumn(parser, parser.options, i, (c) => {\n column = c;\n });\n\n while (parser.suspended) {\n await parser.streamBuffer.waitForChunk();\n\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n }\n\n columns.push(column!);\n }\n\n return new ColMetadataToken(columns);\n}\n\nexport default colMetadataParser;\nmodule.exports = colMetadataParser;\n"],"mappings":"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"}
1
+ {"version":3,"file":"colmetadata-token-parser.js","names":["_metadataParser","require","_token","_helpers","readTableName","buf","offset","metadata","options","type","hasTableName","Result","undefined","tdsVersion","readUsVarChar","numberOfTableNameParts","value","readUInt8","tableName","i","tableNamePart","push","readColumnName","index","colName","readBVarChar","columnNameReplacer","camelCaseColumns","replace","s","toLowerCase","readColumn","readMetadata","userType","flags","collation","precision","scale","udtInfo","dataLength","schema","colMetadataParser","parser","columnCount","readUInt16LE","buffer","position","err","NotEnoughDataError","waitForChunk","columns","column","ColMetadataToken","_default","exports","default","module"],"sources":["../../src/token/colmetadata-token-parser.ts"],"sourcesContent":["import { readMetadata, type Metadata } from '../metadata-parser';\n\nimport Parser, { type ParserOptions } from './stream-parser';\nimport { ColMetadataToken } from './token';\nimport { NotEnoughDataError, Result, readBVarChar, readUInt16LE, readUInt8, readUsVarChar } from './helpers';\n\nexport interface ColumnMetadata extends Metadata {\n /**\n * The column's name。\n */\n colName: string;\n\n tableName?: string | string[] | undefined;\n}\n\nfunction readTableName(buf: Buffer, offset: number, metadata: Metadata, options: ParserOptions): Result<string | string[] | undefined> {\n if (!metadata.type.hasTableName) {\n return new Result(undefined, offset);\n }\n\n if (options.tdsVersion < '7_2') {\n return readUsVarChar(buf, offset);\n }\n\n let numberOfTableNameParts;\n ({ offset, value: numberOfTableNameParts } = readUInt8(buf, offset));\n\n const tableName: string[] = [];\n for (let i = 0; i < numberOfTableNameParts; i++) {\n let tableNamePart;\n ({ offset, value: tableNamePart } = readUsVarChar(buf, offset));\n\n tableName.push(tableNamePart);\n }\n\n return new Result(tableName, offset);\n}\n\nfunction readColumnName(buf: Buffer, offset: number, index: number, metadata: Metadata, options: ParserOptions): Result<string> {\n let colName;\n ({ offset, value: colName } = readBVarChar(buf, offset));\n\n if (options.columnNameReplacer) {\n return new Result(options.columnNameReplacer(colName, index, metadata), offset);\n } else if (options.camelCaseColumns) {\n return new Result(colName.replace(/^[A-Z]/, function(s) {\n return s.toLowerCase();\n }), offset);\n } else {\n return new Result(colName, offset);\n }\n}\n\nfunction readColumn(buf: Buffer, offset: number, options: ParserOptions, index: number) {\n let metadata;\n ({ offset, value: metadata } = readMetadata(buf, offset, options));\n\n let tableName;\n ({ offset, value: tableName } = readTableName(buf, offset, metadata, options));\n\n let colName;\n ({ offset, value: colName } = readColumnName(buf, offset, index, metadata, options));\n\n return new Result({\n userType: metadata.userType,\n flags: metadata.flags,\n type: metadata.type,\n collation: metadata.collation,\n precision: metadata.precision,\n scale: metadata.scale,\n udtInfo: metadata.udtInfo,\n dataLength: metadata.dataLength,\n schema: metadata.schema,\n colName: colName,\n tableName: tableName\n }, offset);\n}\n\nasync function colMetadataParser(parser: Parser): Promise<ColMetadataToken> {\n let columnCount;\n\n while (true) {\n let offset;\n\n try {\n ({ offset, value: columnCount } = readUInt16LE(parser.buffer, parser.position));\n } catch (err) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = offset;\n break;\n }\n\n const columns: ColumnMetadata[] = [];\n for (let i = 0; i < columnCount; i++) {\n while (true) {\n let column: ColumnMetadata;\n let offset;\n\n try {\n ({ offset, value: column } = readColumn(parser.buffer, parser.position, parser.options, i));\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = offset;\n columns.push(column);\n\n break;\n }\n }\n\n return new ColMetadataToken(columns);\n}\n\nexport default colMetadataParser;\nmodule.exports = colMetadataParser;\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ exports.doneInProcParser = doneInProcParser;
7
7
  exports.doneParser = doneParser;
8
8
  exports.doneProcParser = doneProcParser;
9
9
  var _token = require("./token");
10
+ var _helpers = require("./helpers");
10
11
  // s2.2.7.5/6/7
11
12
 
12
13
  const STATUS = {
@@ -18,47 +19,58 @@ const STATUS = {
18
19
  ATTN: 0x0020,
19
20
  SRVERROR: 0x0100
20
21
  };
21
- function parseToken(parser, options, callback) {
22
- parser.readUInt16LE(status => {
23
- const more = !!(status & STATUS.MORE);
24
- const sqlError = !!(status & STATUS.ERROR);
25
- const rowCountValid = !!(status & STATUS.COUNT);
26
- const attention = !!(status & STATUS.ATTN);
27
- const serverError = !!(status & STATUS.SRVERROR);
28
- parser.readUInt16LE(curCmd => {
29
- const next = rowCount => {
30
- callback({
31
- more: more,
32
- sqlError: sqlError,
33
- attention: attention,
34
- serverError: serverError,
35
- rowCount: rowCountValid ? rowCount : undefined,
36
- curCmd: curCmd
37
- });
38
- };
39
- if (options.tdsVersion < '7_2') {
40
- parser.readUInt32LE(next);
41
- } else {
42
- parser.readBigUInt64LE(rowCount => {
43
- next(Number(rowCount));
44
- });
45
- }
46
- });
47
- });
22
+ function readToken(buf, offset, options) {
23
+ let status;
24
+ ({
25
+ offset,
26
+ value: status
27
+ } = (0, _helpers.readUInt16LE)(buf, offset));
28
+ const more = !!(status & STATUS.MORE);
29
+ const sqlError = !!(status & STATUS.ERROR);
30
+ const rowCountValid = !!(status & STATUS.COUNT);
31
+ const attention = !!(status & STATUS.ATTN);
32
+ const serverError = !!(status & STATUS.SRVERROR);
33
+ let curCmd;
34
+ ({
35
+ offset,
36
+ value: curCmd
37
+ } = (0, _helpers.readUInt16LE)(buf, offset));
38
+ let rowCount;
39
+ ({
40
+ offset,
41
+ value: rowCount
42
+ } = (options.tdsVersion < '7_2' ? _helpers.readUInt32LE : _helpers.readBigUInt64LE)(buf, offset));
43
+ return new _helpers.Result({
44
+ more: more,
45
+ sqlError: sqlError,
46
+ attention: attention,
47
+ serverError: serverError,
48
+ rowCount: rowCountValid ? Number(rowCount) : undefined,
49
+ curCmd: curCmd
50
+ }, offset);
48
51
  }
49
- function doneParser(parser, options, callback) {
50
- parseToken(parser, options, data => {
51
- callback(new _token.DoneToken(data));
52
- });
52
+ function doneParser(buf, offset, options) {
53
+ let value;
54
+ ({
55
+ offset,
56
+ value
57
+ } = readToken(buf, offset, options));
58
+ return new _helpers.Result(new _token.DoneToken(value), offset);
53
59
  }
54
- function doneInProcParser(parser, options, callback) {
55
- parseToken(parser, options, data => {
56
- callback(new _token.DoneInProcToken(data));
57
- });
60
+ function doneInProcParser(buf, offset, options) {
61
+ let value;
62
+ ({
63
+ offset,
64
+ value
65
+ } = readToken(buf, offset, options));
66
+ return new _helpers.Result(new _token.DoneInProcToken(value), offset);
58
67
  }
59
- function doneProcParser(parser, options, callback) {
60
- parseToken(parser, options, data => {
61
- callback(new _token.DoneProcToken(data));
62
- });
68
+ function doneProcParser(buf, offset, options) {
69
+ let value;
70
+ ({
71
+ offset,
72
+ value
73
+ } = readToken(buf, offset, options));
74
+ return new _helpers.Result(new _token.DoneProcToken(value), offset);
63
75
  }
64
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiU1RBVFVTIiwiTU9SRSIsIkVSUk9SIiwiSU5YQUNUIiwiQ09VTlQiLCJBVFROIiwiU1JWRVJST1IiLCJwYXJzZVRva2VuIiwicGFyc2VyIiwib3B0aW9ucyIsImNhbGxiYWNrIiwicmVhZFVJbnQxNkxFIiwic3RhdHVzIiwibW9yZSIsInNxbEVycm9yIiwicm93Q291bnRWYWxpZCIsImF0dGVudGlvbiIsInNlcnZlckVycm9yIiwiY3VyQ21kIiwibmV4dCIsInJvd0NvdW50IiwidW5kZWZpbmVkIiwidGRzVmVyc2lvbiIsInJlYWRVSW50MzJMRSIsInJlYWRCaWdVSW50NjRMRSIsIk51bWJlciIsImRvbmVQYXJzZXIiLCJkYXRhIiwiRG9uZVRva2VuIiwiZG9uZUluUHJvY1BhcnNlciIsIkRvbmVJblByb2NUb2tlbiIsImRvbmVQcm9jUGFyc2VyIiwiRG9uZVByb2NUb2tlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9kb25lLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2VyLCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyBEb25lVG9rZW4sIERvbmVJblByb2NUb2tlbiwgRG9uZVByb2NUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG4vLyBzMi4yLjcuNS82LzdcblxuY29uc3QgU1RBVFVTID0ge1xuICBNT1JFOiAweDAwMDEsXG4gIEVSUk9SOiAweDAwMDIsXG4gIC8vIFRoaXMgYml0IGlzIG5vdCB5ZXQgaW4gdXNlIGJ5IFNRTCBTZXJ2ZXIsIHNvIGlzIG5vdCBleHBvc2VkIGluIHRoZSByZXR1cm5lZCB0b2tlblxuICBJTlhBQ1Q6IDB4MDAwNCxcbiAgQ09VTlQ6IDB4MDAxMCxcbiAgQVRUTjogMHgwMDIwLFxuICBTUlZFUlJPUjogMHgwMTAwXG59O1xuXG5pbnRlcmZhY2UgVG9rZW5EYXRhIHtcbiAgbW9yZTogYm9vbGVhbjtcbiAgc3FsRXJyb3I6IGJvb2xlYW47XG4gIGF0dGVudGlvbjogYm9vbGVhbjtcbiAgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGN1ckNtZDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRva2VuKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKGRhdGE6IFRva2VuRGF0YSkgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQxNkxFKChzdGF0dXMpID0+IHtcbiAgICBjb25zdCBtb3JlID0gISEoc3RhdHVzICYgU1RBVFVTLk1PUkUpO1xuICAgIGNvbnN0IHNxbEVycm9yID0gISEoc3RhdHVzICYgU1RBVFVTLkVSUk9SKTtcbiAgICBjb25zdCByb3dDb3VudFZhbGlkID0gISEoc3RhdHVzICYgU1RBVFVTLkNPVU5UKTtcbiAgICBjb25zdCBhdHRlbnRpb24gPSAhIShzdGF0dXMgJiBTVEFUVVMuQVRUTik7XG4gICAgY29uc3Qgc2VydmVyRXJyb3IgPSAhIShzdGF0dXMgJiBTVEFUVVMuU1JWRVJST1IpO1xuXG4gICAgcGFyc2VyLnJlYWRVSW50MTZMRSgoY3VyQ21kKSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gKHJvd0NvdW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgIG1vcmU6IG1vcmUsXG4gICAgICAgICAgc3FsRXJyb3I6IHNxbEVycm9yLFxuICAgICAgICAgIGF0dGVudGlvbjogYXR0ZW50aW9uLFxuICAgICAgICAgIHNlcnZlckVycm9yOiBzZXJ2ZXJFcnJvcixcbiAgICAgICAgICByb3dDb3VudDogcm93Q291bnRWYWxpZCA/IHJvd0NvdW50IDogdW5kZWZpbmVkLFxuICAgICAgICAgIGN1ckNtZDogY3VyQ21kXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICAgIHBhcnNlci5yZWFkVUludDMyTEUobmV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZXIucmVhZEJpZ1VJbnQ2NExFKChyb3dDb3VudCkgPT4ge1xuICAgICAgICAgIG5leHQoTnVtYmVyKHJvd0NvdW50KSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvbmVQYXJzZXIocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IERvbmVUb2tlbikgPT4gdm9pZCkge1xuICBwYXJzZVRva2VuKHBhcnNlciwgb3B0aW9ucywgKGRhdGEpID0+IHtcbiAgICBjYWxsYmFjayhuZXcgRG9uZVRva2VuKGRhdGEpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb25lSW5Qcm9jUGFyc2VyKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VUb2tlbihwYXJzZXIsIG9wdGlvbnMsIChkYXRhKSA9PiB7XG4gICAgY2FsbGJhY2sobmV3IERvbmVJblByb2NUb2tlbihkYXRhKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVByb2NQYXJzZXIocGFyc2VyOiBQYXJzZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGNhbGxiYWNrOiAodG9rZW46IERvbmVQcm9jVG9rZW4pID0+IHZvaWQpIHtcbiAgcGFyc2VUb2tlbihwYXJzZXIsIG9wdGlvbnMsIChkYXRhKSA9PiB7XG4gICAgY2FsbGJhY2sobmV3IERvbmVQcm9jVG9rZW4oZGF0YSkpO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQTs7QUFFQSxNQUFNQyxNQUFNLEdBQUc7RUFDYkMsSUFBSSxFQUFF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
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJTVEFUVVMiLCJNT1JFIiwiRVJST1IiLCJJTlhBQ1QiLCJDT1VOVCIsIkFUVE4iLCJTUlZFUlJPUiIsInJlYWRUb2tlbiIsImJ1ZiIsIm9mZnNldCIsIm9wdGlvbnMiLCJzdGF0dXMiLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsIm1vcmUiLCJzcWxFcnJvciIsInJvd0NvdW50VmFsaWQiLCJhdHRlbnRpb24iLCJzZXJ2ZXJFcnJvciIsImN1ckNtZCIsInJvd0NvdW50IiwidGRzVmVyc2lvbiIsInJlYWRVSW50MzJMRSIsInJlYWRCaWdVSW50NjRMRSIsIlJlc3VsdCIsIk51bWJlciIsInVuZGVmaW5lZCIsImRvbmVQYXJzZXIiLCJEb25lVG9rZW4iLCJkb25lSW5Qcm9jUGFyc2VyIiwiRG9uZUluUHJvY1Rva2VuIiwiZG9uZVByb2NQYXJzZXIiLCJEb25lUHJvY1Rva2VuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2RvbmUtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyBEb25lVG9rZW4sIERvbmVJblByb2NUb2tlbiwgRG9uZVByb2NUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgUmVzdWx0LCByZWFkQmlnVUludDY0TEUsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQzMkxFIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLy8gczIuMi43LjUvNi83XG5cbmNvbnN0IFNUQVRVUyA9IHtcbiAgTU9SRTogMHgwMDAxLFxuICBFUlJPUjogMHgwMDAyLFxuICAvLyBUaGlzIGJpdCBpcyBub3QgeWV0IGluIHVzZSBieSBTUUwgU2VydmVyLCBzbyBpcyBub3QgZXhwb3NlZCBpbiB0aGUgcmV0dXJuZWQgdG9rZW5cbiAgSU5YQUNUOiAweDAwMDQsXG4gIENPVU5UOiAweDAwMTAsXG4gIEFUVE46IDB4MDAyMCxcbiAgU1JWRVJST1I6IDB4MDEwMFxufTtcblxuaW50ZXJmYWNlIFRva2VuRGF0YSB7XG4gIG1vcmU6IGJvb2xlYW47XG4gIHNxbEVycm9yOiBib29sZWFuO1xuICBhdHRlbnRpb246IGJvb2xlYW47XG4gIHNlcnZlckVycm9yOiBib29sZWFuO1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjdXJDbWQ6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVhZFRva2VuKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxUb2tlbkRhdGE+IHtcbiAgbGV0IHN0YXR1cztcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc3RhdHVzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBjb25zdCBtb3JlID0gISEoc3RhdHVzICYgU1RBVFVTLk1PUkUpO1xuICBjb25zdCBzcWxFcnJvciA9ICEhKHN0YXR1cyAmIFNUQVRVUy5FUlJPUik7XG4gIGNvbnN0IHJvd0NvdW50VmFsaWQgPSAhIShzdGF0dXMgJiBTVEFUVVMuQ09VTlQpO1xuICBjb25zdCBhdHRlbnRpb24gPSAhIShzdGF0dXMgJiBTVEFUVVMuQVRUTik7XG4gIGNvbnN0IHNlcnZlckVycm9yID0gISEoc3RhdHVzICYgU1RBVFVTLlNSVkVSUk9SKTtcblxuICBsZXQgY3VyQ21kO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjdXJDbWQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCByb3dDb3VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcm93Q291bnQgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MzJMRSA6IHJlYWRCaWdVSW50NjRMRSkoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbW9yZTogbW9yZSxcbiAgICBzcWxFcnJvcjogc3FsRXJyb3IsXG4gICAgYXR0ZW50aW9uOiBhdHRlbnRpb24sXG4gICAgc2VydmVyRXJyb3I6IHNlcnZlckVycm9yLFxuICAgIHJvd0NvdW50OiByb3dDb3VudFZhbGlkID8gTnVtYmVyKHJvd0NvdW50KSA6IHVuZGVmaW5lZCxcbiAgICBjdXJDbWQ6IGN1ckNtZFxuICB9LCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVBhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RG9uZVRva2VuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEb25lVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZUluUHJvY1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RG9uZUluUHJvY1Rva2VuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEb25lSW5Qcm9jVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVByb2NQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PERvbmVQcm9jVG9rZW4+IHtcbiAgbGV0IHZhbHVlO1xuICAoeyBvZmZzZXQsIHZhbHVlIH0gPSByZWFkVG9rZW4oYnVmLCBvZmZzZXQsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERvbmVQcm9jVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuIl0sIm1hcHBpbmdzIjoi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
@@ -1 +1 @@
1
- {"version":3,"file":"done-token-parser.js","names":["_token","require","STATUS","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","parseToken","parser","options","callback","readUInt16LE","status","more","sqlError","rowCountValid","attention","serverError","curCmd","next","rowCount","undefined","tdsVersion","readUInt32LE","readBigUInt64LE","Number","doneParser","data","DoneToken","doneInProcParser","DoneInProcToken","doneProcParser","DoneProcToken"],"sources":["../../src/token/done-token-parser.ts"],"sourcesContent":["import Parser, { type ParserOptions } from './stream-parser';\nimport { DoneToken, DoneInProcToken, DoneProcToken } from './token';\n\n// s2.2.7.5/6/7\n\nconst STATUS = {\n MORE: 0x0001,\n ERROR: 0x0002,\n // This bit is not yet in use by SQL Server, so is not exposed in the returned token\n INXACT: 0x0004,\n COUNT: 0x0010,\n ATTN: 0x0020,\n SRVERROR: 0x0100\n};\n\ninterface TokenData {\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n}\n\nfunction parseToken(parser: Parser, options: ParserOptions, callback: (data: TokenData) => void) {\n parser.readUInt16LE((status) => {\n const more = !!(status & STATUS.MORE);\n const sqlError = !!(status & STATUS.ERROR);\n const rowCountValid = !!(status & STATUS.COUNT);\n const attention = !!(status & STATUS.ATTN);\n const serverError = !!(status & STATUS.SRVERROR);\n\n parser.readUInt16LE((curCmd) => {\n const next = (rowCount: number) => {\n callback({\n more: more,\n sqlError: sqlError,\n attention: attention,\n serverError: serverError,\n rowCount: rowCountValid ? rowCount : undefined,\n curCmd: curCmd\n });\n };\n\n if (options.tdsVersion < '7_2') {\n parser.readUInt32LE(next);\n } else {\n parser.readBigUInt64LE((rowCount) => {\n next(Number(rowCount));\n });\n }\n });\n });\n}\n\nexport function doneParser(parser: Parser, options: ParserOptions, callback: (token: DoneToken) => void) {\n parseToken(parser, options, (data) => {\n callback(new DoneToken(data));\n });\n}\n\nexport function doneInProcParser(parser: Parser, options: ParserOptions, callback: (token: DoneInProcToken) => void) {\n parseToken(parser, options, (data) => {\n callback(new DoneInProcToken(data));\n });\n}\n\nexport function doneProcParser(parser: Parser, options: ParserOptions, callback: (token: DoneProcToken) => void) {\n parseToken(parser, options, (data) => {\n callback(new DoneProcToken(data));\n });\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA;;AAEA,MAAMC,MAAM,GAAG;EACbC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,MAAM;EACb;EACAC,MAAM,EAAE,MAAM;EACdC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE;AACZ,CAAC;AAWD,SAASC,UAAUA,CAACC,MAAc,EAAEC,OAAsB,EAAEC,QAAmC,EAAE;EAC/FF,MAAM,CAACG,YAAY,CAAEC,MAAM,IAAK;IAC9B,MAAMC,IAAI,GAAG,CAAC,EAAED,MAAM,GAAGZ,MAAM,CAACC,IAAI,CAAC;IACrC,MAAMa,QAAQ,GAAG,CAAC,EAAEF,MAAM,GAAGZ,MAAM,CAACE,KAAK,CAAC;IAC1C,MAAMa,aAAa,GAAG,CAAC,EAAEH,MAAM,GAAGZ,MAAM,CAACI,KAAK,CAAC;IAC/C,MAAMY,SAAS,GAAG,CAAC,EAAEJ,MAAM,GAAGZ,MAAM,CAACK,IAAI,CAAC;IAC1C,MAAMY,WAAW,GAAG,CAAC,EAAEL,MAAM,GAAGZ,MAAM,CAACM,QAAQ,CAAC;IAEhDE,MAAM,CAACG,YAAY,CAAEO,MAAM,IAAK;MAC9B,MAAMC,IAAI,GAAIC,QAAgB,IAAK;QACjCV,QAAQ,CAAC;UACPG,IAAI,EAAEA,IAAI;UACVC,QAAQ,EAAEA,QAAQ;UAClBE,SAAS,EAAEA,SAAS;UACpBC,WAAW,EAAEA,WAAW;UACxBG,QAAQ,EAAEL,aAAa,GAAGK,QAAQ,GAAGC,SAAS;UAC9CH,MAAM,EAAEA;QACV,CAAC,CAAC;MACJ,CAAC;MAED,IAAIT,OAAO,CAACa,UAAU,GAAG,KAAK,EAAE;QAC9Bd,MAAM,CAACe,YAAY,CAACJ,IAAI,CAAC;MAC3B,CAAC,MAAM;QACLX,MAAM,CAACgB,eAAe,CAAEJ,QAAQ,IAAK;UACnCD,IAAI,CAACM,MAAM,CAACL,QAAQ,CAAC,CAAC;QACxB,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEO,SAASM,UAAUA,CAAClB,MAAc,EAAEC,OAAsB,EAAEC,QAAoC,EAAE;EACvGH,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAGkB,IAAI,IAAK;IACpCjB,QAAQ,CAAC,IAAIkB,gBAAS,CAACD,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC;AACJ;AAEO,SAASE,gBAAgBA,CAACrB,MAAc,EAAEC,OAAsB,EAAEC,QAA0C,EAAE;EACnHH,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAGkB,IAAI,IAAK;IACpCjB,QAAQ,CAAC,IAAIoB,sBAAe,CAACH,IAAI,CAAC,CAAC;EACrC,CAAC,CAAC;AACJ;AAEO,SAASI,cAAcA,CAACvB,MAAc,EAAEC,OAAsB,EAAEC,QAAwC,EAAE;EAC/GH,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAGkB,IAAI,IAAK;IACpCjB,QAAQ,CAAC,IAAIsB,oBAAa,CAACL,IAAI,CAAC,CAAC;EACnC,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"done-token-parser.js","names":["_token","require","_helpers","STATUS","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","readToken","buf","offset","options","status","value","readUInt16LE","more","sqlError","rowCountValid","attention","serverError","curCmd","rowCount","tdsVersion","readUInt32LE","readBigUInt64LE","Result","Number","undefined","doneParser","DoneToken","doneInProcParser","DoneInProcToken","doneProcParser","DoneProcToken"],"sources":["../../src/token/done-token-parser.ts"],"sourcesContent":["import { type ParserOptions } from './stream-parser';\nimport { DoneToken, DoneInProcToken, DoneProcToken } from './token';\nimport { Result, readBigUInt64LE, readUInt16LE, readUInt32LE } from './helpers';\n\n// s2.2.7.5/6/7\n\nconst STATUS = {\n MORE: 0x0001,\n ERROR: 0x0002,\n // This bit is not yet in use by SQL Server, so is not exposed in the returned token\n INXACT: 0x0004,\n COUNT: 0x0010,\n ATTN: 0x0020,\n SRVERROR: 0x0100\n};\n\ninterface TokenData {\n more: boolean;\n sqlError: boolean;\n attention: boolean;\n serverError: boolean;\n rowCount: number | undefined;\n curCmd: number;\n}\n\nfunction readToken(buf: Buffer, offset: number, options: ParserOptions): Result<TokenData> {\n let status;\n ({ offset, value: status } = readUInt16LE(buf, offset));\n\n const more = !!(status & STATUS.MORE);\n const sqlError = !!(status & STATUS.ERROR);\n const rowCountValid = !!(status & STATUS.COUNT);\n const attention = !!(status & STATUS.ATTN);\n const serverError = !!(status & STATUS.SRVERROR);\n\n let curCmd;\n ({ offset, value: curCmd } = readUInt16LE(buf, offset));\n\n let rowCount;\n ({ offset, value: rowCount } = (options.tdsVersion < '7_2' ? readUInt32LE : readBigUInt64LE)(buf, offset));\n\n return new Result({\n more: more,\n sqlError: sqlError,\n attention: attention,\n serverError: serverError,\n rowCount: rowCountValid ? Number(rowCount) : undefined,\n curCmd: curCmd\n }, offset);\n}\n\nexport function doneParser(buf: Buffer, offset: number, options: ParserOptions): Result<DoneToken> {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneToken(value), offset);\n}\n\nexport function doneInProcParser(buf: Buffer, offset: number, options: ParserOptions): Result<DoneInProcToken> {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneInProcToken(value), offset);\n}\n\nexport function doneProcParser(buf: Buffer, offset: number, options: ParserOptions): Result<DoneProcToken> {\n let value;\n ({ offset, value } = readToken(buf, offset, options));\n return new Result(new DoneProcToken(value), offset);\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA;;AAEA,MAAME,MAAM,GAAG;EACbC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,MAAM;EACb;EACAC,MAAM,EAAE,MAAM;EACdC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE;AACZ,CAAC;AAWD,SAASC,SAASA,CAACC,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAqB;EACzF,IAAIC,MAAM;EACV,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAO,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAEtD,MAAMK,IAAI,GAAG,CAAC,EAAEH,MAAM,GAAGX,MAAM,CAACC,IAAI,CAAC;EACrC,MAAMc,QAAQ,GAAG,CAAC,EAAEJ,MAAM,GAAGX,MAAM,CAACE,KAAK,CAAC;EAC1C,MAAMc,aAAa,GAAG,CAAC,EAAEL,MAAM,GAAGX,MAAM,CAACI,KAAK,CAAC;EAC/C,MAAMa,SAAS,GAAG,CAAC,EAAEN,MAAM,GAAGX,MAAM,CAACK,IAAI,CAAC;EAC1C,MAAMa,WAAW,GAAG,CAAC,EAAEP,MAAM,GAAGX,MAAM,CAACM,QAAQ,CAAC;EAEhD,IAAIa,MAAM;EACV,CAAC;IAAEV,MAAM;IAAEG,KAAK,EAAEO;EAAO,CAAC,GAAG,IAAAN,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAEtD,IAAIW,QAAQ;EACZ,CAAC;IAAEX,MAAM;IAAEG,KAAK,EAAEQ;EAAS,CAAC,GAAG,CAACV,OAAO,CAACW,UAAU,GAAG,KAAK,GAAGC,qBAAY,GAAGC,wBAAe,EAAEf,GAAG,EAAEC,MAAM,CAAC;EAEzG,OAAO,IAAIe,eAAM,CAAC;IAChBV,IAAI,EAAEA,IAAI;IACVC,QAAQ,EAAEA,QAAQ;IAClBE,SAAS,EAAEA,SAAS;IACpBC,WAAW,EAAEA,WAAW;IACxBE,QAAQ,EAAEJ,aAAa,GAAGS,MAAM,CAACL,QAAQ,CAAC,GAAGM,SAAS;IACtDP,MAAM,EAAEA;EACV,CAAC,EAAEV,MAAM,CAAC;AACZ;AAEO,SAASkB,UAAUA,CAACnB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAqB;EACjG,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAII,gBAAS,CAAChB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACjD;AAEO,SAASoB,gBAAgBA,CAACrB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAA2B;EAC7G,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAIM,sBAAe,CAAClB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACvD;AAEO,SAASsB,cAAcA,CAACvB,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAAyB;EACzG,IAAIE,KAAK;EACT,CAAC;IAAEH,MAAM;IAAEG;EAAM,CAAC,GAAGL,SAAS,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACpD,OAAO,IAAIc,eAAM,CAAC,IAAIQ,oBAAa,CAACpB,KAAK,CAAC,EAAEH,MAAM,CAAC;AACrD"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _collation = require("../collation");
8
8
  var _token = require("./token");
9
+ var _helpers = require("./helpers");
9
10
  const types = {
10
11
  1: {
11
12
  name: 'DATABASE',
@@ -55,108 +56,136 @@ const types = {
55
56
  event: 'routingChange'
56
57
  }
57
58
  };
58
- function readNewAndOldValue(parser, length, type, callback) {
59
+ function _readNewAndOldValue(buf, offset, length, type) {
59
60
  switch (type.name) {
60
61
  case 'DATABASE':
61
62
  case 'LANGUAGE':
62
63
  case 'CHARSET':
63
64
  case 'PACKET_SIZE':
64
65
  case 'DATABASE_MIRRORING_PARTNER':
65
- return parser.readBVarChar(newValue => {
66
- parser.readBVarChar(oldValue => {
67
- switch (type.name) {
68
- case 'PACKET_SIZE':
69
- return callback(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)));
70
- case 'DATABASE':
71
- return callback(new _token.DatabaseEnvChangeToken(newValue, oldValue));
72
- case 'LANGUAGE':
73
- return callback(new _token.LanguageEnvChangeToken(newValue, oldValue));
74
- case 'CHARSET':
75
- return callback(new _token.CharsetEnvChangeToken(newValue, oldValue));
76
- case 'DATABASE_MIRRORING_PARTNER':
77
- return callback(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue));
78
- }
79
- });
80
- });
66
+ {
67
+ let newValue;
68
+ ({
69
+ offset,
70
+ value: newValue
71
+ } = (0, _helpers.readBVarChar)(buf, offset));
72
+ let oldValue;
73
+ ({
74
+ offset,
75
+ value: oldValue
76
+ } = (0, _helpers.readBVarChar)(buf, offset));
77
+ switch (type.name) {
78
+ case 'PACKET_SIZE':
79
+ return new _helpers.Result(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)), offset);
80
+ case 'DATABASE':
81
+ return new _helpers.Result(new _token.DatabaseEnvChangeToken(newValue, oldValue), offset);
82
+ case 'LANGUAGE':
83
+ return new _helpers.Result(new _token.LanguageEnvChangeToken(newValue, oldValue), offset);
84
+ case 'CHARSET':
85
+ return new _helpers.Result(new _token.CharsetEnvChangeToken(newValue, oldValue), offset);
86
+ case 'DATABASE_MIRRORING_PARTNER':
87
+ return new _helpers.Result(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue), offset);
88
+ }
89
+ throw new Error('unreachable');
90
+ }
81
91
  case 'SQL_COLLATION':
82
92
  case 'BEGIN_TXN':
83
93
  case 'COMMIT_TXN':
84
94
  case 'ROLLBACK_TXN':
85
95
  case 'RESET_CONNECTION':
86
- return parser.readBVarByte(newValue => {
87
- parser.readBVarByte(oldValue => {
88
- switch (type.name) {
89
- case 'SQL_COLLATION':
90
- {
91
- const newCollation = newValue.length ? _collation.Collation.fromBuffer(newValue) : undefined;
92
- const oldCollation = oldValue.length ? _collation.Collation.fromBuffer(oldValue) : undefined;
93
- return callback(new _token.CollationChangeToken(newCollation, oldCollation));
94
- }
95
- case 'BEGIN_TXN':
96
- return callback(new _token.BeginTransactionEnvChangeToken(newValue, oldValue));
97
- case 'COMMIT_TXN':
98
- return callback(new _token.CommitTransactionEnvChangeToken(newValue, oldValue));
99
- case 'ROLLBACK_TXN':
100
- return callback(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue));
101
- case 'RESET_CONNECTION':
102
- return callback(new _token.ResetConnectionEnvChangeToken(newValue, oldValue));
103
- }
104
- });
105
- });
96
+ {
97
+ let newValue;
98
+ ({
99
+ offset,
100
+ value: newValue
101
+ } = (0, _helpers.readBVarByte)(buf, offset));
102
+ let oldValue;
103
+ ({
104
+ offset,
105
+ value: oldValue
106
+ } = (0, _helpers.readBVarByte)(buf, offset));
107
+ switch (type.name) {
108
+ case 'SQL_COLLATION':
109
+ {
110
+ const newCollation = newValue.length ? _collation.Collation.fromBuffer(newValue) : undefined;
111
+ const oldCollation = oldValue.length ? _collation.Collation.fromBuffer(oldValue) : undefined;
112
+ return new _helpers.Result(new _token.CollationChangeToken(newCollation, oldCollation), offset);
113
+ }
114
+ case 'BEGIN_TXN':
115
+ return new _helpers.Result(new _token.BeginTransactionEnvChangeToken(newValue, oldValue), offset);
116
+ case 'COMMIT_TXN':
117
+ return new _helpers.Result(new _token.CommitTransactionEnvChangeToken(newValue, oldValue), offset);
118
+ case 'ROLLBACK_TXN':
119
+ return new _helpers.Result(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue), offset);
120
+ case 'RESET_CONNECTION':
121
+ return new _helpers.Result(new _token.ResetConnectionEnvChangeToken(newValue, oldValue), offset);
122
+ }
123
+ throw new Error('unreachable');
124
+ }
106
125
  case 'ROUTING_CHANGE':
107
- return parser.readUInt16LE(valueLength => {
126
+ {
127
+ let routePacket;
128
+ ({
129
+ offset,
130
+ value: routePacket
131
+ } = (0, _helpers.readUsVarByte)(buf, offset));
132
+ let oldValue;
133
+ ({
134
+ offset,
135
+ value: oldValue
136
+ } = (0, _helpers.readUsVarByte)(buf, offset));
137
+
108
138
  // Routing Change:
109
139
  // Byte 1: Protocol (must be 0)
110
140
  // Bytes 2-3 (USHORT): Port number
111
141
  // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)
112
142
  // Bytes 6-*: Server name in unicode characters
113
- parser.readBuffer(valueLength, routePacket => {
114
- const protocol = routePacket.readUInt8(0);
115
- if (protocol !== 0) {
116
- throw new Error('Unknown protocol byte in routing change event');
117
- }
118
- const port = routePacket.readUInt16LE(1);
119
- const serverLen = routePacket.readUInt16LE(3);
120
- // 2 bytes per char, starting at offset 5
121
- const server = routePacket.toString('ucs2', 5, 5 + serverLen * 2);
122
- const newValue = {
123
- protocol: protocol,
124
- port: port,
125
- server: server
126
- };
127
- parser.readUInt16LE(oldValueLength => {
128
- parser.readBuffer(oldValueLength, oldValue => {
129
- callback(new _token.RoutingEnvChangeToken(newValue, oldValue));
130
- });
131
- });
132
- });
133
- });
143
+ const protocol = routePacket.readUInt8(0);
144
+ if (protocol !== 0) {
145
+ throw new Error('Unknown protocol byte in routing change event');
146
+ }
147
+ const port = routePacket.readUInt16LE(1);
148
+ const serverLen = routePacket.readUInt16LE(3);
149
+ // 2 bytes per char, starting at offset 5
150
+ const server = routePacket.toString('ucs2', 5, 5 + serverLen * 2);
151
+ const newValue = {
152
+ protocol: protocol,
153
+ port: port,
154
+ server: server
155
+ };
156
+ return new _helpers.Result(new _token.RoutingEnvChangeToken(newValue, oldValue), offset);
157
+ }
134
158
  default:
135
- console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);
136
- // skip unknown bytes
137
- parser.readBuffer(length - 1, () => {
138
- callback(undefined);
139
- });
140
- }
141
- }
142
- function envChangeParser(parser, _options, callback) {
143
- parser.readUInt16LE(length => {
144
- parser.readUInt8(typeNumber => {
145
- const type = types[typeNumber];
146
- if (!type) {
147
- console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);
159
+ {
160
+ console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);
161
+
148
162
  // skip unknown bytes
149
- return parser.readBuffer(length - 1, () => {
150
- callback(undefined);
151
- });
163
+ return new _helpers.Result(undefined, offset + length - 1);
152
164
  }
153
- readNewAndOldValue(parser, length, type, token => {
154
- callback(token);
155
- });
156
- });
157
- });
165
+ }
166
+ }
167
+ function envChangeParser(buf, offset, _options) {
168
+ let tokenLength;
169
+ ({
170
+ offset,
171
+ value: tokenLength
172
+ } = (0, _helpers.readUInt16LE)(buf, offset));
173
+ if (buf.length < offset + tokenLength) {
174
+ throw new _helpers.NotEnoughDataError(offset + tokenLength);
175
+ }
176
+ let typeNumber;
177
+ ({
178
+ offset,
179
+ value: typeNumber
180
+ } = (0, _helpers.readUInt8)(buf, offset));
181
+ const type = types[typeNumber];
182
+ if (!type) {
183
+ console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);
184
+ return new _helpers.Result(undefined, offset + tokenLength - 1);
185
+ }
186
+ return _readNewAndOldValue(buf, offset, tokenLength, type);
158
187
  }
159
188
  var _default = envChangeParser;
160
189
  exports.default = _default;
161
190
  module.exports = envChangeParser;
162
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl90b2tlbiIsInR5cGVzIiwibmFtZSIsImV2ZW50IiwicmVhZE5ld0FuZE9sZFZhbHVlIiwicGFyc2VyIiwibGVuZ3RoIiwidHlwZSIsImNhbGxiYWNrIiwicmVhZEJWYXJDaGFyIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsIlBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiIsInBhcnNlSW50IiwiRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiIsIkxhbmd1YWdlRW52Q2hhbmdlVG9rZW4iLCJDaGFyc2V0RW52Q2hhbmdlVG9rZW4iLCJEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiIsInJlYWRCVmFyQnl0ZSIsIm5ld0NvbGxhdGlvbiIsIkNvbGxhdGlvbiIsImZyb21CdWZmZXIiLCJ1bmRlZmluZWQiLCJvbGRDb2xsYXRpb24iLCJDb2xsYXRpb25DaGFuZ2VUb2tlbiIsIkJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIkNvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbiIsInJlYWRVSW50MTZMRSIsInZhbHVlTGVuZ3RoIiwicmVhZEJ1ZmZlciIsInJvdXRlUGFja2V0IiwicHJvdG9jb2wiLCJyZWFkVUludDgiLCJFcnJvciIsInBvcnQiLCJzZXJ2ZXJMZW4iLCJzZXJ2ZXIiLCJ0b1N0cmluZyIsIm9sZFZhbHVlTGVuZ3RoIiwiUm91dGluZ0VudkNoYW5nZVRva2VuIiwiY29uc29sZSIsImVycm9yIiwiZW52Q2hhbmdlUGFyc2VyIiwiX29wdGlvbnMiLCJ0eXBlTnVtYmVyIiwidG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2Vudi1jaGFuZ2UtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIsIHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5cbmltcG9ydCB7XG4gIERhdGFiYXNlRW52Q2hhbmdlVG9rZW4sXG4gIExhbmd1YWdlRW52Q2hhbmdlVG9rZW4sXG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbixcbiAgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuLFxuICBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4sXG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuLFxuICBSb3V0aW5nRW52Q2hhbmdlVG9rZW4sXG4gIENvbGxhdGlvbkNoYW5nZVRva2VuXG59IGZyb20gJy4vdG9rZW4nO1xuXG50eXBlIEVudkNoYW5nZVRva2VuID1cbiAgRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiB8XG4gIExhbmd1YWdlRW52Q2hhbmdlVG9rZW4gfFxuICBDaGFyc2V0RW52Q2hhbmdlVG9rZW4gfFxuICBQYWNrZXRTaXplRW52Q2hhbmdlVG9rZW4gfFxuICBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIHxcbiAgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIHxcbiAgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4gfFxuICBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbiB8XG4gIFJvdXRpbmdFbnZDaGFuZ2VUb2tlbiB8XG4gIENvbGxhdGlvbkNoYW5nZVRva2VuO1xuXG5jb25zdCB0eXBlczogeyBba2V5OiBudW1iZXJdOiB7IG5hbWU6IHN0cmluZywgZXZlbnQ/OiBzdHJpbmcgfX0gPSB7XG4gIDE6IHtcbiAgICBuYW1lOiAnREFUQUJBU0UnLFxuICAgIGV2ZW50OiAnZGF0YWJhc2VDaGFuZ2UnXG4gIH0sXG4gIDI6IHtcbiAgICBuYW1lOiAnTEFOR1VBR0UnLFxuICAgIGV2ZW50OiAnbGFuZ3VhZ2VDaGFuZ2UnXG4gIH0sXG4gIDM6IHtcbiAgICBuYW1lOiAnQ0hBUlNFVCcsXG4gICAgZXZlbnQ6ICdjaGFyc2V0Q2hhbmdlJ1xuICB9LFxuICA0OiB7XG4gICAgbmFtZTogJ1BBQ0tFVF9TSVpFJyxcbiAgICBldmVudDogJ3BhY2tldFNpemVDaGFuZ2UnXG4gIH0sXG4gIDc6IHtcbiAgICBuYW1lOiAnU1FMX0NPTExBVElPTicsXG4gICAgZXZlbnQ6ICdzcWxDb2xsYXRpb25DaGFuZ2UnXG4gIH0sXG4gIDg6IHtcbiAgICBuYW1lOiAnQkVHSU5fVFhOJyxcbiAgICBldmVudDogJ2JlZ2luVHJhbnNhY3Rpb24nXG4gIH0sXG4gIDk6IHtcbiAgICBuYW1lOiAnQ09NTUlUX1RYTicsXG4gICAgZXZlbnQ6ICdjb21taXRUcmFuc2FjdGlvbidcbiAgfSxcbiAgMTA6IHtcbiAgICBuYW1lOiAnUk9MTEJBQ0tfVFhOJyxcbiAgICBldmVudDogJ3JvbGxiYWNrVHJhbnNhY3Rpb24nXG4gIH0sXG4gIDEzOiB7XG4gICAgbmFtZTogJ0RBVEFCQVNFX01JUlJPUklOR19QQVJUTkVSJyxcbiAgICBldmVudDogJ3BhcnRuZXJOb2RlJ1xuICB9LFxuICAxNzoge1xuICAgIG5hbWU6ICdUWE5fRU5ERUQnXG4gIH0sXG4gIDE4OiB7XG4gICAgbmFtZTogJ1JFU0VUX0NPTk5FQ1RJT04nLFxuICAgIGV2ZW50OiAncmVzZXRDb25uZWN0aW9uJ1xuICB9LFxuICAyMDoge1xuICAgIG5hbWU6ICdST1VUSU5HX0NIQU5HRScsXG4gICAgZXZlbnQ6ICdyb3V0aW5nQ2hhbmdlJ1xuICB9XG59O1xuXG5mdW5jdGlvbiByZWFkTmV3QW5kT2xkVmFsdWUocGFyc2VyOiBQYXJzZXIsIGxlbmd0aDogbnVtYmVyLCB0eXBlOiB7IG5hbWU6IHN0cmluZywgZXZlbnQ/OiBzdHJpbmcgfSwgY2FsbGJhY2s6ICh0b2tlbjogRW52Q2hhbmdlVG9rZW4gfCB1bmRlZmluZWQpID0+IHZvaWQpIHtcbiAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgY2FzZSAnTEFOR1VBR0UnOlxuICAgIGNhc2UgJ0NIQVJTRVQnOlxuICAgIGNhc2UgJ1BBQ0tFVF9TSVpFJzpcbiAgICBjYXNlICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUic6XG4gICAgICByZXR1cm4gcGFyc2VyLnJlYWRCVmFyQ2hhcigobmV3VmFsdWUpID0+IHtcbiAgICAgICAgcGFyc2VyLnJlYWRCVmFyQ2hhcigob2xkVmFsdWUpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnUEFDS0VUX1NJWkUnOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbihwYXJzZUludChuZXdWYWx1ZSksIHBhcnNlSW50KG9sZFZhbHVlKSkpO1xuXG4gICAgICAgICAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcblxuICAgICAgICAgICAgY2FzZSAnTEFOR1VBR0UnOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ0NIQVJTRVQnOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IENoYXJzZXRFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcblxuICAgICAgICAgICAgY2FzZSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IERhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGNhc2UgJ1NRTF9DT0xMQVRJT04nOlxuICAgIGNhc2UgJ0JFR0lOX1RYTic6XG4gICAgY2FzZSAnQ09NTUlUX1RYTic6XG4gICAgY2FzZSAnUk9MTEJBQ0tfVFhOJzpcbiAgICBjYXNlICdSRVNFVF9DT05ORUNUSU9OJzpcbiAgICAgIHJldHVybiBwYXJzZXIucmVhZEJWYXJCeXRlKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBwYXJzZXIucmVhZEJWYXJCeXRlKChvbGRWYWx1ZSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdTUUxfQ09MTEFUSU9OJzoge1xuICAgICAgICAgICAgICBjb25zdCBuZXdDb2xsYXRpb24gPSBuZXdWYWx1ZS5sZW5ndGggPyBDb2xsYXRpb24uZnJvbUJ1ZmZlcihuZXdWYWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGNvbnN0IG9sZENvbGxhdGlvbiA9IG9sZFZhbHVlLmxlbmd0aCA/IENvbGxhdGlvbi5mcm9tQnVmZmVyKG9sZFZhbHVlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IENvbGxhdGlvbkNoYW5nZVRva2VuKG5ld0NvbGxhdGlvbiwgb2xkQ29sbGF0aW9uKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ0JFR0lOX1RYTic6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuXG4gICAgICAgICAgICBjYXNlICdDT01NSVRfVFhOJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuXG4gICAgICAgICAgICBjYXNlICdST0xMQkFDS19UWE4nOlxuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpKTtcblxuICAgICAgICAgICAgY2FzZSAnUkVTRVRfQ09OTkVDVElPTic6XG4gICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnUk9VVElOR19DSEFOR0UnOlxuICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDE2TEUoKHZhbHVlTGVuZ3RoKSA9PiB7XG4gICAgICAgIC8vIFJvdXRpbmcgQ2hhbmdlOlxuICAgICAgICAvLyBCeXRlIDE6IFByb3RvY29sIChtdXN0IGJlIDApXG4gICAgICAgIC8vIEJ5dGVzIDItMyAoVVNIT1JUKTogUG9ydCBudW1iZXJcbiAgICAgICAgLy8gQnl0ZXMgNC01IChVU0hPUlQpOiBMZW5ndGggb2Ygc2VydmVyIGRhdGEgaW4gdW5pY29kZSAoMmJ5dGUgY2hhcnMpXG4gICAgICAgIC8vIEJ5dGVzIDYtKjogU2VydmVyIG5hbWUgaW4gdW5pY29kZSBjaGFyYWN0ZXJzXG4gICAgICAgIHBhcnNlci5yZWFkQnVmZmVyKHZhbHVlTGVuZ3RoLCAocm91dGVQYWNrZXQpID0+IHtcbiAgICAgICAgICBjb25zdCBwcm90b2NvbCA9IHJvdXRlUGFja2V0LnJlYWRVSW50OCgwKTtcblxuICAgICAgICAgIGlmIChwcm90b2NvbCAhPT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByb3RvY29sIGJ5dGUgaW4gcm91dGluZyBjaGFuZ2UgZXZlbnQnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBwb3J0ID0gcm91dGVQYWNrZXQucmVhZFVJbnQxNkxFKDEpO1xuICAgICAgICAgIGNvbnN0IHNlcnZlckxlbiA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgzKTtcbiAgICAgICAgICAvLyAyIGJ5dGVzIHBlciBjaGFyLCBzdGFydGluZyBhdCBvZmZzZXQgNVxuICAgICAgICAgIGNvbnN0IHNlcnZlciA9IHJvdXRlUGFja2V0LnRvU3RyaW5nKCd1Y3MyJywgNSwgNSArIChzZXJ2ZXJMZW4gKiAyKSk7XG5cbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgICAgICAgIHByb3RvY29sOiBwcm90b2NvbCxcbiAgICAgICAgICAgIHBvcnQ6IHBvcnQsXG4gICAgICAgICAgICBzZXJ2ZXI6IHNlcnZlclxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBwYXJzZXIucmVhZFVJbnQxNkxFKChvbGRWYWx1ZUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgcGFyc2VyLnJlYWRCdWZmZXIob2xkVmFsdWVMZW5ndGgsIChvbGRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgUm91dGluZ0VudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgY29uc29sZS5lcnJvcignVGVkaW91cyA+IFVuc3VwcG9ydGVkIEVOVkNIQU5HRSB0eXBlICcgKyB0eXBlLm5hbWUpO1xuICAgICAgLy8gc2tpcCB1bmtub3duIGJ5dGVzXG4gICAgICBwYXJzZXIucmVhZEJ1ZmZlcihsZW5ndGggLSAxLCAoKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCk7XG4gICAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbnZDaGFuZ2VQYXJzZXIocGFyc2VyOiBQYXJzZXIsIF9vcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKHRva2VuOiBFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZCkgPT4gdm9pZCkge1xuICBwYXJzZXIucmVhZFVJbnQxNkxFKChsZW5ndGgpID0+IHtcbiAgICBwYXJzZXIucmVhZFVJbnQ4KCh0eXBlTnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCB0eXBlID0gdHlwZXNbdHlwZU51bWJlcl07XG5cbiAgICAgIGlmICghdHlwZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUZWRpb3VzID4gVW5zdXBwb3J0ZWQgRU5WQ0hBTkdFIHR5cGUgJyArIHR5cGVOdW1iZXIpO1xuICAgICAgICAvLyBza2lwIHVua25vd24gYnl0ZXNcbiAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkQnVmZmVyKGxlbmd0aCAtIDEsICgpID0+IHtcbiAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmVhZE5ld0FuZE9sZFZhbHVlKHBhcnNlciwgbGVuZ3RoLCB0eXBlLCAodG9rZW4pID0+IHtcbiAgICAgICAgY2FsbGJhY2sodG9rZW4pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlbnZDaGFuZ2VQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGVudkNoYW5nZVBhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBMkJBLE1BQU1FLEtBQXlELEdBQUc7RUFDaEUsQ0FBQyxFQUFFO0lBQ0RDLElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFD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
191
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl90b2tlbiIsIl9oZWxwZXJzIiwidHlwZXMiLCJuYW1lIiwiZXZlbnQiLCJfcmVhZE5ld0FuZE9sZFZhbHVlIiwiYnVmIiwib2Zmc2V0IiwibGVuZ3RoIiwidHlwZSIsIm5ld1ZhbHVlIiwidmFsdWUiLCJyZWFkQlZhckNoYXIiLCJvbGRWYWx1ZSIsIlJlc3VsdCIsIlBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiIsInBhcnNlSW50IiwiRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiIsIkxhbmd1YWdlRW52Q2hhbmdlVG9rZW4iLCJDaGFyc2V0RW52Q2hhbmdlVG9rZW4iLCJEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiIsIkVycm9yIiwicmVhZEJWYXJCeXRlIiwibmV3Q29sbGF0aW9uIiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsInVuZGVmaW5lZCIsIm9sZENvbGxhdGlvbiIsIkNvbGxhdGlvbkNoYW5nZVRva2VuIiwiQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIiwicm91dGVQYWNrZXQiLCJyZWFkVXNWYXJCeXRlIiwicHJvdG9jb2wiLCJyZWFkVUludDgiLCJwb3J0IiwicmVhZFVJbnQxNkxFIiwic2VydmVyTGVuIiwic2VydmVyIiwidG9TdHJpbmciLCJSb3V0aW5nRW52Q2hhbmdlVG9rZW4iLCJjb25zb2xlIiwiZXJyb3IiLCJlbnZDaGFuZ2VQYXJzZXIiLCJfb3B0aW9ucyIsInRva2VuTGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwidHlwZU51bWJlciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vZW52LWNoYW5nZS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5cbmltcG9ydCB7XG4gIERhdGFiYXNlRW52Q2hhbmdlVG9rZW4sXG4gIExhbmd1YWdlRW52Q2hhbmdlVG9rZW4sXG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbixcbiAgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuLFxuICBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4sXG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuLFxuICBSb3V0aW5nRW52Q2hhbmdlVG9rZW4sXG4gIENvbGxhdGlvbkNoYW5nZVRva2VuLFxuICB0eXBlIEVudkNoYW5nZVRva2VuXG59IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQnl0ZSwgcmVhZEJWYXJDaGFyLCByZWFkVUludDE2TEUsIHJlYWRVSW50OCwgcmVhZFVzVmFyQnl0ZSwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3QgdHlwZXM6IHsgW2tleTogbnVtYmVyXTogeyBuYW1lOiBzdHJpbmcsIGV2ZW50Pzogc3RyaW5nIH19ID0ge1xuICAxOiB7XG4gICAgbmFtZTogJ0RBVEFCQVNFJyxcbiAgICBldmVudDogJ2RhdGFiYXNlQ2hhbmdlJ1xuICB9LFxuICAyOiB7XG4gICAgbmFtZTogJ0xBTkdVQUdFJyxcbiAgICBldmVudDogJ2xhbmd1YWdlQ2hhbmdlJ1xuICB9LFxuICAzOiB7XG4gICAgbmFtZTogJ0NIQVJTRVQnLFxuICAgIGV2ZW50OiAnY2hhcnNldENoYW5nZSdcbiAgfSxcbiAgNDoge1xuICAgIG5hbWU6ICdQQUNLRVRfU0laRScsXG4gICAgZXZlbnQ6ICdwYWNrZXRTaXplQ2hhbmdlJ1xuICB9LFxuICA3OiB7XG4gICAgbmFtZTogJ1NRTF9DT0xMQVRJT04nLFxuICAgIGV2ZW50OiAnc3FsQ29sbGF0aW9uQ2hhbmdlJ1xuICB9LFxuICA4OiB7XG4gICAgbmFtZTogJ0JFR0lOX1RYTicsXG4gICAgZXZlbnQ6ICdiZWdpblRyYW5zYWN0aW9uJ1xuICB9LFxuICA5OiB7XG4gICAgbmFtZTogJ0NPTU1JVF9UWE4nLFxuICAgIGV2ZW50OiAnY29tbWl0VHJhbnNhY3Rpb24nXG4gIH0sXG4gIDEwOiB7XG4gICAgbmFtZTogJ1JPTExCQUNLX1RYTicsXG4gICAgZXZlbnQ6ICdyb2xsYmFja1RyYW5zYWN0aW9uJ1xuICB9LFxuICAxMzoge1xuICAgIG5hbWU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUicsXG4gICAgZXZlbnQ6ICdwYXJ0bmVyTm9kZSdcbiAgfSxcbiAgMTc6IHtcbiAgICBuYW1lOiAnVFhOX0VOREVEJ1xuICB9LFxuICAxODoge1xuICAgIG5hbWU6ICdSRVNFVF9DT05ORUNUSU9OJyxcbiAgICBldmVudDogJ3Jlc2V0Q29ubmVjdGlvbidcbiAgfSxcbiAgMjA6IHtcbiAgICBuYW1lOiAnUk9VVElOR19DSEFOR0UnLFxuICAgIGV2ZW50OiAncm91dGluZ0NoYW5nZSdcbiAgfVxufTtcblxuZnVuY3Rpb24gX3JlYWROZXdBbmRPbGRWYWx1ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCB0eXBlOiB7IG5hbWU6IHN0cmluZywgZXZlbnQ/OiBzdHJpbmcgfSk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ0RBVEFCQVNFJzpcbiAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgY2FzZSAnQ0hBUlNFVCc6XG4gICAgY2FzZSAnUEFDS0VUX1NJWkUnOlxuICAgIGNhc2UgJ0RBVEFCQVNFX01JUlJPUklOR19QQVJUTkVSJzoge1xuICAgICAgbGV0IG5ld1ZhbHVlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogbmV3VmFsdWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgb2xkVmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBvbGRWYWx1ZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgIGNhc2UgJ1BBQ0tFVF9TSVpFJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKHBhcnNlSW50KG5ld1ZhbHVlKSwgcGFyc2VJbnQob2xkVmFsdWUpKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERhdGFiYXNlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdDSEFSU0VUJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgQ2hhcnNldEVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuXG4gICAgY2FzZSAnU1FMX0NPTExBVElPTic6XG4gICAgY2FzZSAnQkVHSU5fVFhOJzpcbiAgICBjYXNlICdDT01NSVRfVFhOJzpcbiAgICBjYXNlICdST0xMQkFDS19UWE4nOlxuICAgIGNhc2UgJ1JFU0VUX0NPTk5FQ1RJT04nOiB7XG4gICAgICBsZXQgbmV3VmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBuZXdWYWx1ZSB9ID0gcmVhZEJWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkQlZhckJ5dGUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgY2FzZSAnU1FMX0NPTExBVElPTic6IHtcbiAgICAgICAgICBjb25zdCBuZXdDb2xsYXRpb24gPSBuZXdWYWx1ZS5sZW5ndGggPyBDb2xsYXRpb24uZnJvbUJ1ZmZlcihuZXdWYWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3Qgb2xkQ29sbGF0aW9uID0gb2xkVmFsdWUubGVuZ3RoID8gQ29sbGF0aW9uLmZyb21CdWZmZXIob2xkVmFsdWUpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IENvbGxhdGlvbkNoYW5nZVRva2VuKG5ld0NvbGxhdGlvbiwgb2xkQ29sbGF0aW9uKSwgb2Zmc2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ0JFR0lOX1RYTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuXG4gICAgICAgIGNhc2UgJ0NPTU1JVF9UWE4nOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUk9MTEJBQ0tfVFhOJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUkVTRVRfQ09OTkVDVElPTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG5cbiAgICBjYXNlICdST1VUSU5HX0NIQU5HRSc6IHtcbiAgICAgIGxldCByb3V0ZVBhY2tldDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHJvdXRlUGFja2V0IH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIC8vIFJvdXRpbmcgQ2hhbmdlOlxuICAgICAgLy8gQnl0ZSAxOiBQcm90b2NvbCAobXVzdCBiZSAwKVxuICAgICAgLy8gQnl0ZXMgMi0zIChVU0hPUlQpOiBQb3J0IG51bWJlclxuICAgICAgLy8gQnl0ZXMgNC01IChVU0hPUlQpOiBMZW5ndGggb2Ygc2VydmVyIGRhdGEgaW4gdW5pY29kZSAoMmJ5dGUgY2hhcnMpXG4gICAgICAvLyBCeXRlcyA2LSo6IFNlcnZlciBuYW1lIGluIHVuaWNvZGUgY2hhcmFjdGVyc1xuICAgICAgY29uc3QgcHJvdG9jb2wgPSByb3V0ZVBhY2tldC5yZWFkVUludDgoMCk7XG4gICAgICBpZiAocHJvdG9jb2wgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByb3RvY29sIGJ5dGUgaW4gcm91dGluZyBjaGFuZ2UgZXZlbnQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcG9ydCA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgxKTtcbiAgICAgIGNvbnN0IHNlcnZlckxlbiA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgzKTtcbiAgICAgIC8vIDIgYnl0ZXMgcGVyIGNoYXIsIHN0YXJ0aW5nIGF0IG9mZnNldCA1XG4gICAgICBjb25zdCBzZXJ2ZXIgPSByb3V0ZVBhY2tldC50b1N0cmluZygndWNzMicsIDUsIDUgKyAoc2VydmVyTGVuICogMikpO1xuXG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICBzZXJ2ZXI6IHNlcnZlclxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJvdXRpbmdFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZS5uYW1lKTtcblxuICAgICAgLy8gc2tpcCB1bmtub3duIGJ5dGVzXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCArIGxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnZDaGFuZ2VQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBsZXQgdG9rZW5MZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRva2VuTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIHRva2VuTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyB0b2tlbkxlbmd0aCk7XG4gIH1cblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZSA9IHR5cGVzW3R5cGVOdW1iZXJdO1xuXG4gIGlmICghdHlwZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZU51bWJlcik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodW5kZWZpbmVkLCBvZmZzZXQgKyB0b2tlbkxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIF9yZWFkTmV3QW5kT2xkVmFsdWUoYnVmLCBvZmZzZXQsIHRva2VuTGVuZ3RoLCB0eXBlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW52Q2hhbmdlUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBlbnZDaGFuZ2VQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQWVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLE1BQU1HLEtBQXlELEdBQUc7RUFDaEUsQ0FBQyxFQUFFO0lBQ0RDLElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxTQUFTO0lBQ2ZDLEtBQUssRUFBRTtFQUNULENBQUM7RUFDRCxDQUFDLEVBQUU7SUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"env-change-token-parser.js","names":["_collation","require","_token","types","name","event","readNewAndOldValue","parser","length","type","callback","readBVarChar","newValue","oldValue","PacketSizeEnvChangeToken","parseInt","DatabaseEnvChangeToken","LanguageEnvChangeToken","CharsetEnvChangeToken","DatabaseMirroringPartnerEnvChangeToken","readBVarByte","newCollation","Collation","fromBuffer","undefined","oldCollation","CollationChangeToken","BeginTransactionEnvChangeToken","CommitTransactionEnvChangeToken","RollbackTransactionEnvChangeToken","ResetConnectionEnvChangeToken","readUInt16LE","valueLength","readBuffer","routePacket","protocol","readUInt8","Error","port","serverLen","server","toString","oldValueLength","RoutingEnvChangeToken","console","error","envChangeParser","_options","typeNumber","token","_default","exports","default","module"],"sources":["../../src/token/env-change-token-parser.ts"],"sourcesContent":["import Parser, { type ParserOptions } from './stream-parser';\nimport { Collation } from '../collation';\n\nimport {\n DatabaseEnvChangeToken,\n LanguageEnvChangeToken,\n CharsetEnvChangeToken,\n PacketSizeEnvChangeToken,\n BeginTransactionEnvChangeToken,\n CommitTransactionEnvChangeToken,\n RollbackTransactionEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n ResetConnectionEnvChangeToken,\n RoutingEnvChangeToken,\n CollationChangeToken\n} from './token';\n\ntype EnvChangeToken =\n DatabaseEnvChangeToken |\n LanguageEnvChangeToken |\n CharsetEnvChangeToken |\n PacketSizeEnvChangeToken |\n BeginTransactionEnvChangeToken |\n CommitTransactionEnvChangeToken |\n RollbackTransactionEnvChangeToken |\n DatabaseMirroringPartnerEnvChangeToken |\n ResetConnectionEnvChangeToken |\n RoutingEnvChangeToken |\n CollationChangeToken;\n\nconst types: { [key: number]: { name: string, event?: string }} = {\n 1: {\n name: 'DATABASE',\n event: 'databaseChange'\n },\n 2: {\n name: 'LANGUAGE',\n event: 'languageChange'\n },\n 3: {\n name: 'CHARSET',\n event: 'charsetChange'\n },\n 4: {\n name: 'PACKET_SIZE',\n event: 'packetSizeChange'\n },\n 7: {\n name: 'SQL_COLLATION',\n event: 'sqlCollationChange'\n },\n 8: {\n name: 'BEGIN_TXN',\n event: 'beginTransaction'\n },\n 9: {\n name: 'COMMIT_TXN',\n event: 'commitTransaction'\n },\n 10: {\n name: 'ROLLBACK_TXN',\n event: 'rollbackTransaction'\n },\n 13: {\n name: 'DATABASE_MIRRORING_PARTNER',\n event: 'partnerNode'\n },\n 17: {\n name: 'TXN_ENDED'\n },\n 18: {\n name: 'RESET_CONNECTION',\n event: 'resetConnection'\n },\n 20: {\n name: 'ROUTING_CHANGE',\n event: 'routingChange'\n }\n};\n\nfunction readNewAndOldValue(parser: Parser, length: number, type: { name: string, event?: string }, callback: (token: EnvChangeToken | undefined) => void) {\n switch (type.name) {\n case 'DATABASE':\n case 'LANGUAGE':\n case 'CHARSET':\n case 'PACKET_SIZE':\n case 'DATABASE_MIRRORING_PARTNER':\n return parser.readBVarChar((newValue) => {\n parser.readBVarChar((oldValue) => {\n switch (type.name) {\n case 'PACKET_SIZE':\n return callback(new PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)));\n\n case 'DATABASE':\n return callback(new DatabaseEnvChangeToken(newValue, oldValue));\n\n case 'LANGUAGE':\n return callback(new LanguageEnvChangeToken(newValue, oldValue));\n\n case 'CHARSET':\n return callback(new CharsetEnvChangeToken(newValue, oldValue));\n\n case 'DATABASE_MIRRORING_PARTNER':\n return callback(new DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue));\n }\n });\n });\n\n case 'SQL_COLLATION':\n case 'BEGIN_TXN':\n case 'COMMIT_TXN':\n case 'ROLLBACK_TXN':\n case 'RESET_CONNECTION':\n return parser.readBVarByte((newValue) => {\n parser.readBVarByte((oldValue) => {\n switch (type.name) {\n case 'SQL_COLLATION': {\n const newCollation = newValue.length ? Collation.fromBuffer(newValue) : undefined;\n const oldCollation = oldValue.length ? Collation.fromBuffer(oldValue) : undefined;\n\n return callback(new CollationChangeToken(newCollation, oldCollation));\n }\n\n case 'BEGIN_TXN':\n return callback(new BeginTransactionEnvChangeToken(newValue, oldValue));\n\n case 'COMMIT_TXN':\n return callback(new CommitTransactionEnvChangeToken(newValue, oldValue));\n\n case 'ROLLBACK_TXN':\n return callback(new RollbackTransactionEnvChangeToken(newValue, oldValue));\n\n case 'RESET_CONNECTION':\n return callback(new ResetConnectionEnvChangeToken(newValue, oldValue));\n }\n });\n });\n\n case 'ROUTING_CHANGE':\n return parser.readUInt16LE((valueLength) => {\n // Routing Change:\n // Byte 1: Protocol (must be 0)\n // Bytes 2-3 (USHORT): Port number\n // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)\n // Bytes 6-*: Server name in unicode characters\n parser.readBuffer(valueLength, (routePacket) => {\n const protocol = routePacket.readUInt8(0);\n\n if (protocol !== 0) {\n throw new Error('Unknown protocol byte in routing change event');\n }\n\n const port = routePacket.readUInt16LE(1);\n const serverLen = routePacket.readUInt16LE(3);\n // 2 bytes per char, starting at offset 5\n const server = routePacket.toString('ucs2', 5, 5 + (serverLen * 2));\n\n const newValue = {\n protocol: protocol,\n port: port,\n server: server\n };\n\n parser.readUInt16LE((oldValueLength) => {\n parser.readBuffer(oldValueLength, (oldValue) => {\n callback(new RoutingEnvChangeToken(newValue, oldValue));\n });\n });\n });\n });\n\n default:\n console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);\n // skip unknown bytes\n parser.readBuffer(length - 1, () => {\n callback(undefined);\n });\n }\n}\n\nfunction envChangeParser(parser: Parser, _options: ParserOptions, callback: (token: EnvChangeToken | undefined) => void) {\n parser.readUInt16LE((length) => {\n parser.readUInt8((typeNumber) => {\n const type = types[typeNumber];\n\n if (!type) {\n console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);\n // skip unknown bytes\n return parser.readBuffer(length - 1, () => {\n callback(undefined);\n });\n }\n\n readNewAndOldValue(parser, length, type, (token) => {\n callback(token);\n });\n });\n });\n}\n\nexport default envChangeParser;\nmodule.exports = envChangeParser;\n"],"mappings":"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"}
1
+ {"version":3,"file":"env-change-token-parser.js","names":["_collation","require","_token","_helpers","types","name","event","_readNewAndOldValue","buf","offset","length","type","newValue","value","readBVarChar","oldValue","Result","PacketSizeEnvChangeToken","parseInt","DatabaseEnvChangeToken","LanguageEnvChangeToken","CharsetEnvChangeToken","DatabaseMirroringPartnerEnvChangeToken","Error","readBVarByte","newCollation","Collation","fromBuffer","undefined","oldCollation","CollationChangeToken","BeginTransactionEnvChangeToken","CommitTransactionEnvChangeToken","RollbackTransactionEnvChangeToken","ResetConnectionEnvChangeToken","routePacket","readUsVarByte","protocol","readUInt8","port","readUInt16LE","serverLen","server","toString","RoutingEnvChangeToken","console","error","envChangeParser","_options","tokenLength","NotEnoughDataError","typeNumber","_default","exports","default","module"],"sources":["../../src/token/env-change-token-parser.ts"],"sourcesContent":["import { type ParserOptions } from './stream-parser';\nimport { Collation } from '../collation';\n\nimport {\n DatabaseEnvChangeToken,\n LanguageEnvChangeToken,\n CharsetEnvChangeToken,\n PacketSizeEnvChangeToken,\n BeginTransactionEnvChangeToken,\n CommitTransactionEnvChangeToken,\n RollbackTransactionEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n ResetConnectionEnvChangeToken,\n RoutingEnvChangeToken,\n CollationChangeToken,\n type EnvChangeToken\n} from './token';\n\nimport { NotEnoughDataError, readBVarByte, readBVarChar, readUInt16LE, readUInt8, readUsVarByte, Result } from './helpers';\n\nconst types: { [key: number]: { name: string, event?: string }} = {\n 1: {\n name: 'DATABASE',\n event: 'databaseChange'\n },\n 2: {\n name: 'LANGUAGE',\n event: 'languageChange'\n },\n 3: {\n name: 'CHARSET',\n event: 'charsetChange'\n },\n 4: {\n name: 'PACKET_SIZE',\n event: 'packetSizeChange'\n },\n 7: {\n name: 'SQL_COLLATION',\n event: 'sqlCollationChange'\n },\n 8: {\n name: 'BEGIN_TXN',\n event: 'beginTransaction'\n },\n 9: {\n name: 'COMMIT_TXN',\n event: 'commitTransaction'\n },\n 10: {\n name: 'ROLLBACK_TXN',\n event: 'rollbackTransaction'\n },\n 13: {\n name: 'DATABASE_MIRRORING_PARTNER',\n event: 'partnerNode'\n },\n 17: {\n name: 'TXN_ENDED'\n },\n 18: {\n name: 'RESET_CONNECTION',\n event: 'resetConnection'\n },\n 20: {\n name: 'ROUTING_CHANGE',\n event: 'routingChange'\n }\n};\n\nfunction _readNewAndOldValue(buf: Buffer, offset: number, length: number, type: { name: string, event?: string }): Result<EnvChangeToken | undefined> {\n switch (type.name) {\n case 'DATABASE':\n case 'LANGUAGE':\n case 'CHARSET':\n case 'PACKET_SIZE':\n case 'DATABASE_MIRRORING_PARTNER': {\n let newValue;\n ({ offset, value: newValue } = readBVarChar(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readBVarChar(buf, offset));\n\n switch (type.name) {\n case 'PACKET_SIZE':\n return new Result(new PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)), offset);\n\n case 'DATABASE':\n return new Result(new DatabaseEnvChangeToken(newValue, oldValue), offset);\n\n case 'LANGUAGE':\n return new Result(new LanguageEnvChangeToken(newValue, oldValue), offset);\n\n case 'CHARSET':\n return new Result(new CharsetEnvChangeToken(newValue, oldValue), offset);\n\n case 'DATABASE_MIRRORING_PARTNER':\n return new Result(new DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue), offset);\n }\n\n throw new Error('unreachable');\n }\n\n case 'SQL_COLLATION':\n case 'BEGIN_TXN':\n case 'COMMIT_TXN':\n case 'ROLLBACK_TXN':\n case 'RESET_CONNECTION': {\n let newValue;\n ({ offset, value: newValue } = readBVarByte(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readBVarByte(buf, offset));\n\n switch (type.name) {\n case 'SQL_COLLATION': {\n const newCollation = newValue.length ? Collation.fromBuffer(newValue) : undefined;\n const oldCollation = oldValue.length ? Collation.fromBuffer(oldValue) : undefined;\n\n return new Result(new CollationChangeToken(newCollation, oldCollation), offset);\n }\n\n case 'BEGIN_TXN':\n return new Result(new BeginTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'COMMIT_TXN':\n return new Result(new CommitTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'ROLLBACK_TXN':\n return new Result(new RollbackTransactionEnvChangeToken(newValue, oldValue), offset);\n\n case 'RESET_CONNECTION':\n return new Result(new ResetConnectionEnvChangeToken(newValue, oldValue), offset);\n }\n\n throw new Error('unreachable');\n }\n\n case 'ROUTING_CHANGE': {\n let routePacket;\n ({ offset, value: routePacket } = readUsVarByte(buf, offset));\n\n let oldValue;\n ({ offset, value: oldValue } = readUsVarByte(buf, offset));\n\n // Routing Change:\n // Byte 1: Protocol (must be 0)\n // Bytes 2-3 (USHORT): Port number\n // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)\n // Bytes 6-*: Server name in unicode characters\n const protocol = routePacket.readUInt8(0);\n if (protocol !== 0) {\n throw new Error('Unknown protocol byte in routing change event');\n }\n\n const port = routePacket.readUInt16LE(1);\n const serverLen = routePacket.readUInt16LE(3);\n // 2 bytes per char, starting at offset 5\n const server = routePacket.toString('ucs2', 5, 5 + (serverLen * 2));\n\n const newValue = {\n protocol: protocol,\n port: port,\n server: server\n };\n\n return new Result(new RoutingEnvChangeToken(newValue, oldValue), offset);\n }\n\n default: {\n console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);\n\n // skip unknown bytes\n return new Result(undefined, offset + length - 1);\n }\n }\n}\n\nfunction envChangeParser(buf: Buffer, offset: number, _options: ParserOptions): Result<EnvChangeToken | undefined> {\n let tokenLength;\n ({ offset, value: tokenLength } = readUInt16LE(buf, offset));\n\n if (buf.length < offset + tokenLength) {\n throw new NotEnoughDataError(offset + tokenLength);\n }\n\n let typeNumber;\n ({ offset, value: typeNumber } = readUInt8(buf, offset));\n\n const type = types[typeNumber];\n\n if (!type) {\n console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);\n return new Result(undefined, offset + tokenLength - 1);\n }\n\n return _readNewAndOldValue(buf, offset, tokenLength, type);\n}\n\nexport default envChangeParser;\nmodule.exports = envChangeParser;\n"],"mappings":"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"}