tedious 1.12.3 → 1.14.0

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 (62) hide show
  1. package/README.md +1 -1
  2. package/appveyor.yml +9 -5
  3. package/benchmarks/README.md +33 -0
  4. package/benchmarks/common.js +82 -0
  5. package/benchmarks/index.js +34 -0
  6. package/benchmarks/query/many-result-rows.js +49 -0
  7. package/benchmarks/query/nvarchar-large.js +44 -0
  8. package/benchmarks/query/nvarchar-small.js +44 -0
  9. package/benchmarks/query/varbinary-4.js +42 -0
  10. package/benchmarks/query/varbinary-huge.js +46 -0
  11. package/benchmarks/query/varbinary-large.js +46 -0
  12. package/benchmarks/query/varbinary-small.js +42 -0
  13. package/benchmarks/token-parser/colmetadata-token.js +42 -0
  14. package/benchmarks/token-parser/done-token.js +42 -0
  15. package/benchmarks/token-parser/simple-tokens.js +366 -0
  16. package/lib/all-headers.js +9 -11
  17. package/lib/buffertools.js +17 -13
  18. package/lib/bulk-load.js +196 -169
  19. package/lib/collation.js +80 -2
  20. package/lib/connection.js +1086 -1060
  21. package/lib/data-type.js +450 -253
  22. package/lib/debug.js +57 -51
  23. package/lib/errors.js +40 -55
  24. package/lib/guid-parser.js +12 -36
  25. package/lib/instance-lookup.js +57 -54
  26. package/lib/library.js +3 -2
  27. package/lib/login7-payload.js +187 -180
  28. package/lib/message-io.js +169 -199
  29. package/lib/metadata-parser.js +169 -255
  30. package/lib/ntlm-payload.js +173 -160
  31. package/lib/packet.js +166 -152
  32. package/lib/prelogin-payload.js +170 -160
  33. package/lib/request.js +122 -122
  34. package/lib/rpcrequest-payload.js +64 -38
  35. package/lib/special-stored-procedure.js +3 -2
  36. package/lib/sqlbatch-payload.js +20 -16
  37. package/lib/stream-parser.js +116 -104
  38. package/lib/tds-versions.js +5 -8
  39. package/lib/tedious.js +8 -14
  40. package/lib/token/colmetadata-token-parser.js +79 -125
  41. package/lib/token/done-token-parser.js +47 -129
  42. package/lib/token/env-change-token-parser.js +90 -126
  43. package/lib/token/infoerror-token-parser.js +47 -125
  44. package/lib/token/loginack-token-parser.js +36 -74
  45. package/lib/token/nbcrow-token-parser.js +40 -64
  46. package/lib/token/order-token-parser.js +26 -43
  47. package/lib/token/returnstatus-token-parser.js +11 -23
  48. package/lib/token/returnvalue-token-parser.js +31 -54
  49. package/lib/token/row-token-parser.js +39 -52
  50. package/lib/token/sspi-token-parser.js +14 -32
  51. package/lib/token/stream-parser.js +424 -304
  52. package/lib/token/token-stream-parser.js +39 -34
  53. package/lib/token/token.js +3 -6
  54. package/lib/tracking-buffer/bigint.js +45 -48
  55. package/lib/tracking-buffer/readable-tracking-buffer.js +238 -223
  56. package/lib/tracking-buffer/tracking-buffer.js +3 -9
  57. package/lib/tracking-buffer/writable-tracking-buffer.js +272 -244
  58. package/lib/transaction.js +112 -102
  59. package/lib/value-parser.js +559 -1154
  60. package/package.json +10 -9
  61. package/benchmarks/benchmarks.coffee +0 -122
  62. package/benchmarks/query.coffee +0 -57
@@ -1,19 +1,19 @@
1
- // Generated by CoffeeScript 1.10.0
2
- var OPTION, RpcRequestPayload, STATUS, WritableTrackingBuffer, typeByName, writeAllHeaders;
1
+ 'use strict';
3
2
 
4
- WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
3
+ var _createClass = require('babel-runtime/helpers/create-class')['default'];
5
4
 
6
- writeAllHeaders = require('./all-headers').writeToTrackingBuffer;
5
+ var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
7
6
 
8
- typeByName = require('./data-type').typeByName;
7
+ var WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
8
+ var writeAllHeaders = require('./all-headers').writeToTrackingBuffer;
9
9
 
10
- OPTION = {
11
- WITH_RECOMPILE: 0x01,
12
- NO_METADATA: 0x02,
13
- REUSE_METADATA: 0x04
14
- };
10
+ // const OPTION = {
11
+ // WITH_RECOMPILE: 0x01,
12
+ // NO_METADATA: 0x02,
13
+ // REUSE_METADATA: 0x04
14
+ // };
15
15
 
16
- STATUS = {
16
+ var STATUS = {
17
17
  BY_REF_VALUE: 0x01,
18
18
  DEFAULT_VALUE: 0x02
19
19
  };
@@ -21,58 +21,84 @@ STATUS = {
21
21
  /*
22
22
  s2.2.6.5
23
23
  */
24
-
25
- RpcRequestPayload = (function () {
24
+ module.exports = (function () {
26
25
  function RpcRequestPayload(request, txnDescriptor, options) {
27
- var base, base1, base2, buffer, i, len, optionFlags, outstandingRequestCount, param, parameter, ref, ref1, ref2, ref3, statusFlags;
26
+ _classCallCheck(this, RpcRequestPayload);
27
+
28
28
  this.request = request;
29
- buffer = new WritableTrackingBuffer(500);
30
29
  this.procedure = this.request.sqlTextOrProcedure;
30
+
31
+ var buffer = new WritableTrackingBuffer(500);
31
32
  if (options.tdsVersion >= '7_2') {
32
- outstandingRequestCount = 1;
33
+ var outstandingRequestCount = 1;
33
34
  writeAllHeaders(buffer, txnDescriptor, outstandingRequestCount);
34
35
  }
36
+
35
37
  if (typeof this.procedure === 'string') {
36
38
  buffer.writeUsVarchar(this.procedure);
37
39
  } else {
38
40
  buffer.writeUShort(0xFFFF);
39
41
  buffer.writeUShort(this.procedure);
40
42
  }
41
- optionFlags = 0;
43
+
44
+ var optionFlags = 0;
42
45
  buffer.writeUInt16LE(optionFlags);
43
- ref = this.request.parameters;
44
- for (i = 0, len = ref.length; i < len; i++) {
45
- parameter = ref[i];
46
- statusFlags = 0;
46
+
47
+ var parameters = this.request.parameters;
48
+ for (var i = 0, len = parameters.length; i < len; i++) {
49
+ var parameter = parameters[i];
50
+ buffer.writeBVarchar('@' + parameter.name);
51
+
52
+ var statusFlags = 0;
47
53
  if (parameter.output) {
48
54
  statusFlags |= STATUS.BY_REF_VALUE;
49
55
  }
50
- buffer.writeBVarchar('@' + parameter.name);
51
56
  buffer.writeUInt8(statusFlags);
52
- param = {
57
+
58
+ var param = {
53
59
  value: parameter.value
54
60
  };
55
- if ((parameter.type.id & 0x30) === 0x20) {
56
- param.length = (ref1 = parameter.length) != null ? ref1 : typeof (base = parameter.type).resolveLength === "function" ? base.resolveLength(parameter) : void 0;
61
+
62
+ var type = parameter.type;
63
+
64
+ if ((type.id & 0x30) === 0x20) {
65
+ if (parameter.length) {
66
+ param.length = parameter.length;
67
+ } else if (type.resolveLength) {
68
+ param.length = type.resolveLength(parameter);
69
+ }
57
70
  }
58
- if (parameter.type.hasPrecision) {
59
- param.precision = (ref2 = parameter.precision) != null ? ref2 : typeof (base1 = parameter.type).resolvePrecision === "function" ? base1.resolvePrecision(parameter) : void 0;
71
+
72
+ if (type.hasPrecision) {
73
+ if (parameter.precision) {
74
+ param.precision = parameter.precision;
75
+ } else if (type.resolvePrecision) {
76
+ param.precision = type.resolvePrecision(parameter);
77
+ }
60
78
  }
61
- if (parameter.type.hasScale) {
62
- param.scale = (ref3 = parameter.scale) != null ? ref3 : typeof (base2 = parameter.type).resolveScale === "function" ? base2.resolveScale(parameter) : void 0;
79
+
80
+ if (type.hasScale) {
81
+ if (parameter.scale) {
82
+ param.scale = parameter.scale;
83
+ } else if (type.resolveScale) {
84
+ param.scale = type.resolveScale(parameter);
85
+ }
63
86
  }
64
- parameter.type.writeTypeInfo(buffer, param, options);
65
- parameter.type.writeParameterData(buffer, param, options);
87
+
88
+ type.writeTypeInfo(buffer, param, options);
89
+ type.writeParameterData(buffer, param, options);
66
90
  }
91
+
67
92
  this.data = buffer.data;
68
93
  }
69
94
 
70
- RpcRequestPayload.prototype.toString = function (indent) {
71
- indent || (indent = '');
72
- return indent + ("RPC Request - " + this.procedure);
73
- };
95
+ _createClass(RpcRequestPayload, [{
96
+ key: 'toString',
97
+ value: function toString(indent) {
98
+ indent || (indent = '');
99
+ return indent + ('RPC Request - ' + this.procedure);
100
+ }
101
+ }]);
74
102
 
75
103
  return RpcRequestPayload;
76
- })();
77
-
78
- module.exports = RpcRequestPayload;
104
+ })();
@@ -1,5 +1,6 @@
1
- // Generated by CoffeeScript 1.10.0
2
- modules.exports = {
1
+ 'use strict';
2
+
3
+ module.exports = {
3
4
  Sp_Cursor: 1,
4
5
  Sp_CursorOpen: 2,
5
6
  Sp_CursorPrepare: 3,
@@ -1,33 +1,37 @@
1
- // Generated by CoffeeScript 1.10.0
2
- var SqlBatchPayload, WritableTrackingBuffer, writeAllHeaders;
1
+ 'use strict';
3
2
 
4
- WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
3
+ var _createClass = require('babel-runtime/helpers/create-class')['default'];
5
4
 
6
- writeAllHeaders = require('./all-headers').writeToTrackingBuffer;
5
+ var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
6
+
7
+ var WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
8
+ var writeAllHeaders = require('./all-headers').writeToTrackingBuffer;
7
9
 
8
10
  /*
9
11
  s2.2.6.6
10
12
  */
11
-
12
- SqlBatchPayload = (function () {
13
+ module.exports = (function () {
13
14
  function SqlBatchPayload(sqlText, txnDescriptor, options) {
14
- var buffer, outstandingRequestCount;
15
+ _classCallCheck(this, SqlBatchPayload);
16
+
15
17
  this.sqlText = sqlText;
16
- buffer = new WritableTrackingBuffer(100 + 2 * this.sqlText.length, 'ucs2');
18
+
19
+ var buffer = new WritableTrackingBuffer(100 + 2 * this.sqlText.length, 'ucs2');
17
20
  if (options.tdsVersion >= '7_2') {
18
- outstandingRequestCount = 1;
21
+ var outstandingRequestCount = 1;
19
22
  writeAllHeaders(buffer, txnDescriptor, outstandingRequestCount);
20
23
  }
21
24
  buffer.writeString(this.sqlText, 'ucs2');
22
25
  this.data = buffer.data;
23
26
  }
24
27
 
25
- SqlBatchPayload.prototype.toString = function (indent) {
26
- indent || (indent = '');
27
- return indent + ("SQL Batch - " + this.sqlText);
28
- };
28
+ _createClass(SqlBatchPayload, [{
29
+ key: 'toString',
30
+ value: function toString(indent) {
31
+ indent || (indent = '');
32
+ return indent + ('SQL Batch - ' + this.sqlText);
33
+ }
34
+ }]);
29
35
 
30
36
  return SqlBatchPayload;
31
- })();
32
-
33
- module.exports = SqlBatchPayload;
37
+ })();
@@ -1,162 +1,174 @@
1
- var _Object$keys = require('babel-runtime/core-js/object/keys').default;
2
-
3
- // Generated by CoffeeScript 1.10.0
4
- var BufferList,
5
- JOBS,
6
- Job,
7
- StreamParser,
8
- stream,
9
- extend = function (child, parent) {
10
- for (var key in parent) {
11
- if (hasProp.call(parent, key)) child[key] = parent[key];
12
- }function ctor() {
13
- this.constructor = child;
14
- }ctor.prototype = parent.prototype;child.prototype = new ctor();child.__super__ = parent.prototype;return child;
15
- },
16
- hasProp = ({}).hasOwnProperty;
17
-
18
- stream = require('readable-stream');
19
-
20
- BufferList = require('bl');
21
-
22
- Job = (function () {
23
- function Job(length1, execute) {
24
- this.length = length1;
25
- this.execute = execute;
26
- }
1
+ 'use strict';
2
+
3
+ var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
4
+
5
+ var _get = require('babel-runtime/helpers/get')['default'];
6
+
7
+ var _inherits = require('babel-runtime/helpers/inherits')['default'];
8
+
9
+ var _createClass = require('babel-runtime/helpers/create-class')['default'];
10
+
11
+ var _Object$keys = require('babel-runtime/core-js/object/keys')['default'];
12
+
13
+ var stream = require('readable-stream');
14
+ var BufferList = require('bl');
15
+
16
+ var Job = function Job(length, execute) {
17
+ _classCallCheck(this, Job);
27
18
 
28
- return Job;
29
- })();
19
+ this.length = length;
20
+ this.execute = execute;
21
+ }
30
22
 
31
- JOBS = {
32
- 'readInt8': new Job(1, function (buffer, offset) {
23
+ // These jobs are non-dynamic, so we can reuse the job objects.
24
+ // This should reduce GC pressure a bit (as less objects will be
25
+ // created and garbage collected during stream parsing).
26
+ ;
27
+
28
+ var JOBS = {
29
+ readInt8: new Job(1, function (buffer, offset) {
33
30
  return buffer.readInt8(offset);
34
31
  }),
35
- 'readUInt8': new Job(1, function (buffer, offset) {
32
+ readUInt8: new Job(1, function (buffer, offset) {
36
33
  return buffer.readUInt8(offset);
37
34
  }),
38
- 'readInt16LE': new Job(2, function (buffer, offset) {
35
+ readInt16LE: new Job(2, function (buffer, offset) {
39
36
  return buffer.readInt16LE(offset);
40
37
  }),
41
- 'readInt16BE': new Job(2, function (buffer, offset) {
38
+ readInt16BE: new Job(2, function (buffer, offset) {
42
39
  return buffer.readInt16BE(offset);
43
40
  }),
44
- 'readUInt16LE': new Job(2, function (buffer, offset) {
41
+ readUInt16LE: new Job(2, function (buffer, offset) {
45
42
  return buffer.readUInt16LE(offset);
46
43
  }),
47
- 'readUInt16BE': new Job(2, function (buffer, offset) {
44
+ readUInt16BE: new Job(2, function (buffer, offset) {
48
45
  return buffer.readUInt16BE(offset);
49
46
  }),
50
- 'readInt32LE': new Job(4, function (buffer, offset) {
47
+ readInt32LE: new Job(4, function (buffer, offset) {
51
48
  return buffer.readInt32LE(offset);
52
49
  }),
53
- 'readInt32BE': new Job(4, function (buffer, offset) {
50
+ readInt32BE: new Job(4, function (buffer, offset) {
54
51
  return buffer.readInt32BE(offset);
55
52
  }),
56
- 'readUInt32LE': new Job(4, function (buffer, offset) {
53
+ readUInt32LE: new Job(4, function (buffer, offset) {
57
54
  return buffer.readUInt32LE(offset);
58
55
  }),
59
- 'readUInt32BE': new Job(4, function (buffer, offset) {
56
+ readUInt32BE: new Job(4, function (buffer, offset) {
60
57
  return buffer.readUInt32BE(offset);
61
58
  }),
62
- 'readInt64LE': new Job(8, function (buffer, offset) {
59
+ readInt64LE: new Job(8, function (buffer, offset) {
63
60
  return Math.pow(2, 32) * buffer.readInt32LE(offset + 4) + (buffer[offset + 4] & 0x80 === 0x80 ? 1 : -1) * buffer.readUInt32LE(offset);
64
61
  }),
65
- 'readInt64BE': new Job(8, function (buffer, offset) {
62
+ readInt64BE: new Job(8, function (buffer, offset) {
66
63
  return Math.pow(2, 32) * buffer.readInt32BE(offset) + (buffer[offset] & 0x80 === 0x80 ? 1 : -1) * buffer.readUInt32BE(offset + 4);
67
64
  }),
68
- 'readUInt64LE': new Job(8, function (buffer, offset) {
65
+ readUInt64LE: new Job(8, function (buffer, offset) {
69
66
  return Math.pow(2, 32) * buffer.readUInt32LE(offset + 4) + buffer.readUInt32LE(offset);
70
67
  }),
71
- 'readUInt64BE': new Job(8, function (buffer, offset) {
68
+ readUInt64BE: new Job(8, function (buffer, offset) {
72
69
  return Math.pow(2, 32) * buffer.readUInt32BE(offset) + buffer.readUInt32BE(offset + 4);
73
70
  }),
74
- 'readFloatLE': new Job(4, function (buffer, offset) {
71
+ readFloatLE: new Job(4, function (buffer, offset) {
75
72
  return buffer.readFloatLE(offset);
76
73
  }),
77
- 'readFloatBE': new Job(4, function (buffer, offset) {
74
+ readFloatBE: new Job(4, function (buffer, offset) {
78
75
  return buffer.readFloatBE(offset);
79
76
  }),
80
- 'readDoubleLE': new Job(8, function (buffer, offset) {
77
+ readDoubleLE: new Job(8, function (buffer, offset) {
81
78
  return buffer.readDoubleLE(offset);
82
79
  }),
83
- 'readDoubleBE': new Job(8, function (buffer, offset) {
80
+ readDoubleBE: new Job(8, function (buffer, offset) {
84
81
  return buffer.readDoubleBE(offset);
85
82
  })
86
83
  };
87
84
 
88
- StreamParser = (function (superClass) {
89
- extend(StreamParser, superClass);
85
+ var StreamParser = (function (_stream$Transform) {
86
+ _inherits(StreamParser, _stream$Transform);
90
87
 
91
88
  function StreamParser(options) {
89
+ _classCallCheck(this, StreamParser);
90
+
92
91
  options = options || {};
93
- if (options.objectMode == null) {
92
+
93
+ if (options.objectMode === undefined) {
94
94
  options.objectMode = true;
95
95
  }
96
- StreamParser.__super__.constructor.call(this, options);
96
+
97
+ _get(Object.getPrototypeOf(StreamParser.prototype), 'constructor', this).call(this, options);
98
+
97
99
  this.buffer = new BufferList();
98
- this.generator = void 0;
99
- this.currentStep = void 0;
100
+ this.generator = undefined;
101
+ this.currentStep = undefined;
100
102
  }
101
103
 
102
- StreamParser.prototype.parser = function () {
103
- throw new Error('Not implemented');
104
- };
105
-
106
- StreamParser.prototype._transform = function (input, encoding, done) {
107
- var job, length, offset, result;
108
- offset = 0;
109
- this.buffer.append(input);
110
- if (!this.generator) {
111
- this.generator = this.parser();
112
- this.currentStep = this.generator.next();
104
+ _createClass(StreamParser, [{
105
+ key: 'parser',
106
+ value: function parser() {
107
+ throw new Error('Not implemented');
113
108
  }
114
- job = void 0;
115
- result = void 0;
116
- length = void 0;
117
- while (!this.currentStep.done) {
118
- job = this.currentStep.value;
119
- if (!(job instanceof Job)) {
120
- return done(new Error('invalid job type'));
109
+ }, {
110
+ key: '_transform',
111
+ value: function _transform(input, encoding, done) {
112
+ this.buffer.append(input);
113
+
114
+ if (!this.generator) {
115
+ this.generator = this.parser();
116
+ this.currentStep = this.generator.next();
121
117
  }
122
- length = job.length;
123
- if (this.buffer.length - offset < length) {
124
- break;
125
- }
126
- result = job.execute(this.buffer, offset);
127
- offset += length;
128
- this.currentStep = this.generator.next(result);
129
- }
130
- this.buffer.consume(offset);
131
- if (this.currentStep.done) {
132
- this.push(null);
133
- }
134
- return done();
135
- };
136
118
 
137
- _Object$keys(JOBS).forEach(function (jobName) {
138
- return StreamParser.prototype[jobName] = function () {
139
- return JOBS[jobName];
140
- };
141
- });
119
+ var offset = 0;
120
+ while (!this.currentStep.done) {
121
+ var job = this.currentStep.value;
122
+ if (!(job instanceof Job)) {
123
+ return done(new Error('invalid job type'));
124
+ }
125
+
126
+ var _length = job.length;
127
+ if (this.buffer.length - offset < _length) {
128
+ break;
129
+ }
130
+
131
+ var result = job.execute(this.buffer, offset);
132
+ offset += _length;
133
+ this.currentStep = this.generator.next(result);
134
+ }
142
135
 
143
- StreamParser.prototype.readBuffer = function (length) {
144
- return new Job(length, function (buffer, offset) {
145
- return buffer.slice(offset, offset + length);
146
- });
147
- };
136
+ this.buffer.consume(offset);
148
137
 
149
- StreamParser.prototype.readString = function (length) {
150
- return new Job(length, function (buffer, offset) {
151
- return buffer.toString('utf8', offset, offset + length);
152
- });
153
- };
138
+ if (this.currentStep.done) {
139
+ this.push(null);
140
+ }
154
141
 
155
- StreamParser.prototype.skip = function (length) {
156
- return new Job(length, function (buffer, offset) {});
157
- };
142
+ done();
143
+ }
144
+ }, {
145
+ key: 'readBuffer',
146
+ value: function readBuffer(length) {
147
+ return new Job(length, function (buffer, offset) {
148
+ return buffer.slice(offset, offset + length);
149
+ });
150
+ }
151
+ }, {
152
+ key: 'readString',
153
+ value: function readString(length) {
154
+ return new Job(length, function (buffer, offset) {
155
+ return buffer.toString('utf8', offset, offset + length);
156
+ });
157
+ }
158
+ }, {
159
+ key: 'skip',
160
+ value: function skip(length) {
161
+ return new Job(length, function () {});
162
+ }
163
+ }]);
158
164
 
159
165
  return StreamParser;
160
166
  })(stream.Transform);
161
167
 
162
- module.exports = StreamParser;
168
+ module.exports = StreamParser;
169
+
170
+ _Object$keys(JOBS).forEach(function (jobName) {
171
+ return StreamParser.prototype[jobName] = function () {
172
+ return JOBS[jobName];
173
+ };
174
+ });
@@ -1,7 +1,6 @@
1
- // Generated by CoffeeScript 1.10.0
2
- var name, ref, value;
1
+ 'use strict';
3
2
 
4
- exports.versions = {
3
+ var versions = module.exports.versions = {
5
4
  '7_1': 0x71000001,
6
5
  '7_2': 0x72090002,
7
6
  '7_3_A': 0x730A0003,
@@ -9,10 +8,8 @@ exports.versions = {
9
8
  '7_4': 0x74000004
10
9
  };
11
10
 
12
- exports.versionsByValue = {};
11
+ var versionsByValue = module.exports.versionsByValue = {};
13
12
 
14
- ref = exports.versions;
15
- for (name in ref) {
16
- value = ref[name];
17
- exports.versionsByValue[value] = name;
13
+ for (var _name in versions) {
14
+ versionsByValue[versions[_name]] = _name;
18
15
  }
package/lib/tedious.js CHANGED
@@ -1,16 +1,10 @@
1
- // Generated by CoffeeScript 1.10.0
2
- exports.statemachineLogLevel = 0;
1
+ 'use strict';
3
2
 
4
- exports.BulkLoad = require('./bulk-load');
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');
5
7
 
6
- exports.Connection = require('./connection');
7
-
8
- exports.Request = require('./request');
9
-
10
- exports.library = require('./library');
11
-
12
- exports.TYPES = require('./data-type').typeByName;
13
-
14
- exports.ISOLATION_LEVEL = require('./transaction').ISOLATION_LEVEL;
15
-
16
- exports.TDS_VERSION = require('./tds-versions').versions;
8
+ module.exports.TYPES = require('./data-type').typeByName;
9
+ module.exports.ISOLATION_LEVEL = require('./transaction').ISOLATION_LEVEL;
10
+ module.exports.TDS_VERSION = require('./tds-versions').versions;