@livequery/react 2.0.141 → 2.0.143
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollection.d.ts","sourceRoot":"","sources":["../src/useCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,GAAG,EAAE,KAAK,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAMlG,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,GAAG,EAAE,KAAK,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,EAAE,UAAS,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAM,
|
|
1
|
+
{"version":3,"file":"useCollection.d.ts","sourceRoot":"","sources":["../src/useCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,GAAG,EAAE,KAAK,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAMlG,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,GAAG,EAAE,KAAK,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,EAAE,UAAS,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAM,2BAkB7I,CAAA"}
|
package/dist/useCollection.js
CHANGED
|
@@ -3,17 +3,22 @@ import { useMemo, useEffect } from "react";
|
|
|
3
3
|
import { useLivequeryClient } from "./LivequeryClientContext.js";
|
|
4
4
|
export const useCollection = (ref, options = {}) => {
|
|
5
5
|
const client = useLivequeryClient();
|
|
6
|
-
// Recreate the collection whenever the ref
|
|
7
|
-
//
|
|
8
|
-
|
|
6
|
+
// Recreate the collection whenever the ref changes so each ref gets a fresh, fully-reset
|
|
7
|
+
// instance. The client is stable (provided once via context), so it is intentionally NOT a
|
|
8
|
+
// dependency — keying on it would rebuild the collection on every render if a caller ever
|
|
9
|
+
// passed an unstable client.
|
|
10
|
+
const collection = useMemo(() => new LivequeryCollection(client, options), [ref]);
|
|
11
|
+
console.log({ ref });
|
|
9
12
|
useEffect(() => {
|
|
10
|
-
|
|
13
|
+
console.log({ ref });
|
|
14
|
+
if (!client || !ref)
|
|
11
15
|
return;
|
|
16
|
+
console.log(`Initializing collection for ref: ${ref}`);
|
|
12
17
|
const linker = collection.initialize(ref);
|
|
13
18
|
return () => {
|
|
14
19
|
linker?.unsubscribe();
|
|
15
20
|
};
|
|
16
|
-
}, [collection
|
|
21
|
+
}, [collection]);
|
|
17
22
|
return collection;
|
|
18
23
|
};
|
|
19
24
|
//# sourceMappingURL=useCollection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollection.js","sourceRoot":"","sources":["../src/useCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA6C,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAIhE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAgB,GAA2C,EAAE,UAAkD,EAAE,EAAE,EAAE;IAC9I,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAA;IACnC,
|
|
1
|
+
{"version":3,"file":"useCollection.js","sourceRoot":"","sources":["../src/useCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA6C,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAIhE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAgB,GAA2C,EAAE,UAAkD,EAAE,EAAE,EAAE;IAC9I,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAA;IACnC,yFAAyF;IACzF,2FAA2F;IAC3F,0FAA0F;IAC1F,6BAA6B;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAI,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,EAAC,GAAG,EAAC,CAAC,CAAA;IAClB,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,EAAC,GAAG,EAAC,CAAC,CAAA;QAClB,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG;YAAE,OAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACzC,OAAO,GAAG,EAAE;YACR,MAAM,EAAE,WAAW,EAAE,CAAA;QACzB,CAAC,CAAA;IACL,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAChB,OAAO,UAAU,CAAA;AACrB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObservable.d.ts","sourceRoot":"","sources":["../src/useObservable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAO,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"useObservable.d.ts","sourceRoot":"","sources":["../src/useObservable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAO,MAAM,MAAM,CAAC;AAExD,KAAK,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;AACnD,KAAK,gBAAgB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;AAChD,KAAK,OAAO,CAAC,CAAC,IAAI,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAC3C,KAAK,KAAK,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAiBhD,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAC1D,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAC5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CAAA"}
|
package/dist/useObservable.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { Observable, BehaviorSubject, tap } from "rxjs";
|
|
3
|
-
import { skip } from "rxjs/operators";
|
|
4
3
|
// A value is "observable-like" if it exposes pipe/subscribe — this is what lets us tell a
|
|
5
4
|
// real source (including the @livequery/rpc callable Proxy, which is a function that ALSO
|
|
6
5
|
// exposes pipe/subscribe/getValue) apart from a plain lazy factory `() => source`.
|
|
@@ -23,15 +22,16 @@ export function useObservable(o, default_value) {
|
|
|
23
22
|
if (isFactory && !resolved.current)
|
|
24
23
|
resolved.current = { source: o() };
|
|
25
24
|
const source = isFactory ? resolved.current.source : o;
|
|
26
|
-
const prev = useRef(source);
|
|
27
25
|
const withDefault = (value) => value ?? default_value;
|
|
28
26
|
const [v, s] = useState(() => withDefault(isBehaviorSubject(source) ? source.getValue() : default_value));
|
|
29
27
|
useEffect(() => {
|
|
30
|
-
const diff = prev.current !== source;
|
|
31
|
-
prev.current = source;
|
|
32
28
|
if (!hasPipe(source))
|
|
33
29
|
return;
|
|
34
|
-
|
|
30
|
+
// No skip(): a real BehaviorSubject replays its current value synchronously on subscribe
|
|
31
|
+
// (a no-op setState equal to the seed → React bails, no extra render), while an async
|
|
32
|
+
// source (e.g. the @livequery/rpc proxy via shareReplay) delivers its FIRST real value
|
|
33
|
+
// here — which must NOT be skipped.
|
|
34
|
+
const subscription = source.pipe(tap((value) => s(withDefault(value)))).subscribe();
|
|
35
35
|
return () => {
|
|
36
36
|
subscription.unsubscribe();
|
|
37
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObservable.js","sourceRoot":"","sources":["../src/useObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"useObservable.js","sourceRoot":"","sources":["../src/useObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAOxD,0FAA0F;AAC1F,0FAA0F;AAC1F,mFAAmF;AACnF,MAAM,gBAAgB,GAAG,CAAC,CAAU,EAAoB,EAAE,CACtD,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU,CAAC;OACtD,CAAC,OAAQ,CAAS,CAAC,IAAI,KAAK,UAAU,IAAI,OAAQ,CAAS,CAAC,SAAS,KAAK,UAAU,CAAC,CAAA;AAE5F,MAAM,iBAAiB,GAAG,CAAI,MAAe,EAAgC,EAAE;IAC3E,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,OAAQ,MAAc,CAAC,QAAQ,KAAK,UAAU,CAAA;AACrF,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAI,MAAe,EAAuB,EAAE;IACxD,OAAO,OAAQ,MAA6C,EAAE,IAAI,KAAK,UAAU,CAAA;AACrF,CAAC,CAAA;AAMD,0FAA0F;AAC1F,8FAA8F;AAC9F,+FAA+F;AAC/F,qFAAqF;AACrF,oCAAoC;AACpC,MAAM,UAAU,aAAa,CAAI,CAAW,EAAE,aAAiB;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAyC,IAAI,CAAC,CAAA;IACrE,IAAI,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,EAAE,MAAM,EAAG,CAAgB,EAAE,EAAE,CAAA;IACtF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAyB,CAAA;IAEhF,MAAM,WAAW,GAAG,CAAC,KAA2B,EAAiB,EAAE,CAC/D,KAAK,IAAI,aAAa,CAAA;IAC1B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAgB,GAAG,EAAE,CACxC,WAAW,CAAC,iBAAiB,CAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAChF,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAM;QAE5B,yFAAyF;QACzF,sFAAsF;QACtF,uFAAuF;QACvF,oCAAoC;QACpC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAA6B,CAAC,CAAC,CAAC,CAChE,CAAC,SAAS,EAAE,CAAA;QACb,OAAO,GAAG,EAAE;YACR,YAAY,CAAC,WAAW,EAAE,CAAA;QAC9B,CAAC,CAAA;IACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,CAAC,CAAA;AACZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"url": "https://github.com/livequery/react"
|
|
5
5
|
},
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "2.0.
|
|
7
|
+
"version": "2.0.143",
|
|
8
8
|
"description": "",
|
|
9
9
|
"main": "./dist/index.js",
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"dist/**/*"
|
|
50
50
|
],
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@livequery/client": "^2.0.
|
|
52
|
+
"@livequery/client": "^2.0.143",
|
|
53
53
|
"@types/bun": "^1.3.14",
|
|
54
54
|
"@types/react": "^19.2.14",
|
|
55
55
|
"@types/react-test-renderer": "^19.1.0",
|
|
56
56
|
"react-test-renderer": "^19.2.6"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@livequery/client": "^2.0.
|
|
59
|
+
"@livequery/client": "^2.0.143",
|
|
60
60
|
"react": "^19.2.5",
|
|
61
61
|
"rxjs": "^7.8.2"
|
|
62
62
|
},
|