Compare commits
No commits in common. "master" and "1.3.4" have entirely different histories.
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2021-2024 Holly Stubbs (tgpholly)
|
Copyright (c) 2023 Holly Stubbs (tgpholly)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -22,13 +22,12 @@ I tried to keep it as simple as possible to use, for example if you want to writ
|
||||||
writer.writeByte(<number>);
|
writer.writeByte(<number>);
|
||||||
```
|
```
|
||||||
|
|
||||||
You can find a list of all of the methods for [Writers](https://git.eusv.net/tgpholly/bufferStuff/src/branch/master/writers/IWriter.ts) and [Readers](https://git.eusv.net/tgpholly/bufferStuff/src/branch/master/readers/IReader.ts) in their interface files.
|
You can find a list of all of the methods for [Writers](https://github.com/tgpholly/bufferStuff/blob/master/writers/IWriter.ts) and [Readers](https://github.com/tgpholly/bufferStuff/blob/master/readers/IReader.ts) in their interface files.
|
||||||
|
|
||||||
## Projects using bufferStuff
|
## Projects using bufferStuff
|
||||||
If your project uses bufferStuff feel free to make a PR to add it to this list!
|
If your project uses bufferStuff feel free to make a PR to add it to this list!
|
||||||
### [tgpholly/mc-beta-server](https://git.eusv.net/tgpholly/mc-beta-server)
|
### [tgpholly/mc-beta-server](https://github.com/tgpholly/mc-beta-server)
|
||||||
### [tgpholly/ultrakillMP_server](https://github.com/tgpholly/ultrakillMP_server)
|
### [tgpholly/ultrakillMP_server](https://github.com/tgpholly/ultrakillMP_server)
|
||||||
### [tgpholly/t00-multiuser](https://git.eusv.net/tgpholly/t00-multiuser)
|
|
||||||
|
|
||||||
## Projects similar to bufferStuff
|
## Projects similar to bufferStuff
|
||||||
### [tgpholly/csharp-extensions/BinaryTools](https://github.com/tgpholly/csharp-extensions/tree/master/BinaryTools) - Basically bufferStuff but for C#
|
### [tgpholly/csharp-extensions/BinaryTools](https://github.com/tgpholly/csharp-extensions/tree/master/BinaryTools) - Basically bufferStuff but for C#
|
||||||
|
|
|
@ -10,14 +10,6 @@ export class ReaderBase {
|
||||||
this.offset = 0;
|
this.offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public get readOffset() {
|
|
||||||
return this.offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
public get length() {
|
|
||||||
return this.buffer.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
public readBuffer(bytes:number) {
|
public readBuffer(bytes:number) {
|
||||||
const value = this.buffer.subarray(this.offset, this.offset + bytes);
|
const value = this.buffer.subarray(this.offset, this.offset + bytes);
|
||||||
this.offset += bytes;
|
this.offset += bytes;
|
||||||
|
@ -50,25 +42,4 @@ 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -14,14 +14,6 @@ export class WriterBase {
|
||||||
this.resizable = size === 0;
|
this.resizable = size === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public get writeOffset() {
|
|
||||||
return this.offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
public get length() {
|
|
||||||
return this.buffer.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
public toBuffer() {
|
public toBuffer() {
|
||||||
return this.buffer;
|
return this.buffer;
|
||||||
}
|
}
|
||||||
|
@ -76,19 +68,4 @@ 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
17
package.json
17
package.json
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "bufferstuff",
|
"name": "bufferstuff",
|
||||||
"version": "1.5.1",
|
"version": "1.3.4",
|
||||||
"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",
|
||||||
|
@ -20,20 +20,21 @@
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.eusv.net/tgpholly/bufferStuff.git"
|
"url": "git+https://github.com/tgpholly/bufferStuff.git"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "tgpholly",
|
"author": "tgpholly",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://git.eusv.net/tgpholly/bufferStuff/issues"
|
"url": "https://github.com/tgpholly/bufferStuff/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://git.eusv.net/tgpholly/bufferStuff#readme",
|
"homepage": "https://github.com/tgpholly/bufferStuff#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"check-outdated": "^2.12.0",
|
"check-outdated": "^2.11.0",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"terser": "^5.27.0",
|
"terser": "^5.22.0",
|
||||||
"ts-node": "^10.9.2",
|
"ts-loader": "^9.4.4",
|
||||||
"typescript": "^5.3.3"
|
"ts-node": "^10.9.1",
|
||||||
|
"typescript": "^5.1.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,15 +2,11 @@
|
||||||
// Check LICENSE in repository root for more information.
|
// Check LICENSE in repository root for more information.
|
||||||
|
|
||||||
export interface IReader {
|
export interface IReader {
|
||||||
readOffset: number,
|
|
||||||
length: number,
|
|
||||||
readBuffer(bytes:number): Buffer,
|
readBuffer(bytes:number): Buffer,
|
||||||
readUint8Array(bytes:number): Uint8Array,
|
readUint8Array(bytes:number): Uint8Array,
|
||||||
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,
|
||||||
|
@ -19,7 +15,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,
|
||||||
}
|
}
|
|
@ -53,9 +53,20 @@ 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 = "";
|
let text:string = "";
|
||||||
|
|
||||||
for (let i = 0; i < length; i++) {
|
for (let i = 0; i < length; i++) {
|
||||||
text += String.fromCharCode(this.readUByte());
|
text += String.fromCharCode(this.readUByte());
|
||||||
|
@ -66,7 +77,7 @@ export class ReaderBE extends ReaderBase implements IReader {
|
||||||
|
|
||||||
public readString16() {
|
public readString16() {
|
||||||
const length = this.readUShort();
|
const length = this.readUShort();
|
||||||
let text = "";
|
let text:string = "";
|
||||||
|
|
||||||
for (let i = 0; i < length; i++) {
|
for (let i = 0; i < length; i++) {
|
||||||
text += String.fromCharCode(this.readUShort());
|
text += String.fromCharCode(this.readUShort());
|
||||||
|
@ -74,14 +85,4 @@ 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -53,6 +53,17 @@ 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 = "";
|
||||||
|
@ -74,14 +85,4 @@ 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -2,8 +2,6 @@
|
||||||
// Check LICENSE in repository root for more information.
|
// Check LICENSE in repository root for more information.
|
||||||
|
|
||||||
export interface IWriter {
|
export interface IWriter {
|
||||||
writeOffset: number,
|
|
||||||
length: number,
|
|
||||||
toBuffer(): Buffer,
|
toBuffer(): Buffer,
|
||||||
toString(): string,
|
toString(): string,
|
||||||
writeBuffer(buffer:Buffer): IWriter,
|
writeBuffer(buffer:Buffer): IWriter,
|
||||||
|
@ -11,17 +9,15 @@ 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|bigint): IWriter,
|
writeULong(value:number): 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
|
|
||||||
}
|
}
|
|
@ -3,12 +3,11 @@
|
||||||
|
|
||||||
import { IWriter } from "./IWriter";
|
import { IWriter } from "./IWriter";
|
||||||
import { WriterBase } from "../base/WriterBase";
|
import { WriterBase } from "../base/WriterBase";
|
||||||
import { getBufferClass } from "../base/BufferShim";
|
|
||||||
|
|
||||||
export class WriterBE extends WriterBase implements IWriter {
|
export class WriterBE extends WriterBase implements IWriter {
|
||||||
public writeShort(value:number) {
|
public writeShort(value:number) {
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(2);
|
const buffer = Buffer.alloc(2);
|
||||||
buffer.writeInt16BE(value);
|
buffer.writeInt16BE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -21,7 +20,7 @@ export class WriterBE extends WriterBase implements IWriter {
|
||||||
|
|
||||||
public writeUShort(value:number) {
|
public writeUShort(value:number) {
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(2);
|
const buffer = Buffer.alloc(2);
|
||||||
buffer.writeUInt16BE(value);
|
buffer.writeUInt16BE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -34,7 +33,7 @@ export class WriterBE extends WriterBase implements IWriter {
|
||||||
|
|
||||||
public writeInt(value:number) {
|
public writeInt(value:number) {
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(4);
|
const buffer = Buffer.alloc(4);
|
||||||
buffer.writeInt32BE(value);
|
buffer.writeInt32BE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -47,7 +46,7 @@ export class WriterBE extends WriterBase implements IWriter {
|
||||||
|
|
||||||
public writeUInt(value:number) {
|
public writeUInt(value:number) {
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(4);
|
const buffer = Buffer.alloc(4);
|
||||||
buffer.writeUInt32BE(value);
|
buffer.writeUInt32BE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -64,7 +63,7 @@ export class WriterBE extends WriterBase implements IWriter {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(8);
|
const buffer = Buffer.alloc(8);
|
||||||
buffer.writeBigInt64BE(value);
|
buffer.writeBigInt64BE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -81,7 +80,7 @@ export class WriterBE extends WriterBase implements IWriter {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(8);
|
const buffer = Buffer.alloc(8);
|
||||||
buffer.writeBigUint64BE(value);
|
buffer.writeBigUint64BE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -94,7 +93,7 @@ export class WriterBE extends WriterBase implements IWriter {
|
||||||
|
|
||||||
public writeFloat(value:number) {
|
public writeFloat(value:number) {
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(4);
|
const buffer = Buffer.alloc(4);
|
||||||
buffer.writeFloatBE(value);
|
buffer.writeFloatBE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -107,7 +106,7 @@ export class WriterBE extends WriterBase implements IWriter {
|
||||||
|
|
||||||
public writeDouble(value:number) {
|
public writeDouble(value:number) {
|
||||||
if (this.resizable) {
|
if (this.resizable) {
|
||||||
const buffer = getBufferClass().alloc(8);
|
const buffer = Buffer.alloc(8);
|
||||||
buffer.writeDoubleBE(value);
|
buffer.writeDoubleBE(value);
|
||||||
this.writeBuffer(buffer);
|
this.writeBuffer(buffer);
|
||||||
} else {
|
} else {
|
||||||
|
@ -147,19 +146,4 @@ 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -146,19 +146,4 @@ 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue