@ethlete/query 6.0.0-next.27 → 6.0.0-next.29
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/CHANGELOG.md +46 -0
- package/fesm2022/ethlete-query-testing.mjs +2 -1
- package/fesm2022/ethlete-query-testing.mjs.map +1 -1
- package/fesm2022/ethlete-query.mjs +946 -462
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ethlete-query-testing.d.ts +2 -0
- package/types/ethlete-query.d.ts +303 -76
package/types/ethlete-query.d.ts
CHANGED
|
@@ -211,6 +211,8 @@ type QueryExecuteOptions<TArgs extends QueryArgs> = {
|
|
|
211
211
|
args: RequestArgs<TArgs> | null;
|
|
212
212
|
options?: RunQueryExecuteOptions;
|
|
213
213
|
isSecure?: boolean;
|
|
214
|
+
/** @see QueryRepositoryRequestOptions.isRefreshable */
|
|
215
|
+
isRefreshable?: boolean;
|
|
214
216
|
};
|
|
215
217
|
declare const queryExecute: <TArgs extends QueryArgs>(options: QueryExecuteOptions<TArgs>) => void;
|
|
216
218
|
declare const circularQueryDependencyChecker: () => {
|
|
@@ -233,6 +235,12 @@ type QueryRefreshCause = {
|
|
|
233
235
|
/** Whether another tab asked for it rather than this one. */
|
|
234
236
|
otherTab: boolean;
|
|
235
237
|
};
|
|
238
|
+
/**
|
|
239
|
+
* What tore a cache entry down: the last consumer went away (`unbind`), its `keepUnusedFor` window ran
|
|
240
|
+
* out (`expired`), it was the least recently orphaned entry over the cap (`unused-cap`), a logout
|
|
241
|
+
* dropped every secure entry (`logout`), or something evicted it by hand (`manual`).
|
|
242
|
+
*/
|
|
243
|
+
type QueryRepositoryEntryDestroyedCause = 'unbind' | 'expired' | 'unused-cap' | 'logout' | 'manual';
|
|
236
244
|
type QueryRepositoryEvent = {
|
|
237
245
|
type: 'request-error';
|
|
238
246
|
error: HttpErrorResponse;
|
|
@@ -285,6 +293,22 @@ type QueryRepositoryEvent = {
|
|
|
285
293
|
cause: QueryRefreshCause;
|
|
286
294
|
/** The requests that were re-executed, in cache order. */
|
|
287
295
|
requests: HttpRequest<QueryArgs>[];
|
|
296
|
+
} | {
|
|
297
|
+
/**
|
|
298
|
+
* A cache entry was torn down: its request is destroyed and the key is gone from the cache.
|
|
299
|
+
* Emitted after the deletion, and for every teardown path there is - which is what makes "why
|
|
300
|
+
* did this entry disappear" answerable at all. {@link unbindAllSecure} emits one of these per
|
|
301
|
+
* entry as well as its own `unbind-all-secure`.
|
|
302
|
+
*
|
|
303
|
+
* The repository keeps no record of its own; a consumer that wants a history of destroyed
|
|
304
|
+
* entries (the devtools panel) is the one that keeps it.
|
|
305
|
+
*/
|
|
306
|
+
type: 'entry-destroyed';
|
|
307
|
+
key: QueryKey;
|
|
308
|
+
isSecure: boolean;
|
|
309
|
+
method: QueryMethod;
|
|
310
|
+
url: string;
|
|
311
|
+
cause: QueryRepositoryEntryDestroyedCause;
|
|
288
312
|
} | {
|
|
289
313
|
/**
|
|
290
314
|
* Every secure entry was torn down at once - a logout. Emitted after the cache is cleared so
|
|
@@ -320,6 +344,12 @@ type QueryRepositoryRequestOptions<TArgs extends QueryArgs> = {
|
|
|
320
344
|
runQueryOptions?: RunQueryExecuteOptions;
|
|
321
345
|
/** @see QueryConfig.silenceUncacheableAllowCacheError */
|
|
322
346
|
silenceUncacheableAllowCacheError?: boolean;
|
|
347
|
+
/**
|
|
348
|
+
* Whether re-running the request on its own is safe, i.e. whether {@link QueryRepository.refreshInUse}
|
|
349
|
+
* may fire it again. Defaults to the method being a read (`GET`/`HEAD`/`OPTIONS`); the GraphQL
|
|
350
|
+
* execute path passes `true` for a query transported via `POST`.
|
|
351
|
+
*/
|
|
352
|
+
isRefreshable?: boolean;
|
|
323
353
|
};
|
|
324
354
|
type QueryRepositoryItem<TArgs extends QueryArgs> = {
|
|
325
355
|
/** The key of the request (either a cache key for cacheable requests or a UUID for uncacheable requests) */
|
|
@@ -516,8 +546,14 @@ type JsonPath = (string | number)[];
|
|
|
516
546
|
* whole body, which is what lets it survive a refetch that returns a differently-valued but same-shaped
|
|
517
547
|
* response.
|
|
518
548
|
*
|
|
519
|
-
* `reset` is never stored or replayed - arming one clears the other ops already armed at its
|
|
520
|
-
* instead, so the panel's "reset this value" action and its "arm an edit" actions
|
|
549
|
+
* `reset` is never stored or replayed - arming one clears the other ops already armed at its path or
|
|
550
|
+
* anywhere below it instead, so the panel's "reset this value" action and its "arm an edit" actions
|
|
551
|
+
* share one entry point. Resetting a container therefore undoes a "fill recursively" run, whose ops
|
|
552
|
+
* sit on the leaves rather than on the container itself.
|
|
553
|
+
*
|
|
554
|
+
* On the preset ops, `custom` - when present - is the exact value replayed, and `preset` is only the
|
|
555
|
+
* label it was generated under. Values are generated once at arm time and stored, never re-rolled
|
|
556
|
+
* inside apply, so a refetch replays the same response instead of reshuffling it.
|
|
521
557
|
*/
|
|
522
558
|
type OverrideOp = {
|
|
523
559
|
type: 'set';
|
|
@@ -526,7 +562,7 @@ type OverrideOp = {
|
|
|
526
562
|
} | {
|
|
527
563
|
type: 'stringPreset';
|
|
528
564
|
path: JsonPath;
|
|
529
|
-
preset: 'short' | 'long' | 'unicode' | 'custom';
|
|
565
|
+
preset: 'short' | 'long' | 'longWord' | 'unicode' | 'custom';
|
|
530
566
|
custom?: string;
|
|
531
567
|
} | {
|
|
532
568
|
type: 'numberPreset';
|
|
@@ -573,11 +609,16 @@ type QueryDevtoolsOverridesHandle = {
|
|
|
573
609
|
/** The write side, used by the instrumentation inside the query itself. */
|
|
574
610
|
type QueryDevtoolsOverridesRecorder = QueryDevtoolsOverridesHandle & {
|
|
575
611
|
/**
|
|
576
|
-
* Arms a new op, or - for `{ type: 'reset' }` - disarms whatever op(s) already sit at that
|
|
577
|
-
* instead of adding one.
|
|
612
|
+
* Arms a new op, or - for `{ type: 'reset' }` - disarms whatever op(s) already sit at that path or
|
|
613
|
+
* below it instead of adding one.
|
|
578
614
|
*/
|
|
579
615
|
arm: (op: OverrideOp) => void;
|
|
580
616
|
};
|
|
617
|
+
/**
|
|
618
|
+
* Whether any of `entries` is armed at `path` or anywhere below it - what the panel's menu asks before
|
|
619
|
+
* offering "Reset", so the destructive action is hidden where it would be a silent no-op.
|
|
620
|
+
*/
|
|
621
|
+
declare const hasQueryDevtoolsOverridesAtPath: (entries: readonly QueryDevtoolsOverrideEntry[], path: JsonPath) => boolean;
|
|
581
622
|
/**
|
|
582
623
|
* Clones `item` (a plain object array element) with every identity-shaped field replaced by a fresh
|
|
583
624
|
* value, so a duplicated row never collides with the one it was copied from. A field counts as identity
|
|
@@ -610,6 +651,20 @@ declare const isDateShapedLeaf: (key: string | number | null, value: unknown) =>
|
|
|
610
651
|
* op list with the exact same walk the docs describe, rather than a second, possibly-drifted one.
|
|
611
652
|
*/
|
|
612
653
|
declare const collectLeafPaths: (value: unknown, kind: "string" | "number" | "boolean") => JsonPath[];
|
|
654
|
+
/**
|
|
655
|
+
* Generates a fresh sample value for a string preset, so filling twenty fields yields twenty different
|
|
656
|
+
* values instead of twenty identical ones. Call it at arm time and store the result in the op's
|
|
657
|
+
* `custom` field - generating inside apply would reshuffle the response on every refetch. `longWord`
|
|
658
|
+
* is a single unbreakable token (a compound word, a URL, a hex blob) - it tests overflow, where
|
|
659
|
+
* `long` tests wrapping.
|
|
660
|
+
*/
|
|
661
|
+
declare const generateQueryDevtoolsStringPreset: (preset: "short" | "long" | "longWord" | "unicode") => string;
|
|
662
|
+
/**
|
|
663
|
+
* Generates a fresh sample value for a number preset - same arm-time contract as
|
|
664
|
+
* {@link generateQueryDevtoolsStringPreset}. `negative` and `huge` vary in magnitude so a batch fill
|
|
665
|
+
* produces varied digit counts; `zero` is always `0`.
|
|
666
|
+
*/
|
|
667
|
+
declare const generateQueryDevtoolsNumberPreset: (preset: "zero" | "negative" | "huge") => number;
|
|
613
668
|
/**
|
|
614
669
|
* Replays `entries` against `raw`, in order, and reports which ones no longer resolve. Shared by the
|
|
615
670
|
* pipeline (which only needs {@link value}) and the panel's menu (which previews a value and marks stale
|
|
@@ -681,6 +736,24 @@ type QueryDevtoolsPayload = {
|
|
|
681
736
|
* waiting for can no longer reach it.
|
|
682
737
|
*/
|
|
683
738
|
type QueryDevtoolsRunStatus = 'pending' | 'success' | 'error' | 'aborted';
|
|
739
|
+
/**
|
|
740
|
+
* How a run failed, kept on the run itself. The query's own `error` signal is the live one, but it is
|
|
741
|
+
* blanked whenever the query resets - a logout resets every secure query - so it cannot be read back
|
|
742
|
+
* after the fact. This is the copy that survives.
|
|
743
|
+
*/
|
|
744
|
+
type QueryDevtoolsRunError = {
|
|
745
|
+
/** The HTTP status code, or 0 for a failure that never reached a response. */
|
|
746
|
+
code: number;
|
|
747
|
+
/** Every message the error carried, flattened. @see queryErrorMessages */
|
|
748
|
+
messages: string[];
|
|
749
|
+
/**
|
|
750
|
+
* The error response body. Only the newest few runs keep theirs, under the same budget as
|
|
751
|
+
* {@link QueryDevtoolsRun.response}.
|
|
752
|
+
*/
|
|
753
|
+
body: unknown;
|
|
754
|
+
/** Whether {@link body} still holds this run's error body. */
|
|
755
|
+
hasBody: boolean;
|
|
756
|
+
};
|
|
684
757
|
/**
|
|
685
758
|
* A single run of a query, kept alongside the running totals so overlapping runs stay tellable apart -
|
|
686
759
|
* which is what turns "ran 40 times" into "ran 40 times in two seconds".
|
|
@@ -722,6 +795,8 @@ type QueryDevtoolsRun = {
|
|
|
722
795
|
response: unknown;
|
|
723
796
|
/** Whether {@link response} still holds this run's body; a dropped and an empty body both read `null`. */
|
|
724
797
|
hasResponse: boolean;
|
|
798
|
+
/** How the run failed, or `null` for one that did not. */
|
|
799
|
+
error: QueryDevtoolsRunError | null;
|
|
725
800
|
};
|
|
726
801
|
/** The read side of a stats recorder, as a {@link QueryDevtoolsEntry} exposes it to the panel. */
|
|
727
802
|
type QueryDevtoolsStatsHandle = {
|
|
@@ -744,7 +819,10 @@ type QueryDevtoolsStatsRecorder = QueryDevtoolsStatsHandle & {
|
|
|
744
819
|
}) => void;
|
|
745
820
|
recordResponse: (payload: QueryDevtoolsPayload) => void;
|
|
746
821
|
recordError: (options?: {
|
|
822
|
+
/** Whether the error is a devtools fault rather than a real failure. */
|
|
747
823
|
faulted?: boolean;
|
|
824
|
+
/** The failure itself, for {@link QueryDevtoolsRun.error}. */
|
|
825
|
+
error?: QueryErrorResponse;
|
|
748
826
|
}) => void;
|
|
749
827
|
/**
|
|
750
828
|
* Raises the attempt count of the run in flight. Idempotent per attempt, so a caller driven off a
|
|
@@ -754,6 +832,14 @@ type QueryDevtoolsStatsRecorder = QueryDevtoolsStatsHandle & {
|
|
|
754
832
|
attempt: number;
|
|
755
833
|
}) => void;
|
|
756
834
|
};
|
|
835
|
+
/**
|
|
836
|
+
* How many bodies each query retains - {@link QueryDevtoolsOptions.responseHistory}, or `5`. Only a run
|
|
837
|
+
* that still holds one can be an end of a response diff, so the panel reads this to say why an older run
|
|
838
|
+
* can no longer be picked.
|
|
839
|
+
*
|
|
840
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
841
|
+
*/
|
|
842
|
+
declare const queryDevtoolsResponseHistory: () => number;
|
|
757
843
|
/**
|
|
758
844
|
* The size of a payload in bytes, and whether that size is the one that went over the wire. Only a
|
|
759
845
|
* `content-length` header is exact; everything else is measured by serializing the body.
|
|
@@ -1084,6 +1170,9 @@ type BaseQueryCreatorOptionsSubtle = {
|
|
|
1084
1170
|
* - `true` means the request will always be cached
|
|
1085
1171
|
* - `false` means the request will never be cached
|
|
1086
1172
|
* - `undefined` means the request will be cached if the method is GET, OPTIONS or HEAD
|
|
1173
|
+
*
|
|
1174
|
+
* This says nothing about whether the request may be re-run: `refreshQueriesInUse()` and
|
|
1175
|
+
* `invalidateQueries()` still only fire reads.
|
|
1087
1176
|
*/
|
|
1088
1177
|
useQueryRepositoryCache?: boolean;
|
|
1089
1178
|
};
|
|
@@ -2056,8 +2145,9 @@ type QueryClient = {
|
|
|
2056
2145
|
* the new value only affects *subsequent* requests, so anything already resolved keeps data
|
|
2057
2146
|
* fetched under the old one until this is called.
|
|
2058
2147
|
*
|
|
2059
|
-
* Only
|
|
2060
|
-
* surprise than a stale read.
|
|
2148
|
+
* Only reads are refreshed - `GET`/`HEAD`/`OPTIONS` and GraphQL queries transported via `POST`:
|
|
2149
|
+
* re-firing a mutation nobody asked for would be a far worse surprise than a stale read. A `POST`
|
|
2150
|
+
* that merely opted into the repository cache stays untouched.
|
|
2061
2151
|
*
|
|
2062
2152
|
* @see QueryClient.invalidateQueries for the case where the *data* went stale rather than the
|
|
2063
2153
|
* request, which is the one that also concerns the user's other tabs.
|
|
@@ -2076,7 +2166,7 @@ type QueryClient = {
|
|
|
2076
2166
|
* client.invalidateQueries({ url: '/players' }); // /players, /players/1, /players?page=2
|
|
2077
2167
|
* client.invalidateQueries(); // everything on screen, here and in the other tabs
|
|
2078
2168
|
*
|
|
2079
|
-
* Same set as {@link QueryClient.refreshQueriesInUse}:
|
|
2169
|
+
* Same set as {@link QueryClient.refreshQueriesInUse}: reads with at least one
|
|
2080
2170
|
* consumer, cache bypassed, in-flight requests restarted. Entries sitting out their `keepUnusedFor`
|
|
2081
2171
|
* window are deliberately left alone - they revalidate on their own when a consumer binds again,
|
|
2082
2172
|
* and refreshing what nobody is looking at is how an invalidation turns into a request storm.
|
|
@@ -2595,6 +2685,10 @@ type CreatePagedQueryStackOptions<TArgs extends QueryArgs, TNormPagination exten
|
|
|
2595
2685
|
/**
|
|
2596
2686
|
* If true, no queries will be executed while the paged query is loading.
|
|
2597
2687
|
* This is useful if you need the current response to be used in the next query.
|
|
2688
|
+
*
|
|
2689
|
+
* This governs the `fetchNextPage()` / `fetchPreviousPage()` methods only. The
|
|
2690
|
+
* `canFetchNextPage` / `canFetchPreviousPage` signals are `false` while any page loads either way,
|
|
2691
|
+
* so a UI bound to them never issues the concurrent call this option would allow.
|
|
2598
2692
|
*/
|
|
2599
2693
|
blockExecutionDuringLoading?: boolean;
|
|
2600
2694
|
};
|
|
@@ -3221,8 +3315,10 @@ type CreateQueryStackOptions<TCreator extends AnyQueryCreator, TDeps extends ()
|
|
|
3221
3315
|
};
|
|
3222
3316
|
/**
|
|
3223
3317
|
* Transforms the responses of all queries in the stack. Useful for merging or filtering responses.
|
|
3318
|
+
* A response is `null` while its query is loading or errored, so a transform runs on nulls before
|
|
3319
|
+
* anything has settled.
|
|
3224
3320
|
*/
|
|
3225
|
-
transform?: (responses: ResponseType<QueryArgsOf<TCreator>>[]) => TTransform;
|
|
3321
|
+
transform?: (responses: (ResponseType<QueryArgsOf<TCreator>> | null)[]) => TTransform;
|
|
3226
3322
|
/**
|
|
3227
3323
|
* If true, prevents creating queries with identical args.
|
|
3228
3324
|
* Useful for append mode to avoid duplicate data fetching.
|
|
@@ -3327,6 +3423,12 @@ type SecureExecuteFactoryOptions<TArgs extends QueryArgs> = {
|
|
|
3327
3423
|
authProvider: AnyBearerAuthProvider;
|
|
3328
3424
|
deps: QueryDependencies;
|
|
3329
3425
|
state: QueryState<TArgs>;
|
|
3426
|
+
/**
|
|
3427
|
+
* Whether the query runs itself rather than only on an explicit `execute()` - the same condition
|
|
3428
|
+
* `maybeExecute` and the `withArgs` feature use. Only those are re-run once a new session starts;
|
|
3429
|
+
* re-firing a mutation on the next login would repeat it behind the user's back.
|
|
3430
|
+
*/
|
|
3431
|
+
autoExecutes: boolean;
|
|
3330
3432
|
transformAuthAndExec: (executeArgs: QueryExecuteArgs<TArgs> | undefined, tokens: {
|
|
3331
3433
|
accessToken: string;
|
|
3332
3434
|
}, headers: HttpHeaders, executeState: ReturnType<typeof setupQueryExecuteState>) => void;
|
|
@@ -3377,8 +3479,13 @@ type TokenRefreshQueryConfig<TArgs extends QueryArgs> = AuthQueryConfig<TArgs> &
|
|
|
3377
3479
|
maxBufferMs?: number;
|
|
3378
3480
|
};
|
|
3379
3481
|
/**
|
|
3380
|
-
* Minimum interval between
|
|
3482
|
+
* Minimum interval between the *proactive* refreshes the expiry timer schedules, in milliseconds.
|
|
3381
3483
|
* Prevents rapid refresh loops in case of issues.
|
|
3484
|
+
*
|
|
3485
|
+
* A refresh a 401 asked for is never throttled by this - a token revoked seconds after a proactive
|
|
3486
|
+
* refresh is exactly when the request must go out. Those are deduplicated instead: one refresh is
|
|
3487
|
+
* in flight at a time.
|
|
3488
|
+
*
|
|
3382
3489
|
* @default 30000 (30 seconds)
|
|
3383
3490
|
*/
|
|
3384
3491
|
minRefreshInterval?: number;
|
|
@@ -3416,6 +3523,34 @@ type TokenRefreshQueryConfig<TArgs extends QueryArgs> = AuthQueryConfig<TArgs> &
|
|
|
3416
3523
|
* @default true
|
|
3417
3524
|
*/
|
|
3418
3525
|
autoRetryOn401?: boolean;
|
|
3526
|
+
/**
|
|
3527
|
+
* What to do once the refresh query has failed for good - `retryConfig` decides what is retried,
|
|
3528
|
+
* this decides what a failure that survived it means.
|
|
3529
|
+
*
|
|
3530
|
+
* Defaults to ending the session for any status `retryConfig.retryableStatusCodes` does not list:
|
|
3531
|
+
* those are the failures that could still succeed later, everything else leaves the tab holding a
|
|
3532
|
+
* token the server will not renew. Without this the session would look valid while every secure
|
|
3533
|
+
* query 401s.
|
|
3534
|
+
*
|
|
3535
|
+
* @example
|
|
3536
|
+
* withRefreshQuery('refresh', {
|
|
3537
|
+
* queryCreator: refresh,
|
|
3538
|
+
* onRefreshFailure: ({ error, logout }) => {
|
|
3539
|
+
* if (error.code !== 503) logout();
|
|
3540
|
+
* },
|
|
3541
|
+
* });
|
|
3542
|
+
*/
|
|
3543
|
+
onRefreshFailure?: (failure: RefreshFailure) => void;
|
|
3544
|
+
};
|
|
3545
|
+
/** What {@link TokenRefreshQueryConfig.onRefreshFailure} is handed when a refresh gives up. */
|
|
3546
|
+
type RefreshFailure = {
|
|
3547
|
+
/** The error the refresh query ended on. */
|
|
3548
|
+
error: QueryErrorResponse;
|
|
3549
|
+
/**
|
|
3550
|
+
* Ends the session, exactly as the provider's own `logout()` does, reporting `sessionEndCause`
|
|
3551
|
+
* as `'expired'`.
|
|
3552
|
+
*/
|
|
3553
|
+
logout: () => void;
|
|
3419
3554
|
};
|
|
3420
3555
|
type AuthQueryBuilder<TKey extends string, TArgs extends QueryArgs> = {
|
|
3421
3556
|
_type: 'authQuery';
|
|
@@ -3483,8 +3618,9 @@ declare const withInactivityLogout: <TBuilders extends readonly AnyQueryBuilder[
|
|
|
3483
3618
|
|
|
3484
3619
|
type BearerAuthMultiTabSyncConfig = {
|
|
3485
3620
|
/**
|
|
3486
|
-
* Channel name for BroadcastChannel
|
|
3487
|
-
*
|
|
3621
|
+
* Channel name for BroadcastChannel. Defaults to a channel of the provider's own, so two providers
|
|
3622
|
+
* reachable from the same origin do not sync each other's sessions.
|
|
3623
|
+
* @default `ethlete-auth-sync:<provider name>`
|
|
3488
3624
|
*/
|
|
3489
3625
|
channelName?: string;
|
|
3490
3626
|
/**
|
|
@@ -3730,6 +3866,9 @@ type QueryFailureEventData = {
|
|
|
3730
3866
|
type TokenRefreshEventData = {
|
|
3731
3867
|
automatic: boolean;
|
|
3732
3868
|
};
|
|
3869
|
+
type LogoutEventData = {
|
|
3870
|
+
cause: BearerAuthSessionEndCause | null;
|
|
3871
|
+
};
|
|
3733
3872
|
type LeaderStatusChangeEventData = {
|
|
3734
3873
|
isLeader: boolean;
|
|
3735
3874
|
};
|
|
@@ -3737,7 +3876,7 @@ type LeaderInstanceCountChangeEventData = {
|
|
|
3737
3876
|
count: number;
|
|
3738
3877
|
};
|
|
3739
3878
|
type TrackingEventDataMap<TBuilders extends readonly AnyQueryBuilder[]> = {
|
|
3740
|
-
[K in TrackingEventName<TBuilders>]: K extends `${string}Execute` ? QueryExecuteEventData<ExtractArgsForEvent<TBuilders, K>> : K extends `${string}Success` ? QuerySuccessEventData<ExtractArgsForEvent<TBuilders, K>> : K extends `${string}Failure` ? QueryFailureEventData : K extends 'tokenRefreshSuccess' ? TokenRefreshEventData : K extends 'logout' ?
|
|
3879
|
+
[K in TrackingEventName<TBuilders>]: K extends `${string}Execute` ? QueryExecuteEventData<ExtractArgsForEvent<TBuilders, K>> : K extends `${string}Success` ? QuerySuccessEventData<ExtractArgsForEvent<TBuilders, K>> : K extends `${string}Failure` ? QueryFailureEventData : K extends 'tokenRefreshSuccess' ? TokenRefreshEventData : K extends 'logout' ? LogoutEventData : K extends 'leaderStatusChange' ? LeaderStatusChangeEventData : K extends 'leaderInstanceCountChange' ? LeaderInstanceCountChangeEventData : never;
|
|
3741
3880
|
};
|
|
3742
3881
|
type TrackingEventHandler<TData> = (data: TData) => void;
|
|
3743
3882
|
type TrackingConfig<TBuilders extends readonly AnyQueryBuilder[] = readonly AnyQueryBuilder[]> = {
|
|
@@ -3797,6 +3936,28 @@ type BearerAuthExecutionStateTokenSeed = {
|
|
|
3797
3936
|
state: 'success';
|
|
3798
3937
|
};
|
|
3799
3938
|
type BearerAuthExecutionState<TType extends string = string> = BearerAuthExecutionStateLoading<TType> | BearerAuthExecutionStateSuccess<TType> | BearerAuthExecutionStateError<TType> | BearerAuthExecutionStateLogout | BearerAuthExecutionStateTokenSeed;
|
|
3939
|
+
/**
|
|
3940
|
+
* Whether this tab has a session, and whether it is still finding out.
|
|
3941
|
+
*
|
|
3942
|
+
* - `unknown` - the provider has not finished its own startup yet. Never observed from a component.
|
|
3943
|
+
* - `restoring` - a session restore is in flight (`withPersistentAuth`'s auto-login).
|
|
3944
|
+
* - `authenticated` - tokens are applied.
|
|
3945
|
+
* - `anonymous` - no session, and nothing is trying to get one.
|
|
3946
|
+
*/
|
|
3947
|
+
type BearerAuthSessionStatus = 'unknown' | 'restoring' | 'authenticated' | 'anonymous';
|
|
3948
|
+
/**
|
|
3949
|
+
* Why the session ended. A user-initiated logout must stay put; a session that ended on its own
|
|
3950
|
+
* usually returns the user to where they were, so the two cannot be told apart by state alone.
|
|
3951
|
+
*/
|
|
3952
|
+
type BearerAuthSessionEndCause =
|
|
3953
|
+
/** `logout()` called with no cause - a user clicking "log out". */
|
|
3954
|
+
'user'
|
|
3955
|
+
/** `withInactivityLogout`'s timer elapsed. */
|
|
3956
|
+
| 'inactivity'
|
|
3957
|
+
/** A token refresh failed for good, so the tab can no longer renew the session. */
|
|
3958
|
+
| 'expired'
|
|
3959
|
+
/** Another tab logged out and `withBearerAuthMultiTabSync` carried it here. */
|
|
3960
|
+
| 'otherTab';
|
|
3800
3961
|
declare const BearerAuthFeatureType: {
|
|
3801
3962
|
readonly PERSISTENT_AUTH: "PERSISTENT_AUTH";
|
|
3802
3963
|
readonly TOKEN_EXPIRATION_WARNING: "TOKEN_EXPIRATION_WARNING";
|
|
@@ -3813,8 +3974,9 @@ type BearerAuthFeature<TBuilders extends readonly AnyQueryBuilder[], TBearerData
|
|
|
3813
3974
|
devtools?: QueryDevtoolsFeatureDescriber;
|
|
3814
3975
|
};
|
|
3815
3976
|
/**
|
|
3816
|
-
* What a feature gets before the provider's queries are wired up. Only the tokens and the
|
|
3817
|
-
* exist this early - everything else is built on top of what early setup
|
|
3977
|
+
* What a feature gets before the provider's queries are wired up. Only the tokens, the client and the
|
|
3978
|
+
* two session entry points exist this early - everything else is built on top of what early setup
|
|
3979
|
+
* returns.
|
|
3818
3980
|
*
|
|
3819
3981
|
* Advanced: only a feature that has to run before the auth queries are wired needs this.
|
|
3820
3982
|
*/
|
|
@@ -3822,6 +3984,29 @@ type BearerAuthProviderEarlySetupContext = {
|
|
|
3822
3984
|
accessToken: WritableSignal<string | null>;
|
|
3823
3985
|
refreshToken: WritableSignal<string | null>;
|
|
3824
3986
|
queryClient: QueryClient;
|
|
3987
|
+
/**
|
|
3988
|
+
* The provider's own name. A feature that reaches outside the tab - a `BroadcastChannel`, a Web Lock,
|
|
3989
|
+
* a storage key - must namespace it with this, or two providers on the same origin share it.
|
|
3990
|
+
*/
|
|
3991
|
+
name: string;
|
|
3992
|
+
/**
|
|
3993
|
+
* Applies a token pair the way a successful auth query does - including the `afterTokenRefresh$`
|
|
3994
|
+
* emission that retries secure queries which failed with a 401. Prefer this over writing
|
|
3995
|
+
* {@link accessToken} and {@link refreshToken}, which only changes what the next request sends.
|
|
3996
|
+
*/
|
|
3997
|
+
applyTokens: (access: string, refresh: string) => void;
|
|
3998
|
+
/** Ends the session, exactly as the provider's own `logout()` does. */
|
|
3999
|
+
logout: (cause?: BearerAuthSessionEndCause) => void;
|
|
4000
|
+
};
|
|
4001
|
+
/**
|
|
4002
|
+
* How a tab that is not the leader gets a refresh out of the tab that is. Contributed by
|
|
4003
|
+
* `withBearerAuthMultiTabSync`; absent when every tab refreshes for itself.
|
|
4004
|
+
*/
|
|
4005
|
+
type BearerAuthRefreshCoordination = {
|
|
4006
|
+
/** Asks the leader tab to refresh the session's tokens now. */
|
|
4007
|
+
request: () => void;
|
|
4008
|
+
/** Emits in the leader tab whenever another tab asked for a refresh. */
|
|
4009
|
+
requests$: Observable<void>;
|
|
3825
4010
|
};
|
|
3826
4011
|
/** The parts of the provider an early setup can contribute. */
|
|
3827
4012
|
type BearerAuthProviderEarlySetupResult = {
|
|
@@ -3830,6 +4015,7 @@ type BearerAuthProviderEarlySetupResult = {
|
|
|
3830
4015
|
isLeader: Signal<boolean>;
|
|
3831
4016
|
instanceCount: Signal<number>;
|
|
3832
4017
|
};
|
|
4018
|
+
refreshCoordination?: BearerAuthRefreshCoordination;
|
|
3833
4019
|
};
|
|
3834
4020
|
/**
|
|
3835
4021
|
* A feature builder that additionally runs before the auth queries are set up. The auth queries read
|
|
@@ -3943,6 +4129,17 @@ type BearerAuthProvider<TBuilders extends readonly AnyQueryBuilder[], TFeatures
|
|
|
3943
4129
|
* Tracks the latest auth operation (login, autoLogin, tokenRefresh, logout, revocation) with its state and payload.
|
|
3944
4130
|
*/
|
|
3945
4131
|
executionState: Signal<BearerAuthExecutionState<ExtractQueryKey<TBuilders[number]> | 'autoLogin' | 'tokenRefresh' | 'logout' | 'revocation' | 'tokenSeed'> | null>;
|
|
4132
|
+
/**
|
|
4133
|
+
* Whether this tab has a session, and whether it is still finding out - the signal to gate an app
|
|
4134
|
+
* shell on. Unlike {@link executionState} it always has a value, it answers only this one question,
|
|
4135
|
+
* and it reaches `anonymous` even when nothing ever executed (no cookie to restore from).
|
|
4136
|
+
*/
|
|
4137
|
+
sessionStatus: Signal<BearerAuthSessionStatus>;
|
|
4138
|
+
/**
|
|
4139
|
+
* Why the last session ended, or `null` while one is running and before the first ever ended.
|
|
4140
|
+
* Cleared as soon as tokens are applied again.
|
|
4141
|
+
*/
|
|
4142
|
+
sessionEndCause: Signal<BearerAuthSessionEndCause | null>;
|
|
3946
4143
|
/**
|
|
3947
4144
|
* Seeds the provider with tokens that were issued outside of it - an SSO/OIDC callback that
|
|
3948
4145
|
* arrives with both tokens in the URL, a token handed over by a native shell, a test harness.
|
|
@@ -3958,9 +4155,10 @@ type BearerAuthProvider<TBuilders extends readonly AnyQueryBuilder[], TFeatures
|
|
|
3958
4155
|
*/
|
|
3959
4156
|
setTokens: (accessToken: string, refreshToken: string) => void;
|
|
3960
4157
|
/**
|
|
3961
|
-
* Logout the user (clears all tokens and unbinds secure queries)
|
|
4158
|
+
* Logout the user (clears all tokens and unbinds secure queries). The optional cause is published
|
|
4159
|
+
* as {@link sessionEndCause}; it defaults to `'user'`, so a plain `logout()` reads as a click.
|
|
3962
4160
|
*/
|
|
3963
|
-
logout: () => void;
|
|
4161
|
+
logout: (cause?: BearerAuthSessionEndCause) => void;
|
|
3964
4162
|
/**
|
|
3965
4163
|
* Observable that emits after a successful token refresh.
|
|
3966
4164
|
* Secure queries can subscribe to this to re-execute themselves with the new token.
|
|
@@ -3972,7 +4170,7 @@ type BearerAuthProviderFeatureContext<TBearerData = unknown, TBuilders extends r
|
|
|
3972
4170
|
afterTokenRefresh$: Observable<void>;
|
|
3973
4171
|
accessToken: WritableSignal<string | null>;
|
|
3974
4172
|
bearerData: Signal<TBearerData | null>;
|
|
3975
|
-
logout: () => void;
|
|
4173
|
+
logout: (cause?: BearerAuthSessionEndCause) => void;
|
|
3976
4174
|
injector: Injector;
|
|
3977
4175
|
destroyRef: DestroyRef;
|
|
3978
4176
|
setTokens: (access: string, refresh: string) => void;
|
|
@@ -3983,6 +4181,8 @@ type BearerAuthProviderFeatureContext<TBearerData = unknown, TBuilders extends r
|
|
|
3983
4181
|
};
|
|
3984
4182
|
queries: QueryRegistry<TBuilders>;
|
|
3985
4183
|
executionState: WritableSignal<BearerAuthExecutionState | null>;
|
|
4184
|
+
sessionStatus: Signal<BearerAuthSessionStatus>;
|
|
4185
|
+
sessionEndCause: Signal<BearerAuthSessionEndCause | null>;
|
|
3986
4186
|
};
|
|
3987
4187
|
type BearerAuthProviderQueryContext<TBearerData = unknown, TBuilders extends readonly AnyQueryBuilder[] = readonly AnyQueryBuilder[]> = {
|
|
3988
4188
|
accessToken: WritableSignal<string | null>;
|
|
@@ -3992,7 +4192,12 @@ type BearerAuthProviderQueryContext<TBearerData = unknown, TBuilders extends rea
|
|
|
3992
4192
|
repository: QueryRepository;
|
|
3993
4193
|
afterTokenRefresh$: Observable<void>;
|
|
3994
4194
|
isLeader: () => boolean;
|
|
4195
|
+
refreshCoordination: BearerAuthRefreshCoordination | undefined;
|
|
4196
|
+
/** Ends the session, exactly as the provider's own `logout()` does. */
|
|
4197
|
+
logout: (cause?: BearerAuthSessionEndCause) => void;
|
|
3995
4198
|
queries: QueryRegistry<TBuilders>;
|
|
4199
|
+
/** Whether any execution that can issue tokens is still running, across every registry key. */
|
|
4200
|
+
hasTokenIssuingExecutionInFlight: Signal<boolean>;
|
|
3996
4201
|
};
|
|
3997
4202
|
declare const createBearerAuthProvider: <TBuilders extends readonly AnyQueryBuilder[], TFeatures extends readonly ((context: BearerAuthProviderFeatureContext<TBearerData, TBuilders>) => unknown)[], TBearerData = unknown>(config: CreateBearerAuthProviderConfig<TBuilders, TFeatures, TBearerData>) => ProviderDefinition<BearerAuthProvider<TBuilders, TFeatures, TBearerData>>;
|
|
3998
4203
|
type BearerAuthProviderRef<TBuilders extends readonly AnyQueryBuilder[] = readonly AnyQueryBuilder[], TFeatures extends readonly ((context: BearerAuthProviderFeatureContext<TBearerData, TBuilders>) => unknown)[] = readonly ((context: BearerAuthProviderFeatureContext<unknown, readonly AnyQueryBuilder[]>) => unknown)[], TBearerData = unknown> = ProviderDefinition<BearerAuthProvider<TBuilders, TFeatures, TBearerData>>;
|
|
@@ -4212,6 +4417,14 @@ type QueryDevtoolsEntry = {
|
|
|
4212
4417
|
meta: QueryDevtoolsEntryMeta;
|
|
4213
4418
|
handle: unknown;
|
|
4214
4419
|
createdAt: number;
|
|
4420
|
+
/**
|
|
4421
|
+
* When the query behind this entry was destroyed, or `null`/absent while it is still live. A
|
|
4422
|
+
* destroyed entry is kept as a tombstone - a frozen snapshot of what the query last held - so a
|
|
4423
|
+
* request that failed on the way out (a `401` that redirects to login and takes its component with
|
|
4424
|
+
* it) is still readable by the time the panel is opened. Its `handle` answers with constants and
|
|
4425
|
+
* every action on it is inert.
|
|
4426
|
+
*/
|
|
4427
|
+
destroyedAt?: number | null;
|
|
4215
4428
|
/**
|
|
4216
4429
|
* What the entry has done since it was created - executions, requests, payload sizes. Present for
|
|
4217
4430
|
* queries; stacks, sequences and auth providers aggregate the stats of the queries they own instead.
|
|
@@ -4281,6 +4494,19 @@ type QueryDevtoolsResolvedFault = {
|
|
|
4281
4494
|
declare const queryDevtoolsEntries: Signal<QueryDevtoolsEntry[]>;
|
|
4282
4495
|
/** Renders parsed route parts as a template, e.g. `/team/:teamId/players`. */
|
|
4283
4496
|
declare const stringifyQueryRouteParts: (parts: QueryDevtoolsRoutePart[]) => string;
|
|
4497
|
+
/**
|
|
4498
|
+
* Forgets every destroyed entry the registry is holding - the panel's "clear gone" action. Live
|
|
4499
|
+
* entries are untouched.
|
|
4500
|
+
*/
|
|
4501
|
+
declare const clearQueryDevtoolsTombstones: () => void;
|
|
4502
|
+
type QueryDevtoolsOptions = {
|
|
4503
|
+
/**
|
|
4504
|
+
* How many of each query's most recent runs keep their response (or error) body, which is what the
|
|
4505
|
+
* panel's response diff compares. Defaults to `5`. Bodies dominate what the run buffer retains, so
|
|
4506
|
+
* raise this only as far as the reach you actually need - a polling query holds one per run.
|
|
4507
|
+
*/
|
|
4508
|
+
responseHistory?: number;
|
|
4509
|
+
};
|
|
4284
4510
|
/**
|
|
4285
4511
|
* Enables the `@ethlete/query` devtools. Add this to your application providers (e.g. in
|
|
4286
4512
|
* `bootstrapApplication`) to make query clients, queries, stacks, sequences and auth providers
|
|
@@ -4296,7 +4522,33 @@ declare const stringifyQueryRouteParts: (parts: QueryDevtoolsRoutePart[]) => str
|
|
|
4296
4522
|
* });
|
|
4297
4523
|
* ```
|
|
4298
4524
|
*/
|
|
4299
|
-
declare const provideQueryDevtools: () => EnvironmentProviders;
|
|
4525
|
+
declare const provideQueryDevtools: (options?: QueryDevtoolsOptions) => EnvironmentProviders;
|
|
4526
|
+
|
|
4527
|
+
/**
|
|
4528
|
+
* How many destroyed queries the registry keeps. A tombstone holds the last response body it captured,
|
|
4529
|
+
* so the list is capped for the same reason the repository caps its unused entries.
|
|
4530
|
+
*/
|
|
4531
|
+
declare const MAX_QUERY_DEVTOOLS_TOMBSTONES = 50;
|
|
4532
|
+
/**
|
|
4533
|
+
* A destroyed query's last state, shaped like the query itself: every signal the panel reads is
|
|
4534
|
+
* replaced by a function returning the value it held when the query went away, and every action is a
|
|
4535
|
+
* no-op. Rendering a tombstone therefore costs the panel no second code path - the drawer reads
|
|
4536
|
+
* `entry.handle` exactly as it does for a live query, and gates its actions on
|
|
4537
|
+
* {@link QueryDevtoolsEntry.destroyedAt} instead.
|
|
4538
|
+
*
|
|
4539
|
+
* The captured request is a plain copy, not the request itself: the real one is destroyed the moment
|
|
4540
|
+
* its cache entry is, and holding it would keep its subscriptions and its cache entry alive.
|
|
4541
|
+
*/
|
|
4542
|
+
declare const snapshotQueryDevtoolsHandle: (handle: unknown) => unknown;
|
|
4543
|
+
/**
|
|
4544
|
+
* The entry a destroyed query leaves behind: the same id, kind and metadata, a frozen
|
|
4545
|
+
* {@link snapshotQueryDevtoolsHandle} in place of the live query, and no `element` - a DOM node whose
|
|
4546
|
+
* component is gone must not be kept alive by the panel.
|
|
4547
|
+
*
|
|
4548
|
+
* `stats` is carried over as-is. The recorder closes over its own signals rather than over the query,
|
|
4549
|
+
* so the run history that makes a failed request readable survives without retaining anything.
|
|
4550
|
+
*/
|
|
4551
|
+
declare const tombstoneOf: (entry: QueryDevtoolsEntry, destroyedAt: number) => QueryDevtoolsEntry;
|
|
4300
4552
|
|
|
4301
4553
|
type TransformedGqlQuery = {
|
|
4302
4554
|
query: string;
|
|
@@ -7006,7 +7258,7 @@ declare class ParseHttpErrorCodeToMessageEnPipe implements PipeTransform {
|
|
|
7006
7258
|
* The internal, fully-resolved definition of a single query-form field.
|
|
7007
7259
|
*
|
|
7008
7260
|
* Produced by the field creators (`queryField()`, `searchQueryField()`, …) and
|
|
7009
|
-
* consumed by `
|
|
7261
|
+
* consumed by `defineQueryForm()`. `T` is the field's value type and always
|
|
7010
7262
|
* includes `null` (a field can be cleared).
|
|
7011
7263
|
*/
|
|
7012
7264
|
type QueryFieldDef<T> = {
|
|
@@ -7081,7 +7333,7 @@ type QueryFieldConfig<T> = Partial<Omit<QueryFieldDef<T>, 'isResetBy'>> & {
|
|
|
7081
7333
|
};
|
|
7082
7334
|
/** Extracts a field definition's value type. */
|
|
7083
7335
|
type QueryFieldValue<F> = F extends QueryFieldDef<infer T> ? T : never;
|
|
7084
|
-
/** A map of field name → field definition, as passed to `
|
|
7336
|
+
/** A map of field name → field definition, as passed to `defineQueryForm({ fields })`. */
|
|
7085
7337
|
type QueryFormFields = Record<string, QueryFieldDef<unknown>>;
|
|
7086
7338
|
/** The value shape of a query form - one entry per field. */
|
|
7087
7339
|
type QueryFormModel<TFields extends QueryFormFields> = {
|
|
@@ -7152,7 +7404,7 @@ type QueryFormBranch<TFields extends QueryFormFields> = {
|
|
|
7152
7404
|
resetFieldToDefault(key: keyof QueryFormModel<TFields>): void;
|
|
7153
7405
|
resetAllFieldsToDefault(): void;
|
|
7154
7406
|
};
|
|
7155
|
-
type
|
|
7407
|
+
type DefineQueryFormConfig<TFields extends QueryFormFields> = {
|
|
7156
7408
|
readonly fields: TFields;
|
|
7157
7409
|
/**
|
|
7158
7410
|
* A prefix for every query-param key, so multiple query forms can coexist on
|
|
@@ -7172,34 +7424,9 @@ type CreateQueryFormConfig<TFields extends QueryFormFields> = {
|
|
|
7172
7424
|
* debounced committed value, syncs to the URL query params, and resets dependent
|
|
7173
7425
|
* fields via the `isResetBy` graph - all as signals.
|
|
7174
7426
|
*
|
|
7175
|
-
* @
|
|
7176
|
-
* const qf = createQueryForm({
|
|
7177
|
-
* fields: {
|
|
7178
|
-
* search: searchQueryField(),
|
|
7179
|
-
* sort: sortQueryField(),
|
|
7180
|
-
* page: queryField<number>({ defaultValue: 1, isResetBy: ['search', 'sort'] }),
|
|
7181
|
-
* },
|
|
7182
|
-
* }).observe();
|
|
7183
|
-
* // template: <input etInput [formField]="qf.fields.search" />
|
|
7427
|
+
* Created with {@link defineQueryForm}.
|
|
7184
7428
|
*/
|
|
7185
|
-
|
|
7186
|
-
private router;
|
|
7187
|
-
private route;
|
|
7188
|
-
private injector;
|
|
7189
|
-
private readonly queryParamChanges;
|
|
7190
|
-
private readonly _fields;
|
|
7191
|
-
private readonly prefix;
|
|
7192
|
-
private readonly defaults;
|
|
7193
|
-
/** Live field values (updated immediately by bound controls). */
|
|
7194
|
-
private readonly model;
|
|
7195
|
-
/** The committed (debounced) value that drives `value`, the URL and the filter count. */
|
|
7196
|
-
private readonly committed;
|
|
7197
|
-
private previous;
|
|
7198
|
-
private observing;
|
|
7199
|
-
private observeOptions;
|
|
7200
|
-
private pendingTimer;
|
|
7201
|
-
private commitPending;
|
|
7202
|
-
private skipNextResets;
|
|
7429
|
+
type QueryFormSignals<TFields extends QueryFormFields> = {
|
|
7203
7430
|
/**
|
|
7204
7431
|
* The bindable signal-forms field tree - bind a field with `[formField]`, e.g.
|
|
7205
7432
|
* `<input etInput [formField]="qf.fields.search" />`.
|
|
@@ -7218,8 +7445,9 @@ declare class QueryFormSignals<TFields extends QueryFormFields> {
|
|
|
7218
7445
|
readonly activeFilterCount: Signal<number>;
|
|
7219
7446
|
/** The default value of the whole form. */
|
|
7220
7447
|
readonly defaultValue: QueryFormModel<TFields>;
|
|
7221
|
-
|
|
7222
|
-
observe(options?: QueryFormSignalsObserveOptions):
|
|
7448
|
+
/** Start syncing with the URL. Returns the form, so it can be chained onto the definition. */
|
|
7449
|
+
observe(options?: QueryFormSignalsObserveOptions): QueryFormSignals<TFields>;
|
|
7450
|
+
/** Stop syncing and strip the form's params from the URL. Runs on destroy anyway. */
|
|
7223
7451
|
unobserve(): void;
|
|
7224
7452
|
setValue(value: QueryFormModel<TFields>, options?: QueryFormSignalsWriteOptions): void;
|
|
7225
7453
|
patchValue(value: Partial<QueryFormModel<TFields>>, options?: QueryFormSignalsWriteOptions): void;
|
|
@@ -7230,31 +7458,22 @@ declare class QueryFormSignals<TFields extends QueryFormFields> {
|
|
|
7230
7458
|
}): void;
|
|
7231
7459
|
/** Create a detached editor over the same fields, seeded from the current committed value. */
|
|
7232
7460
|
branch(): QueryFormBranch<TFields>;
|
|
7233
|
-
|
|
7234
|
-
* The live view `<et-query-devtools>` renders. Only built while the devtools are installed - it walks
|
|
7235
|
-
* every field on every change, which an app without them should not pay for.
|
|
7236
|
-
*/
|
|
7237
|
-
private devtoolsHandle;
|
|
7238
|
-
private onLiveChange;
|
|
7239
|
-
/** Shortest-debounce-wins; `null` means commit immediately. */
|
|
7240
|
-
private resolveDebounce;
|
|
7241
|
-
private flush;
|
|
7242
|
-
private applyResets;
|
|
7243
|
-
private applyFromUrl;
|
|
7244
|
-
private commitFromUrl;
|
|
7245
|
-
private deserialize;
|
|
7246
|
-
/** What a field puts in the URL for a given value, or `undefined` when it writes nothing. */
|
|
7247
|
-
private queryParamFor;
|
|
7248
|
-
private writeToUrl;
|
|
7249
|
-
private paramKey;
|
|
7250
|
-
private clearTimer;
|
|
7251
|
-
private cleanup;
|
|
7252
|
-
}
|
|
7461
|
+
};
|
|
7253
7462
|
/**
|
|
7254
|
-
*
|
|
7463
|
+
* Define a {@link QueryFormSignals}. Call `.observe()` to start syncing with the
|
|
7255
7464
|
* URL. Must be called in an injection context.
|
|
7465
|
+
*
|
|
7466
|
+
* @example
|
|
7467
|
+
* const qf = defineQueryForm({
|
|
7468
|
+
* fields: {
|
|
7469
|
+
* search: searchQueryField(),
|
|
7470
|
+
* sort: sortQueryField(),
|
|
7471
|
+
* page: queryField<number>({ defaultValue: 1, isResetBy: ['search', 'sort'] }),
|
|
7472
|
+
* },
|
|
7473
|
+
* }).observe();
|
|
7474
|
+
* // template: <input etInput [formField]="qf.fields.search" />
|
|
7256
7475
|
*/
|
|
7257
|
-
declare const
|
|
7476
|
+
declare const defineQueryForm: <TFields extends QueryFormFields>(config: DefineQueryFormConfig<TFields>) => QueryFormSignals<TFields>;
|
|
7258
7477
|
|
|
7259
7478
|
/**
|
|
7260
7479
|
* A generic query-form field. Defaults to `null` and, unless a transform is
|
|
@@ -7365,7 +7584,10 @@ type SocketMessageView<TMessageData = unknown> = {
|
|
|
7365
7584
|
data: TMessageData;
|
|
7366
7585
|
};
|
|
7367
7586
|
type WebSocketClientSubtle = {
|
|
7368
|
-
/**
|
|
7587
|
+
/**
|
|
7588
|
+
* Releases one join of a socket io room. Joiners of the same room share it, so the room is only
|
|
7589
|
+
* actually left once every one of them has released it.
|
|
7590
|
+
*/
|
|
7369
7591
|
leaveRoom: (room: string) => void;
|
|
7370
7592
|
};
|
|
7371
7593
|
type WebSocketClient<TMessageData extends SocketMessageView> = {
|
|
@@ -7383,6 +7605,11 @@ type WebSocketClient<TMessageData extends SocketMessageView> = {
|
|
|
7383
7605
|
};
|
|
7384
7606
|
type InternalWebSocketRoom<TMessageData extends SocketMessageView> = {
|
|
7385
7607
|
latestMessage: WritableSignal<TMessageData | null>;
|
|
7608
|
+
/**
|
|
7609
|
+
* How many callers currently hold this room. Joiners share one room object, so the room may only be
|
|
7610
|
+
* left once this reaches zero - otherwise the first caller to unmount stops the messages for the rest.
|
|
7611
|
+
*/
|
|
7612
|
+
joinCount: number;
|
|
7386
7613
|
};
|
|
7387
7614
|
type WebSocketRoom<TMessageData extends SocketMessageView> = {
|
|
7388
7615
|
/** The latest message received in the room */
|
|
@@ -7392,5 +7619,5 @@ type WebSocketClientResult<TMessageData extends SocketMessageView = SocketMessag
|
|
|
7392
7619
|
type AnyWebSocketClient<TMessageData extends SocketMessageView = SocketMessageView> = WebSocketClientResult<TMessageData>;
|
|
7393
7620
|
declare const createWebSocketClient: <TMessageData extends SocketMessageView = SocketMessageView>(options: CreateWebSocketClientConfigOptions) => WebSocketClientResult<TMessageData>;
|
|
7394
7621
|
|
|
7395
|
-
export { AuthBearerRefreshStrategy, BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, CLEAR_QUERY_ARGS, CustomHeaderAuthProvider, DEFAULT_KEEP_UNUSED_FOR, DEFAULT_QUERY_PERSISTENCE_MAX_AGE, DEFAULT_QUERY_PERSISTENCE_MAX_ENTRIES, DEFAULT_QUERY_PERSISTENCE_VERSION, DEFAULT_QUERY_PERSISTENCE_WRITE_DELAY, DateArrayQueryField, DateQueryField, EMPTY_QUERY_DEVTOOLS_FAULT, EntityStore, IGNORED_FILTER_COUNT_FIELDS, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QUERY_DEVTOOLS_FAULT_STATUSES, QUERY_PERSISTENCE_STORE_VERSION, QUERY_SYNC_PROTOCOL_VERSION, QueryClientFeatureType, QueryDevtoolsComponent, QueryDirective, QueryFeatureType, QueryField, QueryForm,
|
|
7396
|
-
export type { AnyBearerAuthProvider, AnyCreateBearerAuthProviderResult, AnyCreateGqlQueryCreatorOptions, AnyCreateQueryClientResult, AnyGqlQueryConfig, AnyInfinityQuery, AnyInfinityQueryConfig, AnyLegacyQuery, AnyLegacyQueryCreator, AnyNewQuery, AnyPagedQueryStack, AnyQueryBuilder, AnyQueryClient, AnyQueryCollection, AnyQueryCollectionData, AnyQueryCollectionResponse, AnyQueryCreator, AnyQueryCreatorCollection, AnyQueryForm, AnyQuerySnapshot, AnyQueryStack, AnyRestQueryConfig, AnyRoute, AnyV2Query, AnyV2QueryCreator, AnyWebSocketClient, AppendItemsLocation, ApplyExternalResponseOptions, ApplyPersistedResponseOptions, AuthProvider, AuthProviderBasicConfig, AuthProviderBearerConfig, AuthProviderCustomHeaderConfig, AuthQueryBuilder, AuthQueryConfig, BaseArguments, BaseQueryCreatorFactoryOptions, BaseQueryCreatorOptions, BaseQueryCreatorOptionsSubtle, BearerAuthExecutionState, BearerAuthExecutionStateError, BearerAuthExecutionStateLoading, BearerAuthExecutionStateLogout, BearerAuthExecutionStateSuccess, BearerAuthExecutionStateTokenSeed, BearerAuthFeature, BearerAuthMultiTabSyncConfig, BearerAuthMultiTabSyncFeature, BearerAuthProvider, BearerAuthProviderEarlySetup, BearerAuthProviderEarlySetupContext, BearerAuthProviderEarlySetupResult, BearerAuthProviderFeatureContext, BearerAuthProviderOf, BearerAuthProviderQueryContext, BearerAuthProviderRef, BearerAuthProviderTokens, BearerRefreshConfig, BodyType, BuildQueryStringConfig, CacheAdapterFn, Cancelled, ClassValidatorError, ClearQueryArgs, ConstructQuery, CreateBaseQueryOptions, CreateBearerAuthProviderConfig, CreateGqlQueryCreatorOptions, CreateGqlQueryExecuteOptions, CreateGqlQueryOptions, CreateHttpRequestDependencies, CreateHttpRequestOptions, CreateIndexedDbQueryPersistenceAdapterOptions, CreateLegacyQueryCreatorOptions, CreateLegacyQueryOptions, CreatePagedQueryStackOptions, CreateQueryClientConfigOptions, CreateQueryCreatorOptions, CreateQueryExecuteOptions,
|
|
7622
|
+
export { AuthBearerRefreshStrategy, BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, CLEAR_QUERY_ARGS, CustomHeaderAuthProvider, DEFAULT_KEEP_UNUSED_FOR, DEFAULT_QUERY_PERSISTENCE_MAX_AGE, DEFAULT_QUERY_PERSISTENCE_MAX_ENTRIES, DEFAULT_QUERY_PERSISTENCE_VERSION, DEFAULT_QUERY_PERSISTENCE_WRITE_DELAY, DateArrayQueryField, DateQueryField, EMPTY_QUERY_DEVTOOLS_FAULT, EntityStore, IGNORED_FILTER_COUNT_FIELDS, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_QUERY_DEVTOOLS_TOMBSTONES, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QUERY_DEVTOOLS_FAULT_STATUSES, QUERY_PERSISTENCE_STORE_VERSION, QUERY_SYNC_PROTOCOL_VERSION, QueryClientFeatureType, QueryDevtoolsComponent, QueryDirective, QueryFeatureType, QueryField, QueryForm, QueryRuntimeErrorCode, QueryShortNamePipe, QueryStateType, QueryStore, SERVER_ERROR_KIND, SERVER_VIOLATION_ERROR_KIND, SPEED_BUFFER_TIME_IN_MS, SearchQueryField, SortQueryField, StringArrayQueryField, V2BearerAuthProvider, V2Query, V2QueryClient, V2QueryCreator, addQueryContainerHandling, applyQueryDevtoolsOverrides, applyQueryFeatures, authExtractTokensResponseMissingAccessToken, authExtractTokensResponseMissingRefreshToken, authExtractTokensResponseNotObject, authProviderFeatureUsedMultipleTimes, booleanArrayQueryField, buildQueryCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, circularQueryDependency, circularQueryDependencyChecker, clearQueryDevtoolsFaults, clearQueryDevtoolsTombstones, collectLeafPaths, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, contentfulGqlLikePaginationAdapter, createBaseQuery, createBaseQueryCreator, createBearerAuthProvider, createDeleteQuery, createExecuteFn, createGetQuery, createGqlExecuteFn, createGqlMutationViaGet, createGqlMutationViaPost, createGqlQuery, createGqlQueryCreator, createGqlQueryViaGet, createGqlQueryViaPost, createHttpRequest, createIndexedDbQueryPersistenceAdapter, createInfinityQueryConfig, createLegacyQueryCreator, createNoopQueryPersistenceAdapter, createPagedQueryStack, createPatchQuery, createPersistentAuthFeature, createPostQuery, createPutQuery, createQuery, createQueryClient, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, createQueryContext, createQueryCreator, createQueryErrorResponse, createQueryFeature, createQueryInvalidationFilter, createQueryKeyLockManager, createQueryObject, createQueryPersistenceEngine, createQueryRepository, createQuerySnapshotFn, createQueryStack, createQuerySyncEngine, createQuerySyncTransport, createSecureDeleteQuery, createSecureExecuteFactory, createSecureExecuteFn, createSecureGetQuery, createSecureGqlExecuteFn, createSecureGqlMutationViaGet, createSecureGqlMutationViaPost, createSecureGqlQuery, createSecureGqlQueryCreator, createSecureGqlQueryViaGet, createSecureGqlQueryViaPost, createSecurePatchQuery, createSecurePostQuery, createSecurePutQuery, createSecureQuery, createSecureQueryCreator, createTrackingFeature, createWebSocketClient, dateArrayQueryField, dateQueryField, decryptBearer, deepFreeze, def, defineQueryForm, detectContentTypeHeader, detectPaginationShape, dynLikePaginationAdapter, effectComputed, emptyQueryArgs, ethletePaginationAdapter, executeUntilSettled, extractExpiresInSeconds, extractFormViolations, extractHtmlErrorMessage, extractQuery, fakePaginationAdapter, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, generateQueryDevtoolsNumberPreset, generateQueryDevtoolsStringPreset, getDefaultHeaders, getQueryFeatureUsage, getResponseUrl, ggLikePaginationAdapter, gql, gqlDataPropertyMissingInResponse, hasHeader, hasQueryDevtoolsOverridesAtPath, htmlErrorPayload, htmlQueryErrorParser, ignoreAutoRefresh, injectInfinityQueryResponseDelay, injectQueryContext, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, invalidStateInsideSecureExecuteFactory, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCreateGqlQueryOptions, isCustomHeaderAuthProvider, isDateShapedLeaf, isEmptyString, isGqlQueryConfig, isHtmlErrorPayload, isLegacyQuery, isNaN, isPageOutOfRangeError, isQuery, isQueryCollection, isQueryDevtoolsFaultArmed, isQueryErrorResponse, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyListError, isSymfonyPagerfantaOutOfRangeError, isUnderInvalidatedUrl, legacyPrepareWithoutInjectionContext, mapToPaginated, mapViolationsToFormErrors, maybeExecute, measureQueryDevtoolsPayload, mergeHeaders, nestedEffect, numberArrayQueryField, pagedQueryStackNextPageCalledWithoutPreviousPage, pagedQueryStackPageBiggerThanTotalPages, pagedQueryStackPreviousPageCalledButAlreadyAtFirstPage, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleDe, parseHttpErrorCodeToTitleEn, pathParamsMissingInRouteFunctionError, provideInfinityQueryResponseDelay, provideLegacyPrepareFallback, provideQueryClientForDevtools, provideQueryDevtools, queryArrayComputed, queryClientFeatureUsedMultipleTimes, queryComputed, queryComputedTillTruthy, queryDevtoolsEntries, queryDevtoolsFaults, queryDevtoolsResponseHistory, queryErrorMessage, queryErrorMessages, queryExecute, queryFeatureUsedMultipleTimes, queryField, querySequence, querySequenceAlreadyRunning, queryStackTotalQueriesAndExpectedQueriesMismatch, queryStackWithArgsUsed, queryStackWithResponseUpdateUsed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, registerQueryErrorParser, removeFrom, request, resetExecuteState, resetPageOnError, resolveInvalidationUrl, searchQueryField, serializeBody, setDefaultQueryRetryFn, setQueryDevtoolsFault, setupQueryDependencies, setupQueryExecuteState, setupQueryState, shouldAutoExecuteGqlQuery, shouldAutoExecuteQuery, shouldCacheQuery, shouldRetryRequest, silenceMissingWithArgsFeatureErrorUsedButWithArgsPresent, skipPaginationPageParamCalculator, smartDuplicateArrayItem, snapshotQueryDevtoolsHandle, sortQueryField, splitQueryConfig, stringArrayQueryField, stringifyQueryRouteParts, sumQueryDevtoolsStats, switchQueryCollectionState, switchQueryState, symfonyQueryErrorParser, takeUntilResponse, toQuerySignal, toQuerySubject, tokensNotAvailableInsideAuthAndExec, tombstoneOf, transformArrayResponse, transformExecStateToQueryState, transformGql, transformMethod, transformPaginatedResponse, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray, uncacheableRequestHasAllowCacheParam, uncacheableRequestHasCacheKeyParam, unwrapQuerySyncMessage, v2BuildQueryCacheKey, v2ExtractExpiresInSeconds, v2ShouldCacheQuery, v2ShouldRetryRequest, validateWithQuery, validateWithV2Query, withArgs, withArgsQueryFeatureMissingButRouteIsFunction, withAuthenticationQuery, withAutoRefresh, withAutoRefreshUsedInManualQuery, withAutoRefreshUsedOnUnsupportedHttpMethod, withBearerAuthMultiTabSync, withDefaultRetry, withErrorHandling, withEthleteApiErrors, withHtmlErrorParsing, withInactivityLogout, withLogging, withMultiTabSync, withPageResetOnError, withPersistentAuth, withPolling, withPollingUsedOnUnsupportedHttpMethod, withQueryPersistence, withRefreshQuery, withResponseUpdate, withSuccessHandling, withSymfonyErrors, withTokenExpirationWarning, withTokenRevocation, withTracking, wrapAsObservableSignal, wrapQuerySyncMessage };
|
|
7623
|
+
export type { AnyBearerAuthProvider, AnyCreateBearerAuthProviderResult, AnyCreateGqlQueryCreatorOptions, AnyCreateQueryClientResult, AnyGqlQueryConfig, AnyInfinityQuery, AnyInfinityQueryConfig, AnyLegacyQuery, AnyLegacyQueryCreator, AnyNewQuery, AnyPagedQueryStack, AnyQueryBuilder, AnyQueryClient, AnyQueryCollection, AnyQueryCollectionData, AnyQueryCollectionResponse, AnyQueryCreator, AnyQueryCreatorCollection, AnyQueryForm, AnyQuerySnapshot, AnyQueryStack, AnyRestQueryConfig, AnyRoute, AnyV2Query, AnyV2QueryCreator, AnyWebSocketClient, AppendItemsLocation, ApplyExternalResponseOptions, ApplyPersistedResponseOptions, AuthProvider, AuthProviderBasicConfig, AuthProviderBearerConfig, AuthProviderCustomHeaderConfig, AuthQueryBuilder, AuthQueryConfig, BaseArguments, BaseQueryCreatorFactoryOptions, BaseQueryCreatorOptions, BaseQueryCreatorOptionsSubtle, BearerAuthExecutionState, BearerAuthExecutionStateError, BearerAuthExecutionStateLoading, BearerAuthExecutionStateLogout, BearerAuthExecutionStateSuccess, BearerAuthExecutionStateTokenSeed, BearerAuthFeature, BearerAuthMultiTabSyncConfig, BearerAuthMultiTabSyncFeature, BearerAuthProvider, BearerAuthProviderEarlySetup, BearerAuthProviderEarlySetupContext, BearerAuthProviderEarlySetupResult, BearerAuthProviderFeatureContext, BearerAuthProviderOf, BearerAuthProviderQueryContext, BearerAuthProviderRef, BearerAuthProviderTokens, BearerAuthRefreshCoordination, BearerAuthSessionEndCause, BearerAuthSessionStatus, BearerRefreshConfig, BodyType, BuildQueryStringConfig, CacheAdapterFn, Cancelled, ClassValidatorError, ClearQueryArgs, ConstructQuery, CreateBaseQueryOptions, CreateBearerAuthProviderConfig, CreateGqlQueryCreatorOptions, CreateGqlQueryExecuteOptions, CreateGqlQueryOptions, CreateHttpRequestDependencies, CreateHttpRequestOptions, CreateIndexedDbQueryPersistenceAdapterOptions, CreateLegacyQueryCreatorOptions, CreateLegacyQueryOptions, CreatePagedQueryStackOptions, CreateQueryClientConfigOptions, CreateQueryCreatorOptions, CreateQueryExecuteOptions, CreateQueryObjectOptions, CreateQueryOptions, CreateQueryPersistenceEngineOptions, CreateQueryRepositoryConfig, CreateQuerySnapshotOptions, CreateQueryStackOptions, CreateQuerySyncEngineOptions, CreateSecureGqlQueryExecuteOptions, CreateSecureGqlQueryOptions, CreateSecureQueryExecuteOptions, CreateSecureQueryOptions, CreateWebSocketClientConfigOptions, CreateWebSocketClientTransport, DefineQueryFormConfig, DescribableFeature, DestroyCleanupCallback, EmptyObject, EntityGetParams, EntityIdParams, EntityKey, EntitySetParams, EntityStoreConfig, ExecuteFactory, ExecuteQueryOptions, ExtractQueryArgs, ExtractQueryKey, Failure, FeatureRegistry, GQL, GqlQueryArgs, GqlQueryConfig, GqlQueryConfigWithoutMethod, GqlQueryMethod, GqlQueryTransport, GqlTransferOption, GqlTransformer, GqlVariablesType, HttpErrorEvent, HttpRequest, HttpRequestLoadingProgressState, HttpRequestLoadingState, HttpRequestResponseType, HttpRequestRetryState, HttpRequestSubtle, HttpRequestTransferCacheConfig, InactivityLogoutConfig, InactivityLogoutFeature, InfinityQueryConfig, InfinityQueryConfigType, InfinityQueryOf, InfinityQueryParamLocation, InsertFromConfig, InternalCreateGqlQueryCreatorOptions, InternalCreateQueryCreatorOptions, InternalQueryExecute, InternalSecureCreateGqlQueryCreatorOptions, InternalSecureCreateQueryCreatorOptions, InternalWebSocketRoom, JsonPath, LeaderInstanceCountChangeEventData, LeaderStatusChangeEventData, LegacyArgumentsOfQueryArgs, LegacyQueryPrepareFn, Loading, LogoutEventData, MapViolationsToFormErrorsOptions, Method, ObservableSignal, OptionalQueryFieldOptions, OverrideOp, PageParamCalculatorOptions, PagedQueryStack, PagedQueryStackDirection, PagedQueryStackExecuteOptions, PagedQueryStackResetOptions, PartialXhrState, PathParams, PathParamsType, PersistedQueryBody, PersistedQueryEntry, PersistedQueryEntryMeta, PersistentAuthConfig, PersistentAuthFeature, PollConfig, Prepared, Query, QueryArgs, QueryArgsOf, QueryArgsOfLegacyArguments, QueryAutoRefreshConfig, QueryBase, QueryClient, QueryClientDevtoolsOptions, QueryClientErrorPipelineFeature, QueryClientFeature, QueryClientFeatureContext, QueryClientFeatureFn, QueryClientMultiTabSyncFeature, QueryClientPersistenceFeature, QueryClientRef, QueryClientSubtle, QueryCollectionKeysOf, QueryCollectionOf, QueryCollectionWithNullableQuery, QueryConfig, QueryConfigBase, QueryConfigWithoutMethod, QueryContainerConfig, QueryContext, QueryCreator, QueryDataOf, QueryDependencies, QueryDevtoolsAuthQuery, QueryDevtoolsEntry, QueryDevtoolsEntryKind, QueryDevtoolsEntryMeta, QueryDevtoolsFault, QueryDevtoolsFaultTarget, QueryDevtoolsFeature, QueryDevtoolsFeatureDescriber, QueryDevtoolsFeatureDetail, QueryDevtoolsFormField, QueryDevtoolsFormHandle, QueryDevtoolsFormLinksHandle, QueryDevtoolsFormLinksRecorder, QueryDevtoolsOptions, QueryDevtoolsOverrideEntry, QueryDevtoolsOverridesHandle, QueryDevtoolsOverridesRecorder, QueryDevtoolsPayload, QueryDevtoolsRegistrar, QueryDevtoolsRegistration, QueryDevtoolsResolvedFault, QueryDevtoolsRoutePart, QueryDevtoolsRun, QueryDevtoolsRunError, QueryDevtoolsRunStatus, QueryDevtoolsStats, QueryDevtoolsStatsHandle, QueryDevtoolsStatsRecorder, QueryDirectiveContext, QueryDirectiveType, QueryEntityConfig, QueryErrorParser, QueryErrorResponse, QueryErrorResponseItem, QueryErrorResponseList, QueryErrorResponseSingle, QueryExecute, QueryExecuteArgs, QueryExecuteEventData, QueryExecuteOptions, QueryExecuteState, QueryExecutionState, QueryExecutionStateFailure, QueryExecutionStateLoading, QueryExecutionStateLoadingWithCachedResponse, QueryExecutionStateLoadingWithNoResponse, QueryExecutionStateSuccess, QueryFailureEventData, QueryFeature, QueryFeatureContext, QueryFeatureFlags, QueryFeatureFn, QueryFieldConfig, QueryFieldDef, QueryFieldOptions, QueryFieldValue, QueryFilterConfig, QueryFormBranch, QueryFormChange, QueryFormFields, QueryFormGroup, QueryFormGroupControls, QueryFormModel, QueryFormObserveOptions, QueryFormOf, QueryFormOptions, QueryFormSignals, QueryFormSignalsObserveOptions, QueryFormSignalsWriteOptions, QueryFormValue, QueryFormValueEvent, QueryFormWriteOptions, QueryInvalidationCandidate, QueryInvalidationFilterFn, QueryInvalidationOptions, QueryKey, QueryKeyLockHold, QueryKeyLockManager, QueryKeyLockState, QueryMethod, QueryMockConfig, QueryMultiTabSyncConfig, QueryOf, QueryParams, QueryParamsType, QueryPersistenceAdapter, QueryPersistenceCandidate, QueryPersistenceConfig, QueryPersistenceEngine, QueryPrepareFn, QueryRefreshCause, QueryRegistry, QueryRegistryEntry, QueryRepository, QueryRepositoryCacheEntry, QueryRepositoryDependencies, QueryRepositoryEntryDestroyedCause, QueryRepositoryEvent, QueryRepositoryItem, QueryRepositoryRefreshFilterFn, QueryRepositoryRequestOptions, QueryRepositorySubtle, QueryResponseOf, QueryRouteOf, QuerySequence, QuerySequenceResult, QuerySequenceStatus, QuerySequenceStepArgs, QuerySnapshot, QueryStack, QueryStackSubtle, QueryState, QueryStateMeta, QueryStateResponseOf, QueryStateSignal, QueryStateSubtle, QueryStateSuccessMeta, QueryStoreIdOf, QueryStoreOf, QuerySubtle, QuerySuccessEventData, QuerySyncEngine, QuerySyncEnvelope, QuerySyncInvalidateMessage, QuerySyncMessage, QuerySyncMessageListener, QuerySyncMutation, QuerySyncMutationFilterFn, QuerySyncMutationMessage, QuerySyncRefreshCandidate, QuerySyncRefreshOnMutationConfig, QuerySyncResponseMessage, QuerySyncTransport, QueryTrigger, RawResponseType, ReadonlyQuery, RefreshFailure, RemoveFromConfig, RequestArgs, RequestConfig, RequestError, RequestEvent, RequestHeaders, RequestHeadersMethodMap, RequestHttpEvent, RequestProgress, RequestRetryFn, RequestRetryFnConfig, RequestRetryFnResult, RequiresTransform, ResetExecuteStateOptions, ResetPageOnErrorOperatorConfig, ResponseType, RestQueryConfig, RouteString, RouteType, RunQueryCreator, RunQueryExecuteOptions, SecureExecuteFactoryOptions, ServerValidationError, ServerViolationValidationError, SetupQueryDependenciesOptions, SetupQueryStateOptions, ShouldRetryRequestFn, ShouldRetryRequestOptions, ShouldRetryRequestResult, SocketMessageView, Sort, SortDirection, Success, SymfonyError, SymfonyErrorTrace, TokenExpirationWarningConfig, TokenExpirationWarningFeature, TokenRefreshEventData, TokenRefreshQueryBuilder, TokenRefreshQueryConfig, TokenResponse, TokenRevocationConfig, TokenRevocationFeature, TotalPagesExtractorOptions, TrackingConfig, TrackingEventDataMap, TrackingEventHandler, TrackingEventName, TrackingFeature, TransformedGqlQuery, V2CacheAdapterFn, V2PrepareArgsOf, V2QueryArgsOf, V2QueryClientConfig, V2QueryConfig, V2QueryState, V2RouteString, V2RouteType, ValidateWithQueryConfig, ValidateWithV2QueryConfig, WebSocketClient, WebSocketClientIo, WebSocketClientIoOptions, WebSocketClientResult, WebSocketClientSocket, WebSocketClientSubtle, WebSocketDevtoolsHandle, WebSocketDevtoolsMessage, WebSocketRoom, WithAutoRefreshFeatureOptions, WithBody, WithConfig, WithErrorHandlingFeatureOptions, WithHeaders, WithInjector, WithLegacyConfig, WithLoggingFeatureOptions, WithMock, WithPageResetOnErrorFeatureOptions, WithPathParams, WithPollingFeatureOptions, WithQueryParams, WithResponseUpdateFeatureFnData, WithResponseUpdateFeatureOptions, WithSuccessHandlingFeatureOptions, WithVariables };
|