Storage APIs (Vue)
These Vue composables provide integration with browser storage mechanisms and IndexedDB, allowing you to persist state and data in various storage backends.
Key-Value Storage APIs
These APIs provide access to IndexedDB-based key-value storage with reactive state management.
kvRef()
Provides access to a key-value storage backed by IndexedDB with reactive state management.
function kvRef<T extends Storable>(name: string, init: T): ConstantRef<KVState<T>>;
name
: A unique identifier for the storage entry.init
: The initial value to store if no existing value is found.- Returns: A constant ref of the KVState type. See ConstantRef<T> for more information.
Persistent Storage APIs
These APIs synchronize reactive state with the browser's localStorage
for data that persists across browser sessions.
persistentRef()
Creates a reactive state that automatically synchronizes with localStorage
. Changes to the state are persisted to localStorage
, and the state is initialized from localStorage
when the component mounts.
function persistentRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(
name: string,
init: T,
options?: StateOptions<S>
): ConstantRef<T>;
name
: A unique key for the storage instance.init
: The initial state, used if no data exists in local storage.options
(optional): Standard anchor state options.- Returns: A constant ref that is synced with
localStorage
. See ConstantRef<T> for more information.
Session Storage APIs
These APIs synchronize reactive state with the browser's sessionStorage
for data that persists only during a browser session.
sessionRef()
Creates a reactive state that automatically synchronizes with sessionStorage
. Changes to the state are persisted to sessionStorage
, and the state is initialized from sessionStorage
when the component mounts.
function sessionRef<T extends ObjLike, S extends LinkableSchema = LinkableSchema>(
name: string,
init: T,
options?: StateOptions<S>
): ConstantRef<T>;
name
: A unique key for the storage instance.init
: The initial state, used if no data exists in session storage.options
(optional): Standard anchor state options.- Returns: A constant ref that is synced with
sessionStorage
. See ConstantRef<T> for more information.
Table Storage APIs
These APIs provide access to IndexedDB-based table storage with reactive state management.
createTableRef()
Creates a table reference object that provides a set of methods to interact with a reactive table stored in IndexedDB.
// Create from existing table
function createTableRef<T extends ReactiveTable<Rec>>(table: T): TableRef<InferRec<T>>;
// Create new table
function createTableRef<T extends Rec, R extends Row<T> = Row<T>>(
name: string,
version?: number,
indexes?: (keyof R)[],
remIndexes?: (keyof R)[],
dbName?: string
): TableRef<T, R>;
table
: A ReactiveTable instance.name
: The name of the table to create.version
(optional): The version number for the table (default: 1).indexes
(optional): Array of keys to create indexes on.remIndexes
(optional): Array of keys to remove indexes from.dbName
(optional): Database name (defaults to the table name if not provided).- Returns: A TableRef object with methods to interact with the table. See TableRef<T> for more information.
TableRef
Methods
get()
Gets a specific row from the table by its ID.
function get(id: string): ConstantRef<RowState<R>>;
id
: The ID of the row to retrieve.- Returns: A constant ref containing the current row state.
add()
Adds a new row to the table.
function add(payload: T): ConstantRef<RowState<R>>;
payload
: The data to add as a new row.- Returns: A constant ref containing the row state of the newly added row.
remove()
Removes a row from the table by its ID.
function remove(id: string): ConstantRef<RowState<R>>;
id
: The ID of the row to remove.- Returns: A constant ref containing the row state of the removed row.
list()
Gets a list of rows from the table based on filter criteria.
function list(
filter?: IDBKeyRange | FilterFn<R>,
limit?: number,
direction?: IDBCursorDirection
): ConstantRef<RowListState<R>>;
filter
(optional): Filter criteria (IDBKeyRange or custom filter function).limit
(optional): Limit on the number of rows to retrieve.direction
(optional): Cursor direction for sorting (e.g., 'next', 'prev').- Returns: A constant ref containing the current list of rows.
listByIndex()
Gets a list of rows from the table based on an index and filter criteria.
function listByIndex(
name: keyof R,
filter?: IDBKeyRange | FilterFn<R>,
limit?: number,
direction?: IDBCursorDirection
): ConstantRef<RowListState<R>>;
name
: The name of the index to use for querying.filter
(optional): Filter criteria (IDBKeyRange or custom filter function).limit
(optional): Limit on the number of rows to retrieve.direction
(optional): Cursor direction for sorting (e.g., 'next', 'prev').- Returns: A constant ref containing the current list of rows.
seed()
Seeds the table with initial data.
function seed<T extends R[]>(seeds: T): this;
seeds
: Array of rows to seed the table with.- Returns: The TableRef instance for method chaining.
table()
Returns the underlying ReactiveTable instance.
function table(): ReactiveTable<T>;
- Returns: The underlying ReactiveTable instance.
Type References
TableRef<T, R>
interface TableRef<T extends Rec, R extends Row<T> = Row<T>> {
get(id: string): ConstantRef<RowState<R>>;
add(payload: T): ConstantRef<RowState<R>>;
remove(id: string): ConstantRef<RowState<R>>;
list(
filter?: IDBKeyRange | FilterFn<R>,
limit?: number,
direction?: IDBCursorDirection
): ConstantRef<RowListState<R>>;
listByIndex(
name: keyof R,
filter?: IDBKeyRange | FilterFn<R>,
limit?: number,
direction?: IDBCursorDirection
): ConstantRef<RowListState<R>>;
seed<T extends R[]>(seeds: T): this;
table(): ReactiveTable<T>;
}
An interface that provides methods to interact with a reactive table stored in IndexedDB.