mask
Masks a Passport number for PII-safe display.
Passport is Private government ID PII — always mask before displaying in UI or logging.
Masking operates on the raw input string (not normalised). This is intentional — the masker is a display utility that works character-by-character on whatever string it receives. Callers who want to mask a normalised Passport number should call format first: Passport.mask(Passport.format(value)).
Default (visibleStart=0, visibleEnd=4, maskChar='X'): Shows last 4 characters, masks the rest. "M1234567" → "XXXX4567" (last 4: "4567")
Edge cases (all safe — never throws):
Empty input → returns
"".visibleStart + visibleEnd >= value.length→ entire string returned unmasked (overlap rule).Non-normalised input (lowercase, spaces) → masking applied character-by-character on the raw string. No normalisation is performed.
Return
Masked string. Never throws — display-safe by contract.
Parameters
Raw Passport number string to mask. No normalisation is applied.
Number of leading characters to show unmasked. Default: 0.
Number of trailing characters to show unmasked. Default: 4.
Character to replace masked positions. Default: 'X'.
Samples
check(Passport.mask("A1234567") == "XXXX4567")