gemi 0.74.1 → 0.76.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.
Files changed (48) hide show
  1. package/dist/ai/AgentController.d.ts +47 -0
  2. package/dist/ai/AgentController.d.ts.map +1 -1
  3. package/dist/ai/index.js +10 -10
  4. package/dist/ai/index.js.map +7 -5
  5. package/dist/ai/providers/request.d.ts.map +1 -1
  6. package/dist/ai/store/TurnJournal.d.ts +97 -0
  7. package/dist/ai/store/TurnJournal.d.ts.map +1 -0
  8. package/dist/ai/types.d.ts +29 -3
  9. package/dist/ai/types.d.ts.map +1 -1
  10. package/dist/{chunk-2yje4e2t.js → chunk-dsgb59xm.js} +1 -1
  11. package/dist/{chunk-qn3y2sjy.js → chunk-hny56r47.js} +1 -1
  12. package/dist/{chunk-1rzn4rvz.js → chunk-p2ny6anh.js} +1 -1
  13. package/dist/{chunk-eg2n7x73.js → chunk-th77kbcq.js} +2 -2
  14. package/dist/{chunk-eg2n7x73.js.map → chunk-th77kbcq.js.map} +1 -1
  15. package/dist/{chunk-4qwz8b3z.js → chunk-ytt205yt.js} +7 -7
  16. package/dist/{chunk-4qwz8b3z.js.map → chunk-ytt205yt.js.map} +3 -3
  17. package/dist/chunks/{ThemeProvider-D9v0VAbY.js → ThemeProvider-BiNFL6l7.js} +152 -15
  18. package/dist/chunks/ThemeProvider-BiNFL6l7.js.map +1 -0
  19. package/dist/client/QueryError.d.ts +6 -1
  20. package/dist/client/QueryError.d.ts.map +1 -1
  21. package/dist/client/QueryManagerContext.d.ts +32 -1
  22. package/dist/client/QueryManagerContext.d.ts.map +1 -1
  23. package/dist/client/QueryResource.d.ts +27 -0
  24. package/dist/client/QueryResource.d.ts.map +1 -1
  25. package/dist/client/auth/useUser.d.ts +7 -1
  26. package/dist/client/auth/useUser.d.ts.map +1 -1
  27. package/dist/client/index.d.ts +3 -1
  28. package/dist/client/index.d.ts.map +1 -1
  29. package/dist/client/index.js +34 -22
  30. package/dist/client/index.js.map +1 -1
  31. package/dist/client/retryPolicy.d.ts +49 -0
  32. package/dist/client/retryPolicy.d.ts.map +1 -0
  33. package/dist/client/useQuery.d.ts +21 -0
  34. package/dist/client/useQuery.d.ts.map +1 -1
  35. package/dist/facades/index.js +1 -1
  36. package/dist/http/index.js +1 -1
  37. package/dist/i18n/index.js +1 -1
  38. package/dist/kernel/index.js +1 -1
  39. package/dist/server/index.js +1 -1
  40. package/dist/services/index.js +1 -1
  41. package/dist/services/queue/queueDriverContract.d.ts +6 -2
  42. package/dist/services/queue/queueDriverContract.d.ts.map +1 -1
  43. package/dist/testing/index.js +1 -1
  44. package/package.json +1 -1
  45. package/dist/chunks/ThemeProvider-D9v0VAbY.js.map +0 -1
  46. /package/dist/{chunk-2yje4e2t.js.map → chunk-dsgb59xm.js.map} +0 -0
  47. /package/dist/{chunk-qn3y2sjy.js.map → chunk-hny56r47.js.map} +0 -0
  48. /package/dist/{chunk-1rzn4rvz.js.map → chunk-p2ny6anh.js.map} +0 -0
@@ -1,12 +1,13 @@
1
1
  import { type PropsWithChildren } from "react";
2
2
  import { QueryResource } from "./QueryResource";
3
+ import type { RetryDelayOption, RetryOption } from "./retryPolicy";
3
4
  /**
4
5
  * App-wide `useQuery` defaults, threaded from `createRoot(RootLayout, {
5
6
  * queryConfig })` (and `init` on the client). Resolution order is per-call
6
7
  * config → these defaults → framework defaults, so a call site always wins.
7
8
  * Only keys with app-wide meaning are accepted — `lazy`, `fallbackData` and
8
9
  * `refetchUntil` stay call-site-only. Framework-internal hooks (`useUser`,
9
- * `useSignIn`) never see these.
10
+ * `useSignIn`) never see these — `useUser` has its own `user` key.
10
11
  */
11
12
  export interface QueryConfig {
12
13
  /**
@@ -19,6 +20,15 @@ export interface QueryConfig {
19
20
  /** How long cached data stays fresh before a read revalidates it, in ms. */
20
21
  staleTime?: number;
21
22
  keepPreviousData?: boolean;
23
+ /**
24
+ * Background retries for failed `suspense: false` queries. Default `3`:
25
+ * network failures, 408, 429 and 5xx, with exponential backoff; other 4xx
26
+ * are never retried. See `useQuery`'s `retry`.
27
+ */
28
+ retry?: RetryOption;
29
+ /** The wait before each retry, in ms, or `(failureCount, error) => ms`. */
30
+ retryDelay?: RetryDelayOption;
31
+ /** @deprecated Use `retryDelay`. The base of the default backoff. */
22
32
  retryIntervalOnError?: number;
23
33
  refreshInterval?: number;
24
34
  /**
@@ -31,8 +41,29 @@ export interface QueryConfig {
31
41
  * (default 5000).
32
42
  */
33
43
  focusThrottleInterval?: number;
44
+ /**
45
+ * Defaults for `useUser()`'s `/auth/me` query, which ignores the keys above.
46
+ * E.g. `{ staleTime: 30 * 60_000 }` to revalidate the signed-in user at most
47
+ * every half hour — `useSignIn`/`useSignOut` still update it immediately.
48
+ */
49
+ user?: UserQueryConfig;
50
+ }
51
+ /**
52
+ * The `useUser()` settings an app may change — per call or app-wide through
53
+ * `queryConfig.user`. Its `suspense: false` and `fallbackData` stay pinned.
54
+ */
55
+ export interface UserQueryConfig {
56
+ staleTime?: number;
57
+ retry?: RetryOption;
58
+ retryDelay?: RetryDelayOption;
59
+ revalidateOnFocus?: boolean;
60
+ focusThrottleInterval?: number;
61
+ refreshInterval?: number;
34
62
  }
35
63
  export declare const QueryConfigContext: import("react").Context<QueryConfig>;
64
+ export declare const USER_QUERY_CONFIG_KEYS: readonly ["staleTime", "retry", "retryDelay", "revalidateOnFocus", "focusThrottleInterval", "refreshInterval"];
65
+ /** Copy the listed keys whose value is defined. */
66
+ export declare function pickDefined<T extends object, K extends keyof T>(source: T | null | undefined, keys: ReadonlyArray<K>): Pick<T, K>;
36
67
  export declare function pickAppWideQueryConfig(queryConfig: QueryConfig | null | undefined): QueryConfig | null;
37
68
  export type PrefetchedData = Record<string, Record<string, any>>;
38
69
  export interface QueryManagerContextValue {
@@ -1 +1 @@
1
- {"version":3,"file":"QueryManagerContext.d.ts","sourceRoot":"","sources":["../../client/QueryManagerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,sCAA0C,CAAC;AAqB1E,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAC1C,WAAW,GAAG,IAAI,CASpB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEjE,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC/B,aAAa,CAAC;IACnB,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,mBAAmB,mDAM9B,CAAC;AAEH,eAAO,MAAM,oBAAoB,GAAI,4BAGlC,iBAAiB,CAAC;IAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC,4CA0FzD,CAAC"}
1
+ {"version":3,"file":"QueryManagerContext.d.ts","sourceRoot":"","sources":["../../client/QueryManagerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKnE;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB,sCAA0C,CAAC;AAuB1E,eAAO,MAAM,sBAAsB,gHAOsB,CAAC;AAE1D,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAC7D,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC5B,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GACrB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAOZ;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAC1C,WAAW,GAAG,IAAI,CAUpB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEjE,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC/B,aAAa,CAAC;IACnB,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,mBAAmB,mDAM9B,CAAC;AAEH,eAAO,MAAM,oBAAoB,GAAI,4BAGlC,iBAAiB,CAAC;IAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC,4CA0FzD,CAAC"}
@@ -41,6 +41,18 @@ export declare class QueryResource {
41
41
  * the wire at once.
42
42
  */
43
43
  private watchers;
44
+ /**
45
+ * Consecutive failed fetches per variant. A background retry adds to the
46
+ * count; any other fetch that fails starts it again at 1, and a success
47
+ * clears it. `useQuery`'s retry policy reads it to decide whether to go
48
+ * again and how long to wait.
49
+ */
50
+ private failures;
51
+ /**
52
+ * At most one scheduled retry per variant, however many mounted readers
53
+ * render it — each of them sees the same failure and asks for one.
54
+ */
55
+ private retryTimers;
44
56
  constructor(key: string, initialState: Record<string, any>);
45
57
  /**
46
58
  * Adopt server-prefetched data into the cache.
@@ -104,6 +116,21 @@ export declare class QueryResource {
104
116
  * put on screen.
105
117
  */
106
118
  retain(variantKey: string): () => void;
119
+ /** How many fetches of this variant have failed in a row (0 after a success). */
120
+ failureCount(variantKey: string): number;
121
+ /**
122
+ * Retry a failed variant after `delay` ms. A no-op while a retry is already
123
+ * scheduled or a request is on the wire. When the timer fires, the retry
124
+ * only goes out if the variant still sits on an error and is still
125
+ * rendered by someone.
126
+ */
127
+ scheduleRetry(variantKey: string, delay: number): void;
128
+ cancelRetry(variantKey: string): void;
129
+ /**
130
+ * Refetch a failed variant now, silently — the browser came back online.
131
+ * Starts a fresh run of failures, so the retry policy applies in full again.
132
+ */
133
+ retryNow(variantKey: string): void;
107
134
  /** Every variant key this resource holds state for, in insertion order. */
108
135
  variantKeys(): string[];
109
136
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"QueryResource.d.ts","sourceRoot":"","sources":["../../client/QueryResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,qBAAa,aAAa;IACxB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACnC,aAAa,cAAqB;IAClC,eAAe,sBAA6B;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAqB;IACrC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAA+B;IAC9C;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAM1D;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;IAsC5D,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,OAAO;IAQf;;;;;;;;;;OAUG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM;IAIvB;;;;;;;;OAQG;IACH,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAA2B,GACrC;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;IA+B7C,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,MAA2B;IA2BrE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,MAA2B;IAcrE;;;;OAIG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM;IAe9B;;;;OAIG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,IAAI;IAetC,2EAA2E;IAC3E,WAAW,IAAI,MAAM,EAAE;IAIvB;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG;IAetD,OAAO,CAAC,aAAa;IAiBrB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAoB;IA2BlE,OAAO,CAAC,UAAU,EAAE,MAAM;YAIZ,cAAc;CAgF7B"}
1
+ {"version":3,"file":"QueryResource.d.ts","sourceRoot":"","sources":["../../client/QueryResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAGvC,qBAAa,aAAa;IACxB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACnC,aAAa,cAAqB;IAClC,eAAe,sBAA6B;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAqB;IACrC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAA+B;IAC9C;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAA6B;IAC7C;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAA6B;IAC7C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAoD;gBAE3D,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAM1D;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;IAwC5D,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,OAAO;IAQf;;;;;;;;;;OAUG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM;IAIvB;;;;;;;;OAQG;IACH,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAA2B,GACrC;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;IA+B7C,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,MAA2B;IA2BrE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,GAAE,MAA2B;IAcrE;;;;OAIG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM;IAe9B;;;;OAIG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,IAAI;IAiBtC,iFAAiF;IACjF,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIxC;;;;;OAKG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAqB/C,WAAW,CAAC,UAAU,EAAE,MAAM;IAQ9B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM;IAQ3B,2EAA2E;IAC3E,WAAW,IAAI,MAAM,EAAE;IAIvB;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG;IAetD,OAAO,CAAC,aAAa;IAiBrB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAoB;IA2BlE,OAAO,CAAC,UAAU,EAAE,MAAM;YAIZ,cAAc;CA0G7B"}
@@ -1,4 +1,10 @@
1
- export declare function useUser(): {
1
+ import { type UserQueryConfig } from "../QueryManagerContext";
2
+ /**
3
+ * The signed-in user, or `null`. `config` tunes the `/auth/me` query — its
4
+ * freshness window and retry policy — over the app-wide `queryConfig.user`;
5
+ * the app's general `queryConfig` never applies here.
6
+ */
7
+ export declare function useUser(config?: UserQueryConfig): {
2
8
  user: {
3
9
  id: number;
4
10
  publicId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useUser.d.ts","sourceRoot":"","sources":["../../../client/auth/useUser.ts"],"names":[],"mappings":"AAIA,wBAAgB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBtB"}
1
+ {"version":3,"file":"useUser.d.ts","sourceRoot":"","sources":["../../../client/auth/useUser.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B/C"}
@@ -4,13 +4,15 @@ export type { QueryResult, GemiQueryDefaults } from "./useQuery";
4
4
  export { useInfiniteQuery } from "./useInfiniteQuery";
5
5
  export type { InfiniteQueryConfig, InfiniteQueryReturn, } from "./useInfiniteQuery";
6
6
  export { QueryError } from "./QueryError";
7
+ export { isRetryableQueryError } from "./retryPolicy";
8
+ export type { QueryFailure, RetryOption, RetryDelayOption, } from "./retryPolicy";
7
9
  export { useMutation, useDelete, usePatch, usePost, usePut, useUpload } from "./useMutation";
8
10
  export { useMutate } from "./useMutate";
9
11
  export { isValidationError, isFormError, isAuthenticationError, isPermissionError, isCsrfError, isNotFoundError, isRateLimitError, isServerError, isNetworkError, mutationErrorKind, } from "./MutationError";
10
12
  export type { MutationError, MutationErrorKind, MutationValidationError, MutationFormError, MutationServerError, MutationMessageError, } from "./MutationError";
11
13
  export { Form, FormError, useMutationStatus, useFormStatus, useFormData, FormFieldContainer, ValidationErrors, } from "./Mutation";
12
14
  export { QueryManagerProvider } from "./QueryManagerContext";
13
- export type { QueryConfig } from "./QueryManagerContext";
15
+ export type { QueryConfig, UserQueryConfig } from "./QueryManagerContext";
14
16
  export { useParams } from "./useParams";
15
17
  export { useDomain } from "./useDomain";
16
18
  export { useLocation } from "./useLocation";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { A as isAbsoluteUrl, B as QueryError, C as useNavigate, D as ServerDataProvider, E as ServerDataContext, F as applyParams$1, I as QueryConfigContext, L as QueryManagerContext, M as Action, O as useLocation, P as toVariantKey, R as QueryManagerProvider, S as useSearchParams, T as I18nProvider, V as Subject, _ as registerDictionary, a as m, b as routeDataUrl, c as ClientRouterContext, d as ComponentsProvider, f as initialViewModulesReady, g as loadDictionaryForRender, h as loadDictionary, i as WebSocketContextProvider, k as domainUrl, l as ClientRouterProvider, m as subscribeViewModules, n as useTheme, o as RouteTransitionProvider, p as loadViewModule, r as WebSocketContext, s as useRouteTransition, t as ThemeProvider, u as ComponentsContext, v as setActiveLocale, w as I18nContext, x as useRoute, y as readRoutePayload, z as DEFAULT_STALE_TIME } from "../chunks/ThemeProvider-D9v0VAbY.js";
1
+ import { A as isAbsoluteUrl, B as pickDefined, C as useNavigate, D as ServerDataProvider, E as ServerDataContext, F as applyParams$1, G as QueryError, H as isRetryableQueryError, I as QueryConfigContext, K as Subject, L as QueryManagerContext, M as Action, O as useLocation, P as toVariantKey, R as QueryManagerProvider, S as useSearchParams, T as I18nProvider, U as retryDelayFor, V as DEFAULT_STALE_TIME, W as shouldRetryQuery, _ as registerDictionary, a as m, b as routeDataUrl, c as ClientRouterContext, d as ComponentsProvider, f as initialViewModulesReady, g as loadDictionaryForRender, h as loadDictionary, i as WebSocketContextProvider, k as domainUrl, l as ClientRouterProvider, m as subscribeViewModules, n as useTheme, o as RouteTransitionProvider, p as loadViewModule, r as WebSocketContext, s as useRouteTransition, t as ThemeProvider, u as ComponentsContext, v as setActiveLocale, w as I18nContext, x as useRoute, y as readRoutePayload, z as USER_QUERY_CONFIG_KEYS } from "../chunks/ThemeProvider-BiNFL6l7.js";
2
2
  import { n as RouteStateContext, r as RouteStateProvider, t as useParams } from "../chunks/useParams-BN3XXfmG.js";
3
3
  import { Fragment, StrictMode, Suspense, createContext, createElement, isValidElement, memo, use, useCallback, useContext, useDeferredValue, useEffect, useMemo, useRef, useState, useSyncExternalStore, useTransition } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -40,7 +40,7 @@ function isEventLike(value) {
40
40
  var defaultConfig = {
41
41
  fallbackData: null,
42
42
  keepPreviousData: true,
43
- retryIntervalOnError: 1e4,
43
+ retry: 3,
44
44
  refreshInterval: 999999,
45
45
  revalidateOnFocus: false,
46
46
  focusThrottleInterval: 5e3,
@@ -55,7 +55,8 @@ var defaultOptions$1 = {
55
55
  };
56
56
  function useQuery(url, ...args) {
57
57
  const [options, config] = args;
58
- const merged = { ...useContext(QueryConfigContext) };
58
+ const { user: _user, ...queryConfig } = useContext(QueryConfigContext) ?? {};
59
+ const merged = { ...queryConfig };
59
60
  if (config) {
60
61
  for (const key of Object.keys(config)) if (config[key] !== void 0) merged[key] = config[key];
61
62
  }
@@ -101,8 +102,6 @@ function useFrameworkQuery(url, ...args) {
101
102
  const configRef = useRef(config);
102
103
  configRef.current = config;
103
104
  const refreshIntervalRef = useRef(null);
104
- const retryIntervalRef = useRef(null);
105
- const retryingMap = useRef(/* @__PURE__ */ new Map());
106
105
  const fetchedRef = useRef(!lazy);
107
106
  const refetchUntilTimerRef = useRef(null);
108
107
  const refetchUntilDurationRef = useRef(0);
@@ -152,30 +151,35 @@ function useFrameworkQuery(url, ...args) {
152
151
  const searchHint = variantKey ? `, { search: ${JSON.stringify(Object.fromEntries(new URLSearchParams(variantKey)))} }` : "";
153
152
  console.warn(`[gemi] useQuery("${url}") rendered on the server without data. The server never fetches, so this page ships without it and the client suspends after hydration. Add \`Query.prefetch("${url}"${searchHint})\` to the route's view handler.`);
154
153
  }
155
- const retry = useCallback((vk) => {
156
- if (!retryingMap.current.get(vk)) {
157
- if (configRef.current.debug) console.log("retrying", vk);
158
- retryingMap.current.set(vk, true);
159
- retryIntervalRef.current = setTimeout(() => {
160
- resource.getVariant(vk, configRef.current.staleTime);
161
- retryingMap.current.set(vk, false);
162
- }, configRef.current.retryIntervalOnError);
163
- }
164
- }, [resource]);
165
154
  useEffect(() => {
166
155
  if (fetchedRef.current) resource.getVariant(variantKey, configRef.current.staleTime);
167
- return () => {
168
- clearTimeout(retryIntervalRef.current);
169
- };
170
156
  }, [variantKey, resource]);
171
157
  useEffect(() => {
172
- if (!suspense && snapshot?.error) retry(variantKey);
158
+ if (suspense || !snapshot?.error || snapshot.loading) return;
159
+ const cfg = configRef.current;
160
+ const error = snapshot.error;
161
+ const failureCount = Math.max(1, resource.failureCount(variantKey));
162
+ if (!shouldRetryQuery(failureCount, error, cfg.retry)) return;
163
+ const delay = retryDelayFor(failureCount, error, cfg.retryDelay, cfg.retryIntervalOnError);
164
+ if (cfg.debug) console.log("retrying", variantKey, "in", delay);
165
+ resource.scheduleRetry(variantKey, delay);
173
166
  }, [
174
167
  snapshot,
175
168
  suspense,
176
- retry,
169
+ resource,
177
170
  variantKey
178
171
  ]);
172
+ useEffect(() => {
173
+ if (typeof window === "undefined") return;
174
+ const onOnline = () => {
175
+ const state = resource.peek(variantKey);
176
+ if (!state?.error) return;
177
+ if (!shouldRetryQuery(1, state.error, configRef.current.retry)) return;
178
+ resource.retryNow(variantKey);
179
+ };
180
+ window.addEventListener("online", onOnline);
181
+ return () => window.removeEventListener("online", onOnline);
182
+ }, [resource, variantKey]);
179
183
  useEffect(() => {
180
184
  const cfg = configRef.current;
181
185
  if (!cfg.refetchUntil) return;
@@ -1905,9 +1909,17 @@ function useResetPassword(args = defaultArgs) {
1905
1909
  }
1906
1910
  //#endregion
1907
1911
  //#region client/auth/useUser.ts
1908
- function useUser() {
1912
+ /**
1913
+ * The signed-in user, or `null`. `config` tunes the `/auth/me` query — its
1914
+ * freshness window and retry policy — over the app-wide `queryConfig.user`;
1915
+ * the app's general `queryConfig` never applies here.
1916
+ */
1917
+ function useUser(config) {
1909
1918
  const { auth } = useContext(ServerDataContext);
1919
+ const appUserConfig = useContext(QueryConfigContext)?.user;
1910
1920
  const { data: user, loading, error } = useFrameworkQuery("/auth/me", {}, {
1921
+ ...pickDefined(appUserConfig, USER_QUERY_CONFIG_KEYS),
1922
+ ...pickDefined(config, USER_QUERY_CONFIG_KEYS),
1911
1923
  fallbackData: auth?.user ? auth.user : null,
1912
1924
  suspense: false
1913
1925
  });
@@ -2326,6 +2338,6 @@ function useAppIdMissmatch() {
2326
2338
  return current !== next;
2327
2339
  }
2328
2340
  //#endregion
2329
- export { Form, FormError, FormFieldContainer, Head, Image, Link, OpenGraphImage, QueryError, QueryManagerProvider, Redirect, ValidationErrors, create, createRoot, defineDictionary, init, isAuthenticationError, isCsrfError, isFormError, isNetworkError, isNotFoundError, isPermissionError, isRateLimitError, isServerError, isValidationError, mutationErrorKind, useAppIdMissmatch, useBreadcrumbs, useBroadcast, useDelete, useDictionary, useDomain, useFeature, useFeatures, useForgotPassword, useFormData, useFormStatus, useInfiniteQuery, useIntendedUrl, useIsNavigationPending, useLocale, useLocation, useMutate, useMutation, useMutationStatus, useNavigate, useNavigationProgress, useParams, usePatch, usePost, usePrefetch, usePut, useQuery, useResetPassword, useRoute, useRouteTransition, useSearchParams, useSignIn, useSignOut, useSignUp, useSubscription, useTheme, useTranslator, useUpload, useUser };
2341
+ export { Form, FormError, FormFieldContainer, Head, Image, Link, OpenGraphImage, QueryError, QueryManagerProvider, Redirect, ValidationErrors, create, createRoot, defineDictionary, init, isAuthenticationError, isCsrfError, isFormError, isNetworkError, isNotFoundError, isPermissionError, isRateLimitError, isRetryableQueryError, isServerError, isValidationError, mutationErrorKind, useAppIdMissmatch, useBreadcrumbs, useBroadcast, useDelete, useDictionary, useDomain, useFeature, useFeatures, useForgotPassword, useFormData, useFormStatus, useInfiniteQuery, useIntendedUrl, useIsNavigationPending, useLocale, useLocation, useMutate, useMutation, useMutationStatus, useNavigate, useNavigationProgress, useParams, usePatch, usePost, usePrefetch, usePut, useQuery, useResetPassword, useRoute, useRouteTransition, useSearchParams, useSignIn, useSignOut, useSignUp, useSubscription, useTheme, useTranslator, useUpload, useUser };
2330
2342
 
2331
2343
  //# sourceMappingURL=index.js.map