tedious 6.4.0 → 6.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/lib/bulk-load.js +17 -22
  2. package/lib/connection.js +363 -251
  3. package/lib/connector.js +3 -1
  4. package/lib/data-type.js +111 -109
  5. package/lib/data-types/bigint.js +19 -7
  6. package/lib/data-types/binary.js +19 -10
  7. package/lib/data-types/bit.js +14 -4
  8. package/lib/data-types/bitn.js +26 -3
  9. package/lib/data-types/char.js +26 -13
  10. package/lib/data-types/date.js +18 -9
  11. package/lib/data-types/datetime.js +23 -5
  12. package/lib/data-types/datetime2.js +10 -22
  13. package/lib/data-types/datetimen.js +26 -3
  14. package/lib/data-types/datetimeoffset.js +11 -22
  15. package/lib/data-types/decimal.js +14 -6
  16. package/lib/data-types/decimaln.js +26 -5
  17. package/lib/data-types/float.js +14 -4
  18. package/lib/data-types/floatn.js +26 -3
  19. package/lib/data-types/image.js +12 -5
  20. package/lib/data-types/int.js +14 -4
  21. package/lib/data-types/intn.js +26 -3
  22. package/lib/data-types/money.js +14 -4
  23. package/lib/data-types/moneyn.js +26 -3
  24. package/lib/data-types/nchar.js +17 -6
  25. package/lib/data-types/ntext.js +26 -5
  26. package/lib/data-types/null.js +27 -3
  27. package/lib/data-types/numeric.js +14 -6
  28. package/lib/data-types/numericn.js +26 -5
  29. package/lib/data-types/nvarchar.js +20 -11
  30. package/lib/data-types/real.js +14 -4
  31. package/lib/data-types/smalldatetime.js +14 -4
  32. package/lib/data-types/smallint.js +14 -4
  33. package/lib/data-types/smallmoney.js +14 -4
  34. package/lib/data-types/sql-variant.js +23 -4
  35. package/lib/data-types/text.js +13 -7
  36. package/lib/data-types/time.js +9 -21
  37. package/lib/data-types/tinyint.js +14 -4
  38. package/lib/data-types/tvp.js +12 -3
  39. package/lib/data-types/udt.js +26 -3
  40. package/lib/data-types/uniqueidentifier.js +12 -5
  41. package/lib/data-types/varbinary.js +18 -8
  42. package/lib/data-types/varchar.js +19 -10
  43. package/lib/data-types/xml.js +26 -3
  44. package/lib/debug.js +3 -1
  45. package/lib/guid-parser.js +6 -6
  46. package/lib/incoming-message-stream.js +10 -7
  47. package/lib/instance-lookup.js +12 -6
  48. package/lib/library.js +6 -1
  49. package/lib/login7-payload.js +2 -3
  50. package/lib/message-io.js +14 -3
  51. package/lib/message.js +2 -3
  52. package/lib/metadata-parser.js +259 -136
  53. package/lib/ntlm-payload.js +12 -21
  54. package/lib/outgoing-message-stream.js +7 -6
  55. package/lib/packet.js +4 -5
  56. package/lib/prelogin-payload.js +3 -4
  57. package/lib/request.js +11 -11
  58. package/lib/rpcrequest-payload.js +28 -22
  59. package/lib/sender.js +25 -11
  60. package/lib/special-stored-procedure.js +9 -2
  61. package/lib/tds-versions.js +8 -2
  62. package/lib/tedious.js +75 -9
  63. package/lib/token/colmetadata-token-parser.js +20 -10
  64. package/lib/token/done-token-parser.js +32 -25
  65. package/lib/token/env-change-token-parser.js +50 -20
  66. package/lib/token/feature-ext-ack-parser.js +19 -14
  67. package/lib/token/fedauth-info-parser.js +17 -11
  68. package/lib/token/infoerror-token-parser.js +14 -14
  69. package/lib/token/loginack-token-parser.js +21 -12
  70. package/lib/token/nbcrow-token-parser.js +35 -23
  71. package/lib/token/order-token-parser.js +14 -7
  72. package/lib/token/returnstatus-token-parser.js +14 -7
  73. package/lib/token/returnvalue-token-parser.js +22 -11
  74. package/lib/token/row-token-parser.js +34 -22
  75. package/lib/token/sspi-token-parser.js +14 -8
  76. package/lib/token/stream-parser.js +95 -36
  77. package/lib/token/token-stream-parser.js +16 -10
  78. package/lib/token/token.js +396 -2
  79. package/lib/tracking-buffer/writable-tracking-buffer.js +37 -5
  80. package/lib/transaction.js +25 -16
  81. package/lib/transient-error-lookup.js +6 -1
  82. package/lib/value-parser.js +412 -315
  83. package/package.json +24 -21
  84. package/pull_request_template.md +1 -1
  85. package/tsconfig.json +1 -1
  86. package/lib/tracking-buffer/bigint.js +0 -102
@@ -1,14 +1,21 @@
1
1
  "use strict";
2
2
 
3
- const WritableTrackingBuffer = require('./tracking-buffer/writable-tracking-buffer');
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
4
7
 
5
- const writeAllHeaders = require('./all-headers').writeToTrackingBuffer; // const OPTION = {
8
+ var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer"));
9
+
10
+ var _allHeaders = require("./all-headers");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ // const OPTION = {
6
15
  // WITH_RECOMPILE: 0x01,
7
16
  // NO_METADATA: 0x02,
8
17
  // REUSE_METADATA: 0x04
9
18
  // };
10
-
11
-
12
19
  const STATUS = {
13
20
  BY_REF_VALUE: 0x01,
14
21
  DEFAULT_VALUE: 0x02
@@ -17,7 +24,7 @@ const STATUS = {
17
24
  s2.2.6.5
18
25
  */
19
26
 
20
- module.exports = class RpcRequestPayload {
27
+ class RpcRequestPayload {
21
28
  constructor(request, txnDescriptor, options) {
22
29
  this.request = request;
23
30
  this.procedure = this.request.sqlTextOrProcedure;
@@ -26,11 +33,11 @@ module.exports = class RpcRequestPayload {
26
33
  }
27
34
 
28
35
  getData(cb) {
29
- const buffer = new WritableTrackingBuffer(500);
36
+ const buffer = new _writableTrackingBuffer.default(500);
30
37
 
31
38
  if (this.options.tdsVersion >= '7_2') {
32
39
  const outstandingRequestCount = 1;
33
- writeAllHeaders(buffer, this.txnDescriptor, outstandingRequestCount);
40
+ (0, _allHeaders.writeToTrackingBuffer)(buffer, this.txnDescriptor, outstandingRequestCount);
34
41
  }
35
42
 
36
43
  if (typeof this.procedure === 'string') {
@@ -60,8 +67,7 @@ module.exports = class RpcRequestPayload {
60
67
  writeNext(0);
61
68
  }
62
69
 
63
- toString(indent) {
64
- indent || (indent = '');
70
+ toString(indent = '') {
65
71
  return indent + ('RPC Request - ' + this.procedure);
66
72
  }
67
73
 
@@ -87,20 +93,16 @@ module.exports = class RpcRequestPayload {
87
93
  }
88
94
  }
89
95
 
90
- if (type.hasPrecision) {
91
- if (parameter.precision) {
92
- param.precision = parameter.precision;
93
- } else if (type.resolvePrecision) {
94
- param.precision = type.resolvePrecision(parameter);
95
- }
96
+ if (parameter.precision) {
97
+ param.precision = parameter.precision;
98
+ } else if (type.resolvePrecision) {
99
+ param.precision = type.resolvePrecision(parameter);
96
100
  }
97
101
 
98
- if (type.hasScale) {
99
- if (parameter.scale) {
100
- param.scale = parameter.scale;
101
- } else if (type.resolveScale) {
102
- param.scale = type.resolveScale(parameter);
103
- }
102
+ if (parameter.scale) {
103
+ param.scale = parameter.scale;
104
+ } else if (type.resolveScale) {
105
+ param.scale = type.resolveScale(parameter);
104
106
  }
105
107
 
106
108
  type.writeTypeInfo(buffer, param, this.options);
@@ -109,4 +111,8 @@ module.exports = class RpcRequestPayload {
109
111
  });
110
112
  }
111
113
 
112
- };
114
+ }
115
+
116
+ var _default = RpcRequestPayload;
117
+ exports.default = _default;
118
+ module.exports = RpcRequestPayload;
package/lib/sender.js CHANGED
@@ -1,12 +1,23 @@
1
1
  "use strict";
2
2
 
3
- const dgram = require('dgram');
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Sender = exports.ParallelSendStrategy = void 0;
4
7
 
5
- const dns = require('dns');
8
+ var _dgram = _interopRequireDefault(require("dgram"));
6
9
 
7
- const net = require('net');
10
+ var _dns = _interopRequireDefault(require("dns"));
8
11
 
9
- const punycode = require('punycode');
12
+ var _net = _interopRequireDefault(require("net"));
13
+
14
+ var punycode = _interopRequireWildcard(require("punycode"));
15
+
16
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
17
+
18
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
21
 
11
22
  class ParallelSendStrategy {
12
23
  constructor(addresses, port, request) {
@@ -55,7 +66,8 @@ class ParallelSendStrategy {
55
66
  };
56
67
 
57
68
  const createDgramSocket = (udpType, onError, onMessage) => {
58
- const socket = dgram.createSocket(udpType);
69
+ const socket = _dgram.default.createSocket(udpType);
70
+
59
71
  socket.on('error', onError);
60
72
  socket.on('message', onMessage);
61
73
  return socket;
@@ -64,7 +76,7 @@ class ParallelSendStrategy {
64
76
  for (let j = 0; j < this.addresses.length; j++) {
65
77
  const udpTypeV4 = 'udp4';
66
78
  const udpTypeV6 = 'udp6';
67
- const udpType = net.isIPv4(this.addresses[j].address) ? udpTypeV4 : udpTypeV6;
79
+ const udpType = this.addresses[j].family === 6 ? udpTypeV6 : udpTypeV4;
68
80
  let socket;
69
81
 
70
82
  if (udpType === udpTypeV4) {
@@ -94,6 +106,8 @@ class ParallelSendStrategy {
94
106
 
95
107
  }
96
108
 
109
+ exports.ParallelSendStrategy = ParallelSendStrategy;
110
+
97
111
  class Sender {
98
112
  constructor(host, port, request) {
99
113
  this.host = host;
@@ -103,7 +117,7 @@ class Sender {
103
117
  }
104
118
 
105
119
  execute(cb) {
106
- if (net.isIP(this.host)) {
120
+ if (_net.default.isIP(this.host)) {
107
121
  this.executeForIP(cb);
108
122
  } else {
109
123
  this.executeForHostname(cb);
@@ -112,13 +126,14 @@ class Sender {
112
126
 
113
127
  executeForIP(cb) {
114
128
  this.executeForAddresses([{
115
- address: this.host
129
+ address: this.host,
130
+ family: _net.default.isIPv6(this.host) ? 6 : 4
116
131
  }], cb);
117
132
  } // Wrapper for stubbing. Sinon does not have support for stubbing module functions.
118
133
 
119
134
 
120
135
  invokeLookupAll(host, cb) {
121
- dns.lookup(punycode.toASCII(host), {
136
+ _dns.default.lookup(punycode.toASCII(host), {
122
137
  all: true
123
138
  }, cb);
124
139
  }
@@ -152,5 +167,4 @@ class Sender {
152
167
 
153
168
  }
154
169
 
155
- module.exports.Sender = Sender;
156
- module.exports.ParallelSendStrategy = ParallelSendStrategy;
170
+ exports.Sender = Sender;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
 
3
- module.exports = {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ const procedures = {
4
8
  Sp_Cursor: 1,
5
9
  Sp_CursorOpen: 2,
6
10
  Sp_CursorPrepare: 3,
@@ -16,4 +20,7 @@ module.exports = {
16
20
  Sp_PrepExec: 13,
17
21
  Sp_PrepExecRpc: 14,
18
22
  Sp_Unprepare: 15
19
- };
23
+ };
24
+ var _default = procedures;
25
+ exports.default = _default;
26
+ module.exports = procedures;
@@ -1,13 +1,19 @@
1
1
  "use strict";
2
2
 
3
- const versions = module.exports.versions = {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.versionsByValue = exports.versions = void 0;
7
+ const versions = {
4
8
  '7_1': 0x71000001,
5
9
  '7_2': 0x72090002,
6
10
  '7_3_A': 0x730A0003,
7
11
  '7_3_B': 0x730B0003,
8
12
  '7_4': 0x74000004
9
13
  };
10
- const versionsByValue = module.exports.versionsByValue = {};
14
+ exports.versions = versions;
15
+ const versionsByValue = {};
16
+ exports.versionsByValue = versionsByValue;
11
17
 
12
18
  for (const name in versions) {
13
19
  versionsByValue[versions[name]] = name;
package/lib/tedious.js CHANGED
@@ -1,11 +1,77 @@
1
1
  "use strict";
2
2
 
3
- module.exports.BulkLoad = require('./bulk-load');
4
- module.exports.Connection = require('./connection');
5
- module.exports.Request = require('./request');
6
- module.exports.library = require('./library');
7
- module.exports.ConnectionError = require('./errors').ConnectionError;
8
- module.exports.RequestError = require('./errors').RequestError;
9
- module.exports.TYPES = require('./data-type').typeByName;
10
- module.exports.ISOLATION_LEVEL = require('./transaction').ISOLATION_LEVEL;
11
- module.exports.TDS_VERSION = require('./tds-versions').versions;
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "BulkLoad", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _bulkLoad.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Connection", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _connection.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "Request", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _request.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "ConnectionError", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _errors.ConnectionError;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "RequestError", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _errors.RequestError;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "TYPES", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _dataType.typeByName;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "ISOLATION_LEVEL", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _transaction.ISOLATION_LEVEL;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "TDS_VERSION", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _tdsVersions.versions;
52
+ }
53
+ });
54
+ exports.library = void 0;
55
+
56
+ var _bulkLoad = _interopRequireDefault(require("./bulk-load"));
57
+
58
+ var _connection = _interopRequireDefault(require("./connection"));
59
+
60
+ var _request = _interopRequireDefault(require("./request"));
61
+
62
+ var _library = require("./library");
63
+
64
+ var _errors = require("./errors");
65
+
66
+ var _dataType = require("./data-type");
67
+
68
+ var _transaction = require("./transaction");
69
+
70
+ var _tdsVersions = require("./tds-versions");
71
+
72
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
73
+
74
+ const library = {
75
+ name: _library.name
76
+ };
77
+ exports.library = library;
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
 
3
- const metadataParse = require('../metadata-parser');
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _metadataParser = _interopRequireDefault(require("../metadata-parser"));
9
+
10
+ var _token = require("./token");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4
13
 
5
14
  function readTableName(parser, options, metadata, callback) {
6
15
  if (metadata.type.hasTableName) {
@@ -48,19 +57,20 @@ function readColumnName(parser, options, index, metadata, callback) {
48
57
  }
49
58
 
50
59
  function readColumn(parser, options, index, callback) {
51
- metadataParse(parser, options, metadata => {
60
+ (0, _metadataParser.default)(parser, options, metadata => {
52
61
  readTableName(parser, options, metadata, tableName => {
53
62
  readColumnName(parser, options, index, metadata, colName => {
54
63
  callback({
55
64
  userType: metadata.userType,
56
65
  flags: metadata.flags,
57
66
  type: metadata.type,
58
- colName: colName,
59
67
  collation: metadata.collation,
60
68
  precision: metadata.precision,
61
69
  scale: metadata.scale,
62
70
  udtInfo: metadata.udtInfo,
63
71
  dataLength: metadata.dataLength,
72
+ schema: metadata.schema,
73
+ colName: colName,
64
74
  tableName: tableName
65
75
  });
66
76
  });
@@ -68,7 +78,7 @@ function readColumn(parser, options, index, callback) {
68
78
  });
69
79
  }
70
80
 
71
- module.exports = function (parser, colMetadata, options, callback) {
81
+ function colMetadataParser(parser, _colMetadata, options, callback) {
72
82
  parser.readUInt16LE(columnCount => {
73
83
  const columns = [];
74
84
  let i = 0;
@@ -86,11 +96,11 @@ module.exports = function (parser, colMetadata, options, callback) {
86
96
  }
87
97
 
88
98
  next(() => {
89
- callback({
90
- name: 'COLMETADATA',
91
- event: 'columnMetadata',
92
- columns: columns
93
- });
99
+ callback(new _token.ColMetadataToken(columns));
94
100
  });
95
101
  });
96
- };
102
+ }
103
+
104
+ var _default = colMetadataParser;
105
+ exports.default = _default;
106
+ module.exports = colMetadataParser;
@@ -1,5 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.doneParser = doneParser;
7
+ exports.doneInProcParser = doneInProcParser;
8
+ exports.doneProcParser = doneProcParser;
9
+
10
+ var _jsbi = _interopRequireDefault(require("jsbi"));
11
+
12
+ var _token = require("./token");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
3
16
  // s2.2.7.5/6/7
4
17
  const STATUS = {
5
18
  MORE: 0x0001,
@@ -19,10 +32,8 @@ function parseToken(parser, options, callback) {
19
32
  const attention = !!(status & STATUS.ATTN);
20
33
  const serverError = !!(status & STATUS.SRVERROR);
21
34
  parser.readUInt16LE(curCmd => {
22
- (options.tdsVersion < '7_2' ? parser.readUInt32LE : parser.readUInt64LE).call(parser, rowCount => {
35
+ const next = rowCount => {
23
36
  callback({
24
- name: 'DONE',
25
- event: 'done',
26
37
  more: more,
27
38
  sqlError: sqlError,
28
39
  attention: attention,
@@ -30,37 +41,33 @@ function parseToken(parser, options, callback) {
30
41
  rowCount: rowCountValid ? rowCount : undefined,
31
42
  curCmd: curCmd
32
43
  });
33
- });
44
+ };
45
+
46
+ if (options.tdsVersion < '7_2') {
47
+ parser.readUInt32LE(next);
48
+ } else {
49
+ parser.readBigUInt64LE(rowCount => {
50
+ next(_jsbi.default.toNumber(rowCount));
51
+ });
52
+ }
34
53
  });
35
54
  });
36
55
  }
37
56
 
38
- module.exports.doneParser = doneParser;
39
-
40
- function doneParser(parser, colMetadata, options, callback) {
41
- parseToken(parser, options, token => {
42
- token.name = 'DONE';
43
- token.event = 'done';
44
- callback(token);
57
+ function doneParser(parser, _colMetadata, options, callback) {
58
+ parseToken(parser, options, data => {
59
+ callback(new _token.DoneToken(data));
45
60
  });
46
61
  }
47
62
 
48
- module.exports.doneInProcParser = doneInProcParser;
49
-
50
- function doneInProcParser(parser, colMetadata, options, callback) {
51
- parseToken(parser, options, token => {
52
- token.name = 'DONEINPROC';
53
- token.event = 'doneInProc';
54
- callback(token);
63
+ function doneInProcParser(parser, _colMetadata, options, callback) {
64
+ parseToken(parser, options, data => {
65
+ callback(new _token.DoneInProcToken(data));
55
66
  });
56
67
  }
57
68
 
58
- module.exports.doneProcParser = doneProcParser;
59
-
60
- function doneProcParser(parser, colMetadata, options, callback) {
61
- parseToken(parser, options, token => {
62
- token.name = 'DONEPROC';
63
- token.event = 'doneProc';
64
- callback(token);
69
+ function doneProcParser(parser, _colMetadata, options, callback) {
70
+ parseToken(parser, options, data => {
71
+ callback(new _token.DoneProcToken(data));
65
72
  });
66
73
  }
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _token = require("./token");
9
+
3
10
  const types = {
4
11
  1: {
5
12
  name: 'DATABASE',
@@ -59,10 +66,21 @@ function readNewAndOldValue(parser, length, type, callback) {
59
66
  case 'DATABASE_MIRRORING_PARTNER':
60
67
  return parser.readBVarChar(newValue => {
61
68
  parser.readBVarChar(oldValue => {
62
- if (type.name === 'PACKET_SIZE') {
63
- callback(parseInt(newValue), parseInt(oldValue));
64
- } else {
65
- callback(newValue, oldValue);
69
+ switch (type.name) {
70
+ case 'PACKET_SIZE':
71
+ return callback(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)));
72
+
73
+ case 'DATABASE':
74
+ return callback(new _token.DatabaseEnvChangeToken(newValue, oldValue));
75
+
76
+ case 'LANGUAGE':
77
+ return callback(new _token.LanguageEnvChangeToken(newValue, oldValue));
78
+
79
+ case 'CHARSET':
80
+ return callback(new _token.CharsetEnvChangeToken(newValue, oldValue));
81
+
82
+ case 'DATABASE_MIRRORING_PARTNER':
83
+ return callback(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue));
66
84
  }
67
85
  });
68
86
  });
@@ -74,12 +92,27 @@ function readNewAndOldValue(parser, length, type, callback) {
74
92
  case 'RESET_CONNECTION':
75
93
  return parser.readBVarByte(newValue => {
76
94
  parser.readBVarByte(oldValue => {
77
- callback(newValue, oldValue);
95
+ switch (type.name) {
96
+ case 'SQL_COLLATION':
97
+ return callback(new _token.CollationChangeToken(newValue, oldValue));
98
+
99
+ case 'BEGIN_TXN':
100
+ return callback(new _token.BeginTransactionEnvChangeToken(newValue, oldValue));
101
+
102
+ case 'COMMIT_TXN':
103
+ return callback(new _token.CommitTransactionEnvChangeToken(newValue, oldValue));
104
+
105
+ case 'ROLLBACK_TXN':
106
+ return callback(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue));
107
+
108
+ case 'RESET_CONNECTION':
109
+ return callback(new _token.ResetConnectionEnvChangeToken(newValue, oldValue));
110
+ }
78
111
  });
79
112
  });
80
113
 
81
114
  case 'ROUTING_CHANGE':
82
- parser.readUInt16LE(valueLength => {
115
+ return parser.readUInt16LE(valueLength => {
83
116
  // Routing Change:
84
117
  // Byte 1: Protocol (must be 0)
85
118
  // Bytes 2-3 (USHORT): Port number
@@ -103,23 +136,22 @@ function readNewAndOldValue(parser, length, type, callback) {
103
136
  };
104
137
  parser.readUInt16LE(oldValueLength => {
105
138
  parser.readBuffer(oldValueLength, oldValue => {
106
- callback(newValue, oldValue);
139
+ callback(new _token.RoutingEnvChangeToken(newValue, oldValue));
107
140
  });
108
141
  });
109
142
  });
110
143
  });
111
- break;
112
144
 
113
145
  default:
114
146
  console.error('Tedious > Unsupported ENVCHANGE type ' + type.name); // skip unknown bytes
115
147
 
116
148
  parser.readBuffer(length - 1, () => {
117
- callback(undefined, undefined);
149
+ callback(undefined);
118
150
  });
119
151
  }
120
152
  }
121
153
 
122
- module.exports = function (parser, colMetadata, options, callback) {
154
+ function envChangeParser(parser, _colMetadata, _options, callback) {
123
155
  parser.readUInt16LE(length => {
124
156
  parser.readUInt8(typeNumber => {
125
157
  const type = types[typeNumber];
@@ -128,19 +160,17 @@ module.exports = function (parser, colMetadata, options, callback) {
128
160
  console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber); // skip unknown bytes
129
161
 
130
162
  return parser.readBuffer(length - 1, () => {
131
- callback();
163
+ callback(undefined);
132
164
  });
133
165
  }
134
166
 
135
- readNewAndOldValue(parser, length, type, (newValue, oldValue) => {
136
- callback({
137
- name: 'ENVCHANGE',
138
- type: type.name,
139
- event: type.event,
140
- oldValue: oldValue,
141
- newValue: newValue
142
- });
167
+ readNewAndOldValue(parser, length, type, token => {
168
+ callback(token);
143
169
  });
144
170
  });
145
171
  });
146
- };
172
+ }
173
+
174
+ var _default = envChangeParser;
175
+ exports.default = _default;
176
+ module.exports = envChangeParser;
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _token = require("./token");
9
+
3
10
  const FEATURE_ID = {
4
11
  SESSIONRECOVERY: 0x01,
5
12
  FEDAUTH: 0x02,
@@ -9,32 +16,30 @@ const FEATURE_ID = {
9
16
  TERMINATOR: 0xFF
10
17
  };
11
18
 
12
- module.exports = function featureExtAckParser(parser, colMetadata, options, callback) {
13
- const token = {
14
- 'name': 'FEATUREEXTACK',
15
- 'event': 'featureExtAck',
16
- 'fedAuth': undefined
17
- };
19
+ function featureExtAckParser(parser, _colMetadata, _options, callback) {
20
+ let fedAuth;
18
21
 
19
- function next(done) {
22
+ function next() {
20
23
  parser.readUInt8(featureId => {
21
24
  if (featureId === FEATURE_ID.TERMINATOR) {
22
- return done();
25
+ return callback(new _token.FeatureExtAckToken(fedAuth));
23
26
  }
24
27
 
25
28
  parser.readUInt32LE(featureAckDataLen => {
26
29
  parser.readBuffer(featureAckDataLen, featureData => {
27
30
  if (featureId === FEATURE_ID.FEDAUTH) {
28
- token.fedAuth = featureData;
31
+ fedAuth = featureData;
29
32
  }
30
33
 
31
- next(done);
34
+ next();
32
35
  });
33
36
  });
34
37
  });
35
38
  }
36
39
 
37
- next(() => {
38
- callback(token);
39
- });
40
- };
40
+ next();
41
+ }
42
+
43
+ var _default = featureExtAckParser;
44
+ exports.default = _default;
45
+ module.exports = featureExtAckParser;