@fireproof/use-fireproof 0.24.3-dev-token-claims → 0.24.3-dev-use-livequery

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fireproof/use-fireproof",
3
- "version": "0.24.3-dev-token-claims",
3
+ "version": "0.24.3-dev-use-livequery",
4
4
  "description": "Fireproof live ledger, JavaScript API and React hooks",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -21,15 +21,15 @@
21
21
  "gptdoc": "Fireproof/React/Usage: import { useFireproof } from 'use-fireproof'; function WordCounterApp() { const { useLiveQuery, useDocument } = useFireproof('my-word-app'); const { doc: wordInput, merge: updateWordInput, save: saveWordInput, reset: clearWordInput } = useDocument({ word: '', timestamp: Date.now() }); const recentWords = useLiveQuery('timestamp', { descending: true, limit: 10 }); const { doc: { totalSubmitted }, merge: updateTotalSubmitted, save: saveTotalSubmitted } = useDocument({ _id: 'word-counter', totalSubmitted: 0 }); const handleWordSubmission = (e) => { e.preventDefault(); updateTotalSubmitted({ totalSubmitted: totalSubmitted + 1 }); saveTotalSubmitted(); saveWordInput(); clearWordInput();}; return (<><p>{totalSubmitted} words submitted</p><form onSubmit={handleWordSubmission}><input type='text' value={wordInput.word} onChange={e => updateWordInput({ word: e.target.value })} placeholder='Enter a word' /></form><ul>{recentWords.docs.map(entry => (<li key={entry._id}>{entry.word}</li>))} </ul></>) } export default WordCounterApp;",
22
22
  "dependencies": {
23
23
  "@adviser/cement": "0.5.5",
24
- "@fireproof/core-base": "0.24.3-dev-token-claims",
25
- "@fireproof/core-gateways-cloud": "0.24.3-dev-token-claims",
26
- "@fireproof/core-keybag": "0.24.3-dev-token-claims",
27
- "@fireproof/core-protocols-dashboard": "0.24.3-dev-token-claims",
28
- "@fireproof/core-runtime": "0.24.3-dev-token-claims",
29
- "@fireproof/core-types-base": "0.24.3-dev-token-claims",
30
- "@fireproof/core-types-blockstore": "0.24.3-dev-token-claims",
31
- "@fireproof/core-types-protocols-cloud": "0.24.3-dev-token-claims",
32
- "@fireproof/vendor": "0.24.3-dev-token-claims",
24
+ "@fireproof/core-base": "0.24.3-dev-use-livequery",
25
+ "@fireproof/core-gateways-cloud": "0.24.3-dev-use-livequery",
26
+ "@fireproof/core-keybag": "0.24.3-dev-use-livequery",
27
+ "@fireproof/core-protocols-dashboard": "0.24.3-dev-use-livequery",
28
+ "@fireproof/core-runtime": "0.24.3-dev-use-livequery",
29
+ "@fireproof/core-types-base": "0.24.3-dev-use-livequery",
30
+ "@fireproof/core-types-blockstore": "0.24.3-dev-use-livequery",
31
+ "@fireproof/core-types-protocols-cloud": "0.24.3-dev-use-livequery",
32
+ "@fireproof/vendor": "0.24.3-dev-use-livequery",
33
33
  "dompurify": "3.3.1",
34
34
  "jose": "6.1.3",
35
35
  "react": "19.2.3",
@@ -1,33 +1,32 @@
1
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
1
+ import { useCallback, useEffect, useMemo, useState } from "react";
2
2
  export function createUseLiveQuery(database) {
3
3
  return function useLiveQuery(mapFn, query = {}, initialRows = []) {
4
4
  const [hydrated, setHydrated] = useState(false);
5
- const [result, setResult] = useState({
5
+ const [result, setResult] = useState(() => ({
6
6
  docs: initialRows.map((r) => r.doc).filter((r) => !!r),
7
7
  rows: initialRows,
8
- });
8
+ }));
9
9
  const queryString = useMemo(() => JSON.stringify(query), [query]);
10
10
  const mapFnString = useMemo(() => mapFn.toString(), [mapFn]);
11
- const requestIdRef = useRef(0);
12
11
  useEffect(() => {
13
12
  setHydrated(false);
14
- requestIdRef.current += 1;
15
13
  }, [mapFnString, queryString]);
16
14
  const refreshRows = useCallback(async () => {
17
- const myReq = ++requestIdRef.current;
18
15
  const res = await database.query(mapFn, { ...query, includeDocs: true });
19
- if (myReq === requestIdRef.current) {
20
- setResult(res);
21
- setHydrated(true);
22
- }
23
- }, [database, mapFn, query, mapFnString, queryString]);
16
+ database.logger.Debug().Str("dbname", database.name).Uint64("rows", res.rows.length).Msg("Refreshing live query");
17
+ setResult(res);
18
+ setHydrated(true);
19
+ }, [database, mapFnString, queryString]);
24
20
  useEffect(() => {
25
- refreshRows();
21
+ database.logger.Debug().Str("dbname", database.name).Msg("Initializing live query subscription");
26
22
  const unsubscribe = database.subscribe(refreshRows);
27
23
  return () => {
28
24
  unsubscribe();
29
25
  };
30
26
  }, [database, refreshRows]);
27
+ useEffect(() => {
28
+ refreshRows();
29
+ }, [database, queryString, mapFnString]);
31
30
  return { ...result, hydrated };
32
31
  };
33
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-live-query.js","sourceRoot":"","sources":["../../jsr/react/use-live-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO1E,MAAM,UAAU,kBAAkB,CAAC,QAAkB,EAAE;IACrD,OAAO,SAAS,YAAY,CAC1B,KAAwB,EACxB,KAAK,GAAG,EAAE,EACV,WAAW,GAA0B,EAAE,EACb;QAC1B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA6C;YAC/E,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAG7D,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAG/B,SAAS,CAAC,GAAG,EAAE,CAAC;YACd,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;QAAA,CAC3B,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAE/B,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAU,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAGlF,IAAI,KAAK,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;gBACnC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QAAA,CACF,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAEvD,SAAS,CAAC,GAAG,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACpD,OAAO,GAAG,EAAE,CAAC;gBACX,WAAW,EAAE,CAAC;YAAA,CACf,CAAC;QAAA,CACH,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAE5B,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAA,CAChC,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"use-live-query.js","sourceRoot":"","sources":["../../jsr/react/use-live-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOlE,MAAM,UAAU,kBAAkB,CAAC,QAAkB,EAAE;IACrD,OAAO,SAAS,YAAY,CAC1B,KAAwB,EACxB,KAAK,GAAG,EAAE,EACV,WAAW,GAA0B,EAAE,EACb;QAC1B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA6C,GAAG,EAAE,CAAC,CAAC;YACtF,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC,CAAC;QAEJ,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7D,SAAS,CAAC,GAAG,EAAE,CAAC;YACd,WAAW,CAAC,KAAK,CAAC,CAAC;QAAA,CACpB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAE/B,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAU,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAClF,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAClH,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,CAAC;QAAA,CACnB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAEzC,SAAS,CAAC,GAAG,EAAE,CAAC;YACd,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACjG,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACpD,OAAO,GAAG,EAAE,CAAC;gBACX,WAAW,EAAE,CAAC;YAAA,CACf,CAAC;QAAA,CACH,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAE5B,SAAS,CAAC,GAAG,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;QAAA,CACf,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAEzC,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAA,CAChC,CAAC;AAAA,CACH"}