- Core library with SVG and PNG generation - CLI tool with generate and batch commands - Cross-platform path handling for Windows compatibility - Comprehensive test suite with integration tests
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Generate consistent test inputs for jdenticon benchmarking
|
|
* Creates deterministic hash strings for fair comparison between Go and JS implementations
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const crypto = require('crypto');
|
|
|
|
const NUM_INPUTS = 1000;
|
|
const inputs = [];
|
|
|
|
// Generate deterministic inputs by hashing incremental strings
|
|
for (let i = 0; i < NUM_INPUTS; i++) {
|
|
// Use a variety of input types to make the benchmark realistic
|
|
let input;
|
|
if (i % 4 === 0) {
|
|
input = `user${i}@example.com`;
|
|
} else if (i % 4 === 1) {
|
|
input = `test-hash-${i}`;
|
|
} else if (i % 4 === 2) {
|
|
input = `benchmark-input-${i.toString(16)}`;
|
|
} else {
|
|
// Use a deterministic source for the "random" part
|
|
const randomPart = crypto.createHash('sha1').update(`seed-${i}`).digest('hex').substring(0, 12);
|
|
input = `random-string-${randomPart}`;
|
|
}
|
|
|
|
// Generate SHA1 hash (same as jdenticon uses)
|
|
const hash = crypto.createHash('sha1').update(input).digest('hex');
|
|
inputs.push(hash);
|
|
}
|
|
|
|
// Write inputs to JSON file
|
|
const outputPath = './inputs.json';
|
|
fs.writeFileSync(outputPath, JSON.stringify(inputs, null, 2));
|
|
|
|
console.log(`Generated ${NUM_INPUTS} test inputs and saved to ${outputPath}`);
|
|
console.log(`Sample inputs:`);
|
|
console.log(inputs.slice(0, 5)); |