Skip to main content

Basic Usage Examples

Simple examples to get started with Strata Storage.

Installation​

npm install strata-storage
# or
yarn add strata-storage

Basic Operations​

Store and Retrieve Data​

import { defineStorage } from 'strata-storage';

const storage = defineStorage();

// Store data
await storage.set('user_name', 'John Doe');
await storage.set('user_age', 30);
await storage.set('user_preferences', {
theme: 'dark',
language: 'en',
notifications: true
});

// Retrieve data
const name = await storage.get('user_name');
console.log(name); // 'John Doe'

const preferences = await storage.get('user_preferences');
console.log(preferences); // { theme: 'dark', ... }

Remove Data​

// Remove single item
await storage.remove('user_age');

// Clear all data
await storage.clear();

Check Existence​

// Check if key exists
const exists = await storage.has('user_name');
console.log(exists); // true or false

// Get all keys
const keys = await storage.keys();
console.log(keys); // ['user_name', 'user_preferences', ...]

Storage Options​

Specify Storage Type​

// Use specific storage
await storage.set('session_data', data, {
storage: 'sessionStorage'
});

await storage.set('persistent_data', data, {
storage: 'localStorage'
});

await storage.set('large_data', data, {
storage: 'indexedDB'
});

Set Expiration​

// Data expires in 1 hour
await storage.set('temp_token', token, {
ttl: 3600000 // milliseconds
});

// Data expires at specific time
await storage.set('daily_cache', data, {
expireAt: new Date(Date.now() + 24 * 60 * 60 * 1000)
});

Working with Complex Data​

Objects and Arrays​

// Store complex objects
const user = {
id: 123,
name: 'John Doe',
email: 'john@example.com',
roles: ['user', 'admin'],
metadata: {
lastLogin: new Date(),
loginCount: 42
}
};

await storage.set('current_user', user);

// Retrieve and use
const savedUser = await storage.get('current_user');
console.log(savedUser.roles); // ['user', 'admin']

Binary Data​

// Store ArrayBuffer
const buffer = new ArrayBuffer(256);
await storage.set('binary_data', buffer);

// Store Blob
const blob = new Blob(['Hello World'], { type: 'text/plain' });
await storage.set('file_blob', blob);

// Store Uint8Array
const bytes = new Uint8Array([1, 2, 3, 4, 5]);
await storage.set('byte_array', bytes);

Error Handling​

try {
await storage.set('key', 'value');
} catch (error) {
if (error.code === 'QUOTA_EXCEEDED') {
console.error('Storage quota exceeded');
} else {
console.error('Storage error:', error);
}
}

// Safe get with default value
const value = await storage.get('maybe_missing') || 'default';

Batch Operations​

// Set multiple values
const items = {
'user:1': { name: 'Alice' },
'user:2': { name: 'Bob' },
'user:3': { name: 'Charlie' }
};

for (const [key, value] of Object.entries(items)) {
await storage.set(key, value);
}

// Get multiple values
const userIds = ['user:1', 'user:2', 'user:3'];
const users = [];

for (const id of userIds) {
const user = await storage.get(id);
if (user) users.push(user);
}

Namespace Support​

// Create namespaced storage
const userStorage = defineStorage({ namespace: 'users' });
const appStorage = defineStorage({ namespace: 'app' });

// Data is isolated
await userStorage.set('data', 'user data');
await appStorage.set('data', 'app data');

const userData = await userStorage.get('data'); // 'user data'
const appData = await appStorage.get('data'); // 'app data'

Platform Detection​

// Browser storage; native adapters need explicit registration
const storage = defineStorage();

// On web: prefers localStorage, then IndexedDB, sessionStorage and memory.
// On iOS/Android: register native adapters before selecting them.
// See the Capacitor platform guide for device setup.

await storage.set('cross_platform', 'Works everywhere!');

Next Steps​