@peerbit/react 0.0.23 → 0.0.25

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,5 +1,6 @@
1
1
  import { Documents, DocumentsChange, WithContext } from "@peerbit/document";
2
2
  import * as indexerTypes from "@peerbit/indexer-interface";
3
+ import { WithIndexedContext } from "@peerbit/document/dist/src/search";
3
4
  type QueryLike = {
4
5
  query?: indexerTypes.Query[] | indexerTypes.QueryLike;
5
6
  sort?: indexerTypes.Sort[] | indexerTypes.Sort | indexerTypes.SortLike;
@@ -8,11 +9,14 @@ type QueryOptions = {
8
9
  query: QueryLike;
9
10
  id?: string;
10
11
  };
11
- type WaitForReplicatorsOption = {
12
+ type RemoteQueryOptions = {
12
13
  warmup?: number;
14
+ joining?: {
15
+ waitFor?: number;
16
+ };
13
17
  eager?: boolean;
14
18
  };
15
- export declare const useQuery: <T extends Record<string, any>, I extends Record<string, any>, R extends boolean | undefined = true, RT = R extends false ? WithContext<I> : WithContext<T>>(db?: Documents<T, I>, options?: {
19
+ export declare const useQuery: <T extends Record<string, any>, I extends Record<string, any>, R extends boolean | undefined = true, RT = R extends false ? WithContext<I> : WithIndexedContext<T, I>>(db?: Documents<T, I>, options?: {
16
20
  resolve?: R;
17
21
  transform?: (r: RT) => Promise<RT>;
18
22
  debounce?: number;
@@ -23,14 +27,14 @@ export declare const useQuery: <T extends Record<string, any>, I extends Record<
23
27
  batchSize?: number;
24
28
  prefetch?: boolean;
25
29
  onChange?: {
26
- merge?: boolean | ((c: DocumentsChange<T>) => DocumentsChange<T> | Promise<DocumentsChange<T>> | undefined);
27
- update?: (prev: RT[], change: DocumentsChange<T>) => RT[];
30
+ merge?: boolean | ((c: DocumentsChange<T, I>) => DocumentsChange<T, I> | Promise<DocumentsChange<T, I>> | undefined);
31
+ update?: (prev: RT[], change: DocumentsChange<T, I>) => RT[];
28
32
  };
29
33
  local?: boolean;
30
- remote?: boolean | WaitForReplicatorsOption;
34
+ remote?: boolean | RemoteQueryOptions;
31
35
  } & QueryOptions) => {
32
36
  items: RT[];
33
- loadMore: () => Promise<boolean | undefined>;
37
+ loadMore: (n?: number, pollEvenIfWasEmpty?: boolean) => Promise<boolean | undefined>;
34
38
  isLoading: boolean;
35
39
  empty: () => boolean;
36
40
  id: string | undefined;
@@ -1,4 +1,4 @@
1
- import { useState, useEffect, useRef, useReducer } from "react";
1
+ import { useState, useEffect, useRef } from "react";
2
2
  import { ClosedError, } from "@peerbit/document";
3
3
  import { AbortError } from "@peerbit/time";
4
4
  import { NoPeersError } from "@peerbit/shared-log";
@@ -14,9 +14,7 @@ export const useQuery = (db, options) => {
14
14
  const emptyResultsRef = useRef(false);
15
15
  const closeControllerRef = useRef(null);
16
16
  const waitedOnceRef = useRef(false);
17
- const resetResultsOnReset = useRef(true);
18
17
  const [id, setId] = useState(undefined);
19
- const [resetCounter, invokeReset] = useReducer((n) => n + 1, 0);
20
18
  const reverseRef = useRef(options?.reverse);
21
19
  useEffect(() => {
22
20
  reverseRef.current = options?.reverse;
@@ -44,17 +42,14 @@ export const useQuery = (db, options) => {
44
42
  closeControllerRef.current = new AbortController();
45
43
  emptyResultsRef.current = false;
46
44
  toClose?.iterator.close();
47
- if (resetResultsOnReset.current) {
48
- allRef.current = [];
49
- setAll([]);
50
- }
45
+ allRef.current = [];
46
+ setAll([]);
51
47
  setIsLoading(false);
52
48
  loadingMoreRef.current = false;
53
- log(options, "Iterator reset", toClose?.id, fromRef?.id);
49
+ log("Iterator reset", toClose?.id, fromRef?.id);
54
50
  setId(undefined);
55
51
  };
56
52
  useEffect(() => {
57
- resetResultsOnReset.current = true;
58
53
  waitedOnceRef.current = false;
59
54
  }, [db, options?.id ?? options?.query, options?.resolve, options?.reverse]);
60
55
  /* ────────────── effect: (re)create iterator ────────────── */
@@ -65,16 +60,30 @@ export const useQuery = (db, options) => {
65
60
  }
66
61
  const initIterator = () => {
67
62
  let id = options?.id ?? uuid();
63
+ let remoteQueryOptions = options.remote == null || options.remote === false
64
+ ? false
65
+ : {
66
+ ...(typeof options.remote === "object"
67
+ ? options.remote
68
+ : {}),
69
+ joining: typeof options.remote === "object" &&
70
+ options.remote.joining?.waitFor !== undefined
71
+ ? {
72
+ waitFor: options.remote.joining?.waitFor ??
73
+ 5e3,
74
+ onMissedResults: ({ amount }) => {
75
+ loadMore(amount, true);
76
+ },
77
+ }
78
+ : undefined,
79
+ };
68
80
  const ref = {
69
81
  id,
70
82
  iterator: db.index.iterate(options.query ?? {}, {
71
83
  local: options?.local ?? true,
72
- remote: options.remote == null || options.remote === false
73
- ? false
74
- : typeof options.remote === "object"
75
- ? options.remote
76
- : true,
84
+ remote: remoteQueryOptions,
77
85
  resolve: options?.resolve,
86
+ signal: closeControllerRef.current?.signal,
78
87
  }),
79
88
  itemsConsumed: 0,
80
89
  };
@@ -95,7 +104,7 @@ export const useQuery = (db, options) => {
95
104
  ? options.onChange.merge
96
105
  : (c) => c;
97
106
  handleChange = async (e) => {
98
- log(options, "Merge change", e.detail, "iterator", newIteratorRef.id);
107
+ log("Merge change", e.detail, "iterator", newIteratorRef.id);
99
108
  const filtered = await mergeFn(e.detail);
100
109
  if (!filtered ||
101
110
  (filtered.added.length === 0 &&
@@ -109,13 +118,13 @@ export const useQuery = (db, options) => {
109
118
  }
110
119
  else {
111
120
  merged = await db.index.updateResults(allRef.current, filtered, options.query || {}, options.resolve ?? true);
112
- log(options, "After update", allRef.current, merged);
121
+ log("After update", allRef.current, merged);
113
122
  const expectedDiff = filtered.added.length - filtered.removed.length;
114
123
  if (merged === allRef.current ||
115
124
  (expectedDiff !== 0 &&
116
125
  merged.length === allRef.current.length)) {
117
126
  // no change
118
- log(options, "no change after merge");
127
+ log("no change after merge");
119
128
  return;
120
129
  }
121
130
  }
@@ -133,7 +142,6 @@ export const useQuery = (db, options) => {
133
142
  options?.id ?? options?.query,
134
143
  options?.resolve,
135
144
  options?.reverse,
136
- resetCounter,
137
145
  ]);
138
146
  /* ────────────── loadMore (once-wait aware) ────────────── */
139
147
  const batchSize = options?.batchSize ?? 10;
@@ -152,19 +160,13 @@ export const useQuery = (db, options) => {
152
160
  }
153
161
  return true;
154
162
  };
155
- const reloadAfterTime = () => {
156
- if (typeof options?.remote === "object" && options.remote.eager) {
157
- return options.remote.warmup ?? db?.log.timeUntilRoleMaturity;
158
- }
159
- return undefined;
160
- };
161
163
  const markWaited = () => {
162
164
  waitedOnceRef.current = true;
163
165
  };
164
- const loadMore = async () => {
166
+ const loadMore = async (n = batchSize, pollEvenIfWasEmpty = false) => {
165
167
  const iterator = iteratorRef.current;
166
168
  if (!iterator ||
167
- emptyResultsRef.current ||
169
+ (emptyResultsRef.current && !pollEvenIfWasEmpty) ||
168
170
  iterator.iterator.done() ||
169
171
  loadingMoreRef.current) {
170
172
  return false;
@@ -174,49 +176,44 @@ export const useQuery = (db, options) => {
174
176
  try {
175
177
  /* ── optional replicate-wait ── */
176
178
  if (shouldWait()) {
177
- log(options, "Wait for replicators", iterator.id);
178
- let isEager = typeof options?.remote === "object" && options.remote.eager;
179
- const waitTimeout = typeof options?.remote === "object" &&
179
+ log("Wait for replicators", iterator.id);
180
+ let t0 = Date.now();
181
+ const warmup = typeof options?.remote === "object" &&
180
182
  typeof options?.remote.warmup === "number"
181
183
  ? options?.remote.warmup
182
- : 5_000;
183
- let shouldResetAfterMaturity = isEager && !waitedOnceRef.current;
184
- let promise = db?.log
185
- .waitForReplicators({
186
- timeout: waitTimeout,
187
- signal: closeControllerRef.current?.signal,
188
- })
189
- .catch((e) => {
190
- if (e instanceof AbortError ||
191
- e instanceof NoPeersError)
192
- return;
193
- console.warn("Remote replicators not ready", e);
194
- })
195
- .finally(() => {
196
- markWaited();
197
- if (shouldResetAfterMaturity) {
198
- resetResultsOnReset.current = false; // don't reset results, because we expect to get same or more results
199
- invokeReset();
200
- }
201
- });
202
- if (!shouldResetAfterMaturity) {
203
- await promise;
184
+ : undefined;
185
+ if (warmup) {
186
+ await db?.log
187
+ .waitForReplicators({
188
+ timeout: warmup,
189
+ signal: closeControllerRef.current?.signal,
190
+ })
191
+ .catch((e) => {
192
+ if (e instanceof AbortError ||
193
+ e instanceof NoPeersError)
194
+ return;
195
+ console.warn("Remote replicators not ready", e);
196
+ })
197
+ .finally(() => {
198
+ log("Wait for replicators done", iterator.id, "time", Date.now() - t0);
199
+ markWaited();
200
+ });
204
201
  }
205
202
  }
206
203
  else {
207
- log(options, "Skip wait for replicators", iterator.id);
204
+ log("Skip wait for replicators", iterator.id);
208
205
  }
209
206
  /* ── fetch next batch ── */
210
- log(options, "Retrieve next batch", iterator.id);
211
- let newItems = await iterator.iterator.next(batchSize);
207
+ log("Retrieve next batch", iterator.id);
208
+ let newItems = await iterator.iterator.next(n);
212
209
  if (options?.transform) {
213
- log(options, "Transform start", iterator.id);
210
+ log("Transform start", iterator.id);
214
211
  newItems = await Promise.all(newItems.map(options.transform));
215
- log(options, "Transform end", iterator.id);
212
+ log("Transform end", iterator.id);
216
213
  }
217
214
  /* iterator might have been reset while we were async… */
218
215
  if (iteratorRef.current !== iterator) {
219
- log(options, "Iterator reset while loading more");
216
+ log("Iterator reset while loading more");
220
217
  return false;
221
218
  }
222
219
  iterator.itemsConsumed += newItems.length;
@@ -234,7 +231,7 @@ export const useQuery = (db, options) => {
234
231
  updateAll(combined);
235
232
  }
236
233
  else {
237
- log(options, "No new items", iterator.id);
234
+ log("No new items", iterator.id);
238
235
  }
239
236
  return !iterator.iterator.done();
240
237
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/useQuery.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/useQuery.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/react",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "homepage": "https://dao-xyz.github.io/peerbit-examples",
5
5
  "type": "module",
6
6
  "module": "lib/esm/index.js",
@@ -70,5 +70,5 @@
70
70
  "last 1 safari version"
71
71
  ]
72
72
  },
73
- "gitHead": "22ca16d2f5cf13dbc538602dd6e9d0a00382b768"
73
+ "gitHead": "d7fd86e2cb51f20c3e4bfec72dab274caf0bde72"
74
74
  }
package/src/useQuery.tsx CHANGED
@@ -10,6 +10,8 @@ import * as indexerTypes from "@peerbit/indexer-interface";
10
10
  import { AbortError } from "@peerbit/time";
11
11
  import { NoPeersError } from "@peerbit/shared-log";
12
12
  import { v4 as uuid } from "uuid";
13
+ import { WithIndexedContext } from "@peerbit/document/dist/src/search";
14
+ import { on } from "events";
13
15
  /* ────────────── helper types ────────────── */
14
16
  type QueryLike = {
15
17
  query?: indexerTypes.Query[] | indexerTypes.QueryLike;
@@ -17,14 +19,18 @@ type QueryLike = {
17
19
  };
18
20
  type QueryOptions = { query: QueryLike; id?: string };
19
21
 
20
- type WaitForReplicatorsOption = { warmup?: number; eager?: boolean };
22
+ type RemoteQueryOptions = {
23
+ warmup?: number;
24
+ joining?: { waitFor?: number };
25
+ eager?: boolean;
26
+ };
21
27
 
22
28
  /* ────────────── main hook ────────────── */
23
29
  export const useQuery = <
24
30
  T extends Record<string, any>,
25
31
  I extends Record<string, any>,
26
32
  R extends boolean | undefined = true,
27
- RT = R extends false ? WithContext<I> : WithContext<T>
33
+ RT = R extends false ? WithContext<I> : WithIndexedContext<T, I>
28
34
  >(
29
35
  db?: Documents<T, I>,
30
36
  options?: {
@@ -39,15 +45,15 @@ export const useQuery = <
39
45
  merge?:
40
46
  | boolean
41
47
  | ((
42
- c: DocumentsChange<T>
48
+ c: DocumentsChange<T, I>
43
49
  ) =>
44
- | DocumentsChange<T>
45
- | Promise<DocumentsChange<T>>
50
+ | DocumentsChange<T, I>
51
+ | Promise<DocumentsChange<T, I>>
46
52
  | undefined);
47
- update?: (prev: RT[], change: DocumentsChange<T>) => RT[];
53
+ update?: (prev: RT[], change: DocumentsChange<T, I>) => RT[];
48
54
  };
49
55
  local?: boolean;
50
- remote?: boolean | WaitForReplicatorsOption;
56
+ remote?: boolean | RemoteQueryOptions;
51
57
  } & QueryOptions
52
58
  ) => {
53
59
  /* ── «Item» is the concrete element type flowing through the hook ── */
@@ -66,10 +72,8 @@ export const useQuery = <
66
72
  const emptyResultsRef = useRef(false);
67
73
  const closeControllerRef = useRef<AbortController | null>(null);
68
74
  const waitedOnceRef = useRef(false);
69
- const resetResultsOnReset = useRef(true);
70
75
 
71
76
  const [id, setId] = useState<string | undefined>(undefined);
72
- const [resetCounter, invokeReset] = useReducer((n) => n + 1, 0);
73
77
 
74
78
  const reverseRef = useRef(options?.reverse);
75
79
  useEffect(() => {
@@ -107,19 +111,16 @@ export const useQuery = <
107
111
 
108
112
  toClose?.iterator.close();
109
113
 
110
- if (resetResultsOnReset.current) {
111
- allRef.current = [];
112
- setAll([]);
113
- }
114
+ allRef.current = [];
115
+ setAll([]);
114
116
 
115
117
  setIsLoading(false);
116
118
  loadingMoreRef.current = false;
117
- log(options, "Iterator reset", toClose?.id, fromRef?.id);
119
+ log("Iterator reset", toClose?.id, fromRef?.id);
118
120
  setId(undefined);
119
121
  };
120
122
 
121
123
  useEffect(() => {
122
- resetResultsOnReset.current = true;
123
124
  waitedOnceRef.current = false;
124
125
  }, [db, options?.id ?? options?.query, options?.resolve, options?.reverse]);
125
126
 
@@ -132,17 +133,33 @@ export const useQuery = <
132
133
 
133
134
  const initIterator = () => {
134
135
  let id = options?.id ?? uuid();
136
+ let remoteQueryOptions =
137
+ options.remote == null || options.remote === false
138
+ ? false
139
+ : {
140
+ ...(typeof options.remote === "object"
141
+ ? options.remote
142
+ : {}),
143
+ joining:
144
+ typeof options.remote === "object" &&
145
+ options.remote.joining?.waitFor !== undefined
146
+ ? {
147
+ waitFor:
148
+ options.remote.joining?.waitFor ??
149
+ 5e3,
150
+ onMissedResults: ({ amount }) => {
151
+ loadMore(amount, true);
152
+ },
153
+ }
154
+ : undefined,
155
+ };
135
156
  const ref = {
136
157
  id,
137
158
  iterator: db.index.iterate(options.query ?? {}, {
138
159
  local: options?.local ?? true,
139
- remote:
140
- options.remote == null || options.remote === false
141
- ? false
142
- : typeof options.remote === "object"
143
- ? options.remote
144
- : true,
160
+ remote: remoteQueryOptions,
145
161
  resolve: options?.resolve,
162
+ signal: closeControllerRef.current?.signal,
146
163
  }) as ResultsIterator<Item>,
147
164
  itemsConsumed: 0,
148
165
  };
@@ -161,23 +178,17 @@ export const useQuery = <
161
178
 
162
179
  /* live-merge listener (optional) */
163
180
  let handleChange:
164
- | ((e: CustomEvent<DocumentsChange<T>>) => void | Promise<void>)
181
+ | ((e: CustomEvent<DocumentsChange<T, I>>) => void | Promise<void>)
165
182
  | undefined;
166
183
 
167
184
  if (options?.onChange && options.onChange.merge !== false) {
168
185
  const mergeFn =
169
186
  typeof options.onChange.merge === "function"
170
187
  ? options.onChange.merge
171
- : (c: DocumentsChange<T>) => c;
188
+ : (c: DocumentsChange<T, I>) => c;
172
189
 
173
- handleChange = async (e: CustomEvent<DocumentsChange<T>>) => {
174
- log(
175
- options,
176
- "Merge change",
177
- e.detail,
178
- "iterator",
179
- newIteratorRef.id
180
- );
190
+ handleChange = async (e: CustomEvent<DocumentsChange<T, I>>) => {
191
+ log("Merge change", e.detail, "iterator", newIteratorRef.id);
181
192
  const filtered = await mergeFn(e.detail);
182
193
  if (
183
194
  !filtered ||
@@ -199,7 +210,7 @@ export const useQuery = <
199
210
  options.resolve ?? true
200
211
  );
201
212
 
202
- log(options, "After update", allRef.current, merged);
213
+ log("After update", allRef.current, merged);
203
214
  const expectedDiff =
204
215
  filtered.added.length - filtered.removed.length;
205
216
 
@@ -209,7 +220,7 @@ export const useQuery = <
209
220
  merged.length === allRef.current.length)
210
221
  ) {
211
222
  // no change
212
- log(options, "no change after merge");
223
+ log("no change after merge");
213
224
  return;
214
225
  }
215
226
  }
@@ -230,7 +241,6 @@ export const useQuery = <
230
241
  options?.id ?? options?.query,
231
242
  options?.resolve,
232
243
  options?.reverse,
233
- resetCounter,
234
244
  ]);
235
245
 
236
246
  /* ────────────── loadMore (once-wait aware) ────────────── */
@@ -249,22 +259,18 @@ export const useQuery = <
249
259
  return true;
250
260
  };
251
261
 
252
- const reloadAfterTime = (): number | undefined => {
253
- if (typeof options?.remote === "object" && options.remote.eager) {
254
- return options.remote.warmup ?? db?.log.timeUntilRoleMaturity;
255
- }
256
- return undefined;
257
- };
258
-
259
262
  const markWaited = () => {
260
263
  waitedOnceRef.current = true;
261
264
  };
262
265
 
263
- const loadMore = async () => {
266
+ const loadMore = async (
267
+ n: number = batchSize,
268
+ pollEvenIfWasEmpty = false
269
+ ) => {
264
270
  const iterator = iteratorRef.current;
265
271
  if (
266
272
  !iterator ||
267
- emptyResultsRef.current ||
273
+ (emptyResultsRef.current && !pollEvenIfWasEmpty) ||
268
274
  iterator.iterator.done() ||
269
275
  loadingMoreRef.current
270
276
  ) {
@@ -277,59 +283,59 @@ export const useQuery = <
277
283
  try {
278
284
  /* ── optional replicate-wait ── */
279
285
  if (shouldWait()) {
280
- log(options, "Wait for replicators", iterator.id);
286
+ log("Wait for replicators", iterator.id);
287
+ let t0 = Date.now();
281
288
 
282
- let isEager =
283
- typeof options?.remote === "object" && options.remote.eager;
284
- const waitTimeout =
289
+ const warmup =
285
290
  typeof options?.remote === "object" &&
286
291
  typeof options?.remote.warmup === "number"
287
292
  ? options?.remote.warmup
288
- : 5_000;
289
-
290
- let shouldResetAfterMaturity =
291
- isEager && !waitedOnceRef.current;
292
- let promise = db?.log
293
- .waitForReplicators({
294
- timeout: waitTimeout,
295
- signal: closeControllerRef.current?.signal,
296
- })
297
- .catch((e) => {
298
- if (
299
- e instanceof AbortError ||
300
- e instanceof NoPeersError
301
- )
302
- return;
303
- console.warn("Remote replicators not ready", e);
304
- })
305
- .finally(() => {
306
- markWaited();
307
- if (shouldResetAfterMaturity) {
308
- resetResultsOnReset.current = false; // don't reset results, because we expect to get same or more results
309
- invokeReset();
310
- }
311
- });
312
- if (!shouldResetAfterMaturity) {
313
- await promise;
293
+ : undefined;
294
+
295
+ if (warmup) {
296
+ await db?.log
297
+ .waitForReplicators({
298
+ timeout: warmup,
299
+ signal: closeControllerRef.current?.signal,
300
+ })
301
+ .catch((e) => {
302
+ if (
303
+ e instanceof AbortError ||
304
+ e instanceof NoPeersError
305
+ )
306
+ return;
307
+ console.warn("Remote replicators not ready", e);
308
+ })
309
+ .finally(() => {
310
+ log(
311
+ "Wait for replicators done",
312
+ iterator.id,
313
+ "time",
314
+ Date.now() - t0
315
+ );
316
+ markWaited();
317
+ });
314
318
  }
315
319
  } else {
316
- log(options, "Skip wait for replicators", iterator.id);
320
+ log("Skip wait for replicators", iterator.id);
317
321
  }
318
322
 
319
323
  /* ── fetch next batch ── */
320
- log(options, "Retrieve next batch", iterator.id);
321
- let newItems = await iterator.iterator.next(batchSize);
324
+ log("Retrieve next batch", iterator.id);
325
+
326
+ let newItems = await iterator.iterator.next(n);
327
+
322
328
  if (options?.transform) {
323
- log(options, "Transform start", iterator.id);
329
+ log("Transform start", iterator.id);
324
330
 
325
331
  newItems = await Promise.all(newItems.map(options.transform));
326
- log(options, "Transform end", iterator.id);
332
+ log("Transform end", iterator.id);
327
333
  }
328
334
 
329
335
  /* iterator might have been reset while we were async… */
330
336
 
331
337
  if (iteratorRef.current !== iterator) {
332
- log(options, "Iterator reset while loading more");
338
+ log("Iterator reset while loading more");
333
339
  return false;
334
340
  }
335
341
 
@@ -366,7 +372,7 @@ export const useQuery = <
366
372
  : [...prev, ...unique];
367
373
  updateAll(combined);
368
374
  } else {
369
- log(options, "No new items", iterator.id);
375
+ log("No new items", iterator.id);
370
376
  }
371
377
  return !iterator.iterator.done();
372
378
  } catch (e) {