kozukata-toa/src/servers/titles/utils/buffer.ts

37 lines
836 B
TypeScript

function IsNumericArray(a: unknown): a is Array<number> {
return Array.isArray(a) && a.every((c) => typeof c === "number");
}
export function ToBuffer(chunk: unknown, encoding?: BufferEncoding) {
if (Buffer.isBuffer(chunk)) {
return chunk;
}
if (IsNumericArray(chunk)) {
return Buffer.from(chunk);
}
if (typeof chunk === "string") {
return Buffer.from(chunk, encoding);
}
throw new Error("Cannot transform into a buffer");
}
export function ChunkLength(chunk: unknown, encoding?: BufferEncoding) {
if (Buffer.isBuffer(chunk)) {
return chunk.length;
}
// eslint-disable-next-line cadence/no-instanceof
if (chunk instanceof DataView) {
return Buffer.byteLength(chunk);
}
if (typeof chunk === "string") {
return Buffer.byteLength(chunk, encoding);
}
throw new Error("Cannot transform into a buffer");
}