Skip to main content

Variable: DISPLAY_NAME_PATTERN

const DISPLAY_NAME_PATTERN: string

Defined in: packages/contracts/src/primitives.ts:155

The rules on the characters of a display name (PO-QA3), as one pattern so that they stay visible in the published JSON Schema. Under Ajv's u flag it is matched per code point. In order:

  • not beginning or ending with U+061C (Arabic letter mark), U+200E or U+200F (the direction marks are legitimate inside mixed-direction text, and an edge is where they hide a spoof);
  • none of: U+0000 to U+001F, U+007F to U+009F (C0, DEL and C1 controls), U+200B (zero-width space), U+2028 and U+2029 (line and paragraph separators), U+202A to U+202E and U+2066 to U+2069 (bidirectional overrides, embeddings and isolates), U+2060 (word joiner), U+FEFF (byte order mark), or a lone surrogate. A lone surrogate has no UTF-8 encoding and jsonb cannot hold it; a valid pair (an emoji) still passes. U+200C and U+200D stay allowed: Arabic and Persian need the non-joiner, and emoji sequences need the joiner;
  • at least one character that is neither White_Space nor Default_Ignorable_Code_Point, so a name of spaces or of invisible characters is blank;
  • no run of more than DISPLAY_NAME_MAX_STACKED_MARKS combining marks or joiners.

Normalisation to NFC is not expressible here; see DisplayName.