@powerhousedao/reactor-browser 4.0.0-staging.2 → 4.0.0-staging.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor-browser",
3
- "version": "4.0.0-staging.1",
3
+ "version": "4.0.0-staging.2",
4
4
  "license": "AGPL-3.0-only",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1 +1 @@
1
- {"version":3,"file":"useRelationalQuery.d.ts","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAI/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,GAAG,SAAS,EACzE,cAAc,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,CACb,EAAE,EAAE,uBAAuB,CAAC,MAAM,CAAC,EACnC,UAAU,CAAC,EAAE,OAAO,KACjB,uBAAuB,EAC5B,UAAU,CAAC,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,yBAAyB;;;;EA2CpC"}
1
+ {"version":3,"file":"useRelationalQuery.d.ts","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAI/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAuBF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,GAAG,SAAS,EACzE,cAAc,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,CACb,EAAE,EAAE,uBAAuB,CAAC,MAAM,CAAC,EACnC,UAAU,CAAC,EAAE,OAAO,KACjB,uBAAuB,EAC5B,UAAU,CAAC,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,yBAAyB;;;;EAiFpC"}
@@ -1,13 +1,52 @@
1
- import { useEffect, useState } from "react";
1
+ import { useEffect, useRef, useState } from "react";
2
2
  import { useRelationalDb } from "./useRelationalDb.js";
3
+ const MAX_RETRIES = 5;
4
+ const RETRY_DELAY = 200;
5
+ const isRelationNotExistError = (error) => {
6
+ const errorMessage = error instanceof Error
7
+ ? error.message
8
+ : typeof error === "string"
9
+ ? error
10
+ : String(error);
11
+ return (errorMessage.toLowerCase().includes("relation") &&
12
+ errorMessage.toLowerCase().includes("does not exist"));
13
+ };
3
14
  export function useRelationalQuery(ProcessorClass, driveId, queryCallback, parameters, options) {
4
15
  const [result, setResult] = useState(null);
5
16
  const [queryLoading, setQueryLoading] = useState(true);
6
17
  const [error, setError] = useState(undefined);
18
+ const retryCount = useRef(0);
19
+ const retryTimeoutRef = useRef();
7
20
  const relationalDb = useRelationalDb();
21
+ const executeLiveQuery = async (sql, queryParameters, retryAttempt = 0) => {
22
+ if (!relationalDb.db) {
23
+ return null;
24
+ }
25
+ try {
26
+ const live = await relationalDb.db.live.query(sql, queryParameters ? [...queryParameters] : [], (result) => {
27
+ setResult(result);
28
+ setQueryLoading(false);
29
+ retryCount.current = 0; // Reset retry count on success
30
+ });
31
+ return live;
32
+ }
33
+ catch (err) {
34
+ if (isRelationNotExistError(err) && retryAttempt < MAX_RETRIES) {
35
+ return new Promise((resolve) => {
36
+ retryTimeoutRef.current = setTimeout(() => {
37
+ resolve(executeLiveQuery(sql, queryParameters, retryAttempt + 1));
38
+ }, RETRY_DELAY);
39
+ });
40
+ }
41
+ setQueryLoading(false);
42
+ setError(err instanceof Error ? err : new Error(String(err)));
43
+ return null;
44
+ }
45
+ };
8
46
  useEffect(() => {
9
47
  setError(undefined);
10
48
  setQueryLoading(true);
49
+ retryCount.current = 0;
11
50
  if (!relationalDb.db) {
12
51
  return;
13
52
  }
@@ -16,17 +55,16 @@ export function useRelationalQuery(ProcessorClass, driveId, queryCallback, param
16
55
  const db = relationalDb.db.queryNamespace(namespace);
17
56
  const compiledQuery = queryCallback(db, parameters);
18
57
  const { sql, parameters: queryParameters } = compiledQuery;
19
- const live = relationalDb.db.live
20
- .query(sql, queryParameters ? [...queryParameters] : [], (result) => {
21
- setResult(result);
22
- setQueryLoading(false);
23
- })
24
- .catch((error) => {
25
- setQueryLoading(false);
26
- setError(error instanceof Error ? error : new Error(error));
27
- });
58
+ const liveQueryPromise = executeLiveQuery(sql, queryParameters);
28
59
  return () => {
29
- void live.then((l) => l?.unsubscribe());
60
+ if (retryTimeoutRef.current) {
61
+ clearTimeout(retryTimeoutRef.current);
62
+ }
63
+ void liveQueryPromise.then((live) => {
64
+ if (live?.unsubscribe) {
65
+ live.unsubscribe();
66
+ }
67
+ });
30
68
  };
31
69
  }, [relationalDb.db, ProcessorClass, driveId, queryCallback, parameters]);
32
70
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"useRelationalQuery.js","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAYvD,MAAM,UAAU,kBAAkB,CAChC,cAAkD,EAClD,OAAe,EACf,aAG4B,EAC5B,UAAoB,EACpB,OAAmC;IAEnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA6B,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,SAAS,CAAC,CAAC;IAEjE,MAAM,YAAY,GAAG,eAAe,EAAO,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,eAAe,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,cAAc,CAAS,SAAS,CAAC,CAAC;QAE7D,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC;QAE3D,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,IAAI;aAC9B,KAAK,CAAI,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YACrE,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1E,OAAO;QACL,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,YAAY;QACjD,KAAK,EAAE,KAAK,IAAI,YAAY,CAAC,KAAK;QAClC,MAAM;KACE,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"useRelationalQuery.js","sourceRoot":"","sources":["../../../../src/relational/hooks/useRelationalQuery.ts"],"names":[],"mappings":"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"}