import { isObjectLiteral } from './is-object-literal';

/** A nodejs Buffer gone through JSON.stringify */
export type SerializedBuffer = {
	type: 'Buffer';
	data: number[]; // Array like Uint8Array, each item is uint8 (0-255)
};

/** Converts the given SerializedBuffer to nodejs Buffer */
export function toBuffer(serializedBuffer: SerializedBuffer): Buffer {
	return Buffer.from(serializedBuffer.data);
}

export function isSerializedBuffer(candidate: unknown): candidate is SerializedBuffer {
	return (
		isObjectLiteral(candidate) &&
		'type' in candidate &&
		'data' in candidate &&
		candidate.type === 'Buffer' &&
		Array.isArray(candidate.data)
	);
}
