moderator-toolbox-nxg-for-reddit / util/wiki/mutateWikiPage

util/wiki/mutateWikiPage

Functions

mutateWikiPage()

mutateWikiPage<T, R>(config): Promise<R>

Defined in: extension/data/util/wiki/mutateWikiPage.ts:113

Serialized, conflict-safe mutation of a single wiki page.

Type Parameters

T

T

R

R

Parameters

config

MutateWikiPageConfig<T, R>

The mutation configuration (see MutateWikiPageConfig).

Returns

Promise<R>

The mutator’s result. Rejects on transport failure, a refusal (parse-time, write-time, or mutator abort), or after exhausting conflict retries.

Interfaces

MutateWikiPageConfig

Defined in: extension/data/util/wiki/mutateWikiPage.ts:72

Configuration for a single mutateWikiPage call.

Type Parameters

T

T

R

R

Properties

backoff?

optional backoff?: (attempt) => Promise<void>

Defined in: extension/data/util/wiki/mutateWikiPage.ts:102

Delay before re-attempting after a 409 conflict (receives the just-failed attempt index). Defaults to exponential backoff with jitter; pass () => Promise.resolve() to retry immediately (e.g. in tests).

Parameters
attempt

number

Returns

Promise<void>

codec

codec: WikiPageCodec<T>

Defined in: extension/data/util/wiki/mutateWikiPage.ts:78

The payload codec for this page.

maxAttempts?

optional maxAttempts?: number

Defined in: extension/data/util/wiki/mutateWikiPage.ts:96

Override the retry bound (default DEFAULT_MAX_ATTEMPTS).

mutator

mutator: WikiMutator<T, R>

Defined in: extension/data/util/wiki/mutateWikiPage.ts:82

The mutation to apply (see WikiMutator).

onCommit?

optional onCommit?: (subreddit, data) => void

Defined in: extension/data/util/wiki/mutateWikiPage.ts:92

Side effect after a committed write (e.g. refresh cache + emit a change event).

Parameters
subreddit

string

data

T

Returns

void

onNoop?

optional onNoop?: (subreddit, data) => void

Defined in: extension/data/util/wiki/mutateWikiPage.ts:94

Side effect on a no-write outcome (e.g. refresh the display cache with read data).

Parameters
subreddit

string

data

T

Returns

void

page

page: string

Defined in: extension/data/util/wiki/mutateWikiPage.ts:76

The wiki page path (also part of the serialization key).

reason

reason: string

Defined in: extension/data/util/wiki/mutateWikiPage.ts:80

The wiki revision note.

refuseWrite?

optional refuseWrite?: (data) => string | undefined

Defined in: extension/data/util/wiki/mutateWikiPage.ts:90

Optional pre-write guard, re-checked each attempt (including against the fresh data a 409 surfaces). Return a reason string to refuse the write - the call rejects with that message - or undefined to proceed.

Parameters
data

T

Returns

string | undefined

subreddit

subreddit: string

Defined in: extension/data/util/wiki/mutateWikiPage.ts:74

The subreddit the page belongs to (also part of the serialization key).

writeOptions

Defined in: extension/data/util/wiki/mutateWikiPage.ts:84

Per-page write behavior (visibility, tab handling, reason format).

Type Aliases

MutatorOutcome

MutatorOutcome<R> = { result: R; write: true; } | { result: R; write: false; } | { abort: Error; write: false; }

Defined in: extension/data/util/wiki/mutateWikiPage.ts:59

The outcome of applying a mutator to the current page data.

  • write: true - the mutator changed data; persist it and resolve with result.

  • write: false with result - no change is warranted (e.g. target already resolved); skip the write and resolve with result.

  • write: false with abort - refuse to proceed; reject with the given error.

Type Parameters

R

R


WikiMutator

WikiMutator<T, R> = (data) => MutatorOutcome<R>

Defined in: extension/data/util/wiki/mutateWikiPage.ts:69

A mutation applied to a page’s data. Receives the current (mutable) data and returns whether to persist plus a typed result. Re-invoked with fresh data on every conflict retry, so it must re-derive its decision from the data it is given.

Type Parameters

T

T

R

R

Parameters

data

T

Returns

MutatorOutcome<R>