moderator-toolbox-nxg-for-reddit / util/wiki/schemas/usernotes/schema

util/wiki/schemas/usernotes/schema

Functions

countNotesByType()

countNotesByType(notes): Map<string, number>

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:137

Counts notes per type key across a dataset, archived notes included.

Parameters

notes

UserNotesData

Returns

Map<string, number>


formatArchiveAttribution()

formatArchiveAttribution(by): string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:49

Renders a human-readable actor for an archive/delete attribution, mapping the sentinel archiver values to friendly phrases and otherwise formatting the acting mod’s username.

Parameters

by

string

The archived.by value (a username or one of the archiver sentinels).

Returns

string


isNoteActive()

isNoteActive(note): boolean

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:102

Returns true when a note is not archived.

Parameters

note

UserNoteEntry

Returns

boolean

Interfaces

ConstantPools

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:225

Constant pools used to compress repeated strings in the deflated format.

Properties

users

users: string[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:226

warnings

warnings: string[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:227


DecompressedBlob

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:231

Usernotes data after blob decompression but before inflation.

Properties

constants

constants: ConstantPools

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:233

users

users: Record<string, DeflatedUser>

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:234

ver

ver: 6

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:232


DeflatedNote

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:211

Compact on-disk representation of a single usernote (deflated form).

Properties

l

l: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:215

m

m: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:214

n

n: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:212

t

t: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:213

w

w: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:216


DeflatedUser

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:220

Compact on-disk representation of a user’s notes.

Properties

ns

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:221


ExistingNote

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:58

A usernote as displayed/edited in the popup, addressed by its per-user index.

Properties

archived?

optional archived?: NoteAttribution

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:72

Set when the note is archived (hidden but kept).

id

id: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:60

The note’s stable per-user index.

mod

mod: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:65

Username of the moderator who created the note.

note

note: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:63

time

time: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:67

Creation timestamp in epoch seconds.

type

type: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:62

Note type key, or empty string for no type.


NoteAttribution

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:23

Attribution for an archive action: who archived the note and when (epoch seconds).

Properties

at

at: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:25

by

by: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:24


NxgShardNote

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:264

A note inside the NXG shard payload. Human-readable on purpose: named keys, the mod inline (zlib makes string pooling pointless), epoch-second times, and full subreddit-relative permalinks. type/link/archived are omitted when empty.

Properties

archived?

optional archived?: NoteAttribution

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:276

index

index: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:265

link?

optional link?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:273

Subreddit-relative permalink, e.g. /r/sub/comments/abc/-/def/.

messageLink?

optional messageLink?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:275

Full URL of the removal message (modmail) sent alongside this note.

mod

mod: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:270

Username of the moderator who created the note.

note

note: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:266

time

time: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:268

Creation timestamp in epoch seconds.

type?

optional type?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:271


NxgShardUserRecord

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:280

One user’s record inside the NXG shard payload.

Properties

nextIndex

nextIndex: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:282

The next note index to assign; persisted so indexes are never reused.

notes

notes: NxgShardNote[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:283


NxgUsernotesShardPage

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:251

An NXG usernotes shard page: a small envelope around the compressed payload.

Properties

blob

blob: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:255

base64(zlib(payload JSON)) - see NxgShardPayload.

format

format: "nxg-usernotes"

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:252

ver

ver: 1

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:253


PruneOptions

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:168

Configuration for a usernote prune operation.

Properties

pruneAction?

optional pruneAction?: "delete" | "archive" | "purge"

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:192

What happens to notes that match the prune criteria:

  • 'delete' (default): matching notes are permanently removed. On NXG storage, empty user records are retained so their nextIndex is preserved; on legacy v6 storage they are removed.

  • 'purge': like delete, but empty user records are also removed on NXG storage.

  • 'archive': matching notes are marked as archived instead of deleted.

pruneArchived?

optional pruneArchived?: ArchivedMode

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:184

How archived notes are treated during pruning:

  • 'include' (default): archived and non-archived notes are both eligible for pruning.

  • 'exclude': archived notes are skipped and kept regardless of other criteria.

  • 'only': only archived notes are eligible for pruning.

pruneByNoteAge

pruneByNoteAge: boolean

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:169

pruneByNoteAgeDays?

optional pruneByNoteAgeDays?: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:173

Age limit expressed in days, used for display.

pruneByNoteAgeLimit

pruneByNoteAgeLimit: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:171

Maximum note age threshold in milliseconds.

pruneByUserDeleted

pruneByUserDeleted: boolean

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:193

pruneByUserInactivity

pruneByUserInactivity: boolean

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:195

pruneByUserInactivityLimit

pruneByUserInactivityLimit: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:197

Inactivity threshold in milliseconds; users with no posts/comments newer than this are pruned.

pruneByUserSuspended

pruneByUserSuspended: boolean

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:194

pruneNoteTypeMode?

optional pruneNoteTypeMode?: "include" | "all" | "exclude"

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:175

How the pruneNoteTypes list is applied: include only those kinds, exclude them, or prune all kinds.

pruneNoteTypes?

optional pruneNoteTypes?: string[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:177

Type keys to include or exclude, depending on pruneNoteTypeMode.


PruneProgress

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:201

Progress update emitted during a prune operation for display in the UI.

Properties

checkedUsers?

optional checkedUsers?: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:203

currentUser?

optional currentUser?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:206

Username currently being checked, for display during account-status checks.

message

message: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:207

stage

stage: "preparing" | "checkingUsers" | "rateLimited" | "confirming" | "saving" | "complete"

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:202

totalUsers?

optional totalUsers?: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:204


RawUsernotesBlob

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:238

Usernotes data as stored on-disk in schema v6 (users blob-compressed, constants plain).

Properties

blob

blob: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:240

constants

constants: ConstantPools

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:241

ver

ver: 6

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:239


UserNoteColor

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:10

Properties

autoArchiveDays?

optional autoArchiveDays?: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:19

If set, notes of this type older than this many days (0 = immediately) are archived during saves.

banDuration?

optional banDuration?: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:17

If set, auto-ban is offered when leaving this note type. 0 = permanent, positive integer = days.

color

color: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:13

colorDark?

optional colorDark?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:15

Color used in dark mode. Falls back to color when absent.

key

key: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:11

text

text: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:12


UserNoteEntry

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:76

A single usernote entry as stored in the wiki data.

Properties

archived?

optional archived?: NoteAttribution

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:98

Set when the note is archived (hidden by default but kept).

index?

optional index?: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:83

Stable per-user note index, assigned from the user’s nextIndex at creation and never reused. (username, index) is the unambiguous note address for third-party tools. Ephemeral (position-derived) for data read from legacy v6 pages; durable once stored in the NXG layout.

link?

optional link?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:90

messageLink?

optional messageLink?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:96

Full URL of the removal message (modmail) sent alongside this note, if any. NXG-only: the legacy v6 page has a single squashed link slot, so the derived legacy mirror drops this field.

mod

mod: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:87

Username of the moderator who created the note.

note

note: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:84

time

time: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:89

Creation timestamp in epoch seconds.

type?

optional type?: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:85


UserNotesData

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:107

The fully inflated usernotes data structure for a subreddit.

Properties

corrupted?

optional corrupted?: boolean

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:124

True when the data was found to contain malformed entries that were silently dropped on load.

repairs?

optional repairs?: string[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:122

One-time data repairs already applied to this subreddit’s NXG usernotes (see seededTypesRepair). Carried on the manifest so a repair runs once per subreddit rather than once per moderator.

types?

optional types?: UserNoteColor[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:116

Usernote type definitions. The NXG usernotes manifest embeds these, making the sharded layout self-contained; legacy v6 pages get them seeded from the subreddit config (usernoteColors) or the built-in defaults on load.

users

users: Record<string, UsernotesUser>

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:109

ver

ver: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:108


UsernotesUser

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:148

All notes for a single Reddit user within a subreddit.

Extended by

Properties

name

name: string

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:149

nextIndex?

optional nextIndex?: number

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:155

The next note index to assign for this user. Persisted (not derived) so indexes are never reused, even after notes are deleted or pruned.

notes

notes: UserNoteEntry[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:150

Type Aliases

ArchivedMode

ArchivedMode = "include" | "exclude" | "only"

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:165

How archived notes are treated by an operation that filters or selects notes (the browse filter and the prune executor share this vocabulary):

  • 'include': archived and active notes alike.

  • 'exclude': only active notes; archived ones are skipped/hidden.

  • 'only': only archived notes.


NxgShardPayload

NxgShardPayload = Record<string, NxgShardUserRecord>

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:287

The decompressed NXG shard payload: username -> user record, names sorted.

Variables

AUTO_ARCHIVER

const AUTO_ARCHIVER: "[auto]" = '[auto]'

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:42

Sentinel archived.by value for notes archived automatically by the per-type auto-archive sweep that runs on save. Brackets cannot appear in reddit usernames, so this can’t collide. Rendered in the UI as “auto-archived”.


defaultUsernoteTypes

const defaultUsernoteTypes: UserNoteColor[]

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:296

Built-in usernote type definitions used when a subreddit has no custom configuration. The dark colors match what classic toolbox’s dark-mode CSS filter (invert(90%) hue-rotate(180deg)) produces for the light colors, except abusewarn, which is hand-tuned for readability (the filter output #9e5600 is too dim on dark backgrounds).


LEGACY_DELETION_ARCHIVER

const LEGACY_DELETION_ARCHIVER: "[6.x]" = '[6.x]'

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:34

Sentinel archived.by value for notes archived because they were deleted on the legacy 6.x wiki page - a page diff cannot attribute the acting mod. Brackets cannot appear in reddit usernames, so this can’t collide. Rendered in the UI as “archived via 6.x delete”.


notesMaxSchema

const notesMaxSchema: 6 = 6

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:8

Maximum schema version this build can read.


notesMinSchema

const notesMinSchema: 6 = 6

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:6

Minimum schema version this build can read.


notesSchema

const notesSchema: 6 = 6

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:4

Current (write) schema version.


NXG_USERNOTES_FORMAT

const NXG_USERNOTES_FORMAT: "nxg-usernotes" = 'nxg-usernotes'

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:245

Format marker for NXG usernotes shard pages.


NXG_USERNOTES_VER

const NXG_USERNOTES_VER: 1 = 1

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:248

Current NXG usernotes shard schema version.


seededTypesRepair

const seededTypesRepair: "seededTypes" = 'seededTypes'

Defined in: extension/data/util/wiki/schemas/usernotes/schema.ts:134

Repair marker for type definitions lost by early migrations, which seeded the built-in defaults plus placeholder types (name = key, no color) instead of the subreddit’s configured usernoteColors. Supersedes the first, placeholder-only pass (legacyTypes), whose marker older manifests still carry: that pass left the seeded defaults alone and read too little history.