@bscotch/sprite-source
Version:
Art pipeline scripting module for GameMaker sprites.
28 lines • 1.02 kB
JavaScript
import { computePngChecksum } from '@bscotch/pixel-checksum';
import crypto from 'node:crypto';
import fsp from 'node:fs/promises';
/**
* A quick checksum for arbitrary text-based file types
* (like JSON or atlas), where newlines are first normalized.
*/
async function textFileChecksum(filePath) {
const content = await fsp.readFile(filePath, 'utf8');
const normalized = content.replace(/\r/g, '').trim();
return computeStringChecksum(normalized);
}
export async function computeFileChecksum(filePath) {
if (!filePath.match(/\.png$/i)) {
return await textFileChecksum(filePath);
}
return computePngChecksum(filePath);
}
export async function computeFilesChecksum(paths) {
const checksums = await Promise.all(paths.map(computeFileChecksum));
return computeStringChecksum(checksums.join('-'));
}
export function computeStringChecksum(str) {
const hash = crypto.createHash('md5');
hash.update(str);
return hash.digest('hex');
}
//# sourceMappingURL=checksum.js.map