8.6 KiB
8.6 KiB
load-dictionaries — fresh DictionarySet builder
(no submodules)
- wikipedia — (no submodules)- english-wikipedia — Frequency-ranked dictionary of the most common English tokens observed in Wikipedia. The matcher uses this to flag pass…
- names — Frequency-ranked dictionaries of common US given names (male and female) and surnames. Names are over-represented in pa…
- passwords — Frequency-ranked dictionary of the most common passwords observed across public breach corpora (RockYou, HaveIBeenPwned…
- es — (no submodules) - wikipedia — (no submodules)- fr — (no submodules) - wikipedia — (no submodules)- ru — (no submodules) - wikipedia — (no submodules)- zh-Hans — (no submodules) - wikipedia — (no submodules)- load-dictionaries — (no submodules)- wikipedia — _(no submodules…
- wikipedia — (no submodules)- english-wikipedia — Frequency-ranked dictionary of the most common English tokens observed in Wikipedia. The matcher uses this to flag pass…
- names — Frequency-ranked dictionaries of common US given names (male and female) and surnames. Names are over-represented in pa…
- passwords — Frequency-ranked dictionary of the most common passwords observed across public breach corpora (RockYou, HaveIBeenPwned…
- es — (no submodules)- wikipedia — (no submodules)- fr — (no submodules)- wikipedia — (no submodules)- ru — (no submodules)- wikipedia — (no submodules)- zh-Hans — (no submodules)- wikipedia — (no submodules)- load-dictionaries — (no submodules)- wikipedia — (no submodules)- english-wikipedia — Frequency-ranked dictionary of the most common English tokens observed in Wikipedia. The matcher uses this to flag pass…
- names — Frequency-ranked dictionaries of common US given names (male and female) and surnames. Names are over-represented in pa…
- passwords — Frequency-ranked dictionary of the most common passwords observed across public breach corpora (RockYou, HaveIBeenPwned…
- es — (no submodules)- wikipedia — (no submodules)- fr — (no submodules)- wikipedia — (no submodules)- ru — (no submodules)- wikipedia — (no submodules)- zh-Hans — (no submodules)- wikipedia — (no submodules)- load-dictionaries — (no submodules)- wikipedia — <!-- begin:auto-…
- wikipedia — (no submodules)- english-wikipedia — Frequency-ranked dictionary of the most common English tokens observed in Wikipedia. The matcher uses this to flag pass…
- names — Frequency-ranked dictionaries of common US given names (male and female) and surnames. Names are over-represented in pa…
- passwords — Frequency-ranked dictionary of the most common passwords observed across public breach corpora (RockYou, HaveIBeenPwned…
- es — (no submodules)- wikipedia — (no submodules)- fr — (no submodules)- wikipedia — (no submodules)- ru — (no submodules)- wikipedia — (no submodules)- zh-Hans — (no submodules)- wikipedia — (no submodules)- load-dictionaries — (no submodules)- wikipedia — _(no submodule…
- wikipedia — (no submodules)- english-wikipedia — Frequency-ranked dictionary of the most common English tokens observed in Wikipedia. The matcher uses this to flag pass…
- names — Frequency-ranked dictionaries of common US given names (male and female) and surnames. Names are over-represented in pa…
- passwords — Frequency-ranked dictionary of the most common passwords observed across public breach corpora (RockYou, HaveIBeenPwned…
- es — (no submodules) - wikipedia — (no submodules)- fr — (no submodules) - wikipedia — (no submodules)- ru — (no submodules) - wikipedia — (no submodules)- zh-Hans — (no submodules) - wikipedia — (no submodules)- load-dictionaries — (no submodules)
Purpose
Builds a fresh DictionarySet value from a caller-supplied partial map,
merged over the bundled English defaults. The bundled defaults are never
mutated. Callers can pass assess(pwd, { dictionaries: <set> }) to swap the
dictionary set for one call without leaking state to subsequent calls.
Features
- Fresh return value per call — two calls return distinct object identities
- Frozen output — accidental consumer mutation is rejected
- Validates every entry has a positive numeric rank and a string token
- Throws
PWSTRENGTH.DICTIONARY_INVALIDon invalid entries
Usage: Basic Example
import { loadDictionaries } from "@suaveplan/password-strength";
const dicts = loadDictionaries({ passwords: new Map([["custom", 1]]) });
console.log(dicts.passwords?.get("custom")); // 1
Usage: Advanced Example
import { assess, loadDictionaries } from "@suaveplan/password-strength";
// Merge customer-specific banned-word list into the English defaults
const banned = new Map<string, number>([["acmecorp", 1], ["acme-internal", 2]]);
const dicts = loadDictionaries({ banned });
const result = assess("acmecorp-2026", { dictionaries: dicts });
console.log(result.score);
API Reference
loadDictionaries(dicts: PartialDictionaryMap): DictionarySet- Returns a fresh
DictionarySet(frozen). The bundled English defaults appear under the canonical names (passwords,english_wikipedia,male_names,female_names,surnames); the supplied dictionaries override any default with the same name. - Throws
PasswordStrengthError(PWSTRENGTH.DICTIONARY_INVALID)when any entry has a non-string token or a non-positive rank.
- Returns a fresh
Implementation Notes
The merge uses object spread, so caller-supplied names override defaults
with the same key. The function does not deep-clone the entry Maps — they
are already frozen by the dictionary modules — but it does freeze the
outer record so consumers cannot add or remove named dictionaries after
construction. Rank validation rejects 0, negative values, and
non-finite numbers; the spec scenario asserts the 0 case throws.