Skip to content

ConfigManager

Defined in: packages/core/src/manager.ts:51

The main class managing configuration state, persistence, validation, and version migration. It uses a Zustand store internally to maintain reactivity.

TCurrent = undefined

The type of the current configuration schema.

store: StoreApi<ManagerState<TCurrent>>

Defined in: packages/core/src/manager.ts:64

The underlying Zustand store instance. Can be used to subscribe to state changes directly.

get config(): TCurrent

Defined in: packages/core/src/manager.ts:164

The current stored config.

TCurrent


get dataVersion(): number

Defined in: packages/core/src/manager.ts:174

The current data version number.

number


get hasBeenHydrated(): boolean

Defined in: packages/core/src/manager.ts:184

True if the store has successfully loaded or saved data at least once.

boolean


get isLoadError(): boolean

Defined in: packages/core/src/manager.ts:214

True if load status is ‘error’.

boolean


get isLoadInitial(): boolean

Defined in: packages/core/src/manager.ts:199

True if load status is ‘initial’.

boolean


get isLoadPending(): boolean

Defined in: packages/core/src/manager.ts:204

True if load status is ‘pending’.

boolean


get isLoadSuccess(): boolean

Defined in: packages/core/src/manager.ts:209

True if load status is ‘success’.

boolean


get loadError(): unknown

Defined in: packages/core/src/manager.ts:194

The error from the last load operation, if any.

unknown


get loadStatus(): ManagerRequestStatus

Defined in: packages/core/src/manager.ts:189

The status of the load operation.

ManagerRequestStatus


get metadata(): ManagerMetadata

Defined in: packages/core/src/manager.ts:169

The metadata (data version and schema version).

ManagerMetadata


get schemaVersion(): number

Defined in: packages/core/src/manager.ts:179

The current schema version number.

number


get state(): ManagerState<TCurrent>

Defined in: packages/core/src/manager.ts:159

The entire state snapshot of the manager, including config, metadata and load/save state.

ManagerState<TCurrent>

addVersion<TNextSchema>(versionDef): ConfigManager<output<TNextSchema>>

Defined in: packages/core/src/manager.ts:230

Defines the next version of the configuration schema. This method uses an immutable builder pattern and returns a new ConfigManager instance typed with the new schema.

TNextSchema extends ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>

VersionDef<TCurrent, TNextSchema>

The definition of the new version, including schema and migration function.

ConfigManager<output<TNextSchema>>

A new ConfigManager instance.


load(): Promise<void>

Defined in: packages/core/src/manager.ts:255

Loads the configuration from the adapter. Handles deserialization, validation, and migration of data. Updates the store with the result.

Promise<void>


save(config): Promise<TCurrent>

Defined in: packages/core/src/manager.ts:284

Saves the configuration to the adapter. Performs an optimistic update on the store immediately. Handles race conditions and version conflicts.

TCurrent

The new configuration to save.

Promise<TCurrent>

The resolved configuration (may differ from input if server modified it or if race condition occurred).


static create<TSchema>(options, initialVersion): ConfigManager<output<TSchema>>

Defined in: packages/core/src/manager.ts:125

Creates a new ConfigManager instance.

TSchema extends ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>

ConfigManagerOptions

VersionDef<void, TSchema>

The definition of the initial schema version (Version 1).

ConfigManager<output<TSchema>>

A ConfigManager instance typed with the initial schema.