Compare commits

...

3 commits

Author SHA1 Message Date
77d74ae657
1.5.0 2024-01-01 22:23:47 +00:00
961df8cd72
Add functions for reading/writing strings without lengths 2024-01-01 22:23:16 +00:00
4cacdbf113
Update depends 2024-01-01 22:22:12 +00:00
10 changed files with 113 additions and 2873 deletions

View file

@ -50,4 +50,25 @@ export class ReaderBase {
public readBool() { public readBool() {
return Boolean(this.readUByte()); return Boolean(this.readUByte());
} }
public readShortString() {
const length = this.readUByte();
let text = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
public readBytesAsString(bytesToRead:number) {
let text = "";
for (let i = 0; i < bytesToRead; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
} }

View file

@ -76,4 +76,19 @@ export class WriterBase {
return this; return this;
} }
public writeStringAsBytes(text:string) {
let buffer;
if (this.resizable) {
buffer = getBufferClass().alloc(text.length);
} else {
buffer = this.buffer;
}
for (let i = 0; i < text.length; i++) {
buffer.writeUInt8(text.charCodeAt(i), i);
}
return this;
}
} }

2857
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{ {
"name": "bufferstuff", "name": "bufferstuff",
"version": "1.4.2", "version": "1.5.0",
"description": "A set of utility classes for reading and writing binary data in NodeJS and the browser", "description": "A set of utility classes for reading and writing binary data in NodeJS and the browser",
"main": "./lib/index.js", "main": "./lib/index.js",
"types": "./lib/index.d.ts", "types": "./lib/index.d.ts",
@ -32,9 +32,8 @@
"devDependencies": { "devDependencies": {
"check-outdated": "^2.12.0", "check-outdated": "^2.12.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"terser": "^5.24.0", "terser": "^5.26.0",
"ts-loader": "^9.5.0", "ts-node": "^10.9.2",
"ts-node": "^10.9.1", "typescript": "^5.3.3"
"typescript": "^5.2.2"
} }
} }

View file

@ -9,6 +9,8 @@ export interface IReader {
readByte(): number, readByte(): number,
readUByte(): number, readUByte(): number,
readBool(): boolean, readBool(): boolean,
readShortString(): string,
readBytesAsString(bytesToRead:number): string,
readShort(): number, readShort(): number,
readUShort(): number, readUShort(): number,
readInt(): number, readInt(): number,
@ -17,7 +19,7 @@ export interface IReader {
readULong(): bigint, readULong(): bigint,
readFloat(): number, readFloat(): number,
readDouble(): number, readDouble(): number,
readShortString(): string,
readString(): string, readString(): string,
readShortsAsString(shortsToRead:number): string,
readString16(): string, readString16(): string,
} }

View file

@ -53,20 +53,9 @@ export class ReaderBE extends ReaderBase implements IReader {
return value; return value;
} }
public readShortString() {
const length = this.readUByte();
let text:string = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
public readString() { public readString() {
const length = this.readUShort(); const length = this.readUShort();
let text:string = ""; let text = "";
for (let i = 0; i < length; i++) { for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte()); text += String.fromCharCode(this.readUByte());
@ -77,7 +66,7 @@ export class ReaderBE extends ReaderBase implements IReader {
public readString16() { public readString16() {
const length = this.readUShort(); const length = this.readUShort();
let text:string = ""; let text = "";
for (let i = 0; i < length; i++) { for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUShort()); text += String.fromCharCode(this.readUShort());
@ -85,4 +74,14 @@ export class ReaderBE extends ReaderBase implements IReader {
return text; return text;
} }
public readShortsAsString(shortsToRead:number) {
let text = "";
for (let i = 0; i < shortsToRead; i++) {
text += String.fromCharCode(this.readUShort());
}
return text;
}
} }

View file

@ -53,17 +53,6 @@ export class ReaderLE extends ReaderBase implements IReader {
return value; return value;
} }
public readShortString() {
const length = this.readUByte();
let text:string = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
public readString() { public readString() {
const length = this.readUShort(); const length = this.readUShort();
let text:string = ""; let text:string = "";
@ -85,4 +74,14 @@ export class ReaderLE extends ReaderBase implements IReader {
return text; return text;
} }
public readShortsAsString(shortsToRead:number) {
let text = "";
for (let i = 0; i < shortsToRead; i++) {
text += String.fromCharCode(this.readUShort());
}
return text;
}
} }

View file

@ -11,15 +11,17 @@ export interface IWriter {
writeByte(value:number): IWriter, writeByte(value:number): IWriter,
writeUByte(value:number): IWriter, writeUByte(value:number): IWriter,
writeBool(value:boolean|number): IWriter, writeBool(value:boolean|number): IWriter,
writeStringAsBytes(text:string): IWriter,
writeShort(value:number): IWriter, writeShort(value:number): IWriter,
writeUShort(value:number): IWriter, writeUShort(value:number): IWriter,
writeInt(value:number): IWriter, writeInt(value:number): IWriter,
writeUInt(value:number): IWriter, writeUInt(value:number): IWriter,
writeLong(value:number|bigint): IWriter, writeLong(value:number|bigint): IWriter,
writeULong(value:number): IWriter, writeULong(value:number|bigint): IWriter,
writeFloat(value:number): IWriter, writeFloat(value:number): IWriter,
writeDouble(value:number): IWriter, writeDouble(value:number): IWriter,
writeShortString(text:string): IWriter, writeShortString(text:string): IWriter,
writeString(text:string): IWriter, writeString(text:string): IWriter,
writeString16(text:string): IWriter, writeString16(text:string): IWriter,
writeStringAsShorts(text:string): IWriter
} }

View file

@ -147,4 +147,19 @@ export class WriterBE extends WriterBase implements IWriter {
return this; return this;
} }
public writeStringAsShorts(text:string) {
let buffer:Buffer;
if (this.resizable) {
buffer = getBufferClass().alloc(text.length * 2);
} else {
buffer = this.buffer;
}
for (let i = 0; i < text.length; i++) {
buffer.writeUint16BE(text.charCodeAt(i), i);
}
return this;
}
} }

View file

@ -146,4 +146,19 @@ export class WriterLE extends WriterBase implements IWriter {
return this; return this;
} }
public writeStringAsShorts(text:string) {
let buffer:Buffer;
if (this.resizable) {
buffer = getBufferClass().alloc(text.length * 2);
} else {
buffer = this.buffer;
}
for (let i = 0; i < text.length; i++) {
buffer.writeUint16LE(text.charCodeAt(i), i);
}
return this;
}
} }