strata-storage
Version:
Zero-dependency universal storage plugin providing a unified API for all storage operations across web, Android, and iOS platforms
50 lines (49 loc) • 2.01 kB
JavaScript
import { PreferencesAdapter } from "./adapters/capacitor/PreferencesAdapter.js";
import { SqliteAdapter } from "./adapters/capacitor/SqliteAdapter.js";
import { SecureAdapter } from "./adapters/capacitor/SecureAdapter.js";
import { FilesystemAdapter } from "./adapters/capacitor/FilesystemAdapter.js";
// Export Capacitor adapters
export { PreferencesAdapter } from "./adapters/capacitor/PreferencesAdapter.js";
export { SqliteAdapter } from "./adapters/capacitor/SqliteAdapter.js";
export { SecureAdapter } from "./adapters/capacitor/SecureAdapter.js";
export { FilesystemAdapter } from "./adapters/capacitor/FilesystemAdapter.js";
// Export the plugin for direct access if needed
export { StrataStorage } from "./plugin/index.js";
/**
* Register Capacitor adapters with a Strata instance
* This is completely optional and only needed for Capacitor apps
*/
export async function registerCapacitorAdapters(storage) {
// Check if Capacitor is available
const hasCapacitor = typeof window !== 'undefined' &&
window.Capacitor &&
window.Capacitor?.isNativePlatform?.();
if (!hasCapacitor) {
console.warn('Capacitor not detected. Capacitor adapters will not be registered.');
return;
}
// Register Capacitor adapters
storage.registerAdapter(new PreferencesAdapter());
storage.registerAdapter(new SqliteAdapter());
storage.registerAdapter(new SecureAdapter());
storage.registerAdapter(new FilesystemAdapter());
// Re-initialize to make new adapters available
if (storage.isInitialized) {
await storage.initialize();
}
}
/**
* Helper to check if running in Capacitor environment
*/
export function isCapacitorEnvironment() {
return ((typeof window !== 'undefined' &&
window.Capacitor &&
window.Capacitor?.isNativePlatform?.()) ??
false);
}
/**
* Get Capacitor-specific storage types
*/
export function getCapacitorStorageTypes() {
return ['preferences', 'sqlite', 'secure', 'filesystem'];
}