react-native-esc-pos-printer
Version:
53 lines (43 loc) • 1.02 kB
text/typescript
import { Buffer } from 'buffer';
export class BufferHelper {
buffers: Buffer[];
size: number;
constructor() {
this.buffers = [];
this.size = 0;
}
get length() {
return this.size;
}
concat(buffer: Buffer): BufferHelper {
this.buffers.push(buffer);
this.size += buffer.length;
return this;
}
empty(): BufferHelper {
this.buffers = [];
this.size = 0;
return this;
}
toBuffer(): Buffer {
// @ts-ignore
return Buffer.concat(this.buffers, this.size);
}
toString(encoding: BufferEncoding): string {
return this.toBuffer().toString(encoding);
}
load(stream: any, callback: any) {
stream.on('data', (trunk: Buffer) => {
this.concat(trunk);
});
stream.on('end', () => {
callback(null, this.toBuffer());
});
stream.once('error', callback);
}
bytesToString(data: Uint8Array, type: 'base64' | 'hex') {
this.concat(Buffer.from(data));
const buffer = this.toBuffer();
return buffer.toString(type);
}
}