1.4 KiB
Architecture
Random Tools is a static React/Vite application wrapped in the shared Toolbox shell. random/source.ts exposes one common interface over two deliberately distinct local sources: browser WebCrypto with rejection-sampled integers, and the versioned toolbox-helpers xoshiro128** seeded generator. Secure mode never falls back to deterministic mode.
random/generators.ts builds bounded numbers, strings, identifiers, dice, samples, shuffles, passphrases and normal samples on that interface. random/draws.ts adds local binary coin flips, standard playing-card deals, shuffled inclusive integer sequences, Gregorian calendar-date sampling, exact decimal-digit fractions and equal-area points on a spherical surface model. Date sampling can filter weekdays and use a partial Fisher–Yates mapping for selection without replacement; it does not allocate every date in a large range.
Each successful result includes source identity, parameters and deterministic state where applicable. Most operations are synchronous and bounded; custom word-list identity uses the asynchronous browser Web Crypto digest API without a worker. Custom lists are trimmed, emptied lines are dropped and uniqueness is checked once before both selection and metadata are derived. The application contains no third-party network client; its CSP limits connections to its own origin for loading the local application shell.