mask
Masks an IMEI number for PII-safe display.
IMEI is Device PII — it uniquely identifies a physical device (Telecom Cybersecurity Rules, 2024). Always mask before displaying in UI or writing to logs.
Masking operates on the raw input string (not normalised). This is intentional — the masker is a display utility working character-by-character on whatever it receives. Callers who want to mask a normalised 15-digit IMEI should call format first: IMEI.mask(IMEI.format(value)).
Note on raw vs normalised masking: IMEI.mask("490 154 203 237 518") masks a 19-character string char-by-char — spaces in the raw input are also masked. If caller wants to mask a clean 15-digit string, call IMEI.format(value) first, then IMEI.mask(...).
Default (visibleStart=0, visibleEnd=4, maskChar='X'): Shows last 4 characters of the raw input, masks the rest. "490154203237518" → "XXXXXXXXXXX7518" (11 X's + last 4 digits)
Edge cases (all safe — never throws):
Empty input → returns
"".visibleStart + visibleEnd >= value.length→ entire string returned unmasked (overlap rule).Non-normalised input → masking applied character-by-character on the raw string.
Return
Masked string. Never throws — display-safe by contract.
Parameters
Raw IMEI 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(IMEI.mask("356938035643809") == "XXXXXXXXXXX3809")