node-firebird 1.1.10 → 2.0.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.
@@ -13,135 +13,149 @@ function align(n) {
13
13
  const
14
14
  MAX_STRING_SIZE = 255;
15
15
 
16
- var BlrWriter = exports.BlrWriter = function(size){
17
- this.buffer = Buffer.alloc(size || 32);
18
- this.pos = 0;
19
- };
20
-
21
- BlrWriter.prototype.addByte = function (b) {
22
- this.ensure(1);
23
- this.buffer.writeUInt8(b, this.pos);
24
- this.pos++;
25
- };
26
-
27
- BlrWriter.prototype.addShort = function (b) {
28
- this.ensure(1);
29
- this.buffer.writeInt8(b, this.pos);
30
- this.pos++;
31
- };
32
-
33
- BlrWriter.prototype.addSmall = function (b) {
34
- this.ensure(2);
35
- this.buffer.writeInt16LE(b, this.pos);
36
- this.pos += 2;
37
- };
38
-
39
- BlrWriter.prototype.addWord = function (b) {
40
- this.ensure(2);
41
- this.buffer.writeUInt16LE(b, this.pos);
42
- this.pos += 2;
43
- };
44
-
45
- BlrWriter.prototype.addInt32 = function (b) {
46
- this.ensure(4);
47
- this.buffer.writeUInt32LE(b, this.pos);
48
- this.pos += 4;
49
- };
50
-
51
- BlrWriter.prototype.addByteInt32 = function (c, b) {
52
- this.addByte(c);
53
- this.ensure(4);
54
- this.buffer.writeUInt32LE(b, this.pos);
55
- this.pos += 4;
56
- };
57
-
58
- BlrWriter.prototype.addNumeric = function (c, v) {
59
-
60
- if (v < 256){
61
- this.ensure(3);
62
- this.buffer.writeUInt8(c, this.pos);
63
- this.pos++;
64
- this.buffer.writeUInt8(1, this.pos);
16
+ class BlrWriter {
17
+ constructor(size) {
18
+ this.buffer = Buffer.alloc(size || 32);
19
+ this.pos = 0;
20
+ }
21
+
22
+ ensure(len) {
23
+ var newlen = this.buffer.length;
24
+
25
+ while (newlen < this.pos + len)
26
+ newlen *= 2
27
+
28
+ if (this.buffer.length >= newlen)
29
+ return;
30
+
31
+ var b = Buffer.alloc(newlen);
32
+ this.buffer.copy(b);
33
+ delete(this.buffer);
34
+ this.buffer = b;
35
+ }
36
+
37
+ addByte(b) {
38
+ this.ensure(1);
39
+ this.buffer.writeUInt8(b, this.pos);
65
40
  this.pos++;
66
- this.buffer.writeUInt8(v, this.pos);
41
+ }
42
+
43
+ addShort(b) {
44
+ this.ensure(1);
45
+ this.buffer.writeInt8(b, this.pos);
67
46
  this.pos++;
68
- return;
69
47
  }
70
48
 
71
- this.ensure(6);
72
- this.buffer.writeUInt8(c, this.pos);
73
- this.pos++;
74
- this.buffer.writeUInt8(4, this.pos);
75
- this.pos++;
76
- this.buffer.writeInt32BE(v, this.pos);
77
- this.pos += 4;
49
+ addSmall(b) {
50
+ this.ensure(2);
51
+ this.buffer.writeInt16LE(b, this.pos);
52
+ this.pos += 2;
53
+ }
78
54
 
79
- };
55
+ addWord(b) {
56
+ this.ensure(2);
57
+ this.buffer.writeUInt16LE(b, this.pos);
58
+ this.pos += 2;
59
+ }
80
60
 
81
- BlrWriter.prototype.addBytes = function (b) {
61
+ addInt32(b) {
62
+ this.ensure(4);
63
+ this.buffer.writeUInt32LE(b, this.pos);
64
+ this.pos += 4;
65
+ }
82
66
 
83
- this.ensure(b.length);
84
- for (var i = 0, length = b.length; i < length; i++) {
85
- this.buffer.writeUInt8(b[i], this.pos);
67
+ addByteInt32(c, b) {
68
+ this.addByte(c);
69
+ this.ensure(4);
70
+ this.buffer.writeUInt32LE(b, this.pos);
71
+ this.pos += 4;
72
+ }
73
+
74
+ addNumeric(c, v) {
75
+ if (v < 256){
76
+ this.ensure(3);
77
+ this.buffer.writeUInt8(c, this.pos);
78
+ this.pos++;
79
+ this.buffer.writeUInt8(1, this.pos);
80
+ this.pos++;
81
+ this.buffer.writeUInt8(v, this.pos);
82
+ this.pos++;
83
+ return;
84
+ }
85
+
86
+ this.ensure(6);
87
+ this.buffer.writeUInt8(c, this.pos);
88
+ this.pos++;
89
+ this.buffer.writeUInt8(4, this.pos);
86
90
  this.pos++;
91
+ this.buffer.writeInt32BE(v, this.pos);
92
+ this.pos += 4;
87
93
  }
88
- };
89
94
 
90
- BlrWriter.prototype.addString = function (c, s, encoding) {
91
- this.addByte(c);
95
+ addBytes(b) {
96
+ this.ensure(b.length);
97
+ for (var i = 0, length = b.length; i < length; i++) {
98
+ this.buffer.writeUInt8(b[i], this.pos);
99
+ this.pos++;
100
+ }
101
+ }
92
102
 
93
- var len = Buffer.byteLength(s, encoding);
94
- if (len > MAX_STRING_SIZE)
95
- throw new Error('blr string is too big');
103
+ addString(c, s, encoding) {
104
+ this.addByte(c);
96
105
 
97
- this.ensure(len + 1);
98
- this.buffer.writeUInt8(len, this.pos);
99
- this.pos++;
100
- this.buffer.write(s, this.pos, len, encoding);
101
- this.pos += len;
102
- };
106
+ var len = Buffer.byteLength(s, encoding);
107
+ if (len > MAX_STRING_SIZE)
108
+ throw new Error('blr string is too big');
103
109
 
104
- BlrWriter.prototype.addBuffer = function (b) {
105
- this.addWord(b.length);
106
- this.ensure(b.length);
107
- b.copy(this.buffer, this.pos);
108
- this.pos += b.length;
109
- };
110
+ this.ensure(len + 1);
111
+ this.buffer.writeUInt8(len, this.pos);
112
+ this.pos++;
113
+ this.buffer.write(s, this.pos, len, encoding);
114
+ this.pos += len;
115
+ }
110
116
 
111
- BlrWriter.prototype.addString2 = function (c, s, encoding) {
112
- this.addByte(c);
117
+ addBuffer(b) {
118
+ this.addWord(b.length);
119
+ this.ensure(b.length);
120
+ b.copy(this.buffer, this.pos);
121
+ this.pos += b.length;
122
+ }
113
123
 
114
- var len = Buffer.byteLength(s, encoding);
115
- if (len > MAX_STRING_SIZE* MAX_STRING_SIZE)
116
- throw new Error('blr string is too big');
124
+ addString2(c, s, encoding) {
125
+ this.addByte(c);
117
126
 
118
- this.ensure(len + 2);
119
- this.buffer.writeUInt16LE(len, this.pos);
120
- this.pos += 2;
121
- this.buffer.write(s, this.pos, len, encoding);
122
- this.pos += len;
123
- };
127
+ var len = Buffer.byteLength(s, encoding);
128
+ if (len > MAX_STRING_SIZE* MAX_STRING_SIZE)
129
+ throw new Error('blr string is too big');
124
130
 
125
- BlrWriter.prototype.addMultiblockPart = function (c, s, encoding) {
126
- var buff = Buffer.from(s, encoding);
127
- var remaining = buff.length;
128
- var step = 0;
131
+ this.ensure(len + 2);
132
+ this.buffer.writeUInt16LE(len, this.pos);
133
+ this.pos += 2;
134
+ this.buffer.write(s, this.pos, len, encoding);
135
+ this.pos += len;
136
+ }
129
137
 
130
- while (remaining > 0) {
131
- var toWrite = Math.min(remaining, 254);
138
+ addMultiblockPart(c, s, encoding) {
139
+ var buff = Buffer.from(s, encoding);
140
+ var remaining = buff.length;
141
+ var step = 0;
132
142
 
133
- this.addByte(c);
134
- this.addByte(toWrite + 1);
135
- this.addByte(step);
143
+ while (remaining > 0) {
144
+ var toWrite = Math.min(remaining, 254);
136
145
 
137
- this.ensure(toWrite);
138
- buff.copy(this.buffer, this.pos, step * 254, (step * 254) + toWrite);
146
+ this.addByte(c);
147
+ this.addByte(toWrite + 1);
148
+ this.addByte(step);
139
149
 
140
- step++;
141
- remaining -= toWrite;
142
- this.pos += toWrite;
150
+ this.ensure(toWrite);
151
+ buff.copy(this.buffer, this.pos, step * 254, (step * 254) + toWrite);
152
+
153
+ step++;
154
+ remaining -= toWrite;
155
+ this.pos += toWrite;
156
+ }
143
157
  }
144
- };
158
+ }
145
159
 
146
160
  /***************************************
147
161
  *
@@ -149,83 +163,83 @@ BlrWriter.prototype.addMultiblockPart = function (c, s, encoding) {
149
163
  *
150
164
  ***************************************/
151
165
 
152
- var BlrReader = exports.BlrReader = function(buffer) {
153
- this.buffer = buffer;
154
- this.pos = 0;
155
- };
156
-
157
- BlrReader.prototype.readByteCode = function(){
158
- return this.buffer.readUInt8(this.pos++);
159
- };
166
+ class BlrReader {
167
+ constructor(buffer) {
168
+ this.buffer = buffer;
169
+ this.pos = 0;
170
+ }
160
171
 
161
- BlrReader.prototype.readInt32 = function () {
162
- var value = this.buffer.readUInt32LE(this.pos);
163
- this.pos += 4;
164
- return value;
165
- }
172
+ readByteCode() {
173
+ return this.buffer.readUInt8(this.pos++);
174
+ }
166
175
 
167
- BlrReader.prototype.readInt = function(){
168
- var len = this.buffer.readUInt16LE(this.pos);
169
- this.pos += 2;
170
- var value;
171
- switch (len) {
172
- case 1:
173
- value = this.buffer.readInt8(this.pos);
174
- break;
175
- case 2:
176
- value = this.buffer.readInt16LE(this.pos);
177
- break;
178
- case 4:
179
- value = this.buffer.readInt32LE(this.pos)
176
+ readInt32() {
177
+ var value = this.buffer.readUInt32LE(this.pos);
178
+ this.pos += 4;
179
+ return value;
180
180
  }
181
- this.pos += len;
182
- return value;
183
- };
184
181
 
185
- BlrReader.prototype.readString = function(encoding){
182
+ readInt() {
183
+ var len = this.buffer.readUInt16LE(this.pos);
184
+ this.pos += 2;
185
+ var value;
186
+ switch (len) {
187
+ case 1:
188
+ value = this.buffer.readInt8(this.pos);
189
+ break;
190
+ case 2:
191
+ value = this.buffer.readInt16LE(this.pos);
192
+ break;
193
+ case 4:
194
+ value = this.buffer.readInt32LE(this.pos)
195
+ }
196
+ this.pos += len;
197
+ return value;
198
+ }
186
199
 
187
- var len = this.buffer.readUInt16LE(this.pos);
188
- var str;
200
+ readString(encoding) {
201
+ var len = this.buffer.readUInt16LE(this.pos);
202
+ var str;
189
203
 
190
- this.pos += 2;
191
- if (len <= 0)
192
- return '';
204
+ this.pos += 2;
205
+ if (len <= 0)
206
+ return '';
193
207
 
194
- str = this.buffer.toString(encoding, this.pos, this.pos + len);
195
- this.pos += len;
196
- return str;
197
- };
208
+ str = this.buffer.toString(encoding, this.pos, this.pos + len);
209
+ this.pos += len;
210
+ return str;
211
+ }
198
212
 
199
- BlrReader.prototype.readSegment = function() {
213
+ readSegment() {
214
+ var ret, tmp;
215
+ var len = this.buffer.readUInt16LE(this.pos);
200
216
 
201
- var ret, tmp;
202
- var len = this.buffer.readUInt16LE(this.pos);
217
+ this.pos += 2;
203
218
 
204
- this.pos += 2;
219
+ while (len > 0) {
205
220
 
206
- while (len > 0) {
221
+ if (ret) {
222
+ tmp = ret;
223
+ ret = Buffer.alloc(tmp.length + len);
224
+ tmp.copy(ret);
225
+ this.buffer.copy(ret, tmp.length, this.pos, this.pos + len);
226
+ } else {
227
+ ret = Buffer.alloc(len);
228
+ this.buffer.copy(ret, 0, this.pos, this.pos + len);
229
+ }
207
230
 
208
- if (ret) {
209
- tmp = ret;
210
- ret = Buffer.alloc(tmp.length + len);
211
- tmp.copy(ret);
212
- this.buffer.copy(ret, tmp.length, this.pos, this.pos + len);
213
- } else {
214
- ret = Buffer.alloc(len);
215
- this.buffer.copy(ret, 0, this.pos, this.pos + len);
216
- }
231
+ this.pos += len;
217
232
 
218
- this.pos += len;
233
+ if (this.pos === this.buffer.length)
234
+ break;
219
235
 
220
- if (this.pos === this.buffer.length)
221
- break;
236
+ len = this.buffer.readUInt16LE(this.pos);
237
+ this.pos += 2;
238
+ }
222
239
 
223
- len = this.buffer.readUInt16LE(this.pos);
224
- this.pos += 2;
240
+ return ret ? ret : Buffer.alloc(0);
225
241
  }
226
-
227
- return ret ? ret : Buffer.alloc(0);
228
- };
242
+ }
229
243
 
230
244
  /***************************************
231
245
  *
@@ -233,119 +247,121 @@ BlrReader.prototype.readSegment = function() {
233
247
  *
234
248
  ***************************************/
235
249
 
236
- var XdrWriter = exports.XdrWriter = function(size){
237
- this.buffer = Buffer.alloc(size || 32);
238
- this.pos = 0;
239
- };
240
-
241
- XdrWriter.prototype.ensure = BlrWriter.prototype.ensure = function (len) {
242
- var newlen = this.buffer.length;
243
-
244
- while (newlen < this.pos + len)
245
- newlen *= 2
246
-
247
- if (this.buffer.length >= newlen)
248
- return;
249
-
250
- var b = Buffer.alloc(newlen);
251
- this.buffer.copy(b);
252
- delete(this.buffer);
253
- this.buffer = b;
254
- };
255
-
256
- XdrWriter.prototype.addInt = function (value) {
257
- this.ensure(4);
258
- this.buffer.writeInt32BE(value, this.pos);
259
- this.pos += 4;
260
- };
261
-
262
- XdrWriter.prototype.addInt64 = function (value) {
263
- this.ensure(8);
264
- var l = Long.fromNumber(value);
265
- this.buffer.writeInt32BE(l.high, this.pos);
266
- this.pos += 4;
267
- this.buffer.writeInt32BE(l.low, this.pos);
268
- this.pos += 4;
269
- };
270
-
271
- XdrWriter.prototype.addInt128 = function (value) {
272
- this.ensure(16);
273
-
274
- const bigValue = BigInt(value);
275
-
276
- const high = bigValue >> BigInt(64);
277
- const low = bigValue & BigInt("0xFFFFFFFFFFFFFFFF");
278
-
279
- this.buffer.writeBigUInt64BE(high, this.pos);
280
- this.pos += 8;
281
- this.buffer.writeBigUInt64BE(low, this.pos);
282
- this.pos += 8;
283
- };
284
-
285
- XdrWriter.prototype.addUInt = function (value) {
286
- this.ensure(4);
287
- this.buffer.writeUInt32BE(value, this.pos);
288
- this.pos += 4;
289
- };
290
-
291
- XdrWriter.prototype.addString = function(s, encoding) {
292
- var len = Buffer.byteLength(s, encoding);
293
- var alen = align(len);
294
- this.ensure(alen + 4);
295
- this.buffer.writeInt32BE(len, this.pos);
296
- this.pos += 4;
297
- this.buffer.write(s, this.pos, len, encoding);
298
- this.pos += alen;
299
- };
300
-
301
- XdrWriter.prototype.addText = function(s, encoding) {
302
- var len = Buffer.byteLength(s, encoding);
303
- var alen = align(len);
304
- this.ensure(alen);
305
- this.buffer.write(s, this.pos, len, encoding);
306
- this.pos += alen;
307
- };
308
-
309
- XdrWriter.prototype.addBlr = function(blr) {
310
- var alen = align(blr.pos);
311
- this.ensure(alen + 4);
312
- this.buffer.writeInt32BE(blr.pos, this.pos);
313
- this.pos += 4;
314
- blr.buffer.copy(this.buffer, this.pos);
315
- this.pos += alen;
316
- };
317
-
318
- XdrWriter.prototype.getData = function() {
319
- return this.buffer.slice(0, this.pos);
320
- };
321
-
322
- XdrWriter.prototype.addDouble = function(value) {
323
- this.ensure(8);
324
- this.buffer.writeDoubleBE(value, this.pos);
325
- this.pos += 8;
326
- };
327
-
328
- XdrWriter.prototype.addQuad = function(quad) {
329
- this.ensure(8);
330
- var b = this.buffer;
331
- b.writeInt32BE(quad.high, this.pos);
332
- this.pos += 4;
333
- b.writeInt32BE(quad.low, this.pos);
334
- this.pos += 4;
335
- };
336
-
337
- XdrWriter.prototype.addBuffer = function(buffer) {
338
- this.ensure(buffer.length);
339
- buffer.copy(this.buffer, this.pos, 0, buffer.length);
340
- this.pos += buffer.length;
341
- }
250
+ class XdrWriter {
251
+ constructor(size) {
252
+ this.buffer = Buffer.alloc(size || 32);
253
+ this.pos = 0;
254
+ }
255
+
256
+ ensure(len) {
257
+ var newlen = this.buffer.length;
258
+
259
+ while (newlen < this.pos + len)
260
+ newlen *= 2
261
+
262
+ if (this.buffer.length >= newlen)
263
+ return;
264
+
265
+ var b = Buffer.alloc(newlen);
266
+ this.buffer.copy(b);
267
+ delete(this.buffer);
268
+ this.buffer = b;
269
+ }
270
+
271
+ addInt(value) {
272
+ this.ensure(4);
273
+ this.buffer.writeInt32BE(value, this.pos);
274
+ this.pos += 4;
275
+ }
276
+
277
+ addInt64(value) {
278
+ this.ensure(8);
279
+ var l = Long.fromNumber(value);
280
+ this.buffer.writeInt32BE(l.high, this.pos);
281
+ this.pos += 4;
282
+ this.buffer.writeInt32BE(l.low, this.pos);
283
+ this.pos += 4;
284
+ }
342
285
 
343
- XdrWriter.prototype.addAlignment = function(len) {
344
- var alen = (4 - len) & 3;
286
+ addInt128(value) {
287
+ this.ensure(16);
345
288
 
346
- this.ensure(alen);
347
- this.buffer.write('ffffff', this.pos, alen, 'hex');
348
- this.pos += alen;
289
+ const bigValue = BigInt(value);
290
+
291
+ const high = bigValue >> BigInt(64);
292
+ const low = bigValue & BigInt("0xFFFFFFFFFFFFFFFF");
293
+
294
+ this.buffer.writeBigUInt64BE(high, this.pos);
295
+ this.pos += 8;
296
+ this.buffer.writeBigUInt64BE(low, this.pos);
297
+ this.pos += 8;
298
+ }
299
+
300
+ addUInt(value) {
301
+ this.ensure(4);
302
+ this.buffer.writeUInt32BE(value, this.pos);
303
+ this.pos += 4;
304
+ }
305
+
306
+ addString(s, encoding) {
307
+ var len = Buffer.byteLength(s, encoding);
308
+ var alen = align(len);
309
+ this.ensure(alen + 4);
310
+ this.buffer.writeInt32BE(len, this.pos);
311
+ this.pos += 4;
312
+ this.buffer.write(s, this.pos, len, encoding);
313
+ this.pos += alen;
314
+ }
315
+
316
+ addText(s, encoding) {
317
+ var len = Buffer.byteLength(s, encoding);
318
+ var alen = align(len);
319
+ this.ensure(alen);
320
+ this.buffer.write(s, this.pos, len, encoding);
321
+ this.pos += alen;
322
+ }
323
+
324
+ addBlr(blr) {
325
+ var alen = align(blr.pos);
326
+ this.ensure(alen + 4);
327
+ this.buffer.writeInt32BE(blr.pos, this.pos);
328
+ this.pos += 4;
329
+ blr.buffer.copy(this.buffer, this.pos);
330
+ this.pos += alen;
331
+ }
332
+
333
+ getData() {
334
+ return this.buffer.slice(0, this.pos);
335
+ }
336
+
337
+ addDouble(value) {
338
+ this.ensure(8);
339
+ this.buffer.writeDoubleBE(value, this.pos);
340
+ this.pos += 8;
341
+ }
342
+
343
+ addQuad(quad) {
344
+ this.ensure(8);
345
+ var b = this.buffer;
346
+ b.writeInt32BE(quad.high, this.pos);
347
+ this.pos += 4;
348
+ b.writeInt32BE(quad.low, this.pos);
349
+ this.pos += 4;
350
+ }
351
+
352
+ addBuffer(buffer) {
353
+ this.ensure(buffer.length);
354
+ buffer.copy(this.buffer, this.pos, 0, buffer.length);
355
+ this.pos += buffer.length;
356
+ }
357
+
358
+ addAlignment(len) {
359
+ var alen = (4 - len) & 3;
360
+
361
+ this.ensure(alen);
362
+ this.buffer.write('ffffff', this.pos, alen, 'hex');
363
+ this.pos += alen;
364
+ }
349
365
  }
350
366
 
351
367
  /***************************************
@@ -354,107 +370,109 @@ XdrWriter.prototype.addAlignment = function(len) {
354
370
  *
355
371
  ***************************************/
356
372
 
357
- var XdrReader = exports.XdrReader = function(buffer){
358
- this.buffer = buffer;
359
- this.pos = 0;
360
- };
361
-
362
- XdrReader.prototype.readInt = function () {
363
- var r = this.buffer.readInt32BE(this.pos);
364
- this.pos += 4;
365
- return r;
366
- };
367
-
368
- XdrReader.prototype.readUInt = function () {
369
- var r = this.buffer.readUInt32BE(this.pos);
370
- this.pos += 4;
371
- return r;
372
- };
373
-
374
- XdrReader.prototype.readInt64 = function () {
375
- var high = this.buffer.readInt32BE(this.pos);
376
- this.pos += 4;
377
- var low = this.buffer.readInt32BE(this.pos);
378
- this.pos += 4;
379
- return new Long(low, high).toNumber();
380
- };
381
-
382
- XdrReader.prototype.readInt128 = function () {
383
- var high = this.buffer.readBigUInt64BE(this.pos)
384
- this.pos += 8
385
-
386
- var low = this.buffer.readBigUInt64BE(this.pos)
387
- this.pos += 8
388
-
389
- return (BigInt(high) << BigInt(64)) + BigInt(low)
390
- };
391
-
392
- XdrReader.prototype.readShort = function () {
393
- var r = this.buffer.readInt16BE(this.pos);
394
- this.pos += 2;
395
- return r;
396
- };
397
-
398
- XdrReader.prototype.readQuad = function () {
399
- var b = this.buffer;
400
- var high = b.readInt32BE(this.pos);
401
- this.pos += 4;
402
- var low = b.readInt32BE(this.pos);
403
- this.pos += 4;
404
- return {low: low, high: high}
405
- };
406
-
407
- XdrReader.prototype.readFloat = function () {
408
- var r = this.buffer.readFloatBE(this.pos);
409
- this.pos += 4;
410
- return r;
411
- };
412
-
413
- XdrReader.prototype.readDouble = function () {
414
- var r = this.buffer.readDoubleBE(this.pos);
415
- this.pos += 8;
416
- return r;
417
- };
418
-
419
- XdrReader.prototype.readArray = function () {
420
- var len = this.readInt();
421
- if (!len)
422
- return;
423
- var r = this.buffer.slice(this.pos, this.pos + len);
424
- this.pos += align(len);
425
- return r;
426
- };
427
-
428
- XdrReader.prototype.readBuffer = function (len, toAlign = true) {
429
- if (!arguments.length) {
430
- len = this.readInt();
431
- }
432
-
433
- if (len !== null && len !== undefined) {
434
-
435
- if (len <= 0){
436
- return Buffer.alloc(0);
437
- }
373
+ class XdrReader {
374
+ constructor(buffer) {
375
+ this.buffer = buffer;
376
+ this.pos = 0;
377
+ }
378
+
379
+ readInt() {
380
+ var r = this.buffer.readInt32BE(this.pos);
381
+ this.pos += 4;
382
+ return r;
383
+ }
438
384
 
385
+ readUInt() {
386
+ var r = this.buffer.readUInt32BE(this.pos);
387
+ this.pos += 4;
388
+ return r;
389
+ }
390
+
391
+ readInt64() {
392
+ var high = this.buffer.readInt32BE(this.pos);
393
+ this.pos += 4;
394
+ var low = this.buffer.readInt32BE(this.pos);
395
+ this.pos += 4;
396
+ return new Long(low, high).toNumber();
397
+ }
398
+
399
+ readInt128() {
400
+ var high = this.buffer.readBigUInt64BE(this.pos)
401
+ this.pos += 8
402
+
403
+ var low = this.buffer.readBigUInt64BE(this.pos)
404
+ this.pos += 8
405
+
406
+ return (BigInt(high) << BigInt(64)) + BigInt(low)
407
+ }
408
+
409
+ readShort() {
410
+ var r = this.buffer.readInt16BE(this.pos);
411
+ this.pos += 2;
412
+ return r;
413
+ }
414
+
415
+ readQuad() {
416
+ var b = this.buffer;
417
+ var high = b.readInt32BE(this.pos);
418
+ this.pos += 4;
419
+ var low = b.readInt32BE(this.pos);
420
+ this.pos += 4;
421
+ return {low: low, high: high}
422
+ }
423
+
424
+ readFloat() {
425
+ var r = this.buffer.readFloatBE(this.pos);
426
+ this.pos += 4;
427
+ return r;
428
+ }
429
+
430
+ readDouble() {
431
+ var r = this.buffer.readDoubleBE(this.pos);
432
+ this.pos += 8;
433
+ return r;
434
+ }
435
+
436
+ readArray() {
437
+ var len = this.readInt();
438
+ if (!len)
439
+ return;
439
440
  var r = this.buffer.slice(this.pos, this.pos + len);
440
- this.pos += toAlign ? align(len) : len;
441
+ this.pos += align(len);
441
442
  return r;
442
443
  }
443
- };
444
444
 
445
- XdrReader.prototype.readString = function(encoding) {
446
- var len = this.readInt();
447
- return this.readText(len, encoding);
448
- };
445
+ readBuffer(len, toAlign = true) {
446
+ if (!arguments.length) {
447
+ len = this.readInt();
448
+ }
449
+
450
+ if (len !== null && len !== undefined) {
451
+
452
+ if (len <= 0){
453
+ return Buffer.alloc(0);
454
+ }
455
+
456
+ var r = this.buffer.slice(this.pos, this.pos + len);
457
+ this.pos += toAlign ? align(len) : len;
458
+ return r;
459
+ }
460
+ }
461
+
462
+ readString(encoding) {
463
+ var len = this.readInt();
464
+ return this.readText(len, encoding);
465
+ }
449
466
 
450
- XdrReader.prototype.readText = function(len, encoding) {
451
- if (len <= 0)
452
- return '';
467
+ readText(len, encoding) {
468
+ if (len <= 0)
469
+ return '';
453
470
 
454
- var r = this.buffer.toString(encoding, this.pos, this.pos + len);
455
- this.pos += align(len);
456
- return r;
457
- };
471
+ var r = this.buffer.toString(encoding, this.pos, this.pos + len);
472
+ this.pos += align(len);
473
+ return r;
474
+ }
475
+ }
458
476
 
459
477
  /***************************************
460
478
  *
@@ -466,57 +484,65 @@ var BUFFER_BITS = 8;
466
484
  var BIT_ON = 1;
467
485
  var BIT_OFF = 0;
468
486
 
469
- var BitSet = exports.BitSet = function(buffer) {
470
- this.data = [];
487
+ class BitSet {
488
+ constructor(buffer) {
489
+ this.data = [];
471
490
 
472
- if (buffer) {
473
- this.scale(buffer.length * BUFFER_BITS);
491
+ if (buffer) {
492
+ this.scale(buffer.length * BUFFER_BITS);
474
493
 
475
- for (var i = 0; i < buffer.length; i++) {
476
- var n = buffer[i];
494
+ for (var i = 0; i < buffer.length; i++) {
495
+ var n = buffer[i];
477
496
 
478
- for (var j = 0; j < BUFFER_BITS; j++) {
479
- var k = i * BUFFER_BITS + j;
480
- this.data[k >>> WORD_LOG] |= (n >> j & BIT_ON) << k;
497
+ for (var j = 0; j < BUFFER_BITS; j++) {
498
+ var k = i * BUFFER_BITS + j;
499
+ this.data[k >>> WORD_LOG] |= (n >> j & BIT_ON) << k;
500
+ }
481
501
  }
482
502
  }
483
503
  }
484
- };
485
504
 
486
- BitSet.prototype.scale = function(index) {
487
- var l = index >>> WORD_LOG;
505
+ scale(index) {
506
+ var l = index >>> WORD_LOG;
488
507
 
489
- for (var i = this.data.length; l >= i; l--) {
490
- this.data.push(BIT_OFF);
508
+ for (var i = this.data.length; l >= i; l--) {
509
+ this.data.push(BIT_OFF);
510
+ }
491
511
  }
492
- };
493
512
 
494
- BitSet.prototype.set = function(index, value) {
495
- let pos = index >>> 3;
513
+ set(index, value) {
514
+ let pos = index >>> 3;
496
515
 
497
- for (let i = this.data.length; pos >= i; pos--) {
498
- this.data.push(BIT_OFF);
499
- }
516
+ for (let i = this.data.length; pos >= i; pos--) {
517
+ this.data.push(BIT_OFF);
518
+ }
500
519
 
501
- pos = index >>> 3;
520
+ pos = index >>> 3;
502
521
 
503
- if (value === undefined || value) {
504
- this.data[pos] |= (1 << (index % BUFFER_BITS));
505
- } else {
506
- this.data[pos] &= ~(1 << (index % BUFFER_BITS));
522
+ if (value === undefined || value) {
523
+ this.data[pos] |= (1 << (index % BUFFER_BITS));
524
+ } else {
525
+ this.data[pos] &= ~(1 << (index % BUFFER_BITS));
526
+ }
507
527
  }
508
- };
509
528
 
510
- BitSet.prototype.get = function(index) {
511
- var n = index >>> WORD_LOG;
529
+ get(index) {
530
+ var n = index >>> WORD_LOG;
512
531
 
513
- if (n >= this.data.length) {
514
- return BIT_OFF;
532
+ if (n >= this.data.length) {
533
+ return BIT_OFF;
534
+ }
535
+
536
+ return (this.data[n] >>> index) & BIT_ON;
515
537
  }
516
538
 
517
- return (this.data[n] >>> index) & BIT_ON;
518
- };
539
+ toBuffer() {
540
+ return Buffer.from(this.data);
541
+ }
542
+ }
519
543
 
520
- BitSet.prototype.toBuffer = function() {
521
- return Buffer.from(this.data);
522
- };
544
+ exports.BlrWriter = BlrWriter;
545
+ exports.BlrReader = BlrReader;
546
+ exports.XdrWriter = XdrWriter;
547
+ exports.XdrReader = XdrReader;
548
+ exports.BitSet = BitSet;