UNPKG

@tanstack/store

Version:

Framework agnostic type-safe store w/ reactive framework adapters

47 lines (45 loc) 1.13 kB
import { createAtom, toObserver } from "./atom.js"; //#region src/store.ts var Store = class { constructor(valueOrFn, actionsFactory) { this.atom = createAtom(valueOrFn); this.get = this.get.bind(this); this.setState = this.setState.bind(this); this.subscribe = this.subscribe.bind(this); if (actionsFactory) this.actions = actionsFactory(this); } setState(updater) { this.atom.set(updater); } get state() { return this.atom.get(); } get() { return this.state; } subscribe(observerOrFn) { return this.atom.subscribe(toObserver(observerOrFn)); } }; var ReadonlyStore = class { constructor(valueOrFn) { this.atom = createAtom(valueOrFn); } get state() { return this.atom.get(); } get() { return this.state; } subscribe(observerOrFn) { return this.atom.subscribe(toObserver(observerOrFn)); } }; function createStore(valueOrFn, actions) { if (typeof valueOrFn === "function") return new ReadonlyStore(valueOrFn); if (actions) return new Store(valueOrFn, actions); return new Store(valueOrFn); } //#endregion export { ReadonlyStore, Store, createStore }; //# sourceMappingURL=store.js.map