gemi 0.74.0 → 0.75.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.
- package/dist/auth/AuthController.d.ts.map +1 -1
- package/dist/auth/config.d.ts +13 -0
- package/dist/auth/config.d.ts.map +1 -1
- package/dist/{chunk-43t1js09.js → chunk-hny56r47.js} +1 -1
- package/dist/{chunk-pjd63e8g.js → chunk-ppscsvv8.js} +1 -1
- package/dist/{chunk-msqr4d2d.js → chunk-ra1ccnd5.js} +2 -2
- package/dist/{chunk-msqr4d2d.js.map → chunk-ra1ccnd5.js.map} +1 -1
- package/dist/{chunk-w8jyvdgd.js → chunk-y3hmzww0.js} +1 -1
- package/dist/chunk-ytt205yt.js +19 -0
- package/dist/{chunk-smr9jn4z.js.map → chunk-ytt205yt.js.map} +6 -6
- package/dist/chunks/{ThemeProvider-D9v0VAbY.js → ThemeProvider-BiNFL6l7.js} +152 -15
- package/dist/chunks/ThemeProvider-BiNFL6l7.js.map +1 -0
- package/dist/client/QueryError.d.ts +6 -1
- package/dist/client/QueryError.d.ts.map +1 -1
- package/dist/client/QueryManagerContext.d.ts +32 -1
- package/dist/client/QueryManagerContext.d.ts.map +1 -1
- package/dist/client/QueryResource.d.ts +27 -0
- package/dist/client/QueryResource.d.ts.map +1 -1
- package/dist/client/auth/useUser.d.ts +7 -1
- package/dist/client/auth/useUser.d.ts.map +1 -1
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +34 -22
- package/dist/client/index.js.map +1 -1
- package/dist/client/retryPolicy.d.ts +49 -0
- package/dist/client/retryPolicy.d.ts.map +1 -0
- package/dist/client/useQuery.d.ts +21 -0
- package/dist/client/useQuery.d.ts.map +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/http/index.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/services/index.js +1 -1
- package/dist/testing/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-smr9jn4z.js +0 -19
- package/dist/chunks/ThemeProvider-D9v0VAbY.js.map +0 -1
- /package/dist/{chunk-43t1js09.js.map → chunk-hny56r47.js.map} +0 -0
- /package/dist/{chunk-pjd63e8g.js.map → chunk-ppscsvv8.js.map} +0 -0
- /package/dist/{chunk-w8jyvdgd.js.map → chunk-y3hmzww0.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;
|
|
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;
|
|
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
|
-
|
|
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":"
|
|
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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -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":";AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as isAbsoluteUrl, B as
|
|
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
|
-
|
|
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
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|