bireader 1.0.14 → 1.0.15

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.
@@ -0,0 +1,461 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RSHIFT = exports.LSHIFT = exports.NOT = exports.XOR = exports.OR = exports.AND = exports.hexDump = exports.addData = exports.remove = exports.goto = exports.skip = exports.checkSize = void 0;
4
+ function checkSize(_this, write_bytes, write_bit, offset) {
5
+ const bits = (write_bit || 0) + _this.bitoffset;
6
+ var new_off = (offset || _this.offset);
7
+ var writesize = write_bytes || 0;
8
+ if (bits != 0) {
9
+ //add bits
10
+ writesize += Math.ceil(bits / 8);
11
+ }
12
+ //if biger extend
13
+ const needed_size = new_off + writesize;
14
+ if (needed_size > _this.size) {
15
+ const dif = needed_size - _this.size;
16
+ if (_this.strict == false) {
17
+ _this.extendArray(dif);
18
+ }
19
+ else {
20
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m hexdump:\n" + _this.hexdump() : "";
21
+ throw new Error(`\x1b[33m[Strict mode]\x1b[0m: Reached end of data: writing to ` + needed_size + " at " + _this.offset + " of " + _this.size);
22
+ }
23
+ }
24
+ //start read location
25
+ return new_off;
26
+ }
27
+ exports.checkSize = checkSize;
28
+ function skip(_this, bytes, bits) {
29
+ const new_size = (((bytes || 0) + _this.offset) + Math.ceil((_this.bitoffset + (bits || 0)) / 8));
30
+ _this.check_size(bytes || 0, bits || 0);
31
+ if (new_size > _this.size) {
32
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m hexdump:\n" + _this.hexdump() : "";
33
+ throw new Error("\x1b[33m[Strict mode]\x1b[0m: Seek outside of size of data: " + _this.size);
34
+ }
35
+ _this.bitoffset += (bits || 0) % 8;
36
+ _this.offset += (bytes || 0);
37
+ }
38
+ exports.skip = skip;
39
+ function goto(_this, byte, bit) {
40
+ const new_size = (byte + Math.ceil((bit || 0) / 8));
41
+ if (new_size > _this.size && _this.strict == false) {
42
+ _this.extendArray(new_size - _this.size);
43
+ }
44
+ else {
45
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m hexdump:\n" + _this.hexdump() : "";
46
+ throw new Error("\x1b[33m[Strict mode]\x1b[0m: Outside of range of data: goto " + new_size + " of " + _this.size);
47
+ }
48
+ _this.offset = byte;
49
+ _this.bitoffset = (bit || 0) % 8;
50
+ }
51
+ exports.goto = goto;
52
+ function remove(_this, startOffset, endOffset, consume, remove, fillValue) {
53
+ const new_start = Math.abs(startOffset || 0);
54
+ const new_offset = (endOffset || _this.offset);
55
+ if (new_offset > _this.size) {
56
+ if (_this.strict == false) {
57
+ _this.extendArray(new_offset - _this.size);
58
+ }
59
+ else {
60
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m: hexdump:\n" + _this.hexdump() : "";
61
+ throw new Error("\x1b[33m[Strict mode]\x1b[0m: End offset outside of data: endOffset" + endOffset + " of " + _this.size);
62
+ }
63
+ }
64
+ if (_this.strict == true && remove == true) {
65
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m: hexdump:\n" + _this.hexdump() : "";
66
+ throw new Error("\x1b[33m[Strict mode]\x1b[0m: Can not remove data in strict mode: endOffset" + endOffset + " of " + _this.size);
67
+ }
68
+ const data_removed = _this.data.slice(new_start, new_offset);
69
+ if (remove) {
70
+ const part1 = _this.data.subarray(0, new_start);
71
+ const part2 = _this.data.subarray(new_offset, _this.size);
72
+ if (_this.isBuffer(_this.data)) {
73
+ _this.data = Buffer.concat([part1, part2]);
74
+ }
75
+ else {
76
+ _this.data = new Uint8Array([...part1, ...part2]);
77
+ }
78
+ _this.size = _this.data.length;
79
+ }
80
+ if (fillValue != undefined && remove == false) {
81
+ const part1 = _this.data.subarray(0, new_start);
82
+ const part2 = _this.data.subarray(new_offset, _this.size);
83
+ const replacement = new Array(data_removed.length).fill(fillValue & 0xff);
84
+ if (_this.isBuffer(_this.data)) {
85
+ const buff_placement = Buffer.from(replacement);
86
+ _this.data = Buffer.concat([part1, buff_placement, part2]);
87
+ }
88
+ else {
89
+ _this.data = new Uint8Array([...part1, ...replacement, ...part2]);
90
+ }
91
+ _this.size = _this.data.length;
92
+ }
93
+ if (consume == true) {
94
+ if (remove != true) {
95
+ _this.offset = new_offset;
96
+ }
97
+ else {
98
+ _this.offset = new_start;
99
+ }
100
+ }
101
+ return data_removed;
102
+ }
103
+ exports.remove = remove;
104
+ function addData(_this, data, consume, offset) {
105
+ if (typeof Buffer !== 'undefined' && data instanceof Buffer && !(_this.data instanceof Buffer)) {
106
+ throw new Error("Data insert must be a Buffer");
107
+ }
108
+ if (data instanceof Uint8Array && !(_this.data instanceof Uint8Array)) {
109
+ throw new Error("Data insert must be a Uint8Array");
110
+ }
111
+ const needed_size = offset || _this.offset;
112
+ if (needed_size > _this.size) {
113
+ const dif = needed_size - _this.size;
114
+ if (_this.strict == false) {
115
+ _this.extendArray(dif);
116
+ }
117
+ else {
118
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m: hexdump:\n" + _this.hexdump() : "";
119
+ throw new Error(`\x1b[33m[Strict mode]\x1b[0m: Insert outside of current data: writing to ` + needed_size + " at " + _this.offset + " of " + _this.size);
120
+ }
121
+ _this.size = _this.data.length;
122
+ }
123
+ if (_this.isBuffer(_this.data)) {
124
+ const part1 = _this.data.subarray(0, needed_size);
125
+ const part2 = _this.data.subarray(needed_size, _this.size);
126
+ _this.data = Buffer.concat([part1, data, part2]);
127
+ _this.size = _this.data.length;
128
+ }
129
+ else {
130
+ const part1 = _this.data.subarray(0, needed_size);
131
+ const part2 = _this.data.subarray(needed_size, _this.size);
132
+ _this.data = new Uint8Array([...part1, ...data, ...part2]);
133
+ _this.size = _this.data.length;
134
+ }
135
+ if (consume) {
136
+ _this.offset = _this.offset + data.length;
137
+ }
138
+ }
139
+ exports.addData = addData;
140
+ function hexDump(_this, options) {
141
+ var length = options && options.length;
142
+ var startByte = options && options.startByte;
143
+ var supressUnicode = options && options.supressUnicode || false;
144
+ if ((startByte || 0) > _this.size) {
145
+ _this.errorDump ? "[Error], hexdump:\n" + _this.hexdump() : "";
146
+ throw new Error("Hexdump start is outside of data size: " + startByte + " of " + _this.size);
147
+ }
148
+ const start = startByte || _this.offset;
149
+ const end = Math.min(start + (length || 192), _this.size);
150
+ if (start + (length || 0) > _this.size) {
151
+ _this.errorDump ? "[Error], hexdump:\n" + _this.hexdump() : "";
152
+ throw new Error("Hexdump amount is outside of data size: " + (start + (length || 0)) + " of " + end);
153
+ }
154
+ function hex_check(byte, bits) {
155
+ var value = 0;
156
+ for (var i = 0; i < bits;) {
157
+ var remaining = bits - i;
158
+ var bitOffset = 0;
159
+ var currentByte = byte;
160
+ var read = Math.min(remaining, 8 - bitOffset);
161
+ var mask, readBits;
162
+ mask = ~(0xFF << read);
163
+ readBits = (currentByte >> (8 - read - bitOffset)) & mask;
164
+ value <<= read;
165
+ value |= readBits;
166
+ i += read;
167
+ }
168
+ value = value >>> 0;
169
+ return value;
170
+ }
171
+ const rows = [];
172
+ var header = " 0 1 2 3 4 5 6 7 8 9 A B C D E F ";
173
+ var ending = "0123456789ABCDEF";
174
+ var addr = "";
175
+ for (let i = start; i < end; i += 16) {
176
+ addr = i.toString(16).padStart(5, '0');
177
+ var row = _this.data?.slice(i, i + 16) || [];
178
+ var hex = Array.from(row, (byte) => byte.toString(16).padStart(2, '0')).join(' ');
179
+ rows.push(`${addr} ${hex.padEnd(47)} `);
180
+ }
181
+ let result = '';
182
+ let make_wide = false;
183
+ let i = start;
184
+ while (i < end) {
185
+ const byte = _this.data[i];
186
+ if (byte < 32 || byte == 127) {
187
+ result += '.';
188
+ }
189
+ else if (byte < 127) {
190
+ // Valid UTF-8 start byte or single-byte character
191
+ // Convert the byte to a character and add it to the result
192
+ result += String.fromCharCode(byte);
193
+ }
194
+ else if (supressUnicode) {
195
+ result += '.';
196
+ }
197
+ else if (hex_check(byte, 1) == 0) {
198
+ //Byte 1
199
+ result += String.fromCharCode(byte);
200
+ }
201
+ else if (hex_check(byte, 3) == 6) {
202
+ //Byte 2
203
+ if (i + 1 <= end) {
204
+ //check second byte
205
+ const byte2 = _this.data[i + 1];
206
+ if (hex_check(byte2, 2) == 2) {
207
+ const charCode = ((byte & 0x1f) << 6) | (byte2 & 0x3f);
208
+ i++;
209
+ make_wide = true;
210
+ const read = " " + String.fromCharCode(charCode);
211
+ result += read;
212
+ }
213
+ else {
214
+ result += ".";
215
+ }
216
+ }
217
+ else {
218
+ result += ".";
219
+ }
220
+ }
221
+ else if (hex_check(byte, 4) == 14) {
222
+ //Byte 3
223
+ if (i + 1 <= end) {
224
+ //check second byte
225
+ const byte2 = _this.data[i + 1];
226
+ if (hex_check(byte2, 2) == 2) {
227
+ if (i + 2 <= end) {
228
+ //check third byte
229
+ const byte3 = _this.data[i + 2];
230
+ if (hex_check(byte3, 2) == 2) {
231
+ const charCode = ((byte & 0x0f) << 12) |
232
+ ((byte2 & 0x3f) << 6) |
233
+ (byte3 & 0x3f);
234
+ i += 2;
235
+ make_wide = true;
236
+ const read = " " + String.fromCharCode(charCode);
237
+ result += read;
238
+ }
239
+ else {
240
+ i++;
241
+ result += " .";
242
+ }
243
+ }
244
+ else {
245
+ i++;
246
+ result += " .";
247
+ }
248
+ }
249
+ else {
250
+ result += ".";
251
+ }
252
+ }
253
+ else {
254
+ result += ".";
255
+ }
256
+ }
257
+ else if (hex_check(byte, 5) == 28) {
258
+ //Byte 4
259
+ if (i + 1 <= end) {
260
+ //check second byte
261
+ const byte2 = _this.data[i + 1];
262
+ if (hex_check(byte2, 2) == 2) {
263
+ if (i + 2 <= end) {
264
+ //check third byte
265
+ const byte3 = _this.data[i + 2];
266
+ if (hex_check(byte3, 2) == 2) {
267
+ if (i + 3 <= end) {
268
+ //check fourth byte
269
+ const byte4 = _this.data[i + 2];
270
+ if (hex_check(byte4, 2) == 2) {
271
+ const charCode = (((byte4 & 0xFF) << 24) | ((byte3 & 0xFF) << 16) | ((byte2 & 0xFF) << 8) | (byte & 0xFF));
272
+ i += 3;
273
+ make_wide = true;
274
+ const read = " " + String.fromCharCode(charCode);
275
+ result += read;
276
+ }
277
+ else {
278
+ i += 2;
279
+ result += " .";
280
+ }
281
+ }
282
+ else {
283
+ i += 2;
284
+ result += " .";
285
+ }
286
+ }
287
+ else {
288
+ i++;
289
+ result += " .";
290
+ }
291
+ }
292
+ else {
293
+ i++;
294
+ result += " .";
295
+ }
296
+ }
297
+ else {
298
+ result += ".";
299
+ }
300
+ }
301
+ else {
302
+ result += ".";
303
+ }
304
+ }
305
+ else {
306
+ // Invalid UTF-8 byte, add a period to the result
307
+ result += '.';
308
+ }
309
+ i++;
310
+ }
311
+ const chunks = result.match(new RegExp(`.{1,${16}}`, 'g'));
312
+ chunks?.forEach((self, i) => {
313
+ rows[i] = rows[i] + (make_wide ? "|" + self + "|" : self);
314
+ });
315
+ header = "".padStart(addr.length) + header + (make_wide ? "" : ending);
316
+ rows.unshift(header);
317
+ if (make_wide) {
318
+ rows.push("*Removed character byte header on unicode detection");
319
+ }
320
+ console.log(rows.join("\n"));
321
+ }
322
+ exports.hexDump = hexDump;
323
+ function AND(_this, xor_key, start, end) {
324
+ const input = _this.data;
325
+ if (typeof xor_key == "number") {
326
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
327
+ input[i] = input[i] & (xor_key && 0xff);
328
+ }
329
+ }
330
+ else if (typeof xor_key == "string") {
331
+ const encoder = new TextEncoder();
332
+ const xor_array = encoder.encode(xor_key);
333
+ let number = -1;
334
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
335
+ if (number != xor_array.length - 1) {
336
+ number = number + 1;
337
+ }
338
+ else {
339
+ number = 0;
340
+ }
341
+ input[i] = input[i] & xor_array[number];
342
+ }
343
+ }
344
+ else {
345
+ if (_this.isBufferOrUint8Array(xor_key)) {
346
+ let number = -1;
347
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
348
+ if (number != xor_key.length - 1) {
349
+ number = number + 1;
350
+ }
351
+ else {
352
+ number = 0;
353
+ }
354
+ input[i] = input[i] & xor_key[number];
355
+ }
356
+ }
357
+ else {
358
+ throw new Error("AND key must be a byte value, string, Uint8Array or Buffer");
359
+ }
360
+ }
361
+ }
362
+ exports.AND = AND;
363
+ function OR(_this, xor_key, start, end) {
364
+ const input = _this.data;
365
+ if (typeof xor_key == "number") {
366
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
367
+ input[i] = input[i] | (xor_key && 0xff);
368
+ }
369
+ }
370
+ else if (typeof xor_key == "string") {
371
+ const encoder = new TextEncoder();
372
+ const xor_array = encoder.encode(xor_key);
373
+ let number = -1;
374
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
375
+ if (number != xor_array.length - 1) {
376
+ number = number + 1;
377
+ }
378
+ else {
379
+ number = 0;
380
+ }
381
+ input[i] = input[i] | xor_array[number];
382
+ }
383
+ }
384
+ else {
385
+ if (_this.isBufferOrUint8Array(xor_key)) {
386
+ let number = -1;
387
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
388
+ if (number != xor_key.length - 1) {
389
+ number = number + 1;
390
+ }
391
+ else {
392
+ number = 0;
393
+ }
394
+ input[i] = input[i] | xor_key[number];
395
+ }
396
+ }
397
+ else {
398
+ throw new Error("OR key must be a byte value, string, Uint8Array or Buffer");
399
+ }
400
+ }
401
+ }
402
+ exports.OR = OR;
403
+ function XOR(_this, xor_key, start, end) {
404
+ const input = _this.data;
405
+ if (typeof xor_key == "number") {
406
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
407
+ input[i] = input[i] ^ (xor_key && 0xff);
408
+ }
409
+ }
410
+ else if (typeof xor_key == "string") {
411
+ const encoder = new TextEncoder();
412
+ const xor_array = encoder.encode(xor_key);
413
+ let number = -1;
414
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
415
+ if (number != xor_array.length - 1) {
416
+ number = number + 1;
417
+ }
418
+ else {
419
+ number = 0;
420
+ }
421
+ input[i] = input[i] ^ xor_array[number];
422
+ }
423
+ }
424
+ else {
425
+ if (_this.isBufferOrUint8Array(xor_key)) {
426
+ let number = -1;
427
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
428
+ if (number != xor_key.length - 1) {
429
+ number = number + 1;
430
+ }
431
+ else {
432
+ number = 0;
433
+ }
434
+ input[i] = input[i] ^ xor_key[number];
435
+ }
436
+ }
437
+ else {
438
+ throw new Error("XOR key must be a byte value, string, Uint8Array or Buffer");
439
+ }
440
+ }
441
+ }
442
+ exports.XOR = XOR;
443
+ function NOT(_this, start, end) {
444
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
445
+ _this.data[i] = ~_this.data[i];
446
+ }
447
+ }
448
+ exports.NOT = NOT;
449
+ function LSHIFT(_this, value, start, end) {
450
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
451
+ _this.data[i] = _this.data[i] << value;
452
+ }
453
+ }
454
+ exports.LSHIFT = LSHIFT;
455
+ function RSHIFT(_this, value, start, end) {
456
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
457
+ _this.data[i] = _this.data[i] >> value;
458
+ }
459
+ }
460
+ exports.RSHIFT = RSHIFT;
461
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/common.ts"],"names":[],"mappings":"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"}