@polyipseity/obsidian-plugin-library
Version:
Library for Obsidian plugins.
61 lines • 2.96 kB
TypeScript
import type { DeepReadonly, DeepWritable } from "ts-essentials";
import { type Fixed, type Fixer } from "./fixers.js";
import { ResourceComponent } from "./obsidian.js";
import type { PluginContext } from "./plugin.js";
export declare abstract class AbstractSettingsManager<T extends AbstractSettingsManager.Type> extends ResourceComponent<DeepReadonly<T>> {
#private;
protected readonly fixer: Fixer<T>;
constructor(fixer: Fixer<T>);
mutate(mutator: (settings: DeepWritable<T>) => unknown): Promise<void>;
read(reader?: () => unknown): Promise<void>;
onMutate<V>(accessor: (settings: DeepReadonly<T>) => V, callback: (cur: V, prev: V, settings: DeepReadonly<T>) => unknown): () => void;
onload(): void;
protected load0(): Promise<DeepReadonly<T>>;
abstract write(): unknown;
protected abstract onInvalidData(actual: unknown, fixed: DeepWritable<T>): unknown;
protected abstract read0(): unknown;
}
export declare namespace AbstractSettingsManager {
export interface Type {
readonly [Type]?: never;
}
const Type: unique symbol;
export function fix(self0: unknown): Fixed<Type>;
export {};
}
export declare class StorageSettingsManager<T extends StorageSettingsManager.Type> extends AbstractSettingsManager<T> {
#private;
protected readonly context: PluginContext;
protected readonly storage: Storage;
constructor(context: PluginContext, fixer: Fixer<T>, storage?: Storage);
protected get key(): PromiseLike<string | null>;
write(): Promise<void>;
protected onInvalidData(actual: unknown, fixed: DeepWritable<T>): Promise<void>;
protected read0(): Promise<unknown>;
}
export declare namespace StorageSettingsManager {
const FAILED: unique symbol, KEY = "settings", RECOVERY_PREFIX = "local-settings.";
type Recovery = Readonly<Record<string, string>>;
interface Type extends AbstractSettingsManager.Type {
readonly [FAILED]?: true;
readonly recovery: Recovery;
}
function fix(self0: unknown): Fixed<Type>;
function getRecovery(recovery: Recovery, prefix: string): Map<string, string>;
function setRecovery(recovery: DeepWritable<Recovery>, prefix: string, map: Map<string, string>): void;
function hasFailed(value: Type): boolean;
}
export declare class SettingsManager<T extends SettingsManager.Type> extends AbstractSettingsManager<T> {
#private;
protected readonly context: PluginContext;
constructor(context: PluginContext, fixer: Fixer<T>);
write(): Promise<void>;
protected onInvalidData(actual: unknown, fixed: DeepWritable<T>): Promise<void>;
protected read0(): Promise<unknown>;
}
export declare namespace SettingsManager {
type Type = AbstractSettingsManager.Type;
const RECOVERY_PREFIX = "settings.", fix: typeof AbstractSettingsManager.fix;
}
export declare function registerSettingsCommands(context: PluginContext): void;
//# sourceMappingURL=settings.d.ts.map