@tanstack/store 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/store.cjs +18 -1
- package/dist/cjs/store.cjs.map +1 -1
- package/dist/cjs/store.d.cts +9 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/store.d.ts +9 -1
- package/dist/esm/store.js +18 -1
- package/dist/esm/store.js.map +1 -1
- package/package.json +1 -1
- package/src/store.ts +31 -3
package/dist/cjs/index.cjs
CHANGED
|
@@ -7,6 +7,7 @@ exports.createAsyncAtom = atom.createAsyncAtom;
|
|
|
7
7
|
exports.createAtom = atom.createAtom;
|
|
8
8
|
exports.flush = atom.flush;
|
|
9
9
|
exports.toObserver = atom.toObserver;
|
|
10
|
+
exports.ReadonlyStore = store.ReadonlyStore;
|
|
10
11
|
exports.Store = store.Store;
|
|
11
12
|
exports.createStore = store.createStore;
|
|
12
13
|
exports.batch = batch.batch;
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
package/dist/cjs/store.cjs
CHANGED
|
@@ -20,12 +20,29 @@ class Store {
|
|
|
20
20
|
return this.atom.subscribe(atom.toObserver(observerOrFn));
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
+
class ReadonlyStore {
|
|
24
|
+
constructor(valueOrFn) {
|
|
25
|
+
this.atom = atom.createAtom(
|
|
26
|
+
valueOrFn
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
get state() {
|
|
30
|
+
return this.atom.get();
|
|
31
|
+
}
|
|
32
|
+
get() {
|
|
33
|
+
return this.state;
|
|
34
|
+
}
|
|
35
|
+
subscribe(observerOrFn) {
|
|
36
|
+
return this.atom.subscribe(atom.toObserver(observerOrFn));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
23
39
|
function createStore(valueOrFn) {
|
|
24
40
|
if (typeof valueOrFn === "function") {
|
|
25
|
-
return new
|
|
41
|
+
return new ReadonlyStore(valueOrFn);
|
|
26
42
|
}
|
|
27
43
|
return new Store(valueOrFn);
|
|
28
44
|
}
|
|
45
|
+
exports.ReadonlyStore = ReadonlyStore;
|
|
29
46
|
exports.Store = Store;
|
|
30
47
|
exports.createStore = createStore;
|
|
31
48
|
//# sourceMappingURL=store.cjs.map
|
package/dist/cjs/store.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.cjs","sources":["../../src/store.ts"],"sourcesContent":["import { createAtom, toObserver } from './atom'\nimport type { Atom, Observer, Subscription } from './types'\n\nexport class Store<T> {\n private atom: Atom<T>\n constructor(getValue: (prev?: NoInfer<T>) => T)\n constructor(initialValue: T)\n constructor(valueOrFn: T | ((prev?: T) => T)) {\n // createAtom has overloads that return ReadonlyAtom<T> for functions and Atom<T> for values\n // Store always needs Atom<T> for setState, so we assert the return type\n this.atom = createAtom(\n valueOrFn as T | ((prev?: NoInfer<T>) => T),\n ) as Atom<T>\n }\n public setState(updater: (prev: T) => T) {\n this.atom.set(updater)\n }\n public get state() {\n return this.atom.get()\n }\n public get() {\n return this.state\n }\n public subscribe(\n observerOrFn: Observer<T> | ((value: T) => void),\n ): Subscription {\n return this.atom.subscribe(toObserver(observerOrFn))\n }\n}\n\nexport function createStore<T>(getValue: (prev?: NoInfer<T>) => T):
|
|
1
|
+
{"version":3,"file":"store.cjs","sources":["../../src/store.ts"],"sourcesContent":["import { createAtom, toObserver } from './atom'\nimport type { Atom, Observer, Subscription } from './types'\n\nexport class Store<T> {\n private atom: Atom<T>\n constructor(getValue: (prev?: NoInfer<T>) => T)\n constructor(initialValue: T)\n constructor(valueOrFn: T | ((prev?: T) => T)) {\n // createAtom has overloads that return ReadonlyAtom<T> for functions and Atom<T> for values\n // Store always needs Atom<T> for setState, so we assert the return type\n this.atom = createAtom(\n valueOrFn as T | ((prev?: NoInfer<T>) => T),\n ) as Atom<T>\n }\n public setState(updater: (prev: T) => T) {\n this.atom.set(updater)\n }\n public get state() {\n return this.atom.get()\n }\n public get() {\n return this.state\n }\n public subscribe(\n observerOrFn: Observer<T> | ((value: T) => void),\n ): Subscription {\n return this.atom.subscribe(toObserver(observerOrFn))\n }\n}\n\nexport class ReadonlyStore<T> implements Omit<Store<T>, 'setState'> {\n private atom: Atom<T>\n constructor(getValue: (prev?: NoInfer<T>) => T)\n constructor(initialValue: T)\n constructor(valueOrFn: T | ((prev?: T) => T)) {\n // createAtom has overloads that return ReadonlyAtom<T> for functions and Atom<T> for values\n // Store always needs Atom<T> for setState, so we assert the return type\n this.atom = createAtom(\n valueOrFn as T | ((prev?: NoInfer<T>) => T),\n ) as Atom<T>\n }\n public get state() {\n return this.atom.get()\n }\n public get() {\n return this.state\n }\n public subscribe(\n observerOrFn: Observer<T> | ((value: T) => void),\n ): Subscription {\n return this.atom.subscribe(toObserver(observerOrFn))\n }\n}\n\nexport function createStore<T>(\n getValue: (prev?: NoInfer<T>) => T,\n): ReadonlyStore<T>\nexport function createStore<T>(initialValue: T): Store<T>\nexport function createStore<T>(\n valueOrFn: T | ((prev?: T) => T),\n): Store<T> | ReadonlyStore<T> {\n if (typeof valueOrFn === 'function') {\n return new ReadonlyStore(valueOrFn as (prev?: NoInfer<T>) => T)\n }\n return new Store(valueOrFn)\n}\n"],"names":["createAtom","toObserver"],"mappings":";;;AAGO,MAAM,MAAS;AAAA,EAIpB,YAAY,WAAkC;AAG5C,SAAK,OAAOA,KAAAA;AAAAA,MACV;AAAA,IAAA;AAAA,EAEJ;AAAA,EACO,SAAS,SAAyB;AACvC,SAAK,KAAK,IAAI,OAAO;AAAA,EACvB;AAAA,EACA,IAAW,QAAQ;AACjB,WAAO,KAAK,KAAK,IAAA;AAAA,EACnB;AAAA,EACO,MAAM;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACO,UACL,cACc;AACd,WAAO,KAAK,KAAK,UAAUC,KAAAA,WAAW,YAAY,CAAC;AAAA,EACrD;AACF;AAEO,MAAM,cAAuD;AAAA,EAIlE,YAAY,WAAkC;AAG5C,SAAK,OAAOD,KAAAA;AAAAA,MACV;AAAA,IAAA;AAAA,EAEJ;AAAA,EACA,IAAW,QAAQ;AACjB,WAAO,KAAK,KAAK,IAAA;AAAA,EACnB;AAAA,EACO,MAAM;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACO,UACL,cACc;AACd,WAAO,KAAK,KAAK,UAAUC,KAAAA,WAAW,YAAY,CAAC;AAAA,EACrD;AACF;AAMO,SAAS,YACd,WAC6B;AAC7B,MAAI,OAAO,cAAc,YAAY;AACnC,WAAO,IAAI,cAAc,SAAqC;AAAA,EAChE;AACA,SAAO,IAAI,MAAM,SAAS;AAC5B;;;;"}
|
package/dist/cjs/store.d.cts
CHANGED
|
@@ -8,5 +8,13 @@ export declare class Store<T> {
|
|
|
8
8
|
get(): T;
|
|
9
9
|
subscribe(observerOrFn: Observer<T> | ((value: T) => void)): Subscription;
|
|
10
10
|
}
|
|
11
|
-
export declare
|
|
11
|
+
export declare class ReadonlyStore<T> implements Omit<Store<T>, 'setState'> {
|
|
12
|
+
private atom;
|
|
13
|
+
constructor(getValue: (prev?: NoInfer<T>) => T);
|
|
14
|
+
constructor(initialValue: T);
|
|
15
|
+
get state(): T;
|
|
16
|
+
get(): T;
|
|
17
|
+
subscribe(observerOrFn: Observer<T> | ((value: T) => void)): Subscription;
|
|
18
|
+
}
|
|
19
|
+
export declare function createStore<T>(getValue: (prev?: NoInfer<T>) => T): ReadonlyStore<T>;
|
|
12
20
|
export declare function createStore<T>(initialValue: T): Store<T>;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createAsyncAtom, createAtom, flush, toObserver } from "./atom.js";
|
|
2
|
-
import { Store, createStore } from "./store.js";
|
|
2
|
+
import { ReadonlyStore, Store, createStore } from "./store.js";
|
|
3
3
|
import { batch } from "./batch.js";
|
|
4
4
|
export {
|
|
5
|
+
ReadonlyStore,
|
|
5
6
|
Store,
|
|
6
7
|
batch,
|
|
7
8
|
createAsyncAtom,
|
package/dist/esm/store.d.ts
CHANGED
|
@@ -8,5 +8,13 @@ export declare class Store<T> {
|
|
|
8
8
|
get(): T;
|
|
9
9
|
subscribe(observerOrFn: Observer<T> | ((value: T) => void)): Subscription;
|
|
10
10
|
}
|
|
11
|
-
export declare
|
|
11
|
+
export declare class ReadonlyStore<T> implements Omit<Store<T>, 'setState'> {
|
|
12
|
+
private atom;
|
|
13
|
+
constructor(getValue: (prev?: NoInfer<T>) => T);
|
|
14
|
+
constructor(initialValue: T);
|
|
15
|
+
get state(): T;
|
|
16
|
+
get(): T;
|
|
17
|
+
subscribe(observerOrFn: Observer<T> | ((value: T) => void)): Subscription;
|
|
18
|
+
}
|
|
19
|
+
export declare function createStore<T>(getValue: (prev?: NoInfer<T>) => T): ReadonlyStore<T>;
|
|
12
20
|
export declare function createStore<T>(initialValue: T): Store<T>;
|
package/dist/esm/store.js
CHANGED
|
@@ -18,13 +18,30 @@ class Store {
|
|
|
18
18
|
return this.atom.subscribe(toObserver(observerOrFn));
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
class ReadonlyStore {
|
|
22
|
+
constructor(valueOrFn) {
|
|
23
|
+
this.atom = createAtom(
|
|
24
|
+
valueOrFn
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
get state() {
|
|
28
|
+
return this.atom.get();
|
|
29
|
+
}
|
|
30
|
+
get() {
|
|
31
|
+
return this.state;
|
|
32
|
+
}
|
|
33
|
+
subscribe(observerOrFn) {
|
|
34
|
+
return this.atom.subscribe(toObserver(observerOrFn));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
21
37
|
function createStore(valueOrFn) {
|
|
22
38
|
if (typeof valueOrFn === "function") {
|
|
23
|
-
return new
|
|
39
|
+
return new ReadonlyStore(valueOrFn);
|
|
24
40
|
}
|
|
25
41
|
return new Store(valueOrFn);
|
|
26
42
|
}
|
|
27
43
|
export {
|
|
44
|
+
ReadonlyStore,
|
|
28
45
|
Store,
|
|
29
46
|
createStore
|
|
30
47
|
};
|
package/dist/esm/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sources":["../../src/store.ts"],"sourcesContent":["import { createAtom, toObserver } from './atom'\nimport type { Atom, Observer, Subscription } from './types'\n\nexport class Store<T> {\n private atom: Atom<T>\n constructor(getValue: (prev?: NoInfer<T>) => T)\n constructor(initialValue: T)\n constructor(valueOrFn: T | ((prev?: T) => T)) {\n // createAtom has overloads that return ReadonlyAtom<T> for functions and Atom<T> for values\n // Store always needs Atom<T> for setState, so we assert the return type\n this.atom = createAtom(\n valueOrFn as T | ((prev?: NoInfer<T>) => T),\n ) as Atom<T>\n }\n public setState(updater: (prev: T) => T) {\n this.atom.set(updater)\n }\n public get state() {\n return this.atom.get()\n }\n public get() {\n return this.state\n }\n public subscribe(\n observerOrFn: Observer<T> | ((value: T) => void),\n ): Subscription {\n return this.atom.subscribe(toObserver(observerOrFn))\n }\n}\n\nexport function createStore<T>(getValue: (prev?: NoInfer<T>) => T):
|
|
1
|
+
{"version":3,"file":"store.js","sources":["../../src/store.ts"],"sourcesContent":["import { createAtom, toObserver } from './atom'\nimport type { Atom, Observer, Subscription } from './types'\n\nexport class Store<T> {\n private atom: Atom<T>\n constructor(getValue: (prev?: NoInfer<T>) => T)\n constructor(initialValue: T)\n constructor(valueOrFn: T | ((prev?: T) => T)) {\n // createAtom has overloads that return ReadonlyAtom<T> for functions and Atom<T> for values\n // Store always needs Atom<T> for setState, so we assert the return type\n this.atom = createAtom(\n valueOrFn as T | ((prev?: NoInfer<T>) => T),\n ) as Atom<T>\n }\n public setState(updater: (prev: T) => T) {\n this.atom.set(updater)\n }\n public get state() {\n return this.atom.get()\n }\n public get() {\n return this.state\n }\n public subscribe(\n observerOrFn: Observer<T> | ((value: T) => void),\n ): Subscription {\n return this.atom.subscribe(toObserver(observerOrFn))\n }\n}\n\nexport class ReadonlyStore<T> implements Omit<Store<T>, 'setState'> {\n private atom: Atom<T>\n constructor(getValue: (prev?: NoInfer<T>) => T)\n constructor(initialValue: T)\n constructor(valueOrFn: T | ((prev?: T) => T)) {\n // createAtom has overloads that return ReadonlyAtom<T> for functions and Atom<T> for values\n // Store always needs Atom<T> for setState, so we assert the return type\n this.atom = createAtom(\n valueOrFn as T | ((prev?: NoInfer<T>) => T),\n ) as Atom<T>\n }\n public get state() {\n return this.atom.get()\n }\n public get() {\n return this.state\n }\n public subscribe(\n observerOrFn: Observer<T> | ((value: T) => void),\n ): Subscription {\n return this.atom.subscribe(toObserver(observerOrFn))\n }\n}\n\nexport function createStore<T>(\n getValue: (prev?: NoInfer<T>) => T,\n): ReadonlyStore<T>\nexport function createStore<T>(initialValue: T): Store<T>\nexport function createStore<T>(\n valueOrFn: T | ((prev?: T) => T),\n): Store<T> | ReadonlyStore<T> {\n if (typeof valueOrFn === 'function') {\n return new ReadonlyStore(valueOrFn as (prev?: NoInfer<T>) => T)\n }\n return new Store(valueOrFn)\n}\n"],"names":[],"mappings":";AAGO,MAAM,MAAS;AAAA,EAIpB,YAAY,WAAkC;AAG5C,SAAK,OAAO;AAAA,MACV;AAAA,IAAA;AAAA,EAEJ;AAAA,EACO,SAAS,SAAyB;AACvC,SAAK,KAAK,IAAI,OAAO;AAAA,EACvB;AAAA,EACA,IAAW,QAAQ;AACjB,WAAO,KAAK,KAAK,IAAA;AAAA,EACnB;AAAA,EACO,MAAM;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACO,UACL,cACc;AACd,WAAO,KAAK,KAAK,UAAU,WAAW,YAAY,CAAC;AAAA,EACrD;AACF;AAEO,MAAM,cAAuD;AAAA,EAIlE,YAAY,WAAkC;AAG5C,SAAK,OAAO;AAAA,MACV;AAAA,IAAA;AAAA,EAEJ;AAAA,EACA,IAAW,QAAQ;AACjB,WAAO,KAAK,KAAK,IAAA;AAAA,EACnB;AAAA,EACO,MAAM;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EACO,UACL,cACc;AACd,WAAO,KAAK,KAAK,UAAU,WAAW,YAAY,CAAC;AAAA,EACrD;AACF;AAMO,SAAS,YACd,WAC6B;AAC7B,MAAI,OAAO,cAAc,YAAY;AACnC,WAAO,IAAI,cAAc,SAAqC;AAAA,EAChE;AACA,SAAO,IAAI,MAAM,SAAS;AAC5B;"}
|
package/package.json
CHANGED
package/src/store.ts
CHANGED
|
@@ -28,11 +28,39 @@ export class Store<T> {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export
|
|
31
|
+
export class ReadonlyStore<T> implements Omit<Store<T>, 'setState'> {
|
|
32
|
+
private atom: Atom<T>
|
|
33
|
+
constructor(getValue: (prev?: NoInfer<T>) => T)
|
|
34
|
+
constructor(initialValue: T)
|
|
35
|
+
constructor(valueOrFn: T | ((prev?: T) => T)) {
|
|
36
|
+
// createAtom has overloads that return ReadonlyAtom<T> for functions and Atom<T> for values
|
|
37
|
+
// Store always needs Atom<T> for setState, so we assert the return type
|
|
38
|
+
this.atom = createAtom(
|
|
39
|
+
valueOrFn as T | ((prev?: NoInfer<T>) => T),
|
|
40
|
+
) as Atom<T>
|
|
41
|
+
}
|
|
42
|
+
public get state() {
|
|
43
|
+
return this.atom.get()
|
|
44
|
+
}
|
|
45
|
+
public get() {
|
|
46
|
+
return this.state
|
|
47
|
+
}
|
|
48
|
+
public subscribe(
|
|
49
|
+
observerOrFn: Observer<T> | ((value: T) => void),
|
|
50
|
+
): Subscription {
|
|
51
|
+
return this.atom.subscribe(toObserver(observerOrFn))
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function createStore<T>(
|
|
56
|
+
getValue: (prev?: NoInfer<T>) => T,
|
|
57
|
+
): ReadonlyStore<T>
|
|
32
58
|
export function createStore<T>(initialValue: T): Store<T>
|
|
33
|
-
export function createStore<T>(
|
|
59
|
+
export function createStore<T>(
|
|
60
|
+
valueOrFn: T | ((prev?: T) => T),
|
|
61
|
+
): Store<T> | ReadonlyStore<T> {
|
|
34
62
|
if (typeof valueOrFn === 'function') {
|
|
35
|
-
return new
|
|
63
|
+
return new ReadonlyStore(valueOrFn as (prev?: NoInfer<T>) => T)
|
|
36
64
|
}
|
|
37
65
|
return new Store(valueOrFn)
|
|
38
66
|
}
|