CRITICAL CHECKPOINT - DO NOT PUSH TO GITHUB Recovery Status: - Successfully recovered brainy.ts from compiled JavaScript - All core v3.0 API methods functional (add, get, update, delete, relate, find, etc.) - Neural subsystem intact (562KB embedded patterns, NLP working) - Augmentation pipeline operational (20+ augmentations) - HNSW clustering system complete - Triple Intelligence compiled (needs constructor fix) - Test suite validates functionality Changes preserved: - 898 files with changes from last 3 days - 144,475 insertions - All augmentation improvements - All test coverage enhancements - Complete v3.0 feature set This is a LOCAL checkpoint only - contains recovered work after corruption incident. Created backup in .backups/brainy-full-20250910-151314.tar.gz Branch: recovery-checkpoint-20250910-151433 Date: Wed Sep 10 03:18:04 PM PDT 2025
45 lines
No EOL
1.4 KiB
JavaScript
45 lines
No EOL
1.4 KiB
JavaScript
/**
|
|
* Cross-platform crypto utilities
|
|
* Provides hashing functions that work in both Node.js and browser environments
|
|
*/
|
|
/**
|
|
* Simple string hash function that works in all environments
|
|
* Uses djb2 algorithm - fast and good distribution
|
|
* @param str - String to hash
|
|
* @returns Positive integer hash
|
|
*/
|
|
export function hashString(str) {
|
|
let hash = 5381;
|
|
for (let i = 0; i < str.length; i++) {
|
|
const char = str.charCodeAt(i);
|
|
hash = ((hash << 5) + hash) + char; // hash * 33 + char
|
|
}
|
|
// Ensure positive number
|
|
return Math.abs(hash);
|
|
}
|
|
/**
|
|
* Alternative: FNV-1a hash algorithm
|
|
* Good distribution and fast
|
|
* @param str - String to hash
|
|
* @returns Positive integer hash
|
|
*/
|
|
export function fnv1aHash(str) {
|
|
let hash = 2166136261;
|
|
for (let i = 0; i < str.length; i++) {
|
|
hash ^= str.charCodeAt(i);
|
|
hash = (hash * 16777619) >>> 0;
|
|
}
|
|
return hash;
|
|
}
|
|
/**
|
|
* Generate a deterministic hash for partitioning
|
|
* Uses the most appropriate algorithm for the environment
|
|
* @param input - Input string to hash
|
|
* @returns Positive integer hash suitable for modulo operations
|
|
*/
|
|
export function getPartitionHash(input) {
|
|
// Use djb2 by default as it's fast and has good distribution
|
|
// This ensures consistent partitioning across all environments
|
|
return hashString(input);
|
|
}
|
|
//# sourceMappingURL=crypto.js.map
|