@logic-pad/core
Version:
22 lines (21 loc) • 803 B
JavaScript
import SerializerChecksum from '../serializer_checksum.js';
import CompressorBase from './compressorBase.js';
const checksumSerializer = new SerializerChecksum();
const encoder = new TextEncoder();
export default class ChecksumCompressor extends CompressorBase {
get id() {
return `cs${checksumSerializer.version}`;
}
async compress(input) {
const data = encoder.encode(input);
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray
.map(b => b.toString(16).padStart(2, '0'))
.join('');
return `${this.id}_${hashHex}`;
}
decompress(_input) {
throw new Error('Checksum decompression is not supported');
}
}