@peerbit/react 0.0.33 → 0.0.34

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.
Files changed (71) hide show
  1. package/dist/src/index.d.ts +5 -0
  2. package/dist/src/index.d.ts.map +1 -0
  3. package/dist/src/index.js +5 -0
  4. package/dist/src/index.js.map +1 -0
  5. package/{lib/esm → dist/src}/lockstorage.d.ts +1 -0
  6. package/dist/src/lockstorage.d.ts.map +1 -0
  7. package/{lib/esm → dist/src}/lockstorage.js +2 -5
  8. package/dist/src/lockstorage.js.map +1 -0
  9. package/{lib/esm → dist/src}/useMount.d.ts +1 -0
  10. package/dist/src/useMount.d.ts.map +1 -0
  11. package/dist/src/useMount.js.map +1 -0
  12. package/{lib/esm → dist/src}/usePeer.d.ts +7 -3
  13. package/dist/src/usePeer.d.ts.map +1 -0
  14. package/{lib/esm → dist/src}/usePeer.js +25 -20
  15. package/dist/src/usePeer.js.map +1 -0
  16. package/{lib/esm → dist/src}/utils.d.ts +2 -4
  17. package/dist/src/utils.d.ts.map +1 -0
  18. package/{lib/esm → dist/src}/utils.js +17 -69
  19. package/dist/src/utils.js.map +1 -0
  20. package/package.json +59 -56
  21. package/src/index.ts +4 -14
  22. package/src/lockstorage.ts +224 -233
  23. package/src/useMount.ts +15 -0
  24. package/src/usePeer.tsx +406 -419
  25. package/src/utils.ts +99 -168
  26. package/README.md +0 -24
  27. package/lib/esm/__tests__/lockstorage.test.d.ts +0 -1
  28. package/lib/esm/__tests__/lockstorage.test.js +0 -237
  29. package/lib/esm/__tests__/lockstorage.test.js.map +0 -1
  30. package/lib/esm/__tests__/singletonLock.test.d.ts +0 -1
  31. package/lib/esm/__tests__/singletonLock.test.js +0 -71
  32. package/lib/esm/__tests__/singletonLock.test.js.map +0 -1
  33. package/lib/esm/__tests__/useQuery.dom.test.d.ts +0 -1
  34. package/lib/esm/__tests__/useQuery.dom.test.js +0 -433
  35. package/lib/esm/__tests__/useQuery.dom.test.js.map +0 -1
  36. package/lib/esm/__tests__/utils.test.d.ts +0 -1
  37. package/lib/esm/__tests__/utils.test.js +0 -66
  38. package/lib/esm/__tests__/utils.test.js.map +0 -1
  39. package/lib/esm/index.d.ts +0 -8
  40. package/lib/esm/index.js +0 -9
  41. package/lib/esm/index.js.map +0 -1
  42. package/lib/esm/lockstorage.js.map +0 -1
  43. package/lib/esm/useCount.d.ts +0 -11
  44. package/lib/esm/useCount.js +0 -43
  45. package/lib/esm/useCount.js.map +0 -1
  46. package/lib/esm/useLocal.d.ts +0 -20
  47. package/lib/esm/useLocal.js +0 -73
  48. package/lib/esm/useLocal.js.map +0 -1
  49. package/lib/esm/useMount.js.map +0 -1
  50. package/lib/esm/useOnline.d.ts +0 -11
  51. package/lib/esm/useOnline.js +0 -65
  52. package/lib/esm/useOnline.js.map +0 -1
  53. package/lib/esm/usePeer.js.map +0 -1
  54. package/lib/esm/useProgram.d.ts +0 -16
  55. package/lib/esm/useProgram.js +0 -114
  56. package/lib/esm/useProgram.js.map +0 -1
  57. package/lib/esm/useQuery.d.ts +0 -49
  58. package/lib/esm/useQuery.js +0 -418
  59. package/lib/esm/useQuery.js.map +0 -1
  60. package/lib/esm/utils.js.map +0 -1
  61. package/src/__tests__/lockstorage.test.ts +0 -285
  62. package/src/__tests__/singletonLock.test.ts +0 -85
  63. package/src/__tests__/useQuery.dom.test.ts +0 -518
  64. package/src/__tests__/utils.test.ts +0 -90
  65. package/src/useCount.tsx +0 -63
  66. package/src/useLocal.tsx +0 -125
  67. package/src/useMount.tsx +0 -15
  68. package/src/useOnline.tsx +0 -85
  69. package/src/useProgram.tsx +0 -148
  70. package/src/useQuery.tsx +0 -548
  71. /package/{lib/esm → dist/src}/useMount.js +0 -0
@@ -1,418 +0,0 @@
1
- import { useState, useEffect, useRef, useMemo } from "react";
2
- import { ClosedError, } from "@peerbit/document";
3
- import { v4 as uuid } from "uuid";
4
- /* ────────────────────────── Main Hook ────────────────────────── */
5
- /**
6
- * `useQuery` – unified hook that accepts **either**
7
- * 1. a single `Documents` instance
8
- * 2. an array of `Documents` instances
9
- * 3. *or* omits the first argument and provides `dbs` inside the `options` object.
10
- *
11
- * It supersedes the original single-DB version as well as the experimental
12
- * `useMultiQuery` so callers never have to choose between two APIs.
13
- */
14
- export const useQuery = (
15
- /** Single DB or list of DBs. 100 % backward-compatible with the old single param. */
16
- dbOrDbs, options) => {
17
- /* ────────────── normalise DBs input ────────────── */
18
- const dbs = useMemo(() => {
19
- if (Array.isArray(dbOrDbs))
20
- return dbOrDbs;
21
- if (dbOrDbs)
22
- return [dbOrDbs];
23
- return [];
24
- }, [dbOrDbs]);
25
- /* ────────────── state & refs ────────────── */
26
- const [all, setAll] = useState([]);
27
- const allRef = useRef([]);
28
- const [isLoading, setIsLoading] = useState(false);
29
- const iteratorRefs = useRef([]);
30
- const itemIdRef = useRef(new WeakMap());
31
- const emptyResultsRef = useRef(false);
32
- const closeControllerRef = useRef(null);
33
- const waitedOnceRef = useRef(false);
34
- /* keep an id mostly for debugging – mirrors original behaviour */
35
- const [id, setId] = useState(options.id);
36
- const reverseRef = useRef(options.reverse);
37
- useEffect(() => {
38
- reverseRef.current = options.reverse;
39
- }, [options.reverse]);
40
- /* ────────────── utilities ────────────── */
41
- const log = (...a) => {
42
- if (!options.debug)
43
- return;
44
- if (typeof options.debug === "boolean")
45
- console.log(...a);
46
- else
47
- console.log(options.debug, ...a);
48
- };
49
- const updateAll = (combined) => {
50
- allRef.current = combined;
51
- setAll(combined);
52
- };
53
- const reset = () => {
54
- iteratorRefs.current?.forEach(({ iterator }) => iterator.close());
55
- iteratorRefs.current = [];
56
- closeControllerRef.current?.abort(new Error("Reset"));
57
- closeControllerRef.current = new AbortController();
58
- emptyResultsRef.current = false;
59
- waitedOnceRef.current = false;
60
- allRef.current = [];
61
- itemIdRef.current = new WeakMap();
62
- setAll([]);
63
- setIsLoading(false);
64
- log("Iterators reset");
65
- };
66
- /* ────────── rebuild iterators when db list / query etc. change ────────── */
67
- useEffect(() => {
68
- /* derive canonical list of open DBs */
69
- const openDbs = dbs.filter((d) => Boolean(d && !d.closed));
70
- const { query, resolve } = options;
71
- if (!openDbs.length || query == null) {
72
- reset();
73
- return;
74
- }
75
- reset();
76
- const abortSignal = closeControllerRef.current?.signal;
77
- const onMissedResults = (evt) => {
78
- console.error("Not effective yet: missed results", evt);
79
- /* if (allRef.current.length > 0 || typeof options.remote !== "object" || !options.updates) {
80
- return;
81
- }
82
- console.log("Missed results, loading more", evt.amount);
83
- loadMore(evt.amount); */
84
- };
85
- let draining = false;
86
- const scheduleDrain = (ref, amount) => {
87
- log("Schedule drain", draining, ref, amount);
88
- if (draining)
89
- return;
90
- draining = true;
91
- loadMore(amount)
92
- .catch((e) => {
93
- if (!(e instanceof ClosedError))
94
- throw e;
95
- })
96
- .finally(() => {
97
- draining = false;
98
- });
99
- };
100
- iteratorRefs.current = openDbs.map((db) => {
101
- let currentRef;
102
- const iterator = db.index.iterate(query ?? {}, {
103
- closePolicy: "manual",
104
- local: options.local ?? true,
105
- remote: options.remote
106
- ? {
107
- ...(typeof options?.remote === "object"
108
- ? {
109
- ...options.remote,
110
- onLateResults: onMissedResults,
111
- wait: {
112
- ...options?.remote?.wait,
113
- timeout: options?.remote?.wait?.timeout ??
114
- 5000,
115
- },
116
- }
117
- : options?.remote
118
- ? {
119
- onLateResults: onMissedResults,
120
- }
121
- : undefined),
122
- }
123
- : undefined,
124
- resolve,
125
- signal: abortSignal,
126
- updates: {
127
- push: true,
128
- merge: typeof options.updates === "boolean" && options.updates
129
- ? true
130
- : typeof options.updates === "object" &&
131
- options.updates.merge
132
- ? true
133
- : false,
134
- onChange: (evt) => {
135
- log("Live update", evt);
136
- if (evt.added.length > 0) {
137
- scheduleDrain(iterator, evt.added.length);
138
- }
139
- },
140
- onResults: (batch, props) => {
141
- log("onResults", { batch, props, currentRef: !!currentRef });
142
- if (props.reason === "join" ||
143
- props.reason === "change") {
144
- if (!currentRef)
145
- return;
146
- handleBatch(iteratorRefs.current, [
147
- { ref: currentRef, items: batch },
148
- ]);
149
- }
150
- },
151
- },
152
- });
153
- const ref = {
154
- id: uuid(),
155
- db,
156
- iterator,
157
- itemsConsumed: 0,
158
- };
159
- currentRef = ref;
160
- log("Iterator init", ref.id, "db", db.address);
161
- return ref;
162
- });
163
- /* store a deterministic id (useful for external keys) */
164
- setId(uuid());
165
- /* prefetch if requested */
166
- if (options.prefetch)
167
- void loadMore();
168
- // eslint-disable-next-line react-hooks/exhaustive-deps
169
- }, [
170
- dbs.map((d) => d?.address).join("|"),
171
- options.query,
172
- options.resolve,
173
- options.reverse,
174
- ]);
175
- /* ────────────── loadMore implementation ────────────── */
176
- const batchSize = options.batchSize ?? 10;
177
- const shouldWait = () => {
178
- if (waitedOnceRef.current)
179
- return false;
180
- if (options.remote === false)
181
- return false;
182
- return true; // mimic original behaviour – wait once if remote allowed
183
- };
184
- const markWaited = () => {
185
- waitedOnceRef.current = true;
186
- };
187
- /* helper to turn primitive ids into stable map keys */
188
- const idToKey = (value) => {
189
- switch (typeof value) {
190
- case "string":
191
- return `s:${value}`;
192
- case "number":
193
- return `n:${value}`;
194
- default:
195
- return `b:${value.toString()}`;
196
- }
197
- };
198
- const handleBatch = async (iterators, batches) => {
199
- if (!iterators.length) {
200
- log("No iterators in handleBatch");
201
- return false;
202
- }
203
- const totalFetched = batches.reduce((sum, batch) => sum + batch.items.length, 0);
204
- if (totalFetched === 0) {
205
- log("No items fetched");
206
- emptyResultsRef.current = iterators.every((i) => i.iterator.done());
207
- return !emptyResultsRef.current;
208
- }
209
- let processed = batches;
210
- if (options.transform) {
211
- const transform = options.transform;
212
- processed = await Promise.all(batches.map(async ({ ref, items }) => ({
213
- ref,
214
- items: await Promise.all(items.map(transform)),
215
- })));
216
- }
217
- const prev = allRef.current;
218
- const next = [...prev];
219
- const keyIndex = new Map();
220
- prev.forEach((item, idx) => {
221
- const key = itemIdRef.current.get(item);
222
- if (key)
223
- keyIndex.set(key, idx);
224
- });
225
- const seenHeads = new Set(prev.map((x) => x.__context?.head));
226
- const freshItems = [];
227
- let hasMutations = false;
228
- log("Processing batches", { processed, keyIndex });
229
- for (const { ref, items } of processed) {
230
- const db = ref.db;
231
- for (const item of items) {
232
- const ctx = item.__context;
233
- const head = ctx?.head;
234
- let key = null;
235
- try {
236
- key = idToKey(db.index.resolveId(item).primitive);
237
- }
238
- catch (error) {
239
- log("useQuery: failed to resolve id", error);
240
- }
241
- if (key && keyIndex.has(key)) {
242
- const existingIndex = keyIndex.get(key);
243
- const current = next[existingIndex];
244
- const currentContext = current?.__context;
245
- const incomingContext = ctx;
246
- const shouldReplace = !currentContext ||
247
- !incomingContext ||
248
- currentContext.modified <= incomingContext.modified;
249
- if (shouldReplace && current !== item) {
250
- itemIdRef.current.delete(current);
251
- next[existingIndex] = item;
252
- hasMutations = true;
253
- }
254
- if (key) {
255
- itemIdRef.current.set(item, key);
256
- keyIndex.set(key, existingIndex);
257
- }
258
- if (head != null)
259
- seenHeads.add(head);
260
- continue;
261
- }
262
- if (head != null && seenHeads.has(head))
263
- continue;
264
- if (head != null)
265
- seenHeads.add(head);
266
- freshItems.push(item);
267
- if (key) {
268
- itemIdRef.current.set(item, key);
269
- keyIndex.set(key, prev.length + freshItems.length - 1);
270
- }
271
- }
272
- }
273
- if (!freshItems.length && !hasMutations) {
274
- emptyResultsRef.current = iterators.every((i) => i.iterator.done());
275
- log("No new items or mutations");
276
- return !emptyResultsRef.current;
277
- }
278
- const combined = reverseRef.current
279
- ? [...freshItems.reverse(), ...next]
280
- : [...next, ...freshItems];
281
- log("Updating all with", {
282
- prevLength: prev.length,
283
- freshLength: freshItems.length,
284
- combinedLength: combined.length,
285
- });
286
- updateAll(combined);
287
- emptyResultsRef.current = iterators.every((i) => i.iterator.done());
288
- return !emptyResultsRef.current;
289
- };
290
- const drainRoundRobin = async (iterators, n) => {
291
- const batches = [];
292
- for (const ref of iterators) {
293
- if (ref.iterator.done())
294
- continue;
295
- const batch = await ref.iterator.next(n);
296
- log("Iterator", ref.id, "fetched", batch.length, "items");
297
- if (batch.length) {
298
- ref.itemsConsumed += batch.length;
299
- batches.push({ ref, items: batch });
300
- }
301
- }
302
- return handleBatch(iterators, batches);
303
- };
304
- /* maybe make the rule that if results are empty and we get results from joining
305
- set the results to the joining results
306
- when results are not empty use onMerge option to merge the results ? */
307
- const loadMore = async (n = batchSize) => {
308
- const iterators = iteratorRefs.current;
309
- if (!iterators.length || emptyResultsRef.current) {
310
- log("No iterators or already empty", {
311
- length: iterators.length,
312
- emptyResultsRef: emptyResultsRef.current,
313
- });
314
- return false;
315
- }
316
- setIsLoading(true);
317
- try {
318
- /* one-time replicator warm-up across all DBs */
319
- if (shouldWait()) {
320
- /* if (
321
- typeof options.remote === "object" &&
322
- options.remote.wait
323
- ) {
324
- await Promise.all(
325
- iterators.map(async ({ db }) => {
326
- try {
327
- await db.log.waitForReplicators({
328
- timeout: (options.remote as { warmup })
329
- .warmup,
330
- signal: closeControllerRef.current?.signal,
331
- });
332
- } catch (e) {
333
- if (
334
- e instanceof AbortError ||
335
- e instanceof NoPeersError
336
- )
337
- return;
338
- console.warn("Remote replicators not ready", e);
339
- }
340
- })
341
- );
342
- }*/
343
- markWaited();
344
- }
345
- return drainRoundRobin(iterators, n);
346
- }
347
- catch (e) {
348
- if (!(e instanceof ClosedError))
349
- throw e;
350
- return false;
351
- }
352
- finally {
353
- setIsLoading(false);
354
- }
355
- };
356
- /* ────────────── live-merge listeners ────────────── */
357
- useEffect(() => {
358
- if (!options.updates) {
359
- return;
360
- }
361
- /* const listeners = iteratorRefs.current.map(({ db, id: itId }) => {
362
- const mergeFn =
363
- typeof options.onChange?.merge === "function"
364
- ? options.onChange.merge
365
- : (c: DocumentsChange<T, I>) => c;
366
-
367
- const handler = async (e: CustomEvent<DocumentsChange<T, I>>) => {
368
- log("Merge change", e.detail, "it", itId);
369
- const filtered = await mergeFn(e.detail);
370
- if (
371
- !filtered ||
372
- (!filtered.added.length && !filtered.removed.length)
373
- )
374
- return;
375
-
376
- let merged: Item[];
377
- if (options.onChange?.update) {
378
- merged = await options.onChange.update(
379
- allRef.current,
380
- filtered
381
- );
382
- } else {
383
- merged = await db.index.updateResults(
384
- allRef.current as WithContext<RT>[],
385
- filtered,
386
- options.query || {},
387
- options.resolve ?? true
388
- );
389
- }
390
- updateAll(options.reverse ? merged.reverse() : merged);
391
- };
392
- db.events.addEventListener("change", handler);
393
- return { db, handler };
394
- });
395
-
396
- return () => {
397
- listeners.forEach(({ db, handler }) =>
398
- db.events.removeEventListener("change", handler)
399
- );
400
- }; */
401
- // eslint-disable-next-line react-hooks/exhaustive-deps
402
- }, [
403
- iteratorRefs.current.map((r) => r.db.address).join("|"),
404
- options.updates,
405
- options.query,
406
- options.resolve,
407
- options.reverse,
408
- ]);
409
- /* ────────────── public API – unchanged from the caller's perspective ────────────── */
410
- return {
411
- items: all,
412
- loadMore,
413
- isLoading,
414
- empty: () => emptyResultsRef.current,
415
- id,
416
- };
417
- };
418
- //# sourceMappingURL=useQuery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/useQuery.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}