Skip to content

Commit 7989e10

Browse files
committed
aaaaaaa
1 parent a2e59b2 commit 7989e10

19 files changed

Lines changed: 664 additions & 3 deletions

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
# Custom
2-
lib/
3-
41
# Logs
52
logs
63
*.log

lib/index.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/// <reference types="node" />
2+
import { IReader } from "./readers/IReader";
3+
import { IWriter } from "./writers/IWriter";
4+
export declare enum Endian {
5+
LE = 0,
6+
BE = 1
7+
}
8+
export declare function createReader(endianness: Endian, buffer: Buffer): IReader;
9+
export declare function createWriter(endianness: Endian, size?: number): IWriter;

lib/index.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.createWriter = exports.createReader = exports.Endian = void 0;
4+
const ReaderBE_1 = require("./readers/ReaderBE");
5+
const ReaderLE_1 = require("./readers/ReaderLE");
6+
const WriterBE_1 = require("./writers/WriterBE");
7+
const WriterLE_1 = require("./writers/WriterLE");
8+
var Endian;
9+
(function (Endian) {
10+
Endian[Endian["LE"] = 0] = "LE";
11+
Endian[Endian["BE"] = 1] = "BE";
12+
})(Endian = exports.Endian || (exports.Endian = {}));
13+
function createReader(endianness, buffer) {
14+
if (endianness === Endian.LE) {
15+
return new ReaderLE_1.ReaderLE(buffer);
16+
}
17+
else {
18+
return new ReaderBE_1.ReaderBE(buffer);
19+
}
20+
}
21+
exports.createReader = createReader;
22+
function createWriter(endianness, size) {
23+
if (endianness === Endian.LE) {
24+
return new WriterLE_1.WriterLE(size);
25+
}
26+
else {
27+
return new WriterBE_1.WriterBE(size);
28+
}
29+
}
30+
exports.createWriter = createWriter;

lib/readers/IReader.d.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/// <reference types="node" />
2+
export interface IReader {
3+
readBuffer(bytes: number): Buffer;
4+
readUint8Array(bytes: number): Uint8Array;
5+
readByte(): number;
6+
readUByte(): number;
7+
readBool(): boolean;
8+
readShort(): number;
9+
readUShort(): number;
10+
readInt(): number;
11+
readUInt(): number;
12+
readLong(): bigint;
13+
readULong(): bigint;
14+
readFloat(): number;
15+
readDouble(): number;
16+
readShortString(): string;
17+
readString(): string;
18+
readString16(): string;
19+
}

lib/readers/IReader.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });

lib/readers/ReaderBE.d.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { IReader } from "./IReader";
2+
import { ReaderBase } from "./ReaderBase";
3+
export declare class ReaderBE extends ReaderBase implements IReader {
4+
readShort(): number;
5+
readUShort(): number;
6+
readInt(): number;
7+
readUInt(): number;
8+
readLong(): bigint;
9+
readULong(): bigint;
10+
readFloat(): number;
11+
readDouble(): number;
12+
readShortString(): string;
13+
readString(): string;
14+
readString16(): string;
15+
}

lib/readers/ReaderBE.js

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.ReaderBE = void 0;
4+
const ReaderBase_1 = require("./ReaderBase");
5+
class ReaderBE extends ReaderBase_1.ReaderBase {
6+
readShort() {
7+
const value = this.buffer.readInt16BE(this.offset);
8+
this.offset += 2;
9+
return value;
10+
}
11+
readUShort() {
12+
const value = this.buffer.readUInt16BE(this.offset);
13+
this.offset += 2;
14+
return value;
15+
}
16+
readInt() {
17+
const value = this.buffer.readInt32BE(this.offset);
18+
this.offset += 4;
19+
return value;
20+
}
21+
readUInt() {
22+
const value = this.buffer.readUInt32BE(this.offset);
23+
this.offset += 4;
24+
return value;
25+
}
26+
readLong() {
27+
const value = this.buffer.readBigInt64BE(this.offset);
28+
this.offset += 8;
29+
return value;
30+
}
31+
readULong() {
32+
const value = this.buffer.readBigUint64BE(this.offset);
33+
this.offset += 8;
34+
return value;
35+
}
36+
readFloat() {
37+
const value = this.buffer.readFloatBE(this.offset);
38+
this.offset += 4;
39+
return value;
40+
}
41+
readDouble() {
42+
const value = this.buffer.readDoubleBE(this.offset);
43+
this.offset += 8;
44+
return value;
45+
}
46+
readShortString() {
47+
const length = this.readUByte();
48+
let text = "";
49+
for (let i = 0; i < length; i++) {
50+
text += String.fromCharCode(this.readUByte());
51+
}
52+
return text;
53+
}
54+
readString() {
55+
const length = this.readUShort();
56+
let text = "";
57+
for (let i = 0; i < length; i++) {
58+
text += String.fromCharCode(this.readUByte());
59+
}
60+
return text;
61+
}
62+
readString16() {
63+
const length = this.readUShort();
64+
let text = "";
65+
for (let i = 0; i < length; i++) {
66+
text += String.fromCharCode(this.readUShort());
67+
}
68+
return text;
69+
}
70+
}
71+
exports.ReaderBE = ReaderBE;

lib/readers/ReaderBase.d.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/// <reference types="node" />
2+
export declare class ReaderBase {
3+
buffer: Buffer;
4+
offset: number;
5+
constructor(buffer: Buffer);
6+
readBuffer(bytes: number): Buffer;
7+
readUint8Array(bytes: number): Uint8Array;
8+
readByte(): number;
9+
readUByte(): number;
10+
readBool(): boolean;
11+
}

lib/readers/ReaderBase.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.ReaderBase = void 0;
4+
class ReaderBase {
5+
constructor(buffer) {
6+
this.buffer = buffer;
7+
this.offset = 0;
8+
}
9+
readBuffer(bytes) {
10+
const value = this.buffer.subarray(this.offset, this.offset + bytes);
11+
this.offset += bytes;
12+
return value;
13+
}
14+
// NOTE: This has to be a copy as the subarray is only cropped & offset
15+
// Realistically this is what we want anyway.
16+
readUint8Array(bytes) {
17+
const croppedBuffer = this.readBuffer(bytes);
18+
const newArray = new Uint8Array(croppedBuffer.length);
19+
for (let i = 0; i < croppedBuffer.length; i++) {
20+
newArray[i] = croppedBuffer[i];
21+
}
22+
return newArray;
23+
}
24+
readByte() {
25+
const value = this.buffer.readInt8(this.offset);
26+
this.offset++;
27+
return value;
28+
}
29+
readUByte() {
30+
const value = this.buffer.readUInt8(this.offset);
31+
this.offset++;
32+
return value;
33+
}
34+
readBool() {
35+
return Boolean(this.readUByte());
36+
}
37+
}
38+
exports.ReaderBase = ReaderBase;

lib/readers/ReaderLE.d.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { IReader } from "./IReader";
2+
import { ReaderBase } from "./ReaderBase";
3+
export declare class ReaderLE extends ReaderBase implements IReader {
4+
readShort(): number;
5+
readUShort(): number;
6+
readInt(): number;
7+
readUInt(): number;
8+
readLong(): bigint;
9+
readULong(): bigint;
10+
readFloat(): number;
11+
readDouble(): number;
12+
readShortString(): string;
13+
readString(): string;
14+
readString16(): string;
15+
}

0 commit comments

Comments
 (0)