@bananapus/nana-sdk-react 64.0.0 → 65.0.0

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":"JBContractContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBContractContext/JBContractContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMT,SAAS,EAIT,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAA+B,MAAM,MAAM,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAiB,MAAM,UAAU,CAAC;AAGpD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE;QACT,qBAAqB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;KAC5B,CAAC;IACF,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC;CACvE,CAAC;AAaF;;GAEG;AACH,eAAO,MAAM,iBAAiB,gDAyB5B,CAAC;AAEH,wBAAgB,oBAAoB,0BAEnC;AAGD,oBAAY,eAAe;IACzB,YAAY,IAAA;IACZ,8BAA8B,IAAA;IAC9B,kBAAkB,IAAA;IAClB,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,UAAU,IAAA;CACX;AAED,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG;IACnD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,SAAS,CAAC;CACpB,CAeA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,4CAKhC,uBAAuB,gCAkLzB,CAAC"}
1
+ {"version":3,"file":"JBContractContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBContractContext/JBContractContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMT,SAAS,EAIT,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAA+B,MAAM,MAAM,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAqC,MAAM,UAAU,CAAC;AAGxE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE;QACT,qBAAqB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;KAC5B,CAAC;IACF,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC;CACvE,CAAC;AAaF;;GAEG;AACH,eAAO,MAAM,iBAAiB,gDAyB5B,CAAC;AAEH,wBAAgB,oBAAoB,0BAEnC;AAGD,oBAAY,eAAe;IACzB,YAAY,IAAA;IACZ,8BAA8B,IAAA;IAC9B,kBAAkB,IAAA;IAClB,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,UAAU,IAAA;CACX;AAED,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG;IACnD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,SAAS,CAAC;CACpB,CAeA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,4CAKhC,uBAAuB,gCAwKzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"JBRulesetContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBRulesetContext/JBRulesetContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,0BAA0B,EAAE,MAAM,MAAM,CAAC;AAKlD,OAAO,EAAE,SAAS,EAAiB,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,OAAO,EAAE,SAAS,CAChB,IAAI,CACF,0BAA0B,CACxB,OAAO,eAAe,EACtB,MAAM,EACN,kBAAkB,CACnB,CAAC,CAAC,CAAC,EACJ,QAAQ,GAAG,kBAAkB,CAC9B,GAAG;QACF,MAAM,EAAE,aAAa,CAAC;QACtB,gBAAgB,EAAE,gBAAgB,CAAC;KACpC,CACF,CAAC;IACF;;OAEG;IACH,eAAe,EAAE,SAAS,CACxB,IAAI,CACF,0BAA0B,CACxB,OAAO,eAAe,EACtB,MAAM,EACN,kBAAkB,CACnB,CAAC,CAAC,CAAC,EACJ,gBAAgB,GAAG,iBAAiB,CACrC,GAAG;QACF,cAAc,EAAE,cAAc,CAAC;QAC/B,eAAe,EAAE,eAAe,CAAC;KAClC,CACF,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,2CAG3B,CAAC;AAEH,wBAAgB,mBAAmB,qBAElC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB;;;;;;;;;;;;;;;;;;;;;oBAtBd,cAAc;qBACb,eAAe;GAyBrC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,eAE/B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,gCAkFA,CAAC"}
1
+ {"version":3,"file":"JBRulesetContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBRulesetContext/JBRulesetContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,0BAA0B,EAAE,MAAM,MAAM,CAAC;AAKlD,OAAO,EAAE,SAAS,EAAqC,MAAM,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,OAAO,EAAE,SAAS,CAChB,IAAI,CACF,0BAA0B,CACxB,OAAO,eAAe,EACtB,MAAM,EACN,kBAAkB,CACnB,CAAC,CAAC,CAAC,EACJ,QAAQ,GAAG,kBAAkB,CAC9B,GAAG;QACF,MAAM,EAAE,aAAa,CAAC;QACtB,gBAAgB,EAAE,gBAAgB,CAAC;KACpC,CACF,CAAC;IACF;;OAEG;IACH,eAAe,EAAE,SAAS,CACxB,IAAI,CACF,0BAA0B,CACxB,OAAO,eAAe,EACtB,MAAM,EACN,kBAAkB,CACnB,CAAC,CAAC,CAAC,EACJ,gBAAgB,GAAG,iBAAiB,CACrC,GAAG;QACF,cAAc,EAAE,cAAc,CAAC;QAC/B,eAAe,EAAE,eAAe,CAAC;KAClC,CACF,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,2CAG3B,CAAC;AAEH,wBAAgB,mBAAmB,qBAElC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB;;;;;;;;;;;;;;;;;;;;;oBAtBd,cAAc;qBACb,eAAe;GAyBrC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,eAE/B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,gCAwFA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"JBPrimaryNativeTerminalProvider.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBTerminalContext/JBPrimaryNativeTerminalProvider.tsx"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,EAC9C,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,+BAcA"}
1
+ {"version":3,"file":"JBPrimaryNativeTerminalProvider.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBTerminalContext/JBPrimaryNativeTerminalProvider.tsx"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,EAC9C,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,+BAqBA"}
@@ -17,10 +17,15 @@ export declare const JBTerminalContext: import("react").Context<JBTerminalContex
17
17
  export declare function useJBTerminalContext(): JBTerminalContext;
18
18
  type JBTerminalProviderProps = PropsWithChildren<{
19
19
  address: Address | undefined;
20
+ /** The read that resolves `address`: while it loads or after it failed, the terminal's reads say so instead of "none". */
21
+ upstream?: {
22
+ isLoading: boolean;
23
+ error?: Error | null;
24
+ };
20
25
  }>;
21
26
  /**
22
27
  * Provide details about a given terminal.
23
28
  */
24
- export declare const JBTerminalProvider: ({ address, children, }: JBTerminalProviderProps) => import("react").JSX.Element;
29
+ export declare const JBTerminalProvider: ({ address, upstream, children, }: JBTerminalProviderProps) => import("react").JSX.Element;
25
30
  export {};
26
31
  //# sourceMappingURL=JBTerminalContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JBTerminalContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBTerminalContext/JBTerminalContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAA6B,MAAM,OAAO,CAAC;AACrE,OAAO,EACL,OAAO,EACP,0BAA0B,EAG3B,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,SAAS,EAAiB,MAAM,UAAU,CAAC;AAGpD;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,0BAA0B,CACnD,OAAO,kBAAkB,EACzB,MAAM,EACN,sBAAsB,CACvB,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,kBAAkB,EAAE,SAAS,CAAC,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC,CAAC;IAC1E,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,4CAI5B,CAAC;AAEH,wBAAgB,oBAAoB,sBAEnC;AAED,KAAK,uBAAuB,GAAG,iBAAiB,CAAC;IAC/C,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,wBAGhC,uBAAuB,gCAqCzB,CAAC"}
1
+ {"version":3,"file":"JBTerminalContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBTerminalContext/JBTerminalContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAA6B,MAAM,OAAO,CAAC;AACrE,OAAO,EACL,OAAO,EACP,0BAA0B,EAG3B,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,SAAS,EAAqC,MAAM,UAAU,CAAC;AAGxE;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,0BAA0B,CACnD,OAAO,kBAAkB,EACzB,MAAM,EACN,sBAAsB,CACvB,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,kBAAkB,EAAE,SAAS,CAAC,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC,CAAC;IAC1E,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,4CAI5B,CAAC;AAEH,wBAAgB,oBAAoB,sBAEnC;AAED,KAAK,uBAAuB,GAAG,iBAAiB,CAAC;IAC/C,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,0HAA0H;IAC1H,QAAQ,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC;CACzD,CAAC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,kCAIhC,uBAAuB,gCA4CzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"JBTokenContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBTokenContext/JBTokenContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAiB,iBAAiB,EAAc,MAAM,OAAO,CAAC;AAErE,OAAO,EAA6B,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAiB,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C;;OAEG;IACH,gBAAgB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6CAazB,CAAC;AAEH,wBAAgB,iBAAiB,uBAEhC;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,qCAG7B,oBAAoB,gCA6EtB,CAAC"}
1
+ {"version":3,"file":"JBTokenContext.d.ts","sourceRoot":"","sources":["../../../src/contexts/JBTokenContext/JBTokenContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAiB,iBAAiB,EAAc,MAAM,OAAO,CAAC;AAErE,OAAO,EAA6B,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAqC,MAAM,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C;;OAEG;IACH,gBAAgB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6CAazB,CAAC;AAEH,wBAAgB,iBAAiB,uBAEhC;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,qCAG7B,oBAAoB,gCAyEtB,CAAC"}
@@ -1,7 +1,27 @@
1
1
  export interface AsyncData<T> {
2
2
  isLoading: boolean;
3
3
  data: T | undefined | null;
4
+ /**
5
+ * The read that failed, its own or one it waited on. With `data` empty and
6
+ * `isLoading` false, null means "none" and an error means "unknown".
7
+ */
8
+ error?: Error | null;
4
9
  }
5
10
  declare const AsyncDataNone: AsyncData<any>;
6
11
  export { AsyncDataNone };
12
+ /**
13
+ * A read that waits on another: while the upstream loads, it loads too (a
14
+ * disabled read otherwise says `isLoading: false, data: undefined`, "none"),
15
+ * and an upstream failure is its failure.
16
+ */
17
+ export declare function dependentAsyncData<Q extends {
18
+ isLoading: boolean;
19
+ error?: Error | null;
20
+ }>(query: Q, upstream: {
21
+ isLoading: boolean;
22
+ error?: Error | null;
23
+ }): Q & {
24
+ isLoading: boolean;
25
+ error: Error | null;
26
+ };
7
27
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contexts/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CAC5B;AAED,QAAA,MAAM,aAAa,EAAE,SAAS,CAAC,GAAG,CAGjC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contexts/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB;AAED,QAAA,MAAM,aAAa,EAAE,SAAS,CAAC,GAAG,CAIjC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,SAAS;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,EAEtD,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,GACrD,CAAC,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAMjD"}
package/dist/index.js CHANGED
@@ -363,8 +363,16 @@ function useResolveDataHook({
363
363
  // src/contexts/types.ts
364
364
  var AsyncDataNone = {
365
365
  isLoading: false,
366
- data: void 0
366
+ data: void 0,
367
+ error: null
367
368
  };
369
+ function dependentAsyncData(query, upstream) {
370
+ return {
371
+ ...query,
372
+ isLoading: Boolean(query.isLoading || upstream.isLoading),
373
+ error: query.error ?? upstream.error ?? null
374
+ };
375
+ }
368
376
 
369
377
  // src/contexts/JBRulesetContext/JBRulesetContext.tsx
370
378
  import { jsx as jsx2 } from "react/jsx-runtime";
@@ -385,7 +393,7 @@ var JBRulesetProvider = ({
385
393
  const { contracts, projectId, version } = useJBContractContext();
386
394
  const chainId = useJBChainId();
387
395
  const controllerAddress = contracts.controller.data ?? void 0;
388
- const { data: ruleset, isLoading } = useReadContract3({
396
+ const rulesetRes = useReadContract3({
389
397
  chainId,
390
398
  abi: jbControllerAbi,
391
399
  functionName: "currentRulesetOf",
@@ -414,21 +422,30 @@ var JBRulesetProvider = ({
414
422
  }
415
423
  }
416
424
  });
417
- const { resolvedDataHook, isLoading: isDataHookLoading } = useResolveDataHook(
425
+ const ruleset = rulesetRes.data;
426
+ const dataHook = useResolveDataHook({
427
+ dataHookAddress: ruleset?.metadata?.dataHook,
428
+ projectId,
429
+ chainId,
430
+ rulesetId: ruleset?.data.id === void 0 ? void 0 : BigInt(ruleset.data.id)
431
+ });
432
+ const rulesetMetadataWithResolvedDataHook = ruleset?.metadata && dataHook.resolvedDataHook ? { ...ruleset.metadata, dataHook: dataHook.resolvedDataHook } : void 0;
433
+ const rulesetState = dependentAsyncData(
418
434
  {
419
- dataHookAddress: ruleset?.metadata?.dataHook,
420
- projectId,
421
- chainId,
422
- rulesetId: ruleset?.data.id === void 0 ? void 0 : BigInt(ruleset.data.id)
423
- }
435
+ data: ruleset?.data,
436
+ isLoading: rulesetRes.isLoading,
437
+ error: rulesetRes.error
438
+ },
439
+ contracts.controller
440
+ );
441
+ const rulesetMetadataState = dependentAsyncData(
442
+ {
443
+ data: rulesetMetadataWithResolvedDataHook,
444
+ isLoading: dataHook.isLoading,
445
+ error: dataHook.error
446
+ },
447
+ rulesetState
424
448
  );
425
- const isRulesetLoading = Boolean(isLoading || contracts.controller.isLoading);
426
- const rulesetMetadataWithResolvedDataHook = ruleset?.metadata && resolvedDataHook ? { ...ruleset.metadata, dataHook: resolvedDataHook } : void 0;
427
- const rulesetState = { data: ruleset?.data, isLoading: isRulesetLoading };
428
- const rulesetMetadataState = {
429
- data: rulesetMetadataWithResolvedDataHook,
430
- isLoading: Boolean(isRulesetLoading || isDataHookLoading)
431
- };
432
449
  debug3("JBRulesetContext", {
433
450
  ruleset: rulesetState,
434
451
  rulesetMetadata: rulesetMetadataState
@@ -670,7 +687,7 @@ var JBTokenProvider = ({
670
687
  } catch {
671
688
  jbTokensAddress = void 0;
672
689
  }
673
- const { data: tokenAddress, isLoading: isTokenAddressLoading } = useReadContract4({
690
+ const tokenAddressRes = useReadContract4({
674
691
  address: jbTokensAddress,
675
692
  abi: jbTokensAbi,
676
693
  functionName: "tokenOf",
@@ -678,6 +695,7 @@ var JBTokenProvider = ({
678
695
  args: [projectId],
679
696
  query: { enabled: !!projectId && !!jbTokensAddress }
680
697
  });
698
+ const tokenAddress = tokenAddressRes.data;
681
699
  const fetchTokenEnabled = Boolean(
682
700
  tokenAddress && !isAddressEqual2(tokenAddress, zeroAddress2)
683
701
  );
@@ -696,24 +714,20 @@ var JBTokenProvider = ({
696
714
  enabled: withTotalOutstanding && controller?.data !== void 0
697
715
  }
698
716
  });
699
- const totalOutstandingData = totalOutstandingRes?.data !== void 0 ? new JBProjectToken(totalOutstandingRes?.data) : void 0;
717
+ const totalOutstandingData = totalOutstandingRes.data !== void 0 ? new JBProjectToken(totalOutstandingRes.data) : void 0;
700
718
  return /* @__PURE__ */ jsx6(
701
719
  JBTokenContext.Provider,
702
720
  {
703
721
  value: {
704
- // The ERC-20 read is disabled until `tokenOf` answers, which would
705
- // otherwise publish `isLoading: false, data: undefined` — "this project
706
- // has no token" — on every page load.
707
- token: {
708
- ...token,
709
- isLoading: Boolean(token.isLoading || isTokenAddressLoading)
710
- },
711
- totalOutstanding: {
712
- data: totalOutstandingData,
713
- isLoading: Boolean(
714
- totalOutstandingRes?.isLoading || controller?.isLoading
715
- )
716
- }
722
+ token: dependentAsyncData(token, tokenAddressRes),
723
+ totalOutstanding: dependentAsyncData(
724
+ {
725
+ data: totalOutstandingData,
726
+ isLoading: totalOutstandingRes.isLoading,
727
+ error: totalOutstandingRes.error
728
+ },
729
+ controller
730
+ )
717
731
  },
718
732
  children
719
733
  }
@@ -742,16 +756,17 @@ function useJBTerminalContext() {
742
756
  }
743
757
  var JBTerminalProvider = ({
744
758
  address,
759
+ upstream = AsyncDataNone,
745
760
  children
746
761
  }) => {
747
762
  const chainId = useJBChainId();
748
- const { data: store, isLoading: isStoreLoading } = useReadContract5({
763
+ const store = useReadContract5({
749
764
  abi: jbMultiTerminalAbi,
750
765
  functionName: "STORE",
751
766
  chainId,
752
767
  address: address && isAddressEqual3(address, zeroAddress3) ? void 0 : address
753
768
  });
754
- const { data: accountingContexts, isLoading: accountingContextsLoading } = useReadContract5({
769
+ const accountingContexts = useReadContract5({
755
770
  abi: jbMultiTerminalAbi,
756
771
  functionName: "accountingContextsOf",
757
772
  chainId,
@@ -762,14 +777,22 @@ var JBTerminalProvider = ({
762
777
  {
763
778
  value: {
764
779
  address,
765
- store: {
766
- data: store,
767
- isLoading: isStoreLoading
768
- },
769
- accountingContexts: {
770
- data: accountingContexts,
771
- isLoading: accountingContextsLoading
772
- }
780
+ store: dependentAsyncData(
781
+ {
782
+ data: store.data,
783
+ isLoading: store.isLoading,
784
+ error: store.error
785
+ },
786
+ upstream
787
+ ),
788
+ accountingContexts: dependentAsyncData(
789
+ {
790
+ data: accountingContexts.data,
791
+ isLoading: accountingContexts.isLoading,
792
+ error: accountingContexts.error
793
+ },
794
+ upstream
795
+ )
773
796
  },
774
797
  children
775
798
  }
@@ -782,9 +805,20 @@ function JBPrimaryNativeTerminalProvider({
782
805
  children
783
806
  }) {
784
807
  const { contracts } = useJBContractContext();
785
- const terminalAddress = contracts?.primaryNativeTerminal?.data ?? void 0;
808
+ const terminal = contracts?.primaryNativeTerminal;
809
+ const terminalAddress = terminal?.data ?? void 0;
786
810
  debug8("JBPrimaryNativeTerminalProvider", { terminalAddress });
787
- return /* @__PURE__ */ jsx8(JBTerminalProvider, { address: terminalAddress, children });
811
+ return /* @__PURE__ */ jsx8(
812
+ JBTerminalProvider,
813
+ {
814
+ address: terminalAddress,
815
+ upstream: {
816
+ isLoading: Boolean(terminal?.isLoading),
817
+ error: terminal?.error ?? null
818
+ },
819
+ children
820
+ }
821
+ );
788
822
  }
789
823
 
790
824
  // src/contexts/JBProjectProvider/JBProjectProvider.tsx
@@ -4300,7 +4334,8 @@ var JBContractProvider = ({
4300
4334
  return {
4301
4335
  ...primaryNativeTerminalEth,
4302
4336
  data: void 0,
4303
- isLoading: primaryNativeTerminalEth.isLoading || primaryNativeTerminalUsdc.isLoading
4337
+ isLoading: primaryNativeTerminalEth.isLoading || primaryNativeTerminalUsdc.isLoading,
4338
+ error: primaryNativeTerminalEth.error ?? primaryNativeTerminalUsdc.error
4304
4339
  };
4305
4340
  }, [primaryNativeTerminalEth, primaryNativeTerminalUsdc]);
4306
4341
  const controller = useReadContract11({
@@ -4363,10 +4398,6 @@ var JBContractProvider = ({
4363
4398
  staleTime: Infinity
4364
4399
  }
4365
4400
  });
4366
- const dependent = (query) => ({
4367
- ...query,
4368
- isLoading: Boolean(query.isLoading || controller.isLoading)
4369
- });
4370
4401
  const contractAddress = useCallback(
4371
4402
  (contract, _chainId) => {
4372
4403
  return getJBContractAddress3(contract, version, _chainId || chainId);
@@ -4375,11 +4406,11 @@ var JBContractProvider = ({
4375
4406
  );
4376
4407
  const contracts = {
4377
4408
  controller,
4378
- fundAccessLimits: dependent(fundAccessLimits),
4409
+ fundAccessLimits: dependentAsyncData(fundAccessLimits, controller),
4379
4410
  primaryNativeTerminal,
4380
- rulesets: dependent(rulesets),
4381
- tokens: dependent(tokens),
4382
- splits: dependent(splits)
4411
+ rulesets: dependentAsyncData(rulesets, controller),
4412
+ tokens: dependentAsyncData(tokens, controller),
4413
+ splits: dependentAsyncData(splits, controller)
4383
4414
  };
4384
4415
  debug10("JBContractContext", { projectId, contracts });
4385
4416
  return /* @__PURE__ */ jsx10(
@@ -4543,12 +4574,20 @@ function useGetRelayrTxQuote() {
4543
4574
  }
4544
4575
 
4545
4576
  // src/lib/relayr/hooks/useGetRelayrTxBundle.ts
4546
- import { useCallback as useCallback2, useMemo as useMemo6, useState } from "react";
4577
+ import {
4578
+ relayrProgress
4579
+ } from "@bananapus/nana-sdk-core/review/relayr";
4580
+ import { useCallback as useCallback2, useEffect, useMemo as useMemo6, useState } from "react";
4547
4581
  import { useQuery as useQuery9 } from "wagmi/query";
4548
4582
  var POLL_INTERVAL = 2e3;
4549
- var transactionSucceeded = (state) => state === "Success" || state === "Completed";
4550
- var areTransactionsComplete = (response) => !!response?.transactions?.length && response.transactions.every((tx) => transactionSucceeded(tx.status.state));
4551
- var hasTransactionFailure = (response) => !!response?.transactions?.some((tx) => tx.status.state === "Failed");
4583
+ var POLL_TIMEOUT = 5 * 6e4;
4584
+ var progressOf = (response, expectedCount) => {
4585
+ const records = (response?.transactions ?? []).map((tx) => ({
4586
+ status: { state: tx.status?.state }
4587
+ }));
4588
+ return relayrProgress(records, expectedCount ?? records.length);
4589
+ };
4590
+ var isComplete = ({ total, confirmed }) => total > 0 && confirmed === total;
4552
4591
  var fetchTxBundle = async (uuid, signal) => {
4553
4592
  if (!uuid) {
4554
4593
  throw new Error("No UUID provided");
@@ -4561,40 +4600,56 @@ var fetchTxBundle = async (uuid, signal) => {
4561
4600
  return response.json();
4562
4601
  };
4563
4602
  function useGetRelayrTxBundle() {
4564
- const [uuid, setUuid] = useState();
4603
+ const [target, setTarget] = useState();
4604
+ const [expired, setExpired] = useState();
4605
+ const uuid = target?.uuid;
4606
+ const expectedCount = target?.expectedCount;
4607
+ const timeUp = !!target && expired === target;
4608
+ useEffect(() => {
4609
+ if (!target) return;
4610
+ const timer = setTimeout(
4611
+ () => setExpired(target),
4612
+ Math.max(0, target.until - Date.now())
4613
+ );
4614
+ return () => clearTimeout(timer);
4615
+ }, [target]);
4565
4616
  const getRelayrTxBundle = useQuery9({
4566
4617
  queryKey: ["txBundle", uuid],
4567
4618
  queryFn: ({ signal }) => fetchTxBundle(uuid, signal),
4568
4619
  enabled: !!uuid,
4569
- refetchInterval: (query) => areTransactionsComplete(query.state.data) || hasTransactionFailure(query.state.data) ? false : POLL_INTERVAL
4620
+ refetchInterval: (query) => {
4621
+ const progress2 = progressOf(query.state.data, expectedCount);
4622
+ return timeUp || isComplete(progress2) || progress2.failed > 0 ? false : POLL_INTERVAL;
4623
+ }
4570
4624
  });
4571
4625
  const startPolling = useCallback2(
4572
- (bundleUuid) => {
4573
- if (bundleUuid === uuid) {
4574
- void getRelayrTxBundle.refetch();
4575
- return;
4576
- }
4577
- setUuid(bundleUuid);
4626
+ (bundleUuid, expectedCount2) => {
4627
+ setTarget({
4628
+ uuid: bundleUuid,
4629
+ ...expectedCount2 === void 0 ? {} : { expectedCount: expectedCount2 },
4630
+ until: Date.now() + POLL_TIMEOUT
4631
+ });
4632
+ if (bundleUuid === uuid) void getRelayrTxBundle.refetch();
4578
4633
  },
4579
4634
  [getRelayrTxBundle.refetch, uuid]
4580
4635
  );
4581
- const isComplete = useMemo6(
4582
- () => areTransactionsComplete(getRelayrTxBundle.data),
4583
- [getRelayrTxBundle.data]
4584
- );
4585
- const hasFailed = useMemo6(
4586
- () => hasTransactionFailure(getRelayrTxBundle.data),
4587
- [getRelayrTxBundle.data]
4636
+ const progress = useMemo6(
4637
+ () => progressOf(getRelayrTxBundle.data, expectedCount),
4638
+ [getRelayrTxBundle.data, expectedCount]
4588
4639
  );
4640
+ const complete = isComplete(progress);
4641
+ const hasFailed = progress.failed > 0;
4642
+ const timedOut = timeUp && !complete && !hasFailed;
4589
4643
  return {
4590
4644
  startPolling,
4591
- isComplete,
4645
+ isComplete: complete,
4592
4646
  hasFailed,
4647
+ /** Polling stopped after five minutes with the bundle still unfinished. */
4648
+ timedOut,
4649
+ progress,
4593
4650
  uuid,
4594
4651
  response: getRelayrTxBundle.data,
4595
- // A bundle whose fetches keep erroring is not still polling: without the
4596
- // error term a consumer's spinner never stops.
4597
- isPolling: !!uuid && !isComplete && !hasFailed && !getRelayrTxBundle.error,
4652
+ isPolling: !!target && !complete && !hasFailed && !timedOut,
4598
4653
  isFetching: getRelayrTxBundle.isFetching,
4599
4654
  error: getRelayrTxBundle.error
4600
4655
  };