UNPKG

jodit

Version:

Jodit is an awesome and useful wysiwyg editor with filebrowser

70 lines (69 loc) 2.64 kB
/*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net */ import { camelCase } from "../helpers/string/camel-case.js"; import { canUseIndexedDB, IndexedDBProvider } from "./engines/indexed-db-provider.js"; import { canUsePersistentStorage, LocalStorageProvider } from "./engines/local-storage-provider.js"; import { MemoryStorageProvider } from "./engines/memory-storage-provider.js"; import { StorageKey } from "./storage.js"; export class AsyncStorage { constructor(provider, suffix) { this.provider = provider; this.prefix = StorageKey; if (suffix) { this.prefix += suffix; } } async set(key, value) { const provider = await this.provider; await provider.set(camelCase(this.prefix + key), value); return this; } async delete(key) { const provider = await this.provider; await provider.delete(camelCase(this.prefix + key)); return this; } async get(key) { const provider = await this.provider; return provider.get(camelCase(this.prefix + key)); } async exists(key) { const provider = await this.provider; return provider.exists(camelCase(this.prefix + key)); } async clear() { const provider = await this.provider; await provider.clear(); return this; } async close() { const provider = await this.provider; if ('close' in provider && typeof provider.close === 'function') { await provider.close(); } } static makeStorage(persistentOrStrategy = false, suffix) { let provider = undefined; let storage = null; if (persistentOrStrategy === 'localStorage' || persistentOrStrategy === 'sessionStorage') { if (canUsePersistentStorage(persistentOrStrategy)) { provider = new LocalStorageProvider(StorageKey + (suffix || ''), persistentOrStrategy); } } else if (persistentOrStrategy === 'indexedDB' || persistentOrStrategy === true) { provider = canUseIndexedDB().then(canUse => canUse ? new IndexedDBProvider(StorageKey + (suffix || ''), 'keyValueStore') : new MemoryStorageProvider()); } if (!provider) { provider = new MemoryStorageProvider(); } storage = new AsyncStorage(Promise.resolve(provider), suffix); return storage; } }