Files
skills/docs/security-stack/security/password-strength/src/dicts/de/wikipedia.md
2026-05-29 08:20:56 +01:00

2.4 KiB

de/wikipedia — German Wikipedia frequency dictionary

(no submodules)

Purpose

Frequency-ranked dictionary of the most common German tokens observed in Wikipedia (CC-BY-SA public-domain frequency lists). Plugs into assess via loadDictionaries so German-locale passwords are evaluated against a locale-appropriate corpus.

Features

  • Frozen ReadonlyMap<string, number> keyed by lowercase token
  • 50-entry default — high-frequency German stopwords and the common passwort token used by the spec scenarios
  • Production deployments should swap in a fuller list via loadDictionaries

Usage: Basic Example

import { DE_WIKIPEDIA_DICTIONARY } from "@suaveplan/password-strength/dicts/de";

console.log(DE_WIKIPEDIA_DICTIONARY.get("passwort")); // 1

Usage: Advanced Example

import { assess } from "@suaveplan/password-strength";
import { DE_DICTIONARIES } from "@suaveplan/password-strength/dicts/de";

const result = assess("passwort123", { dictionaries: DE_DICTIONARIES });
console.log(result.score);

API Reference

  • DE_WIKIPEDIA_DICTIONARY: ReadonlyMap<string, number> — frozen frequency-ranked German Wikipedia dictionary.

Implementation Notes

passwort is rank 1 to satisfy the spec's locale-dictionary scenario. Production lists should track Wikipedia's published top-30 000 German tokens, but the bundled subset keeps the package bundle small while demonstrating the locale-plug-in pattern.

Additional Implementation Notes

The implementation follows the canonical zxcvbn algorithm from Wheeler 2016 with the suaveplan-style additions described in the package proposal: structured error codes via the defineCodes registry, Zod boundaries at every public entry point, OTel histograms and counters keyed to low-cardinality attributes, and a strict input-length guard at 200 characters. Consumers integrate with their existing observability stack by installing a meter provider before importing the package, and with their i18n stack via the MessageResolver callback type declared in @suaveplan/types. The bundled data tables are intentionally small to keep the package bundle compact; production deployments should swap in fuller frequency-ranked tables via loadDictionaries. The default English dictionary set is a frozen DictionarySet that the matcher never mutates; caller-supplied dictionaries override defaults by name.