3.0.4 • Published 4 months ago

@flexbase/store v3.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

store

Coverage Quality Gate Status

Installation

npm install @flexbase/store

or

yarn add @flexbase/store

Concepts

The concept behind the store is to separate state management from other application concerns. It is Promise based utilizing an Observer pattern.

Usage

Example data

interface SomeData {
  name: string;
  id: number;
}

Create a store

const someDataStore = createStore<SomeData>();

const someOtherStore = createStore<number>();

Create Store Options

// object style
const someDataStore = createStore<SomeData>({
        key?: symbol, // use the specified key to represent this store; otherwise Symbol() is used
        defaultValue?: <SomeData>, // use the specified value as the default value
        comparer?: StoreComparer<SomeData>, // use the specified comparer; otherwise defaultStoreComparer is used
        middleware?: StoreMiddleware<SomeData>[], // use the specified middleware(s)
        persistanceProvider?: PersistanceProvider<SomeData>, // use the specified persistance provider
        storageManager: StorageManager // use the specified storage manager; otherwise use the global manager
});

// fluent style
const someDataStore = createStore<SomeData>(options => {
    options
        .key(key: symbol | string) // use the specified key to represent this store; otherwise Symbol() is used
        .defaultValue(value: <SomeData>) // use the specified value as the default value
        .comparer(comparer: StoreComparer<SomeData>) // use the specified comparer; otherwise defaultStoreComparer is used
        .middleware(...middleware: StoreMiddleware<SomeData>[]) // use the specified middleware(s)
        .persistanceProvider(persistanceProvider: PersistanceProvider<SomeData>) // use the specified persistance provider
        .storageManager(storageManager: StorageManager) // use the specified storage manager; otherwise use the global manager
});

Get store value

const value = getStoreValue(someDataStore);

Set store value

await setStoreValue(someDataStore, { name: 'Test', id: 1 });

await setStoreValue(someOtherStore, 42);

Using a callback

await setStoreValue(someDataStore, _ => {name: 'Test', id: 1});

await setStoreValue(someOtherStore, _ => 42);

// do more in the callback
await setStoreValue(test, currentValue => (currentValue ? Math.min(42, currentValue) : 0));

Reset store value

let value: number;

const numberStore = createStore<number>({ defaultValue: 42 });

value = storageManager.getValue(numberStore); // value is 42

await storageManager.setValue(numberStore, 1);

value = storageManager.getValue(numberStore); // value is 1

await resetStoreValue(numberStore);

value = storageManager.getValue(numberStore); // value is 42

Get store setter

const setter = getStoreSetter(someDataStore);

await setter({ name: 'Test', id: 1 });

await setter(_ => {name: 'Test', id: 1});

Subscribe

const subscription = subscribeToStore(someDataStore, context => {...});

subscription.unsubscribe();

Persistance

TODO

Middleware

TODO

3.0.4

4 months ago

3.0.3

5 months ago

3.0.2

5 months ago

2.0.4-beta.8

11 months ago

2.0.5

11 months ago

3.0.1

11 months ago

3.0.0

11 months ago

2.0.3-beta.6

1 year ago

2.0.3-beta.4

1 year ago

1.2.2-beta.2

1 year ago

1.2.4-beta.3

1 year ago

1.2.4

1 year ago

1.2.3

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

2.0.3

1 year ago

2.0.2

1 year ago

2.0.4

1 year ago

1.2.0-beta.1

1 year ago

2.0.1

1 year ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

1.0.0-beta.3

2 years ago

0.0.1-beta.2

2 years ago

0.0.1-beta.1

2 years ago

0.0.1

2 years ago