API Reference

ObjectStorageclass

Default IObjectStorage implementation backed by IndexedDB.

When to use

Registered as a singleton service under RsXCoreInjectionTokens.IObjectStorage. It opens an IndexedDB database lazily on first use, then reuses the opened connection until close() is called. IndexedDB uses the structured-clone algorithm, so persisted values must be structured-clone compatible (for example, functions and DOM nodes are not supported).

Quick facts
Kind
class
Implements
IObjectStorage
Members
4
Package
@rs-x/core

Import

import { ObjectStorage } from '@rs-x/core';

Example

import {
  InjectionContainer,
  RsXCoreInjectionTokens,
  RsXCoreModule,
  type IObjectStorage,
} from '@rs-x/core';

await InjectionContainer.load(RsXCoreModule);

const objectStorage = InjectionContainer.get<IObjectStorage>(
  RsXCoreInjectionTokens.IObjectStorage,
);

await objectStorage.set('session', { token: 'abc123' });
const session = await objectStorage.get<{ token: string }>('session');
console.log(session?.token);

objectStorage.close();

Constructor injection example

import { Inject, RsXCoreInjectionTokens, type IObjectStorage } from '@rs-x/core';

class SessionStore {
  constructor(
    @Inject(RsXCoreInjectionTokens.IObjectStorage)
    private readonly storage: IObjectStorage,
  ) {}

  async saveToken(token: string): Promise<void> {
    await this.storage.set('session:token', token);
  }
}

Members

4 members in this class.

constructor
constructorpublic
constructor( @Inject(RsXCoreInjectionTokens.IDBFactory) private readonly _indexedDB: IDBFactory)

Parameters

Name
Type
Required
_indexedDB
IDBFactory
required
close
methodpublic
public close(): void

Parameters

No parameters.

Returns

void

get
methodpublic
public get<T>(key: string): Promise<T>

Parameters

Name
Type
Required
key
string
required

Returns

Promise<T>

set
methodpublic
public set<T>(
  key: string,
  value: T
): Promise<void>

Parameters

Name
Type
Required
key
string
required
value
T
required

Returns

Promise<void>