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,17 +1,19 @@
1
- // Generated by CoffeeScript 1.10.0
2
- var ENCRYPT, MARS, PreloginPayload, SUBBUILD, TOKEN, VERSION, WritableTrackingBuffer, encryptByValue, marsByValue, name, optionBufferSize, sprintf, value;
1
+ 'use strict';
3
2
 
4
- sprintf = require('sprintf').sprintf;
3
+ var _createClass = require('babel-runtime/helpers/create-class')['default'];
5
4
 
6
- WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
5
+ var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
7
6
 
8
- optionBufferSize = 20;
7
+ var sprintf = require('sprintf').sprintf;
8
+ var WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
9
9
 
10
- VERSION = 0x000000001;
10
+ var optionBufferSize = 20;
11
11
 
12
- SUBBUILD = 0x0001;
12
+ var VERSION = 0x000000001;
13
13
 
14
- TOKEN = {
14
+ var SUBBUILD = 0x0001;
15
+
16
+ var TOKEN = {
15
17
  VERSION: 0x00,
16
18
  ENCRYPTION: 0x01,
17
19
  INSTOPT: 0x02,
@@ -20,38 +22,39 @@ TOKEN = {
20
22
  TERMINATOR: 0xFF
21
23
  };
22
24
 
23
- ENCRYPT = {
25
+ var ENCRYPT = {
24
26
  OFF: 0x00,
25
27
  ON: 0x01,
26
28
  NOT_SUP: 0x02,
27
29
  REQ: 0x03
28
30
  };
29
31
 
30
- encryptByValue = {};
32
+ var encryptByValue = {};
31
33
 
32
- for (name in ENCRYPT) {
33
- value = ENCRYPT[name];
34
- encryptByValue[value] = name;
34
+ for (var _name in ENCRYPT) {
35
+ var value = ENCRYPT[_name];
36
+ encryptByValue[value] = _name;
35
37
  }
36
38
 
37
- MARS = {
39
+ var MARS = {
38
40
  OFF: 0x00,
39
41
  ON: 0x01
40
42
  };
41
43
 
42
- marsByValue = {};
44
+ var marsByValue = {};
43
45
 
44
- for (name in MARS) {
45
- value = MARS[name];
46
- marsByValue[value] = name;
46
+ for (var _name2 in MARS) {
47
+ var value = MARS[_name2];
48
+ marsByValue[value] = _name2;
47
49
  }
48
50
 
49
51
  /*
50
52
  s2.2.6.4
51
53
  */
52
-
53
- PreloginPayload = (function () {
54
+ module.exports = (function () {
54
55
  function PreloginPayload(bufferOrOptions) {
56
+ _classCallCheck(this, PreloginPayload);
57
+
55
58
  if (bufferOrOptions instanceof Buffer) {
56
59
  this.data = bufferOrOptions;
57
60
  } else {
@@ -61,150 +64,157 @@ PreloginPayload = (function () {
61
64
  this.extractOptions();
62
65
  }
63
66
 
64
- PreloginPayload.prototype.createOptions = function () {
65
- var i, j, len, len1, length, option, optionDataOffset, optionOffset, options;
66
- options = [this.createVersionOption(), this.createEncryptionOption(), this.createInstanceOption(), this.createThreadIdOption(), this.createMarsOption()];
67
- length = 0;
68
- for (i = 0, len = options.length; i < len; i++) {
69
- option = options[i];
70
- length += 5 + option.data.length;
67
+ _createClass(PreloginPayload, [{
68
+ key: 'createOptions',
69
+ value: function createOptions() {
70
+ var options = [this.createVersionOption(), this.createEncryptionOption(), this.createInstanceOption(), this.createThreadIdOption(), this.createMarsOption()];
71
+
72
+ var length = 0;
73
+ for (var i = 0, len = options.length; i < len; i++) {
74
+ var option = options[i];
75
+ length += 5 + option.data.length;
76
+ }
77
+ length++; // terminator
78
+ this.data = new Buffer(length);
79
+ var optionOffset = 0;
80
+ var optionDataOffset = 5 * options.length + 1;
81
+
82
+ for (var j = 0, len = options.length; j < len; j++) {
83
+ var option = options[j];
84
+ this.data.writeUInt8(option.token, optionOffset + 0);
85
+ this.data.writeUInt16BE(optionDataOffset, optionOffset + 1);
86
+ this.data.writeUInt16BE(option.data.length, optionOffset + 3);
87
+ optionOffset += 5;
88
+ option.data.copy(this.data, optionDataOffset);
89
+ optionDataOffset += option.data.length;
90
+ }
91
+
92
+ return this.data.writeUInt8(TOKEN.TERMINATOR, optionOffset);
71
93
  }
72
- length++;
73
- this.data = new Buffer(length);
74
- optionOffset = 0;
75
- optionDataOffset = 5 * options.length + 1;
76
- for (j = 0, len1 = options.length; j < len1; j++) {
77
- option = options[j];
78
- this.data.writeUInt8(option.token, optionOffset + 0);
79
- this.data.writeUInt16BE(optionDataOffset, optionOffset + 1);
80
- this.data.writeUInt16BE(option.data.length, optionOffset + 3);
81
- optionOffset += 5;
82
- option.data.copy(this.data, optionDataOffset);
83
- optionDataOffset += option.data.length;
94
+ }, {
95
+ key: 'createVersionOption',
96
+ value: function createVersionOption() {
97
+ var buffer = new WritableTrackingBuffer(optionBufferSize);
98
+ buffer.writeUInt32BE(VERSION);
99
+ buffer.writeUInt16BE(SUBBUILD);
100
+ return {
101
+ token: TOKEN.VERSION,
102
+ data: buffer.data
103
+ };
84
104
  }
85
- return this.data.writeUInt8(TOKEN.TERMINATOR, optionOffset);
86
- };
87
-
88
- PreloginPayload.prototype.createVersionOption = function () {
89
- var buffer;
90
- buffer = new WritableTrackingBuffer(optionBufferSize);
91
- buffer.writeUInt32BE(VERSION);
92
- buffer.writeUInt16BE(SUBBUILD);
93
- return {
94
- token: TOKEN.VERSION,
95
- data: buffer.data
96
- };
97
- };
98
-
99
- PreloginPayload.prototype.createEncryptionOption = function () {
100
- var buffer;
101
- buffer = new WritableTrackingBuffer(optionBufferSize);
102
- if (this.options.encrypt) {
103
- buffer.writeUInt8(ENCRYPT.ON);
104
- } else {
105
- buffer.writeUInt8(ENCRYPT.NOT_SUP);
105
+ }, {
106
+ key: 'createEncryptionOption',
107
+ value: function createEncryptionOption() {
108
+ var buffer = new WritableTrackingBuffer(optionBufferSize);
109
+ if (this.options.encrypt) {
110
+ buffer.writeUInt8(ENCRYPT.ON);
111
+ } else {
112
+ buffer.writeUInt8(ENCRYPT.NOT_SUP);
113
+ }
114
+ return {
115
+ token: TOKEN.ENCRYPTION,
116
+ data: buffer.data
117
+ };
118
+ }
119
+ }, {
120
+ key: 'createInstanceOption',
121
+ value: function createInstanceOption() {
122
+ var buffer = new WritableTrackingBuffer(optionBufferSize);
123
+ buffer.writeUInt8(0x00);
124
+ return {
125
+ token: TOKEN.INSTOPT,
126
+ data: buffer.data
127
+ };
106
128
  }
107
- return {
108
- token: TOKEN.ENCRYPTION,
109
- data: buffer.data
110
- };
111
- };
112
-
113
- PreloginPayload.prototype.createInstanceOption = function () {
114
- var buffer;
115
- buffer = new WritableTrackingBuffer(optionBufferSize);
116
- buffer.writeUInt8(0x00);
117
- return {
118
- token: TOKEN.INSTOPT,
119
- data: buffer.data
120
- };
121
- };
122
-
123
- PreloginPayload.prototype.createThreadIdOption = function () {
124
- var buffer;
125
- buffer = new WritableTrackingBuffer(optionBufferSize);
126
- buffer.writeUInt32BE(0x00);
127
- return {
128
- token: TOKEN.THREADID,
129
- data: buffer.data
130
- };
131
- };
132
-
133
- PreloginPayload.prototype.createMarsOption = function () {
134
- var buffer;
135
- buffer = new WritableTrackingBuffer(optionBufferSize);
136
- buffer.writeUInt8(MARS.OFF);
137
- return {
138
- token: TOKEN.MARS,
139
- data: buffer.data
140
- };
141
- };
142
-
143
- PreloginPayload.prototype.extractOptions = function () {
144
- var dataLength, dataOffset, offset, results;
145
- offset = 0;
146
- results = [];
147
- while (this.data[offset] !== TOKEN.TERMINATOR) {
148
- dataOffset = this.data.readUInt16BE(offset + 1);
149
- dataLength = this.data.readUInt16BE(offset + 3);
150
- switch (this.data[offset]) {
151
- case TOKEN.VERSION:
152
- this.extractVersion(dataOffset);
153
- break;
154
- case TOKEN.ENCRYPTION:
155
- this.extractEncryption(dataOffset);
156
- break;
157
- case TOKEN.INSTOPT:
158
- this.extractInstance(dataOffset);
159
- break;
160
- case TOKEN.THREADID:
161
- if (dataLength > 0) {
162
- this.extractThreadId(dataOffset);
163
- }
164
- break;
165
- case TOKEN.MARS:
166
- this.extractMars(dataOffset);
129
+ }, {
130
+ key: 'createThreadIdOption',
131
+ value: function createThreadIdOption() {
132
+ var buffer = new WritableTrackingBuffer(optionBufferSize);
133
+ buffer.writeUInt32BE(0x00);
134
+ return {
135
+ token: TOKEN.THREADID,
136
+ data: buffer.data
137
+ };
138
+ }
139
+ }, {
140
+ key: 'createMarsOption',
141
+ value: function createMarsOption() {
142
+ var buffer = new WritableTrackingBuffer(optionBufferSize);
143
+ buffer.writeUInt8(MARS.OFF);
144
+ return {
145
+ token: TOKEN.MARS,
146
+ data: buffer.data
147
+ };
148
+ }
149
+ }, {
150
+ key: 'extractOptions',
151
+ value: function extractOptions() {
152
+ var offset = 0;
153
+ while (this.data[offset] !== TOKEN.TERMINATOR) {
154
+ var dataOffset = this.data.readUInt16BE(offset + 1);
155
+ var dataLength = this.data.readUInt16BE(offset + 3);
156
+ switch (this.data[offset]) {
157
+ case TOKEN.VERSION:
158
+ this.extractVersion(dataOffset);
159
+ break;
160
+ case TOKEN.ENCRYPTION:
161
+ this.extractEncryption(dataOffset);
162
+ break;
163
+ case TOKEN.INSTOPT:
164
+ this.extractInstance(dataOffset);
165
+ break;
166
+ case TOKEN.THREADID:
167
+ if (dataLength > 0) {
168
+ this.extractThreadId(dataOffset);
169
+ }
170
+ break;
171
+ case TOKEN.MARS:
172
+ this.extractMars(dataOffset);
173
+ }
174
+ offset += 5;
175
+ dataOffset += dataLength;
167
176
  }
168
- offset += 5;
169
- results.push(dataOffset += dataLength);
170
177
  }
171
- return results;
172
- };
173
-
174
- PreloginPayload.prototype.extractVersion = function (offset) {
175
- return this.version = {
176
- major: this.data.readUInt8(offset + 0),
177
- minor: this.data.readUInt8(offset + 1),
178
- patch: this.data.readUInt8(offset + 2),
179
- trivial: this.data.readUInt8(offset + 3),
180
- subbuild: this.data.readUInt16BE(offset + 4)
181
- };
182
- };
183
-
184
- PreloginPayload.prototype.extractEncryption = function (offset) {
185
- this.encryption = this.data.readUInt8(offset);
186
- return this.encryptionString = encryptByValue[this.encryption];
187
- };
188
-
189
- PreloginPayload.prototype.extractInstance = function (offset) {
190
- return this.instance = this.data.readUInt8(offset);
191
- };
192
-
193
- PreloginPayload.prototype.extractThreadId = function (offset) {
194
- return this.threadId = this.data.readUInt32BE(offset);
195
- };
196
-
197
- PreloginPayload.prototype.extractMars = function (offset) {
198
- this.mars = this.data.readUInt8(offset);
199
- return this.marsString = marsByValue[this.mars];
200
- };
201
-
202
- PreloginPayload.prototype.toString = function (indent) {
203
- indent || (indent = '');
204
- return indent + 'PreLogin - ' + sprintf('version:%d.%d.%d.%d %d, encryption:0x%02X(%s), instopt:0x%02X, threadId:0x%08X, mars:0x%02X(%s)', this.version.major, this.version.minor, this.version.patch, this.version.trivial, this.version.subbuild, this.encryption ? this.encryption : 0, this.encryptionString ? this.encryptionString : 0, this.instance ? this.instance : 0, this.threadId ? this.threadId : 0, this.mars ? this.mars : 0, this.marsString ? this.marsString : 0);
205
- };
178
+ }, {
179
+ key: 'extractVersion',
180
+ value: function extractVersion(offset) {
181
+ return this.version = {
182
+ major: this.data.readUInt8(offset + 0),
183
+ minor: this.data.readUInt8(offset + 1),
184
+ patch: this.data.readUInt8(offset + 2),
185
+ trivial: this.data.readUInt8(offset + 3),
186
+ subbuild: this.data.readUInt16BE(offset + 4)
187
+ };
188
+ }
189
+ }, {
190
+ key: 'extractEncryption',
191
+ value: function extractEncryption(offset) {
192
+ this.encryption = this.data.readUInt8(offset);
193
+ return this.encryptionString = encryptByValue[this.encryption];
194
+ }
195
+ }, {
196
+ key: 'extractInstance',
197
+ value: function extractInstance(offset) {
198
+ return this.instance = this.data.readUInt8(offset);
199
+ }
200
+ }, {
201
+ key: 'extractThreadId',
202
+ value: function extractThreadId(offset) {
203
+ return this.threadId = this.data.readUInt32BE(offset);
204
+ }
205
+ }, {
206
+ key: 'extractMars',
207
+ value: function extractMars(offset) {
208
+ this.mars = this.data.readUInt8(offset);
209
+ return this.marsString = marsByValue[this.mars];
210
+ }
211
+ }, {
212
+ key: 'toString',
213
+ value: function toString(indent) {
214
+ indent || (indent = '');
215
+ return indent + 'PreLogin - ' + sprintf('version:%d.%d.%d.%d %d, encryption:0x%02X(%s), instopt:0x%02X, threadId:0x%08X, mars:0x%02X(%s)', this.version.major, this.version.minor, this.version.patch, this.version.trivial, this.version.subbuild, this.encryption ? this.encryption : 0, this.encryptionString ? this.encryptionString : 0, this.instance ? this.instance : 0, this.threadId ? this.threadId : 0, this.mars ? this.mars : 0, this.marsString ? this.marsString : 0);
216
+ }
217
+ }]);
206
218
 
207
219
  return PreloginPayload;
208
- })();
209
-
210
- module.exports = PreloginPayload;
220
+ })();
package/lib/request.js CHANGED
@@ -1,31 +1,25 @@
1
- // Generated by CoffeeScript 1.10.0
2
- var EventEmitter,
3
- Request,
4
- RequestError,
5
- TYPES,
6
- extend = function (child, parent) {
7
- for (var key in parent) {
8
- if (hasProp.call(parent, key)) child[key] = parent[key];
9
- }function ctor() {
10
- this.constructor = child;
11
- }ctor.prototype = parent.prototype;child.prototype = new ctor();child.__super__ = parent.prototype;return child;
12
- },
13
- hasProp = ({}).hasOwnProperty;
1
+ 'use strict';
14
2
 
15
- EventEmitter = require('events').EventEmitter;
3
+ var _get = require('babel-runtime/helpers/get')['default'];
16
4
 
17
- TYPES = require('./data-type').typeByName;
5
+ var _inherits = require('babel-runtime/helpers/inherits')['default'];
18
6
 
19
- RequestError = require('./errors').RequestError;
7
+ var _createClass = require('babel-runtime/helpers/create-class')['default'];
20
8
 
21
- Request = (function (superClass) {
22
- extend(Request, superClass);
9
+ var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
23
10
 
24
- Request.prototype.error = null;
11
+ var EventEmitter = require('events').EventEmitter;
12
+ var TYPES = require('./data-type').typeByName;
13
+ var RequestError = require('./errors').RequestError;
25
14
 
26
- Request.prototype.canceled = false;
15
+ module.exports = (function (_EventEmitter) {
16
+ _inherits(Request, _EventEmitter);
27
17
 
28
18
  function Request(sqlTextOrProcedure, callback) {
19
+ _classCallCheck(this, Request);
20
+
21
+ _get(Object.getPrototypeOf(Request.prototype), 'constructor', this).call(this);
22
+
29
23
  this.sqlTextOrProcedure = sqlTextOrProcedure;
30
24
  this.callback = callback;
31
25
  this.parameters = [];
@@ -42,124 +36,130 @@ Request = (function (superClass) {
42
36
  };
43
37
  }
44
38
 
45
- Request.prototype.addParameter = function (name, type, value, options) {
46
- var parameter;
47
- if (options == null) {
48
- options = {};
49
- }
50
- parameter = {
51
- type: type,
52
- name: name,
53
- value: value,
54
- output: options.output || (options.output = false),
55
- length: options.length,
56
- precision: options.precision,
57
- scale: options.scale
58
- };
59
- this.parameters.push(parameter);
60
- return this.parametersByName[name] = parameter;
61
- };
39
+ _createClass(Request, [{
40
+ key: 'addParameter',
41
+ value: function addParameter(name, type, value, options) {
42
+ if (options == null) {
43
+ options = {};
44
+ }
62
45
 
63
- Request.prototype.addOutputParameter = function (name, type, value, options) {
64
- if (options == null) {
65
- options = {};
46
+ var parameter = {
47
+ type: type,
48
+ name: name,
49
+ value: value,
50
+ output: options.output || (options.output = false),
51
+ length: options.length,
52
+ precision: options.precision,
53
+ scale: options.scale
54
+ };
55
+ this.parameters.push(parameter);
56
+ return this.parametersByName[name] = parameter;
66
57
  }
67
- options.output = true;
68
- return this.addParameter(name, type, value, options);
69
- };
70
-
71
- Request.prototype.makeParamsParameter = function (parameters) {
72
- var i, len, parameter, paramsParameter;
73
- paramsParameter = '';
74
- for (i = 0, len = parameters.length; i < len; i++) {
75
- parameter = parameters[i];
76
- if (paramsParameter.length > 0) {
77
- paramsParameter += ', ';
58
+ }, {
59
+ key: 'addOutputParameter',
60
+ value: function addOutputParameter(name, type, value, options) {
61
+ if (options == null) {
62
+ options = {};
78
63
  }
79
- paramsParameter += "@" + parameter.name + " ";
80
- paramsParameter += parameter.type.declaration(parameter);
81
- if (parameter.output) {
82
- paramsParameter += ' OUTPUT';
64
+ options.output = true;
65
+ return this.addParameter(name, type, value, options);
66
+ }
67
+ }, {
68
+ key: 'makeParamsParameter',
69
+ value: function makeParamsParameter(parameters) {
70
+ var paramsParameter = '';
71
+ for (var i = 0, len = parameters.length; i < len; i++) {
72
+ var parameter = parameters[i];
73
+ if (paramsParameter.length > 0) {
74
+ paramsParameter += ', ';
75
+ }
76
+ paramsParameter += '@' + parameter.name + ' ';
77
+ paramsParameter += parameter.type.declaration(parameter);
78
+ if (parameter.output) {
79
+ paramsParameter += ' OUTPUT';
80
+ }
83
81
  }
82
+ return paramsParameter;
84
83
  }
85
- return paramsParameter;
86
- };
84
+ }, {
85
+ key: 'transformIntoExecuteSqlRpc',
86
+ value: function transformIntoExecuteSqlRpc() {
87
+ if (this.validateParameters()) {
88
+ return;
89
+ }
90
+
91
+ this.originalParameters = this.parameters;
92
+ this.parameters = [];
93
+ this.addParameter('statement', TYPES.NVarChar, this.sqlTextOrProcedure);
94
+ if (this.originalParameters.length) {
95
+ this.addParameter('params', TYPES.NVarChar, this.makeParamsParameter(this.originalParameters));
96
+ }
87
97
 
88
- Request.prototype.transformIntoExecuteSqlRpc = function () {
89
- var i, len, parameter, ref;
90
- if (this.validateParameters()) {
91
- return;
98
+ for (var i = 0, len = this.originalParameters.length; i < len; i++) {
99
+ var parameter = this.originalParameters[i];
100
+ this.parameters.push(parameter);
101
+ }
102
+ return this.sqlTextOrProcedure = 'sp_executesql';
92
103
  }
93
- this.originalParameters = this.parameters;
94
- this.parameters = [];
95
- this.addParameter('statement', TYPES.NVarChar, this.sqlTextOrProcedure);
96
- if (this.originalParameters.length) {
104
+ }, {
105
+ key: 'transformIntoPrepareRpc',
106
+ value: function transformIntoPrepareRpc() {
107
+ var _this = this;
108
+
109
+ this.originalParameters = this.parameters;
110
+ this.parameters = [];
111
+ this.addOutputParameter('handle', TYPES.Int);
97
112
  this.addParameter('params', TYPES.NVarChar, this.makeParamsParameter(this.originalParameters));
98
- }
99
- ref = this.originalParameters;
100
- for (i = 0, len = ref.length; i < len; i++) {
101
- parameter = ref[i];
102
- this.parameters.push(parameter);
103
- }
104
- return this.sqlTextOrProcedure = 'sp_executesql';
105
- };
106
-
107
- Request.prototype.transformIntoPrepareRpc = function () {
108
- this.originalParameters = this.parameters;
109
- this.parameters = [];
110
- this.addOutputParameter('handle', TYPES.Int);
111
- this.addParameter('params', TYPES.NVarChar, this.makeParamsParameter(this.originalParameters));
112
- this.addParameter('stmt', TYPES.NVarChar, this.sqlTextOrProcedure);
113
- this.sqlTextOrProcedure = 'sp_prepare';
114
- this.preparing = true;
115
- return this.on('returnValue', (function (_this) {
116
- return function (name, value, metadata) {
113
+ this.addParameter('stmt', TYPES.NVarChar, this.sqlTextOrProcedure);
114
+ this.sqlTextOrProcedure = 'sp_prepare';
115
+ this.preparing = true;
116
+ return this.on('returnValue', function (name, value) {
117
117
  if (name === 'handle') {
118
118
  return _this.handle = value;
119
119
  } else {
120
- return _this.error = RequestError("Tedious > Unexpected output parameter " + name + " from sp_prepare");
120
+ return _this.error = RequestError('Tedious > Unexpected output parameter ' + name + ' from sp_prepare');
121
121
  }
122
- };
123
- })(this));
124
- };
122
+ });
123
+ }
124
+ }, {
125
+ key: 'transformIntoUnprepareRpc',
126
+ value: function transformIntoUnprepareRpc() {
127
+ this.parameters = [];
128
+ this.addParameter('handle', TYPES.Int, this.handle);
129
+ return this.sqlTextOrProcedure = 'sp_unprepare';
130
+ }
131
+ }, {
132
+ key: 'transformIntoExecuteRpc',
133
+ value: function transformIntoExecuteRpc(parameters) {
134
+ this.parameters = [];
135
+ this.addParameter('handle', TYPES.Int, this.handle);
136
+
137
+ for (var i = 0, len = this.originalParameters.length; i < len; i++) {
138
+ var parameter = this.originalParameters[i];
139
+ parameter.value = parameters[parameter.name];
140
+ this.parameters.push(parameter);
141
+ }
125
142
 
126
- Request.prototype.transformIntoUnprepareRpc = function (parameters) {
127
- this.parameters = [];
128
- this.addParameter('handle', TYPES.Int, this.handle);
129
- return this.sqlTextOrProcedure = 'sp_unprepare';
130
- };
143
+ if (this.validateParameters()) {
144
+ return;
145
+ }
131
146
 
132
- Request.prototype.transformIntoExecuteRpc = function (parameters) {
133
- var i, len, parameter, ref;
134
- this.parameters = [];
135
- this.addParameter('handle', TYPES.Int, this.handle);
136
- ref = this.originalParameters;
137
- for (i = 0, len = ref.length; i < len; i++) {
138
- parameter = ref[i];
139
- parameter.value = parameters[parameter.name];
140
- this.parameters.push(parameter);
147
+ return this.sqlTextOrProcedure = 'sp_execute';
141
148
  }
142
- if (this.validateParameters()) {
143
- return;
144
- }
145
- return this.sqlTextOrProcedure = 'sp_execute';
146
- };
147
-
148
- Request.prototype.validateParameters = function () {
149
- var i, len, parameter, ref, value;
150
- ref = this.parameters;
151
- for (i = 0, len = ref.length; i < len; i++) {
152
- parameter = ref[i];
153
- value = parameter.type.validate(parameter.value);
154
- if (value instanceof TypeError) {
155
- return this.error = new RequestError("Validation failed for parameter '" + parameter.name + "'. " + value.message, "EPARAM");
149
+ }, {
150
+ key: 'validateParameters',
151
+ value: function validateParameters() {
152
+ for (var i = 0, len = this.parameters.length; i < len; i++) {
153
+ var parameter = this.parameters[i];
154
+ var value = parameter.type.validate(parameter.value);
155
+ if (value instanceof TypeError) {
156
+ return this.error = new RequestError('Validation failed for parameter \'' + parameter.name + '\'. ' + value.message, 'EPARAM');
157
+ }
158
+ parameter.value = value;
156
159
  }
157
- parameter.value = value;
160
+ return null;
158
161
  }
159
- return null;
160
- };
162
+ }]);
161
163
 
162
164
  return Request;
163
- })(EventEmitter);
164
-
165
- module.exports = Request;
165
+ })(EventEmitter);