import type { AutomergeUrl } from '../../storage/document-runtime-contract' import type { VaultStateData } from '../../services/vault-state-data' /** Plugin settings live only in the vault's hidden state subtree. */ export class PluginSettingsStore { private readonly urls = new Map() constructor(private readonly stateData: VaultStateData) {} async load(pluginId: string): Promise { const url = await this.stateData.file('plugin-settings', pluginId) this.urls.set(pluginId, url) return this.stateData.load('plugin-settings', pluginId) } async save(pluginId: string, data: unknown): Promise { const url = await this.stateData.file('plugin-settings', pluginId) await this.stateData.save('plugin-settings', pluginId, data) this.urls.set(pluginId, url) } async delete(pluginId: string): Promise { const url = await this.stateData.file('plugin-settings', pluginId) await this.stateData.clear('plugin-settings', pluginId) this.urls.set(pluginId, url) } getSettingsUrl(pluginId: string): AutomergeUrl | null { return this.urls.get(pluginId) ?? null } }