@ethlete/query 6.0.0-next.54 → 6.0.0-next.55
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 +49 -0
- package/fesm2022/ethlete-query-devtools-contract.mjs +6 -0
- package/fesm2022/ethlete-query-devtools-contract.mjs.map +1 -0
- package/fesm2022/ethlete-query-ngrx-toolkit.mjs +2 -2
- package/fesm2022/ethlete-query-ngrx-toolkit.mjs.map +1 -1
- package/fesm2022/ethlete-query-testing.mjs +39 -21
- package/fesm2022/ethlete-query-testing.mjs.map +1 -1
- package/fesm2022/ethlete-query.mjs +1804 -1130
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/generators/generators.json +10 -0
- package/generators/migrate-query-client-features/migration.js +10 -8
- package/generators/migrate-to-query-v3/legacy-query-creator-migration.js +1 -1
- package/generators/migrate-to-query-v3/report.js +1 -1
- package/generators/move-devtools-contract-imports/migration.js +155 -0
- package/generators/move-devtools-contract-imports/moved-names.js +153 -0
- package/generators/move-devtools-contract-imports/schema.json +26 -0
- package/generators/report-legacy-query-apis/migration.js +256 -0
- package/generators/report-legacy-query-apis/schema.json +25 -0
- package/migrations.json +26 -0
- package/package.json +12 -16
- package/types/ethlete-query-devtools-contract.d.ts +1 -0
- package/types/ethlete-query-ngrx-toolkit.d.ts +2 -2
- package/types/ethlete-query-testing.d.ts +42 -82
- package/types/ethlete-query.d.ts +1030 -773
package/types/ethlete-query.d.ts
CHANGED
|
@@ -166,12 +166,13 @@ type DefaultRetryOptions = {
|
|
|
166
166
|
*/
|
|
167
167
|
jitter?: number;
|
|
168
168
|
/**
|
|
169
|
-
* Which response statuses are worth retrying
|
|
170
|
-
*
|
|
169
|
+
* Which response statuses are worth retrying. A list replaces the defaults; a function gets the
|
|
170
|
+
* status and whether the defaults retry it, so `(status, byDefault) => byDefault || status === 500`
|
|
171
|
+
* adds one. A connection failure is status `0`.
|
|
171
172
|
*
|
|
172
173
|
* @default a connection failure (`0`), `408`, `425`, `429`, and every 5xx above `500`
|
|
173
174
|
*/
|
|
174
|
-
retryableStatusCodes?: number[];
|
|
175
|
+
retryableStatusCodes?: number[] | ((status: number, isRetryableByDefault: boolean) => boolean);
|
|
175
176
|
/**
|
|
176
177
|
* Also retries a request that is not idempotent (see {@link ShouldRetryRequestOptions.idempotent}). A
|
|
177
178
|
* `POST` whose response was lost may already have been applied, so retrying it can create a
|
|
@@ -223,6 +224,7 @@ declare const isQueryErrorResponse: (error: unknown) => error is QueryErrorRespo
|
|
|
223
224
|
/**
|
|
224
225
|
* Every message carried by an error, flattened into a plain list - one entry for a single error,
|
|
225
226
|
* one per violation for a list (a form response with several field violations), empty for `null`.
|
|
227
|
+
* Blank messages are dropped; an error left with none yields the raw response's message instead.
|
|
226
228
|
*
|
|
227
229
|
* The single/list split exists because that is how APIs answer; UI almost never wants to branch on
|
|
228
230
|
* it. Reach for this when rendering, and keep {@link QueryErrorResponse} for anything that needs
|
|
@@ -664,6 +666,11 @@ type QueryStateSubtle<TArgs extends QueryArgs> = {
|
|
|
664
666
|
* execution. Set by a feature during creation (`withLongPolling` holds its first round back while disabled).
|
|
665
667
|
*/
|
|
666
668
|
autoExecuteGuard: WritableSignal<(() => boolean) | null>;
|
|
669
|
+
/**
|
|
670
|
+
* Called by every execution before its request is made; a function it returns is called with that request.
|
|
671
|
+
* Set by a feature during creation (`withOptimisticUpdate` writes the cache before the request leaves).
|
|
672
|
+
*/
|
|
673
|
+
beforeExecute: WritableSignal<QueryBeforeExecuteFn<TArgs> | null>;
|
|
667
674
|
/**
|
|
668
675
|
* Installs the reactive source that backs `state.args`. The `withArgs` feature uses this so that
|
|
669
676
|
* `state.args` always reflects the latest args (pulled from the reactive source on read) instead
|
|
@@ -673,11 +680,19 @@ type QueryStateSubtle<TArgs extends QueryArgs> = {
|
|
|
673
680
|
setArgsSource: (source: () => RequestArgs<TArgs> | null) => void;
|
|
674
681
|
/** Whether {@link setArgsSource} installed a source. Without one, an execution's args are written to `state.args`. */
|
|
675
682
|
hasArgsSource: Signal<boolean>;
|
|
683
|
+
/**
|
|
684
|
+
* Writes the args of an `execute({ args })` over the args source. They stay until the source produces new
|
|
685
|
+
* non-null args; a source that turns `null` keeps them.
|
|
686
|
+
*/
|
|
687
|
+
setExplicitArgs: (args: RequestArgs<TArgs>) => void;
|
|
688
|
+
/** Whether `args` are the ones {@link setExplicitArgs} wrote last and the source has not replaced yet. */
|
|
689
|
+
isExplicitArgs: (args: RequestArgs<TArgs> | null) => boolean;
|
|
676
690
|
/** @see SetupQueryStateOptions.devtoolsStats */
|
|
677
691
|
devtoolsStats: QueryDevtoolsStatsRecorder | null;
|
|
678
692
|
/** @see SetupQueryStateOptions.devtoolsFormLinks */
|
|
679
693
|
devtoolsFormLinks: QueryDevtoolsFormLinksRecorder | null;
|
|
680
694
|
};
|
|
695
|
+
type QueryBeforeExecuteFn<TArgs extends QueryArgs> = (args: RequestArgs<TArgs> | null) => ((request: HttpRequest<TArgs>) => void) | null;
|
|
681
696
|
type QueryState<TArgs extends QueryArgs> = {
|
|
682
697
|
rawResponse: WritableSignal<RawResponseType<TArgs> | null>;
|
|
683
698
|
response: WritableSignal<ResponseType<TArgs> | null>;
|
|
@@ -758,10 +773,15 @@ type QueryExecuteOptions<TArgs extends QueryArgs> = {
|
|
|
758
773
|
isRefreshable?: boolean;
|
|
759
774
|
};
|
|
760
775
|
declare const queryExecute: <TArgs extends QueryArgs>(options: QueryExecuteOptions<TArgs>) => void;
|
|
776
|
+
/**
|
|
777
|
+
* A query over a `withArgs` source that returns `null` is parked. Running it would send `null` args, so the
|
|
778
|
+
* call is dropped with a dev-mode warning.
|
|
779
|
+
*/
|
|
780
|
+
declare const skipParkedExecution: <TArgs extends QueryArgs>(state: QueryState<TArgs>, args: RequestArgs<TArgs> | null | undefined, route: unknown) => boolean;
|
|
761
781
|
/**
|
|
762
782
|
* Writes the args an execution runs with to `state.args`, so a later bare `execute()` re-sends them.
|
|
763
|
-
* A `
|
|
764
|
-
* args
|
|
783
|
+
* A `withLongPolling` round must not look like a new args value, so it is not written. Over a `withArgs`
|
|
784
|
+
* source only the caller's own non-null args are written, never what a feature re-sends.
|
|
765
785
|
*/
|
|
766
786
|
declare const recordExecutionArgs: <TArgs extends QueryArgs>(state: QueryState<TArgs>, args: RequestArgs<TArgs> | null, options?: RunQueryExecuteOptions) => void;
|
|
767
787
|
/**
|
|
@@ -786,6 +806,8 @@ type QueryRefreshCause = {
|
|
|
786
806
|
type: 'refresh' | 'invalidation' | 'mutation';
|
|
787
807
|
/** The URL the refresh was narrowed to (an invalidation's scope, a mutation's URL), or `null`. */
|
|
788
808
|
url: string | null;
|
|
809
|
+
/** The tag an invalidation was narrowed to, or `null`. */
|
|
810
|
+
tag?: string | null;
|
|
789
811
|
/** Whether another tab asked for it rather than this one. */
|
|
790
812
|
otherTab: boolean;
|
|
791
813
|
};
|
|
@@ -907,6 +929,8 @@ type QueryRepositoryRequestOptions<TArgs extends QueryArgs> = {
|
|
|
907
929
|
* as `idempotent`; unset, that falls back to the method not being `POST` or `PATCH`.
|
|
908
930
|
*/
|
|
909
931
|
isRefreshable?: boolean;
|
|
932
|
+
/** @see BaseQueryCreatorOptions.tags */
|
|
933
|
+
tags?: readonly string[];
|
|
910
934
|
};
|
|
911
935
|
type QueryRepositoryItem<TArgs extends QueryArgs> = {
|
|
912
936
|
/** The key of the request (either a cache key for cacheable requests or a UUID for uncacheable requests) */
|
|
@@ -937,6 +961,10 @@ type QueryRepositoryCacheEntry = {
|
|
|
937
961
|
* consumer that comes back.
|
|
938
962
|
*/
|
|
939
963
|
isUnused: boolean;
|
|
964
|
+
/** @see QueryRepositoryRequestOptions.isRefreshable */
|
|
965
|
+
isRefreshable: boolean;
|
|
966
|
+
/** The tags the entry's consumers declared. */
|
|
967
|
+
tags: readonly string[];
|
|
940
968
|
/** The underlying HTTP request. */
|
|
941
969
|
request: HttpRequest<QueryArgs>;
|
|
942
970
|
};
|
|
@@ -957,10 +985,10 @@ type QueryRepositorySubtle = {
|
|
|
957
985
|
evict: (key: QueryKey) => void;
|
|
958
986
|
};
|
|
959
987
|
/**
|
|
960
|
-
* Narrows which in-use entries a {@link QueryRepository.refreshInUse} call refreshes
|
|
961
|
-
* `false` leaves the entry alone.
|
|
988
|
+
* Narrows which in-use entries a {@link QueryRepository.refreshInUse} call refreshes, given the entry's
|
|
989
|
+
* request and the tags its consumers declared. Returning `false` leaves the entry alone.
|
|
962
990
|
*/
|
|
963
|
-
type QueryRepositoryRefreshFilterFn = (request: HttpRequest<QueryArgs
|
|
991
|
+
type QueryRepositoryRefreshFilterFn = (request: HttpRequest<QueryArgs>, tags?: readonly string[]) => boolean;
|
|
964
992
|
/** @see QueryRepository.applyExternalResponse */
|
|
965
993
|
type ApplyExternalResponseOptions = {
|
|
966
994
|
/** The cache key the response belongs to. */
|
|
@@ -999,15 +1027,19 @@ type QueryRepository = {
|
|
|
999
1027
|
unbindAllSecure: () => void;
|
|
1000
1028
|
/**
|
|
1001
1029
|
* Re-executes every cacheable entry that still has consumers, bypassing the cache and restarting
|
|
1002
|
-
* in-flight requests. Entries kept only for their `keepUnusedFor` window are
|
|
1003
|
-
* looking at them, and they revalidate on their own when a consumer binds again.
|
|
1030
|
+
* in-flight requests. Entries kept only for their `keepUnusedFor` window are not re-executed - nobody is
|
|
1031
|
+
* looking at them, and they revalidate on their own when a consumer binds again. An `invalidation`
|
|
1032
|
+
* marks them stale, so an `allowCache` execution does not serve them either.
|
|
1004
1033
|
*
|
|
1005
1034
|
* Pass a filter to narrow it down to a subset of those entries, and a cause to describe what asked
|
|
1006
1035
|
* for it - which is what the devtools report as the reason a query refetched.
|
|
1007
1036
|
*
|
|
1037
|
+
* An `invalidation` or `mutation` does not restart a request that one of the same batch already
|
|
1038
|
+
* restarted: `batch` names it, and leaving it out makes the current synchronous turn the batch.
|
|
1039
|
+
*
|
|
1008
1040
|
* @see QueryClient.refreshQueriesInUse
|
|
1009
1041
|
*/
|
|
1010
|
-
refreshInUse: (filter?: QueryRepositoryRefreshFilterFn, cause?: QueryRefreshCause) => void;
|
|
1042
|
+
refreshInUse: (filter?: QueryRepositoryRefreshFilterFn, cause?: QueryRefreshCause, batch?: string) => void;
|
|
1011
1043
|
/**
|
|
1012
1044
|
* Writes a response that another tab received onto the matching cache entry, so the same query
|
|
1013
1045
|
* shows the same data everywhere without a second network request.
|
|
@@ -1123,6 +1155,7 @@ declare const QueryFeatureType: {
|
|
|
1123
1155
|
readonly WITH_AUTO_REFRESH: "WITH_AUTO_REFRESH";
|
|
1124
1156
|
readonly WITH_RESPONSE_UPDATE: "WITH_RESPONSE_UPDATE";
|
|
1125
1157
|
readonly WITH_PAGE_RESET_ON_ERROR: "WITH_PAGE_RESET_ON_ERROR";
|
|
1158
|
+
readonly WITH_OPTIMISTIC_UPDATE: "WITH_OPTIMISTIC_UPDATE";
|
|
1126
1159
|
};
|
|
1127
1160
|
type QueryFeatureType = (typeof QueryFeatureType)[keyof typeof QueryFeatureType];
|
|
1128
1161
|
type QueryFeatureContext<TArgs extends QueryArgs> = {
|
|
@@ -1153,7 +1186,8 @@ declare const createQueryFeature: <TArgs extends QueryArgs>(config: {
|
|
|
1153
1186
|
*
|
|
1154
1187
|
* Return `null` to park the query: it is reset (`response()` and `executionState()` become `null`),
|
|
1155
1188
|
* and polling and auto refresh pause until args are set again. A mutation that is still in flight
|
|
1156
|
-
* finishes first and the query parks once it has settled.
|
|
1189
|
+
* finishes first and the query parks once it has settled. `execute({ args })` runs and keeps other args
|
|
1190
|
+
* until this function produces new non-null ones.
|
|
1157
1191
|
*
|
|
1158
1192
|
* Changing arguments will automatically trigger a new execution of the query if it is eligible for auto execution (e.g. a GET request).
|
|
1159
1193
|
*/
|
|
@@ -1312,7 +1346,7 @@ type WithResponseUpdateFeatureOptions<TArgs extends QueryArgs> = {
|
|
|
1312
1346
|
/**
|
|
1313
1347
|
* A function that will be called with the latest response
|
|
1314
1348
|
* If the function returns `null`, the response will not be updated.
|
|
1315
|
-
* Otherwise, the response
|
|
1349
|
+
* Otherwise, the returned value becomes `response()` as is: it is not passed through `transformResponse` again.
|
|
1316
1350
|
* The function will be called in a reactive signal context.
|
|
1317
1351
|
* If the query get's executed after the response was updated, the response will be set the the fresh data received from the server.
|
|
1318
1352
|
*
|
|
@@ -1322,17 +1356,16 @@ type WithResponseUpdateFeatureOptions<TArgs extends QueryArgs> = {
|
|
|
1322
1356
|
* const matchEvents = mySocket.joinRoom('match-events');
|
|
1323
1357
|
*
|
|
1324
1358
|
* const myMatchQuery = getMatch(
|
|
1325
|
-
* withArgs(() => ({ matchId: 1 })),
|
|
1326
|
-
* withResponseUpdate(
|
|
1327
|
-
*
|
|
1328
|
-
*
|
|
1329
|
-
* if (!matchEvent) return null;
|
|
1359
|
+
* withArgs(() => ({ pathParams: { matchId: 1 } })),
|
|
1360
|
+
* withResponseUpdate({
|
|
1361
|
+
* updater: ({ currentResponse }) => {
|
|
1362
|
+
* const matchEvent = matchEvents();
|
|
1330
1363
|
*
|
|
1331
|
-
*
|
|
1332
|
-
* // To apply partial updates, you can use the spread operator in combination with the current response.
|
|
1364
|
+
* if (!matchEvent || !currentResponse) return null;
|
|
1333
1365
|
*
|
|
1334
|
-
*
|
|
1335
|
-
*
|
|
1366
|
+
* return { ...currentResponse, score: matchEvent.score };
|
|
1367
|
+
* },
|
|
1368
|
+
* }),
|
|
1336
1369
|
* )
|
|
1337
1370
|
*/
|
|
1338
1371
|
updater: (data: WithResponseUpdateFeatureFnData<TArgs>) => ResponseType<TArgs> | null;
|
|
@@ -1494,6 +1527,28 @@ type BaseQueryCreatorOptions<TArgs extends QueryArgs = QueryArgs> = {
|
|
|
1494
1527
|
* @default true for public queries, false for secure ones
|
|
1495
1528
|
*/
|
|
1496
1529
|
persistence?: boolean;
|
|
1530
|
+
/**
|
|
1531
|
+
* Tags of a read, for {@link QueryClient.invalidateQueries} `{ tag }` and the `invalidates` option of a
|
|
1532
|
+
* mutation. Derived from the args, so a read is tagged before its request leaves and an invalidation
|
|
1533
|
+
* restarts it even while it is in flight. Has no effect on mutations.
|
|
1534
|
+
*
|
|
1535
|
+
* @example
|
|
1536
|
+
* createGetQuery(client)<GetOpportunityArgs>((p) => `/opportunities/${p.uuid}`, {
|
|
1537
|
+
* tags: ({ args }) => [`opportunity:${args.pathParams.uuid}`],
|
|
1538
|
+
* });
|
|
1539
|
+
*/
|
|
1540
|
+
tags?: QueryTagsOption<TArgs>;
|
|
1541
|
+
/**
|
|
1542
|
+
* What a successful mutation invalidates: each target runs {@link QueryClient.invalidateQueries} once the
|
|
1543
|
+
* response landed, here and in the user's other tabs. A failed mutation invalidates nothing. Throws on a
|
|
1544
|
+
* read, which would invalidate on every load.
|
|
1545
|
+
*
|
|
1546
|
+
* @example
|
|
1547
|
+
* createPatchQuery(client)<PatchPersonArgs>((p) => `/opportunities/${p.uuid}/people/${p.peopleUuid}`, {
|
|
1548
|
+
* invalidates: ({ args }) => [{ tag: `opportunity:${args.pathParams.uuid}` }, { url: '/people' }],
|
|
1549
|
+
* });
|
|
1550
|
+
*/
|
|
1551
|
+
invalidates?: QueryInvalidatesOption<TArgs>;
|
|
1497
1552
|
/** Advanced query creator features. **WARNING!** Incorrectly using these features will likely **BREAK** your application. You have been warned! */
|
|
1498
1553
|
subtle?: BaseQueryCreatorOptionsSubtle;
|
|
1499
1554
|
};
|
|
@@ -1591,15 +1646,6 @@ type QueryConfig = {
|
|
|
1591
1646
|
* If true, the query will not throw an error because a "withArgs()" feature is missing.
|
|
1592
1647
|
*/
|
|
1593
1648
|
silenceMissingWithArgsFeatureError?: boolean;
|
|
1594
|
-
/**
|
|
1595
|
-
* If true, executing with `allowCache` on a request that cannot be cached is ignored instead of throwing
|
|
1596
|
-
* `ET301`.
|
|
1597
|
-
*
|
|
1598
|
-
* For the legacy interop layer: v2 had a single `skipCache` for every method, so it forwards `allowCache`
|
|
1599
|
-
* without being able to tell a cacheable request from an uncacheable one. Application code should not set
|
|
1600
|
-
* this - on a hand-written `execute()` the error it silences is a real mistake.
|
|
1601
|
-
*/
|
|
1602
|
-
silenceUncacheableAllowCacheError?: boolean;
|
|
1603
1649
|
/**
|
|
1604
1650
|
* Keeps `response()` on the previous args' response while a request for new args loads, reported as
|
|
1605
1651
|
* `executionState().cachedResponse`. Defaults to `true` for queries that execute themselves (GET, HEAD,
|
|
@@ -1629,6 +1675,8 @@ type QueryInvalidationCandidate = {
|
|
|
1629
1675
|
* @see QueryInvalidationOptions.filter
|
|
1630
1676
|
*/
|
|
1631
1677
|
type QueryInvalidationFilterFn = (query: QueryInvalidationCandidate) => boolean;
|
|
1678
|
+
/** A root-relative route (`/players`), resolved against the client's `baseUrl`, or an absolute URL. */
|
|
1679
|
+
type QueryInvalidationUrl = `/${string}` | `${string}://${string}`;
|
|
1632
1680
|
/** @see QueryClient.invalidateQueries */
|
|
1633
1681
|
type QueryInvalidationOptions = {
|
|
1634
1682
|
/**
|
|
@@ -1638,7 +1686,12 @@ type QueryInvalidationOptions = {
|
|
|
1638
1686
|
* Matching is boundary aware rather than a plain prefix test, so `/players` covers `/players`,
|
|
1639
1687
|
* `/players/1` and `/players?page=2` - but not `/players-archive`.
|
|
1640
1688
|
*/
|
|
1641
|
-
url?:
|
|
1689
|
+
url?: QueryInvalidationUrl;
|
|
1690
|
+
/**
|
|
1691
|
+
* Narrows the invalidation to the reads that declared this tag (see {@link BaseQueryCreatorOptions.tags}).
|
|
1692
|
+
* Combined with `url`, a read has to match both.
|
|
1693
|
+
*/
|
|
1694
|
+
tag?: string;
|
|
1642
1695
|
/**
|
|
1643
1696
|
* Narrows the invalidation further, on the built `{ method, url }` of each candidate. Runs after
|
|
1644
1697
|
* `url` when both are given.
|
|
@@ -1675,8 +1728,34 @@ declare const isUnderInvalidatedUrl: (queryUrl: string, invalidatedUrl: string)
|
|
|
1675
1728
|
*/
|
|
1676
1729
|
declare const createQueryInvalidationFilter: (options: {
|
|
1677
1730
|
url: string | null;
|
|
1731
|
+
tag?: string | null;
|
|
1678
1732
|
filter?: QueryInvalidationFilterFn;
|
|
1679
1733
|
}) => QueryRepositoryRefreshFilterFn | undefined;
|
|
1734
|
+
/** One thing a mutation invalidates: everything below a URL, or every read that declared a tag. */
|
|
1735
|
+
type QueryInvalidationTarget = {
|
|
1736
|
+
url: QueryInvalidationUrl;
|
|
1737
|
+
} | {
|
|
1738
|
+
tag: string;
|
|
1739
|
+
};
|
|
1740
|
+
/** What a {@link BaseQueryCreatorOptions.invalidates} function is handed after a successful mutation. */
|
|
1741
|
+
type QueryInvalidatesContext<TArgs extends QueryArgs> = {
|
|
1742
|
+
/** The args the mutation was sent with. */
|
|
1743
|
+
args: RequestArgs<TArgs>;
|
|
1744
|
+
/** The mutation's response, or `null` for an empty one (a `204`). */
|
|
1745
|
+
response: ResponseType<TArgs> | null;
|
|
1746
|
+
};
|
|
1747
|
+
type Bivariant<TContext, TResult> = {
|
|
1748
|
+
fn(context: TContext): TResult;
|
|
1749
|
+
}['fn'];
|
|
1750
|
+
/** @see BaseQueryCreatorOptions.invalidates */
|
|
1751
|
+
type QueryInvalidatesOption<TArgs extends QueryArgs> = readonly QueryInvalidationTarget[] | Bivariant<QueryInvalidatesContext<TArgs>, readonly QueryInvalidationTarget[]>;
|
|
1752
|
+
/** What a {@link BaseQueryCreatorOptions.tags} function is handed when the read executes. */
|
|
1753
|
+
type QueryTagsContext<TArgs extends QueryArgs> = {
|
|
1754
|
+
/** The args the read is sent with. */
|
|
1755
|
+
args: RequestArgs<TArgs>;
|
|
1756
|
+
};
|
|
1757
|
+
/** @see BaseQueryCreatorOptions.tags */
|
|
1758
|
+
type QueryTagsOption<TArgs extends QueryArgs> = readonly string[] | Bivariant<QueryTagsContext<TArgs>, readonly string[]>;
|
|
1680
1759
|
|
|
1681
1760
|
/**
|
|
1682
1761
|
* Schema version of the persisted store, owned by this library. Bumping it makes the storage adapter
|
|
@@ -2078,6 +2157,8 @@ type QuerySyncMutationMessage = {
|
|
|
2078
2157
|
method: QueryMethod;
|
|
2079
2158
|
/** The full URL the mutation was sent to. */
|
|
2080
2159
|
url: string;
|
|
2160
|
+
/** @see QuerySyncInvalidateMessage.batch */
|
|
2161
|
+
batch?: string;
|
|
2081
2162
|
};
|
|
2082
2163
|
/** Another tab was told to invalidate queries, explicitly. */
|
|
2083
2164
|
type QuerySyncInvalidateMessage = {
|
|
@@ -2087,6 +2168,16 @@ type QuerySyncInvalidateMessage = {
|
|
|
2087
2168
|
* resolved by the tab that sent it - the two tabs run the same client, so its `baseUrl` is ours.
|
|
2088
2169
|
*/
|
|
2089
2170
|
url: string | null;
|
|
2171
|
+
/**
|
|
2172
|
+
* The tag the invalidation was narrowed to, or `null`. A tab from an older deploy ignores the field and
|
|
2173
|
+
* invalidates by `url` alone, a superset.
|
|
2174
|
+
*/
|
|
2175
|
+
tag?: string | null;
|
|
2176
|
+
/**
|
|
2177
|
+
* Shared by the messages one tab posted in the same synchronous turn, so the receiver restarts a read
|
|
2178
|
+
* once for all of them. A tab from an older deploy neither sends nor reads it, and restarts once per message.
|
|
2179
|
+
*/
|
|
2180
|
+
batch?: string;
|
|
2090
2181
|
};
|
|
2091
2182
|
type QuerySyncMessage = QuerySyncResponseMessage | QuerySyncMutationMessage | QuerySyncInvalidateMessage;
|
|
2092
2183
|
/** What actually travels over the channel: a message plus the protocol version that produced it. */
|
|
@@ -2138,10 +2229,10 @@ type QuerySyncEngine = {
|
|
|
2138
2229
|
/** Elects the one tab responsible for a cache key. */
|
|
2139
2230
|
lockManager: QueryKeyLockManager;
|
|
2140
2231
|
/**
|
|
2141
|
-
* Tells the other tabs to refresh the queries they have in use below `url`, or all
|
|
2142
|
-
* `null
|
|
2232
|
+
* Tells the other tabs to refresh the queries they have in use below `url` and tagged `tag`, or all
|
|
2233
|
+
* of them for two `null`s. What {@link QueryClient.invalidateQueries} broadcasts.
|
|
2143
2234
|
*/
|
|
2144
|
-
postInvalidation: (url: string | null) => void;
|
|
2235
|
+
postInvalidation: (url: string | null, tag?: string | null) => void;
|
|
2145
2236
|
/** Stops broadcasting and listening, and closes the channel. */
|
|
2146
2237
|
destroy: () => void;
|
|
2147
2238
|
};
|
|
@@ -2465,18 +2556,20 @@ type QueryClient = {
|
|
|
2465
2556
|
* date - after a mutation, or a push message saying something changed server-side - and tells the
|
|
2466
2557
|
* user's other tabs to do the same.
|
|
2467
2558
|
*
|
|
2468
|
-
* Narrow it by `url`,
|
|
2559
|
+
* Narrow it by `url`, `tag`, `filter`, or leave it open to invalidate everything in use. A mutation
|
|
2560
|
+
* creator's `invalidates` option calls this for you after a successful response.
|
|
2469
2561
|
*
|
|
2470
2562
|
* @example
|
|
2471
|
-
* await createPlayer
|
|
2563
|
+
* await executeUntilSettled(createPlayer, { args: { body } });
|
|
2472
2564
|
*
|
|
2473
2565
|
* client.invalidateQueries({ url: '/players' }); // /players, /players/1, /players?page=2
|
|
2566
|
+
* client.invalidateQueries({ tag: 'player:1' }); // every read whose `tags` include it
|
|
2474
2567
|
* client.invalidateQueries(); // everything on screen, here and in the other tabs
|
|
2475
2568
|
*
|
|
2476
2569
|
* Same set as {@link QueryClient.refreshQueriesInUse}: reads with at least one
|
|
2477
2570
|
* consumer, cache bypassed, in-flight requests restarted. Entries sitting out their `keepUnusedFor`
|
|
2478
|
-
* window are
|
|
2479
|
-
*
|
|
2571
|
+
* window are only marked stale - refreshing what nobody is looking at is how an invalidation turns
|
|
2572
|
+
* into a request storm - so the next consumer, or an `allowCache` execution, refetches them.
|
|
2480
2573
|
*
|
|
2481
2574
|
* Reaching the other tabs needs the {@link withMultiTabSync} client feature; without it this is a
|
|
2482
2575
|
* local call, and `otherTabs: false` makes it one deliberately.
|
|
@@ -2691,6 +2784,13 @@ type HttpRequestSubtle<TArgs extends QueryArgs> = {
|
|
|
2691
2784
|
* instead of retrying into an empty room.
|
|
2692
2785
|
*/
|
|
2693
2786
|
abort: () => boolean;
|
|
2787
|
+
/** Ends the freshness window of the response it holds, so the next `allowCache` execution sends the request. */
|
|
2788
|
+
markStale: () => void;
|
|
2789
|
+
/**
|
|
2790
|
+
* Replaces the response every query bound to this request shows, without an event and without touching
|
|
2791
|
+
* its freshness. What `withOptimisticUpdate` writes and rolls back.
|
|
2792
|
+
*/
|
|
2793
|
+
setResponse: (body: ResponseType<TArgs> | null) => void;
|
|
2694
2794
|
};
|
|
2695
2795
|
type HttpRequest<TArgs extends QueryArgs> = {
|
|
2696
2796
|
/** The HTTP method of the request. */
|
|
@@ -2789,7 +2889,7 @@ type QueryArgs = {
|
|
|
2789
2889
|
headers?: QueryHeadersInput;
|
|
2790
2890
|
};
|
|
2791
2891
|
type ResponseType<T extends QueryArgs | null> = T extends QueryArgs ? T['response'] : never;
|
|
2792
|
-
type RawResponseType<T extends QueryArgs | null> = T extends QueryArgs ? T['rawResponse'] extends undefined ? T['response'] : T['rawResponse'] : never;
|
|
2892
|
+
type RawResponseType<T extends QueryArgs | null> = T extends QueryArgs ? 'rawResponse' extends keyof T ? T['rawResponse'] extends undefined ? T['response'] : T['rawResponse'] : T['response'] : never;
|
|
2793
2893
|
type PathParamsType<T extends QueryArgs | null> = T extends QueryArgs ? T['pathParams'] : never;
|
|
2794
2894
|
type QueryParamsType<T extends QueryArgs | null> = T extends QueryArgs ? T['queryParams'] : never;
|
|
2795
2895
|
type BodyType<T extends QueryArgs | null> = T extends QueryArgs ? T['body'] : never;
|
|
@@ -2870,6 +2970,11 @@ type Query<TArgs extends QueryArgs> = QueryBase<TArgs> & {
|
|
|
2870
2970
|
execute: QueryExecute<TArgs>;
|
|
2871
2971
|
/** Creates an immutable snapshot of the current query state */
|
|
2872
2972
|
createSnapshot: () => QuerySnapshot<TArgs>;
|
|
2973
|
+
/**
|
|
2974
|
+
* The full URL (base, path params and query params) of the request the query is bound to. `null`
|
|
2975
|
+
* before the first execution.
|
|
2976
|
+
*/
|
|
2977
|
+
url: ObservableSignal<string | null>;
|
|
2873
2978
|
/** Resets the query state to its initial state */
|
|
2874
2979
|
reset: () => void;
|
|
2875
2980
|
/**
|
|
@@ -3545,6 +3650,11 @@ declare const isSymfonyListError: (error: unknown) => error is FormViolationView
|
|
|
3545
3650
|
declare const QueryRuntimeErrorCode: {
|
|
3546
3651
|
readonly QUERY_FEATURE_USED_MULTIPLE_TIMES: 0;
|
|
3547
3652
|
readonly QUERY_CREATED_IN_REACTIVE_CONTEXT: 1;
|
|
3653
|
+
readonly INVALIDATES_USED_ON_READ: 2;
|
|
3654
|
+
readonly QUERY_CREATED_OUTSIDE_INJECTION_CONTEXT: 3;
|
|
3655
|
+
readonly INVALID_BASE_URL: 10;
|
|
3656
|
+
readonly INVALID_ROUTE: 11;
|
|
3657
|
+
readonly PATH_PARAMS_MISSING_IN_ROUTE_FUNCTION: 12;
|
|
3548
3658
|
readonly WITH_ARGS_QUERY_FEATURE_MISSING_BUT_ROUTE_IS_FUNCTION: 100;
|
|
3549
3659
|
readonly WITH_POLLING_USED_ON_UNSUPPORTED_HTTP_METHOD: 101;
|
|
3550
3660
|
readonly WITH_AUTO_REFRESH_USED_ON_UNSUPPORTED_HTTP_METHOD: 102;
|
|
@@ -3552,10 +3662,12 @@ declare const QueryRuntimeErrorCode: {
|
|
|
3552
3662
|
readonly SILENCE_MISSING_WITH_ARGS_FEATURE_ERROR_USED_BUT_WITH_ARGS_PRESENT: 104;
|
|
3553
3663
|
readonly WITH_LONG_POLLING_USED_ON_UNSUPPORTED_HTTP_METHOD: 105;
|
|
3554
3664
|
readonly WITH_LONG_POLLING_USED_WITH_POLLING: 106;
|
|
3665
|
+
readonly WITH_OPTIMISTIC_UPDATE_USED_ON_READ: 107;
|
|
3555
3666
|
readonly AUTH_EXTRACT_TOKENS_RESPONSE_NOT_OBJECT: 200;
|
|
3556
3667
|
readonly AUTH_EXTRACT_TOKENS_RESPONSE_MISSING_ACCESS_TOKEN: 201;
|
|
3557
3668
|
readonly AUTH_EXTRACT_TOKENS_RESPONSE_MISSING_REFRESH_TOKEN: 202;
|
|
3558
3669
|
readonly AUTH_PROVIDER_FEATURE_USED_MULTIPLE_TIMES: 203;
|
|
3670
|
+
readonly AUTH_ACCESS_TOKEN_EXPIRY_UNREADABLE: 204;
|
|
3559
3671
|
readonly QUERY_CLIENT_FEATURE_USED_MULTIPLE_TIMES: 250;
|
|
3560
3672
|
readonly UNCACHEABLE_REQUEST_HAS_CACHE_KEY_PARAM: 300;
|
|
3561
3673
|
readonly UNCACHEABLE_REQUEST_HAS_ALLOW_CACHE_PARAM: 301;
|
|
@@ -3581,6 +3693,8 @@ declare const QueryRuntimeErrorCode: {
|
|
|
3581
3693
|
type QueryRuntimeErrorCode = (typeof QueryRuntimeErrorCode)[keyof typeof QueryRuntimeErrorCode];
|
|
3582
3694
|
declare const queryFeatureUsedMultipleTimes: (type: string) => RuntimeError<0>;
|
|
3583
3695
|
declare const queryCreatedInReactiveContext: () => RuntimeError<1>;
|
|
3696
|
+
declare const invalidatesUsedOnRead: (method: string) => RuntimeError<2>;
|
|
3697
|
+
declare const withOptimisticUpdateUsedOnRead: (method: string) => RuntimeError<107>;
|
|
3584
3698
|
declare const withArgsQueryFeatureMissingButRouteIsFunction: () => RuntimeError<100>;
|
|
3585
3699
|
declare const withPollingUsedOnUnsupportedHttpMethod: (method: string) => RuntimeError<101>;
|
|
3586
3700
|
declare const withAutoRefreshUsedOnUnsupportedHttpMethod: (method: string) => RuntimeError<102>;
|
|
@@ -3592,6 +3706,7 @@ declare const authExtractTokensResponseNotObject: () => RuntimeError<200>;
|
|
|
3592
3706
|
declare const authExtractTokensResponseMissingAccessToken: () => RuntimeError<201>;
|
|
3593
3707
|
declare const authExtractTokensResponseMissingRefreshToken: () => RuntimeError<202>;
|
|
3594
3708
|
declare const authProviderFeatureUsedMultipleTimes: (type: string) => RuntimeError<203>;
|
|
3709
|
+
declare const authAccessTokenExpiryUnreadable: (claim: string) => RuntimeError<204>;
|
|
3595
3710
|
declare const queryClientFeatureUsedMultipleTimes: (type: string) => RuntimeError<250>;
|
|
3596
3711
|
declare const uncacheableRequestHasCacheKeyParam: (key: string) => RuntimeError<300>;
|
|
3597
3712
|
declare const uncacheableRequestHasAllowCacheParam: () => RuntimeError<301>;
|
|
@@ -3606,17 +3721,127 @@ declare const tokensNotAvailableInsideAuthAndExec: () => RuntimeError<700>;
|
|
|
3606
3721
|
declare const invalidStateInsideSecureExecuteFactory: () => RuntimeError<701>;
|
|
3607
3722
|
declare const circularQueryDependency: () => RuntimeError<800>;
|
|
3608
3723
|
declare const queryExecutedAfterDestroyMessage: (route: unknown) => string;
|
|
3724
|
+
declare const queryExecutedWhileParkedMessage: (route: unknown) => string;
|
|
3609
3725
|
declare const legacyPrepareWithoutInjectionContext: (creatorName: string | undefined, method?: "prepare" | "createSubject" | "createSignal") => RuntimeError<950>;
|
|
3610
3726
|
declare const querySequenceAlreadyRunning: () => RuntimeError<900>;
|
|
3611
3727
|
declare const queryBatchAlreadyRunning: () => RuntimeError<910>;
|
|
3612
3728
|
declare const queryBatchWithArgsUsed: () => RuntimeError<911>;
|
|
3613
3729
|
|
|
3730
|
+
/** The fixed members of a query group, keyed by the name the group reports them under. */
|
|
3731
|
+
type QueryGroupMembers = Record<string, AnyNewQuery>;
|
|
3732
|
+
type QueryGroupMemberResponse<TQuery> = TQuery extends Query<infer TArgs> ? ResponseType<TArgs> : never;
|
|
3733
|
+
type QueryGroupKey<TMembers extends QueryGroupMembers> = keyof TMembers & string;
|
|
3734
|
+
/** The member that ran last and its current response, which is `null` until it has one. */
|
|
3735
|
+
type QueryGroupLatest<TMembers extends QueryGroupMembers> = {
|
|
3736
|
+
[TKey in QueryGroupKey<TMembers>]: {
|
|
3737
|
+
key: TKey;
|
|
3738
|
+
response: QueryGroupMemberResponse<TMembers[TKey]> | null;
|
|
3739
|
+
};
|
|
3740
|
+
}[QueryGroupKey<TMembers>];
|
|
3741
|
+
/** A settled, successful execution of one member. */
|
|
3742
|
+
type QueryGroupSuccess<TMembers extends QueryGroupMembers> = {
|
|
3743
|
+
[TKey in QueryGroupKey<TMembers>]: {
|
|
3744
|
+
key: TKey;
|
|
3745
|
+
response: QueryGroupMemberResponse<TMembers[TKey]>;
|
|
3746
|
+
};
|
|
3747
|
+
}[QueryGroupKey<TMembers>];
|
|
3748
|
+
/**
|
|
3749
|
+
* A fixed set of queries of which the one executed last wins - an action set like accept/decline or
|
|
3750
|
+
* create/edit/delete. Built by {@link createQueryGroup}.
|
|
3751
|
+
*/
|
|
3752
|
+
type QueryGroup<TMembers extends QueryGroupMembers> = {
|
|
3753
|
+
/** The members. Executing one through here records it as {@link QueryGroup.latest}; executing the query you passed in does not. */
|
|
3754
|
+
members: TMembers;
|
|
3755
|
+
/** The loading state of a member that is loading, the latest one first. `null` when none is. */
|
|
3756
|
+
loading: Signal<HttpRequestLoadingState | null>;
|
|
3757
|
+
/** The error of the latest member only, so an older member's failure clears once another one runs. */
|
|
3758
|
+
error: Signal<QueryErrorResponse | null>;
|
|
3759
|
+
/** The member executed last, or `null` before the first execution. */
|
|
3760
|
+
latest: Signal<QueryGroupLatest<TMembers> | null>;
|
|
3761
|
+
/** Re-runs the latest member with its last args. Does nothing before the first execution. */
|
|
3762
|
+
execute: (executeArgs?: {
|
|
3763
|
+
options?: RunQueryExecuteOptions;
|
|
3764
|
+
}) => void;
|
|
3765
|
+
/** Emits once for every member execution through the group that succeeds. Completes when the group's injection context is destroyed. */
|
|
3766
|
+
succeeded$: Observable<QueryGroupSuccess<TMembers>>;
|
|
3767
|
+
};
|
|
3768
|
+
type AnyQueryGroup = QueryGroup<QueryGroupMembers>;
|
|
3769
|
+
/**
|
|
3770
|
+
* Groups a fixed set of queries of which the one executed last wins. The group fits `etQueryButton` and
|
|
3771
|
+
* `et-query-error`'s `[query]`, which retries the member that ran last. Call it in an injection context.
|
|
3772
|
+
*
|
|
3773
|
+
* @example
|
|
3774
|
+
* readonly actions = createQueryGroup({
|
|
3775
|
+
* accept: postAcceptInvitation(withArgs(() => ({ pathParams: { id: this.id() } }))),
|
|
3776
|
+
* decline: postDeclineInvitation(withArgs(() => ({ pathParams: { id: this.id() } }))),
|
|
3777
|
+
* });
|
|
3778
|
+
*
|
|
3779
|
+
* accept() {
|
|
3780
|
+
* this.actions.members.accept.execute();
|
|
3781
|
+
* }
|
|
3782
|
+
*/
|
|
3783
|
+
declare const createQueryGroup: <TMembers extends QueryGroupMembers>(members: TMembers) => QueryGroup<TMembers>;
|
|
3784
|
+
|
|
3614
3785
|
/**
|
|
3615
3786
|
* `true` on every request `@ethlete/query` sends through `HttpClient`, so an app interceptor can skip
|
|
3616
3787
|
* query requests: `if (req.context.get(IS_QUERY_REQUEST)) return next(req);`.
|
|
3617
3788
|
*/
|
|
3618
3789
|
declare const IS_QUERY_REQUEST: HttpContextToken<boolean>;
|
|
3619
3790
|
|
|
3791
|
+
/** What {@link WithOptimisticUpdateOptions.update} is handed. */
|
|
3792
|
+
type OptimisticUpdateContext<TArgs extends QueryArgs, TCurrent> = {
|
|
3793
|
+
/** The cached response of the read being updated, as the server sent it (before its `transformResponse`). */
|
|
3794
|
+
current: TCurrent;
|
|
3795
|
+
/** The args the mutation is sent with. */
|
|
3796
|
+
args: RequestArgs<TArgs>;
|
|
3797
|
+
/**
|
|
3798
|
+
* `undefined` before the request. After a successful one, the mutation's response, or `null` for an empty
|
|
3799
|
+
* one (a `204`).
|
|
3800
|
+
*/
|
|
3801
|
+
response?: ResponseType<TArgs> | null;
|
|
3802
|
+
};
|
|
3803
|
+
type OptimisticCurrent<TRead extends QueryArgs> = [TRead] extends [never] ? unknown : RawResponseType<TRead>;
|
|
3804
|
+
/** @see withOptimisticUpdate */
|
|
3805
|
+
type WithOptimisticUpdateOptions<TArgs extends QueryArgs, TRead extends QueryArgs = never> = {
|
|
3806
|
+
/**
|
|
3807
|
+
* The read creator whose entries `target` matches. Only types `current`; the entries are found by `target`
|
|
3808
|
+
* alone, so it must not match entries of another read. Without it, `current` is `unknown`.
|
|
3809
|
+
*/
|
|
3810
|
+
read?: QueryCreator<TRead>;
|
|
3811
|
+
/** The cache entries to update: every read below a URL, or every read that declared a tag. */
|
|
3812
|
+
target: (context: {
|
|
3813
|
+
args: RequestArgs<TArgs>;
|
|
3814
|
+
}) => QueryInvalidationTarget | readonly QueryInvalidationTarget[];
|
|
3815
|
+
/**
|
|
3816
|
+
* Returns the next response of one matched entry, or `null` to leave it alone. Called before the request,
|
|
3817
|
+
* again with `response` after a successful one (`null` there keeps the earlier result), and again whenever
|
|
3818
|
+
* another optimistic update of the same entry rolls back. Must be pure.
|
|
3819
|
+
*/
|
|
3820
|
+
update: (context: OptimisticUpdateContext<TArgs, OptimisticCurrent<TRead>>) => OptimisticCurrent<TRead> | null;
|
|
3821
|
+
};
|
|
3822
|
+
/**
|
|
3823
|
+
* Writes the expected result of a mutation into the cached responses of the reads `target` matches before
|
|
3824
|
+
* the request leaves, and rolls those writes back if it fails or is cancelled. Pair it with the creator's
|
|
3825
|
+
* `invalidates`, whose refetch corrects a wrong guess. The writes stay in this tab; the invalidation reaches
|
|
3826
|
+
* the others.
|
|
3827
|
+
*
|
|
3828
|
+
* A rollback leaves an entry alone that a refetch or another tab wrote in the meantime; other optimistic
|
|
3829
|
+
* updates of the entry still pending are re-applied on top of what it held before.
|
|
3830
|
+
*
|
|
3831
|
+
* @example
|
|
3832
|
+
* patchOpportunityPerson(
|
|
3833
|
+
* withArgs(() => ({ pathParams: { uuid, peopleUuid }, body })),
|
|
3834
|
+
* withOptimisticUpdate({
|
|
3835
|
+
* read: getOpportunity,
|
|
3836
|
+
* target: ({ args }) => ({ tag: `opportunity:${args.pathParams.uuid}` }),
|
|
3837
|
+
* update: ({ current, args }) => ({ ...current, people: toggle(current.people, args.pathParams.peopleUuid) }),
|
|
3838
|
+
* }),
|
|
3839
|
+
* );
|
|
3840
|
+
*
|
|
3841
|
+
* @throws If the query is a read (e.g. a GET request)
|
|
3842
|
+
*/
|
|
3843
|
+
declare const withOptimisticUpdate: <TArgs extends QueryArgs, TRead extends QueryArgs = never>(options: WithOptimisticUpdateOptions<TArgs, TRead>) => QueryFeature<TArgs>;
|
|
3844
|
+
|
|
3620
3845
|
/** The last element of a tuple type - the response of the step a `.then()` callback follows. */
|
|
3621
3846
|
type LastOf<T extends unknown[]> = T extends [...unknown[], infer L] ? L : never;
|
|
3622
3847
|
/** The current lifecycle phase of a query sequence. */
|
|
@@ -4062,6 +4287,7 @@ type SecureExecuteFactoryOptions<TArgs extends QueryArgs> = {
|
|
|
4062
4287
|
authProvider: AnyBearerAuthProvider;
|
|
4063
4288
|
deps: QueryDependencies;
|
|
4064
4289
|
state: QueryState<TArgs>;
|
|
4290
|
+
route?: unknown;
|
|
4065
4291
|
/**
|
|
4066
4292
|
* Whether the query runs itself rather than only on an explicit `execute()` - the same condition
|
|
4067
4293
|
* `maybeExecute` and the `withArgs` feature use. Only those are re-run once a new session starts;
|
|
@@ -4220,6 +4446,9 @@ type TokenRefreshQueryConfig<TArgs extends QueryArgs> = AuthQueryConfig<TArgs> &
|
|
|
4220
4446
|
/**
|
|
4221
4447
|
* HTTP status codes that should trigger a retry.
|
|
4222
4448
|
* Code 0 means network error (no internet).
|
|
4449
|
+
*
|
|
4450
|
+
* Unlike `createDefaultRetryFn`, the default retries a `500`: a refresh that fails for good ends the
|
|
4451
|
+
* session, so waiting out a backend error is cheaper than logging the user out.
|
|
4223
4452
|
* @default [0, 408, 425, 429, 500, 502, 503, 504]
|
|
4224
4453
|
*/
|
|
4225
4454
|
retryableStatusCodes?: number[];
|
|
@@ -4555,7 +4784,9 @@ type TokenExpirationWarningConfig = {
|
|
|
4555
4784
|
};
|
|
4556
4785
|
type TokenExpirationWarningFeature = {
|
|
4557
4786
|
/**
|
|
4558
|
-
*
|
|
4787
|
+
* `true` while the access token is inside `warningThreshold` of its expiry and nothing is going to
|
|
4788
|
+
* renew it: there is no refresh query or refresh token, or the scheduled refresh is overdue by 10 s
|
|
4789
|
+
* (or half the refresh buffer, if that is shorter) - it failed, was throttled, or is still in flight. A routine refresh never turns it on.
|
|
4559
4790
|
*/
|
|
4560
4791
|
isExpiringSoon: Signal<boolean>;
|
|
4561
4792
|
/**
|
|
@@ -4747,7 +4978,8 @@ type BearerAuthExecutionState<TType extends string = string> = BearerAuthExecuti
|
|
|
4747
4978
|
/**
|
|
4748
4979
|
* Whether this tab has a session, and whether it is still finding out.
|
|
4749
4980
|
*
|
|
4750
|
-
* - `unknown` - the provider has not finished its own startup yet.
|
|
4981
|
+
* - `unknown` - the provider has not finished its own startup yet. With multi-tab sync and a cookie to
|
|
4982
|
+
* restore from, a joining tab stays here for up to 250 ms after `inject` returns, while it asks the leader.
|
|
4751
4983
|
* - `restoring` - a session restore is in flight (`withPersistentAuth`'s auto-login).
|
|
4752
4984
|
* - `authenticated` - tokens are applied.
|
|
4753
4985
|
* - `anonymous` - no session, and nothing is trying to get one.
|
|
@@ -4945,7 +5177,9 @@ type CreateBearerAuthProviderConfig<TBuilders extends readonly AnyQueryBuilder[]
|
|
|
4945
5177
|
*/
|
|
4946
5178
|
features?: TFeatures;
|
|
4947
5179
|
/**
|
|
4948
|
-
*
|
|
5180
|
+
* Turns the access token into what `bearerData()` holds. Returning `null` means the token carries no
|
|
5181
|
+
* usable data. The proactive refresh reads the expiry claim off the result, and off the raw JWT
|
|
5182
|
+
* payload when the result has none.
|
|
4949
5183
|
* @default decryptBearer()
|
|
4950
5184
|
*/
|
|
4951
5185
|
bearerDecryptFn?: (token: string) => TBearerData;
|
|
@@ -4985,14 +5219,17 @@ type BearerAuthProvider<TBuilders extends readonly AnyQueryBuilder[], TFeatures
|
|
|
4985
5219
|
*/
|
|
4986
5220
|
isAccessTokenExpired: () => boolean;
|
|
4987
5221
|
/**
|
|
4988
|
-
* The latest
|
|
5222
|
+
* The key and snapshot of the latest auth query run, including the provider's own runs (auto-login,
|
|
5223
|
+
* token refresh). A token revocation does not count. `null` before the first run and after a logout.
|
|
5224
|
+
* To follow one query, prefer `queries.<key>.snapshot()`; for progress, `executionState()`.
|
|
4989
5225
|
*/
|
|
4990
5226
|
latestExecutedQuery: Signal<{
|
|
4991
5227
|
key: ExtractQueryKey<TBuilders[number]>;
|
|
4992
5228
|
snapshot: QuerySnapshot<QueryArgs>;
|
|
4993
5229
|
} | null>;
|
|
4994
5230
|
/**
|
|
4995
|
-
*
|
|
5231
|
+
* Like {@link latestExecutedQuery}, but only for runs the app started: an `execute()` without a
|
|
5232
|
+
* `triggeredBy`. `null` before the first such run and after a logout.
|
|
4996
5233
|
*/
|
|
4997
5234
|
latestNonInternalQuery: Signal<{
|
|
4998
5235
|
key: ExtractQueryKey<TBuilders[number]>;
|
|
@@ -5113,6 +5350,8 @@ type BearerAuthProviderQueryContext<TBearerData = unknown, TBuilders extends rea
|
|
|
5113
5350
|
* all, so the provider cannot work it out on its own.
|
|
5114
5351
|
*/
|
|
5115
5352
|
reportAccessTokenExpiry: (isExpired: () => boolean) => void;
|
|
5353
|
+
/** Hands the provider the claim that carries the access token's expiry. `exp` until reported. */
|
|
5354
|
+
reportExpiresInPropertyName: (claim: string) => void;
|
|
5116
5355
|
};
|
|
5117
5356
|
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>>;
|
|
5118
5357
|
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>>;
|
|
@@ -5547,349 +5786,129 @@ declare const setQueryDevtoolsAuthTabLocal: (options: {
|
|
|
5547
5786
|
}) => void;
|
|
5548
5787
|
|
|
5549
5788
|
/**
|
|
5550
|
-
*
|
|
5551
|
-
*
|
|
5789
|
+
* The kind of object a {@link QueryDevtoolsEntry} describes. Part of the devtools contract consumed
|
|
5790
|
+
* by `<et-query-devtools>` - not a general-purpose query API.
|
|
5552
5791
|
*/
|
|
5553
|
-
type
|
|
5792
|
+
type QueryDevtoolsEntryKind = 'query' | 'query-stack' | 'paged-query-stack' | 'query-sequence' | 'query-batch' | 'auth-provider' | 'ws-client' | 'query-form';
|
|
5554
5793
|
/**
|
|
5555
|
-
*
|
|
5556
|
-
*
|
|
5557
|
-
*
|
|
5794
|
+
* One chunk of a parsed query route: either literal text (`param: null`) or a path param, whose name
|
|
5795
|
+
* is in {@link QueryDevtoolsRoutePart.text}. Lets the devtools tell a route's static parts from its
|
|
5796
|
+
* dynamic ones and fill the latter in with the values a query actually used.
|
|
5558
5797
|
*/
|
|
5559
|
-
type
|
|
5560
|
-
|
|
5561
|
-
|
|
5562
|
-
|
|
5563
|
-
|
|
5798
|
+
type QueryDevtoolsRoutePart = {
|
|
5799
|
+
text: string;
|
|
5800
|
+
param: string | null;
|
|
5801
|
+
};
|
|
5802
|
+
/**
|
|
5803
|
+
* One of a bearer auth provider's queries, described without instantiating it - which is what lets
|
|
5804
|
+
* tooling build the token-refresh request of a provider whose refresh query has not run yet.
|
|
5805
|
+
*/
|
|
5806
|
+
type QueryDevtoolsAuthQuery = {
|
|
5807
|
+
key: string;
|
|
5808
|
+
/** `token-refresh` for the query registered via `withRefreshQuery`, `auth` for the rest. */
|
|
5809
|
+
kind: 'auth' | 'token-refresh';
|
|
5810
|
+
method: string;
|
|
5811
|
+
/** Stringified route with path params rendered as `:name`. */
|
|
5812
|
+
route: string;
|
|
5813
|
+
/** The args a token refresh sends for a given refresh token. Only set on the refresh query. */
|
|
5814
|
+
buildArgs?: (refreshToken: string) => {
|
|
5815
|
+
body?: unknown;
|
|
5816
|
+
};
|
|
5817
|
+
};
|
|
5818
|
+
/**
|
|
5819
|
+
* Descriptive, mostly-static metadata about a registered devtools entry. The live, reactive state
|
|
5820
|
+
* is read from the entry's {@link QueryDevtoolsEntry.handle} instead.
|
|
5821
|
+
*/
|
|
5822
|
+
type QueryDevtoolsEntryMeta = {
|
|
5823
|
+
/** Display name of the owning query client, where known. */
|
|
5824
|
+
clientName?: string;
|
|
5825
|
+
/** Base URL of the owning query client, where known. */
|
|
5826
|
+
clientBaseUrl?: string;
|
|
5827
|
+
/** Human readable display name (e.g. an auth provider or web socket client name). */
|
|
5828
|
+
name?: string;
|
|
5829
|
+
/** The connection URL, for web socket clients. */
|
|
5830
|
+
url?: string;
|
|
5831
|
+
/** The GraphQL document string, for GraphQL queries. */
|
|
5832
|
+
gqlQuery?: string;
|
|
5833
|
+
/** Stringified route with path params rendered as `:name`, for queries. */
|
|
5834
|
+
route?: string;
|
|
5835
|
+
/** The same route, split into its literal and path-param parts. */
|
|
5836
|
+
routeParts?: QueryDevtoolsRoutePart[];
|
|
5837
|
+
/** Human readable HTTP/GQL method, for queries (e.g. `GET`, `GQL QUERY`). */
|
|
5838
|
+
method?: string;
|
|
5839
|
+
/** The features applied at creation, with the options each was configured with. */
|
|
5840
|
+
features?: QueryDevtoolsFeature[];
|
|
5841
|
+
/** Whether the query authenticates through a bearer auth provider, for queries. */
|
|
5842
|
+
isSecure?: boolean;
|
|
5843
|
+
/** Name of the bearer auth provider a secure query authenticates with. */
|
|
5844
|
+
authProviderName?: string;
|
|
5845
|
+
/** The provider's own queries, for auth providers. */
|
|
5846
|
+
authQueries?: QueryDevtoolsAuthQuery[];
|
|
5564
5847
|
/**
|
|
5565
|
-
*
|
|
5566
|
-
*
|
|
5848
|
+
* The batch that created a query, for the one query `createQueryBatch` runs per item. The panel folds
|
|
5849
|
+
* such queries under their batch's own entry instead of listing a row per item, and the registry caps
|
|
5850
|
+
* their tombstones per batch so a bulk run cannot evict everything else it kept.
|
|
5567
5851
|
*/
|
|
5568
|
-
|
|
5569
|
-
/**
|
|
5570
|
-
|
|
5852
|
+
batch?: QueryBatchDevtoolsHandle;
|
|
5853
|
+
/** Which of the batch's items the query was created for, for a batch's item query. */
|
|
5854
|
+
batchItemIndex?: number;
|
|
5855
|
+
/** How many of a batch's requests may be in flight at once, for batches. */
|
|
5856
|
+
concurrency?: number;
|
|
5857
|
+
/** Whether a batch's first failure stops the rest of the run, for batches. */
|
|
5858
|
+
stopOnError?: boolean;
|
|
5859
|
+
/** The query config passed at creation, for queries. */
|
|
5860
|
+
queryConfig?: QueryConfig;
|
|
5861
|
+
/** The creator options passed at creation, for queries. */
|
|
5862
|
+
creator?: CreateQueryCreatorOptions;
|
|
5863
|
+
/** The owning client's repository, where known (queries and auth providers). */
|
|
5864
|
+
repository?: QueryRepository;
|
|
5571
5865
|
/**
|
|
5572
|
-
*
|
|
5573
|
-
*
|
|
5574
|
-
* someone makes rather than the way the panel ships.
|
|
5866
|
+
* The owning client itself, where known (queries and auth providers). Read for state that hangs off
|
|
5867
|
+
* the client rather than the repository - the multi-tab sync engine, in particular.
|
|
5575
5868
|
*/
|
|
5576
|
-
|
|
5577
|
-
/** The faults armed per client, for the same reason and with the same default. */
|
|
5578
|
-
armedFaults: QueryDevtoolsStorageScope;
|
|
5869
|
+
client?: QueryClient;
|
|
5579
5870
|
/**
|
|
5580
|
-
* The
|
|
5581
|
-
*
|
|
5582
|
-
* `none` for a machine where nothing of the sort may be kept. Outside a development build `local` is
|
|
5583
|
-
* refused and read back as `session`, see {@link queryDevtoolsAllowsLocalAuthSessions}.
|
|
5871
|
+
* The DOM element of the component/directive that created a query, when available. Used by the
|
|
5872
|
+
* devtools "inspect" tool to map a query back to its place in the live UI.
|
|
5584
5873
|
*/
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
|
|
5588
|
-
|
|
5589
|
-
|
|
5874
|
+
element?: HTMLElement | null;
|
|
5875
|
+
};
|
|
5876
|
+
/**
|
|
5877
|
+
* A single entry in the {@link queryDevtoolsEntries} registry. The `handle` is the live object
|
|
5878
|
+
* (query, stack, sequence or auth provider) so its signals stay reactive when read by the UI.
|
|
5879
|
+
*/
|
|
5880
|
+
type QueryDevtoolsEntry = {
|
|
5881
|
+
id: string;
|
|
5882
|
+
kind: QueryDevtoolsEntryKind;
|
|
5883
|
+
meta: QueryDevtoolsEntryMeta;
|
|
5884
|
+
handle: unknown;
|
|
5885
|
+
createdAt: number;
|
|
5590
5886
|
/**
|
|
5591
|
-
*
|
|
5592
|
-
*
|
|
5887
|
+
* When the query behind this entry was destroyed, or `null`/absent while it is still live. A
|
|
5888
|
+
* destroyed entry is kept as a tombstone - a frozen snapshot of what the query last held - so a
|
|
5889
|
+
* request that failed on the way out (a `401` that redirects to login and takes its component with
|
|
5890
|
+
* it) is still readable by the time the panel is opened. Its `handle` answers with constants and
|
|
5891
|
+
* every action on it is inert.
|
|
5593
5892
|
*/
|
|
5594
|
-
|
|
5893
|
+
destroyedAt?: number | null;
|
|
5595
5894
|
/**
|
|
5596
|
-
*
|
|
5597
|
-
*
|
|
5598
|
-
* router, an open form - is still showing the last one until it boots again.
|
|
5895
|
+
* What the entry has done since it was created - executions, requests, payload sizes. Present for
|
|
5896
|
+
* queries; stacks, sequences and auth providers aggregate the stats of the queries they own instead.
|
|
5599
5897
|
*/
|
|
5600
|
-
|
|
5898
|
+
stats?: QueryDevtoolsStatsHandle;
|
|
5899
|
+
/** The query forms this entry's args read, for queries created with a `withArgs` feature. */
|
|
5900
|
+
formLinks?: QueryDevtoolsFormLinksHandle;
|
|
5901
|
+
/**
|
|
5902
|
+
* The response overrides armed on this entry, for queries. Unlike {@link stats}/{@link formLinks} -
|
|
5903
|
+
* whose write side is internal instrumentation the panel only ever reads - the panel itself is what
|
|
5904
|
+
* arms an override, so this exposes the full recorder rather than a read-only handle.
|
|
5905
|
+
*/
|
|
5906
|
+
overrides?: QueryDevtoolsOverridesRecorder;
|
|
5601
5907
|
};
|
|
5602
5908
|
/**
|
|
5603
|
-
*
|
|
5604
|
-
*
|
|
5605
|
-
*
|
|
5606
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
5607
|
-
*/
|
|
5608
|
-
declare const queryDevtoolsSettings: Signal<QueryDevtoolsSettings>;
|
|
5609
|
-
/**
|
|
5610
|
-
* The `Storage` a scope names, or `null` for `none` and for a browser that refuses one (private mode,
|
|
5611
|
-
* storage disabled, server-side rendering). Callers treat "no storage" and "not persisted" alike.
|
|
5612
|
-
*
|
|
5613
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
5614
|
-
*/
|
|
5615
|
-
declare const queryDevtoolsStorage: (scope: QueryDevtoolsStorageScope) => Storage | null;
|
|
5616
|
-
/**
|
|
5617
|
-
* Reads one JSON-encoded devtools key from the store a scope names, or `null`.
|
|
5618
|
-
*
|
|
5619
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
5620
|
-
*/
|
|
5621
|
-
declare const readQueryDevtoolsStore: <T>(scope: QueryDevtoolsStorageScope, key: string) => T | null;
|
|
5622
|
-
/**
|
|
5623
|
-
* Writes one devtools key into the store a scope names. A scope of `none` writes nothing.
|
|
5624
|
-
*
|
|
5625
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
5626
|
-
*/
|
|
5627
|
-
declare const writeQueryDevtoolsStore: (scope: QueryDevtoolsStorageScope, key: string, value: unknown) => void;
|
|
5628
|
-
/**
|
|
5629
|
-
* Removes one devtools key from **both** stores, whatever the scope currently is - so a scope that
|
|
5630
|
-
* changed cannot leave a stale copy behind for the next load to read.
|
|
5631
|
-
*
|
|
5632
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
5633
|
-
*/
|
|
5634
|
-
declare const clearQueryDevtoolsStore: (key: string) => void;
|
|
5635
|
-
/**
|
|
5636
|
-
* Whether the session vault may be kept in `localStorage`. Only a development build may: the vault
|
|
5637
|
-
* holds live access and refresh tokens plus the credentials somebody typed in, and a deployed
|
|
5638
|
-
* application that mounts the panel for its debugging value must not leave those on the machine of
|
|
5639
|
-
* whoever opened it. Outside a development build a stored or default `local` reads back as `none`, so a
|
|
5640
|
-
* plain login keeps nothing; `session` stays on offer for whoever picks it in Settings.
|
|
5641
|
-
*
|
|
5642
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
5643
|
-
*/
|
|
5644
|
-
declare const queryDevtoolsAllowsLocalAuthSessions: () => boolean;
|
|
5645
|
-
/**
|
|
5646
|
-
* Changes part of the devtools configuration and stores it. Values outside the range a field allows are
|
|
5647
|
-
* clamped rather than rejected.
|
|
5648
|
-
*
|
|
5649
|
-
* Overrides are the one field not to set here: their scope moves an existing store, so it goes through
|
|
5650
|
-
* `setQueryDevtoolsOverridesScope()` instead.
|
|
5651
|
-
*
|
|
5652
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
5653
|
-
*/
|
|
5654
|
-
declare const setQueryDevtoolsSettings: (patch: Partial<QueryDevtoolsSettings>) => void;
|
|
5655
|
-
|
|
5656
|
-
/**
|
|
5657
|
-
* A fault armed on one query client from the devtools panel. Unlike the panel's forced states - which
|
|
5658
|
-
* write a query's signals directly - an armed fault is applied inside the request pipeline, so retries,
|
|
5659
|
-
* error handling features and the cache all see it exactly as they would see a real one.
|
|
5660
|
-
*/
|
|
5661
|
-
type QueryDevtoolsFault = {
|
|
5662
|
-
/** Extra latency in ms added before every attempt starts. `0` disables it. */
|
|
5663
|
-
latencyMs: number;
|
|
5664
|
-
/**
|
|
5665
|
-
* How many upcoming attempts fail before the client is let through again, counted down as they are
|
|
5666
|
-
* consumed. `0` disables it.
|
|
5667
|
-
*/
|
|
5668
|
-
failNext: number;
|
|
5669
|
-
/** The percentage of attempts that fail, rolled per attempt. `0` disables it, `100` fails everything. */
|
|
5670
|
-
failRate: number;
|
|
5671
|
-
/** The status an injected failure responds with. */
|
|
5672
|
-
status: number;
|
|
5673
|
-
};
|
|
5674
|
-
/** The neutral fault: nothing armed. */
|
|
5675
|
-
declare const EMPTY_QUERY_DEVTOOLS_FAULT: QueryDevtoolsFault;
|
|
5676
|
-
/**
|
|
5677
|
-
* Statuses worth injecting, and whether the SDK's default retry policy retries them. A picker built from
|
|
5678
|
-
* this cannot arm a 500 and then leave you wondering why no retry fired.
|
|
5679
|
-
* @see runDefaultQueryRetry
|
|
5680
|
-
*/
|
|
5681
|
-
declare const QUERY_DEVTOOLS_FAULT_STATUSES: {
|
|
5682
|
-
status: number;
|
|
5683
|
-
label: string;
|
|
5684
|
-
retryable: boolean;
|
|
5685
|
-
}[];
|
|
5686
|
-
/**
|
|
5687
|
-
* The faults armed per client name, consumed by the `<et-query-devtools>` UI. Clients with nothing armed
|
|
5688
|
-
* are absent rather than present with an {@link EMPTY_QUERY_DEVTOOLS_FAULT}.
|
|
5689
|
-
*/
|
|
5690
|
-
declare const queryDevtoolsFaults: Signal<Record<string, QueryDevtoolsFault>>;
|
|
5691
|
-
/**
|
|
5692
|
-
* Whether what is armed right now came back from a previous page load rather than being armed by hand.
|
|
5693
|
-
* The panel's armed bar says so, because injected failures nobody remembers arming look exactly like a
|
|
5694
|
-
* broken API.
|
|
5695
|
-
*/
|
|
5696
|
-
declare const queryDevtoolsFaultsRestored: Signal<boolean>;
|
|
5697
|
-
/**
|
|
5698
|
-
* Where the armed faults are kept. Switching to a scope that keeps them stores whatever is armed right
|
|
5699
|
-
* now; switching to `none` empties the store and leaves this page's faults exactly where they are.
|
|
5700
|
-
*/
|
|
5701
|
-
declare const setQueryDevtoolsFaultsScope: (next: QueryDevtoolsStorageScope) => void;
|
|
5702
|
-
/** Whether anything at all is armed on a fault. */
|
|
5703
|
-
declare const isQueryDevtoolsFaultArmed: (fault: QueryDevtoolsFault) => boolean;
|
|
5704
|
-
/**
|
|
5705
|
-
* Arms (or updates) the fault of one client. Only the given fields change; the rest keep their current
|
|
5706
|
-
* value. A client whose resulting fault has nothing armed is dropped from {@link queryDevtoolsFaults}.
|
|
5707
|
-
*
|
|
5708
|
-
* Part of the devtools contract consumed by `<et-query-devtools>`; a fault is a debugging tool, not
|
|
5709
|
-
* something an application should arm on itself.
|
|
5710
|
-
*/
|
|
5711
|
-
declare const setQueryDevtoolsFault: (options: {
|
|
5712
|
-
clientName: string;
|
|
5713
|
-
patch: Partial<QueryDevtoolsFault>;
|
|
5714
|
-
}) => void;
|
|
5715
|
-
/**
|
|
5716
|
-
* Disarms every fault of one client, or of all clients when no name is given.
|
|
5717
|
-
*
|
|
5718
|
-
* @see setQueryDevtoolsFault
|
|
5719
|
-
*/
|
|
5720
|
-
declare const clearQueryDevtoolsFaults: (clientName?: string) => void;
|
|
5721
|
-
|
|
5722
|
-
/**
|
|
5723
|
-
* One field of a query form, as the devtools panel reads it: what it holds, what it puts in the URL,
|
|
5724
|
-
* and the rules that decide when either changes.
|
|
5725
|
-
*/
|
|
5726
|
-
type QueryDevtoolsFormField = {
|
|
5727
|
-
key: string;
|
|
5728
|
-
/** The query-param key the field serializes to, with the form's prefix applied. */
|
|
5729
|
-
paramKey: string;
|
|
5730
|
-
/** The committed value - what the query args are built from. */
|
|
5731
|
-
value: unknown;
|
|
5732
|
-
/** The live value of the bound control, which differs from {@link value} while a debounce is pending. */
|
|
5733
|
-
liveValue: unknown;
|
|
5734
|
-
defaultValue: unknown;
|
|
5735
|
-
/** Whether the committed value is the default one. */
|
|
5736
|
-
isDefault: boolean;
|
|
5737
|
-
/** What the field writes to the URL, or `undefined` when it writes nothing. */
|
|
5738
|
-
queryParam: unknown;
|
|
5739
|
-
/** How long a change waits before it is committed, or `null` when it commits immediately. */
|
|
5740
|
-
debounceMs: number | null;
|
|
5741
|
-
/** The sibling fields whose change resets this one back to its default. */
|
|
5742
|
-
isResetBy: readonly string[];
|
|
5743
|
-
/** Whether the field counts towards {@link QueryDevtoolsFormHandle.activeFilterCount}. */
|
|
5744
|
-
countsAsFilter: boolean;
|
|
5745
|
-
};
|
|
5746
|
-
/**
|
|
5747
|
-
* The live state of a query form, as `<et-query-devtools>` renders it. Part of the devtools contract -
|
|
5748
|
-
* not a general-purpose query-form API.
|
|
5749
|
-
*/
|
|
5750
|
-
type QueryDevtoolsFormHandle = {
|
|
5751
|
-
fields: Signal<QueryDevtoolsFormField[]>;
|
|
5752
|
-
/** The committed value of the whole form. */
|
|
5753
|
-
value: Signal<Record<string, unknown>>;
|
|
5754
|
-
/** The value of every field before the most recent commit, or `null` before the first one. */
|
|
5755
|
-
previousValue: Signal<Record<string, unknown> | null>;
|
|
5756
|
-
defaultValue: Record<string, unknown>;
|
|
5757
|
-
/** @see QueryFormSignals.activeFilterCount */
|
|
5758
|
-
activeFilterCount: Signal<number>;
|
|
5759
|
-
/** Whether every field sits at its default. */
|
|
5760
|
-
isAtDefaults: Signal<boolean>;
|
|
5761
|
-
/** Whether a change is waiting out its debounce, so the committed value is one edit behind. */
|
|
5762
|
-
isCommitPending: Signal<boolean>;
|
|
5763
|
-
/** Whether the form is syncing with the URL, i.e. whether `observe()` has been called. */
|
|
5764
|
-
isObserving: Signal<boolean>;
|
|
5765
|
-
resetField: (key: string) => void;
|
|
5766
|
-
resetAll: () => void;
|
|
5767
|
-
};
|
|
5768
|
-
|
|
5769
|
-
/**
|
|
5770
|
-
* The kind of object a {@link QueryDevtoolsEntry} describes. Part of the devtools contract consumed
|
|
5771
|
-
* by `<et-query-devtools>` - not a general-purpose query API.
|
|
5772
|
-
*/
|
|
5773
|
-
type QueryDevtoolsEntryKind = 'query' | 'query-stack' | 'paged-query-stack' | 'query-sequence' | 'query-batch' | 'auth-provider' | 'ws-client' | 'query-form';
|
|
5774
|
-
/**
|
|
5775
|
-
* One chunk of a parsed query route: either literal text (`param: null`) or a path param, whose name
|
|
5776
|
-
* is in {@link QueryDevtoolsRoutePart.text}. Lets the devtools tell a route's static parts from its
|
|
5777
|
-
* dynamic ones and fill the latter in with the values a query actually used.
|
|
5778
|
-
*/
|
|
5779
|
-
type QueryDevtoolsRoutePart = {
|
|
5780
|
-
text: string;
|
|
5781
|
-
param: string | null;
|
|
5782
|
-
};
|
|
5783
|
-
/**
|
|
5784
|
-
* One of a bearer auth provider's queries, described without instantiating it - which is what lets
|
|
5785
|
-
* tooling build the token-refresh request of a provider whose refresh query has not run yet.
|
|
5786
|
-
*/
|
|
5787
|
-
type QueryDevtoolsAuthQuery = {
|
|
5788
|
-
key: string;
|
|
5789
|
-
/** `token-refresh` for the query registered via `withRefreshQuery`, `auth` for the rest. */
|
|
5790
|
-
kind: 'auth' | 'token-refresh';
|
|
5791
|
-
method: string;
|
|
5792
|
-
/** Stringified route with path params rendered as `:name`. */
|
|
5793
|
-
route: string;
|
|
5794
|
-
/** The args a token refresh sends for a given refresh token. Only set on the refresh query. */
|
|
5795
|
-
buildArgs?: (refreshToken: string) => {
|
|
5796
|
-
body?: unknown;
|
|
5797
|
-
};
|
|
5798
|
-
};
|
|
5799
|
-
/**
|
|
5800
|
-
* Descriptive, mostly-static metadata about a registered devtools entry. The live, reactive state
|
|
5801
|
-
* is read from the entry's {@link QueryDevtoolsEntry.handle} instead.
|
|
5802
|
-
*/
|
|
5803
|
-
type QueryDevtoolsEntryMeta = {
|
|
5804
|
-
/** Display name of the owning query client, where known. */
|
|
5805
|
-
clientName?: string;
|
|
5806
|
-
/** Base URL of the owning query client, where known. */
|
|
5807
|
-
clientBaseUrl?: string;
|
|
5808
|
-
/** Human readable display name (e.g. an auth provider or web socket client name). */
|
|
5809
|
-
name?: string;
|
|
5810
|
-
/** The connection URL, for web socket clients. */
|
|
5811
|
-
url?: string;
|
|
5812
|
-
/** The GraphQL document string, for GraphQL queries. */
|
|
5813
|
-
gqlQuery?: string;
|
|
5814
|
-
/** Stringified route with path params rendered as `:name`, for queries. */
|
|
5815
|
-
route?: string;
|
|
5816
|
-
/** The same route, split into its literal and path-param parts. */
|
|
5817
|
-
routeParts?: QueryDevtoolsRoutePart[];
|
|
5818
|
-
/** Human readable HTTP/GQL method, for queries (e.g. `GET`, `GQL QUERY`). */
|
|
5819
|
-
method?: string;
|
|
5820
|
-
/** The features applied at creation, with the options each was configured with. */
|
|
5821
|
-
features?: QueryDevtoolsFeature[];
|
|
5822
|
-
/** Whether the query authenticates through a bearer auth provider, for queries. */
|
|
5823
|
-
isSecure?: boolean;
|
|
5824
|
-
/** Name of the bearer auth provider a secure query authenticates with. */
|
|
5825
|
-
authProviderName?: string;
|
|
5826
|
-
/** The provider's own queries, for auth providers. */
|
|
5827
|
-
authQueries?: QueryDevtoolsAuthQuery[];
|
|
5828
|
-
/**
|
|
5829
|
-
* The batch that created a query, for the one query `createQueryBatch` runs per item. The panel folds
|
|
5830
|
-
* such queries under their batch's own entry instead of listing a row per item, and the registry caps
|
|
5831
|
-
* their tombstones per batch so a bulk run cannot evict everything else it kept.
|
|
5832
|
-
*/
|
|
5833
|
-
batch?: QueryBatchDevtoolsHandle;
|
|
5834
|
-
/** Which of the batch's items the query was created for, for a batch's item query. */
|
|
5835
|
-
batchItemIndex?: number;
|
|
5836
|
-
/** How many of a batch's requests may be in flight at once, for batches. */
|
|
5837
|
-
concurrency?: number;
|
|
5838
|
-
/** Whether a batch's first failure stops the rest of the run, for batches. */
|
|
5839
|
-
stopOnError?: boolean;
|
|
5840
|
-
/** The query config passed at creation, for queries. */
|
|
5841
|
-
queryConfig?: QueryConfig;
|
|
5842
|
-
/** The creator options passed at creation, for queries. */
|
|
5843
|
-
creator?: CreateQueryCreatorOptions;
|
|
5844
|
-
/** The owning client's repository, where known (queries and auth providers). */
|
|
5845
|
-
repository?: QueryRepository;
|
|
5846
|
-
/**
|
|
5847
|
-
* The owning client itself, where known (queries and auth providers). Read for state that hangs off
|
|
5848
|
-
* the client rather than the repository - the multi-tab sync engine, in particular.
|
|
5849
|
-
*/
|
|
5850
|
-
client?: QueryClient;
|
|
5851
|
-
/**
|
|
5852
|
-
* The DOM element of the component/directive that created a query, when available. Used by the
|
|
5853
|
-
* devtools "inspect" tool to map a query back to its place in the live UI.
|
|
5854
|
-
*/
|
|
5855
|
-
element?: HTMLElement | null;
|
|
5856
|
-
};
|
|
5857
|
-
/**
|
|
5858
|
-
* A single entry in the {@link queryDevtoolsEntries} registry. The `handle` is the live object
|
|
5859
|
-
* (query, stack, sequence or auth provider) so its signals stay reactive when read by the UI.
|
|
5860
|
-
*/
|
|
5861
|
-
type QueryDevtoolsEntry = {
|
|
5862
|
-
id: string;
|
|
5863
|
-
kind: QueryDevtoolsEntryKind;
|
|
5864
|
-
meta: QueryDevtoolsEntryMeta;
|
|
5865
|
-
handle: unknown;
|
|
5866
|
-
createdAt: number;
|
|
5867
|
-
/**
|
|
5868
|
-
* When the query behind this entry was destroyed, or `null`/absent while it is still live. A
|
|
5869
|
-
* destroyed entry is kept as a tombstone - a frozen snapshot of what the query last held - so a
|
|
5870
|
-
* request that failed on the way out (a `401` that redirects to login and takes its component with
|
|
5871
|
-
* it) is still readable by the time the panel is opened. Its `handle` answers with constants and
|
|
5872
|
-
* every action on it is inert.
|
|
5873
|
-
*/
|
|
5874
|
-
destroyedAt?: number | null;
|
|
5875
|
-
/**
|
|
5876
|
-
* What the entry has done since it was created - executions, requests, payload sizes. Present for
|
|
5877
|
-
* queries; stacks, sequences and auth providers aggregate the stats of the queries they own instead.
|
|
5878
|
-
*/
|
|
5879
|
-
stats?: QueryDevtoolsStatsHandle;
|
|
5880
|
-
/** The query forms this entry's args read, for queries created with a `withArgs` feature. */
|
|
5881
|
-
formLinks?: QueryDevtoolsFormLinksHandle;
|
|
5882
|
-
/**
|
|
5883
|
-
* The response overrides armed on this entry, for queries. Unlike {@link stats}/{@link formLinks} -
|
|
5884
|
-
* whose write side is internal instrumentation the panel only ever reads - the panel itself is what
|
|
5885
|
-
* arms an override, so this exposes the full recorder rather than a read-only handle.
|
|
5886
|
-
*/
|
|
5887
|
-
overrides?: QueryDevtoolsOverridesRecorder;
|
|
5888
|
-
};
|
|
5889
|
-
/**
|
|
5890
|
-
* What an instrumentation site hands to the registry. Raw values (`route`, `clientRef`) are rendered
|
|
5891
|
-
* into {@link QueryDevtoolsEntryMeta} by the registry rather than at the call site, so the code that
|
|
5892
|
-
* renders them is only reachable from {@link provideQueryDevtools}.
|
|
5909
|
+
* What an instrumentation site hands to the registry. Raw values (`route`, `clientRef`) are rendered
|
|
5910
|
+
* into {@link QueryDevtoolsEntryMeta} by the registry rather than at the call site, so the code that
|
|
5911
|
+
* renders them is only reachable from {@link provideQueryDevtools}.
|
|
5893
5912
|
*/
|
|
5894
5913
|
type QueryDevtoolsRegistration = {
|
|
5895
5914
|
id?: string;
|
|
@@ -5999,483 +6018,717 @@ type QueryDevtoolsAuthSeed = {
|
|
|
5999
6018
|
};
|
|
6000
6019
|
|
|
6001
6020
|
/**
|
|
6002
|
-
*
|
|
6003
|
-
*
|
|
6004
|
-
*
|
|
6021
|
+
* How an application hands its API description to the devtools, so a designed mock can start from the
|
|
6022
|
+
* real shape of a response instead of a guess. TypeScript types are erased at runtime, so a generated
|
|
6023
|
+
* `.d.ts` is not readable from here - the document the types were generated *from* is.
|
|
6005
6024
|
*
|
|
6006
|
-
*
|
|
6025
|
+
* OpenAPI 3.x, Swagger 2 and a bare JSON Schema document all work: named schemas are read from
|
|
6026
|
+
* `components.schemas`, `definitions` or `$defs`, and routes from `paths`.
|
|
6007
6027
|
*
|
|
6008
|
-
*
|
|
6028
|
+
* The loader is called at most once, and only when the panel first asks for it - so returning a dynamic
|
|
6029
|
+
* `import()` keeps the document out of the application bundle entirely.
|
|
6030
|
+
*
|
|
6031
|
+
* @example
|
|
6032
|
+
* ```ts
|
|
6033
|
+
* provideQueryDevtools({ schema: () => import('../openapi.json') })
|
|
6034
|
+
* provideQueryDevtools({ schema: () => fetch('/openapi.json').then((res) => res.json()) })
|
|
6035
|
+
* ```
|
|
6009
6036
|
*/
|
|
6010
|
-
|
|
6011
|
-
|
|
6037
|
+
type QueryDevtoolsSchemaLoader = () => Promise<unknown> | unknown;
|
|
6012
6038
|
/**
|
|
6013
|
-
*
|
|
6014
|
-
*
|
|
6015
|
-
*
|
|
6039
|
+
* The description each query client is served by. One loader describes every client - which is what a
|
|
6040
|
+
* single-API application wants - and a record keyed by client name (the `name` a client was created
|
|
6041
|
+
* with) describes them one API at a time, so a mock designed against one client never offers another
|
|
6042
|
+
* one's routes.
|
|
6043
|
+
*
|
|
6044
|
+
* @example
|
|
6045
|
+
* ```ts
|
|
6046
|
+
* provideQueryDevtools({
|
|
6047
|
+
* schema: {
|
|
6048
|
+
* hubApiClient: () => import('../hub-openapi.json'),
|
|
6049
|
+
* votingApiClient: () => fetch('/voting/openapi.json').then((res) => res.json()),
|
|
6050
|
+
* },
|
|
6051
|
+
* })
|
|
6052
|
+
* ```
|
|
6016
6053
|
*/
|
|
6017
|
-
type
|
|
6018
|
-
|
|
6019
|
-
|
|
6020
|
-
|
|
6021
|
-
|
|
6054
|
+
type QueryDevtoolsSchemaLoaders = QueryDevtoolsSchemaLoader | Record<string, QueryDevtoolsSchemaLoader>;
|
|
6055
|
+
/**
|
|
6056
|
+
* Where the API description stands. `unavailable` means the application never handed one in, which is
|
|
6057
|
+
* what the panel shows the seeding controls on.
|
|
6058
|
+
*/
|
|
6059
|
+
type QueryDevtoolsSchemaState = {
|
|
6060
|
+
status: 'unavailable';
|
|
6061
|
+
} | {
|
|
6062
|
+
status: 'idle';
|
|
6063
|
+
} | {
|
|
6064
|
+
status: 'loading';
|
|
6065
|
+
} | {
|
|
6066
|
+
status: 'ready';
|
|
6067
|
+
} | {
|
|
6068
|
+
status: 'error';
|
|
6069
|
+
message: string;
|
|
6070
|
+
};
|
|
6071
|
+
/** One route the description declares, whether or not the application has ever called it. */
|
|
6072
|
+
type QueryDevtoolsSchemaRoute = {
|
|
6022
6073
|
method: string;
|
|
6023
|
-
/** The route with its path params as `:name`,
|
|
6074
|
+
/** The route with its path params as `:name`, so it reads the way a mock's pattern does. */
|
|
6024
6075
|
pattern: string;
|
|
6076
|
+
/** The operation's summary, its `operationId`, or empty - whatever the document offers as a label. */
|
|
6077
|
+
summary: string;
|
|
6078
|
+
};
|
|
6079
|
+
/**
|
|
6080
|
+
* A body generated from the description, plus everything that could not be read off it with certainty.
|
|
6081
|
+
* A seed is a starting point for the designer, never a claim about what the API returns.
|
|
6082
|
+
*/
|
|
6083
|
+
type QueryDevtoolsSchemaSeed = {
|
|
6084
|
+
body: unknown;
|
|
6085
|
+
/** The named schema the body was generated from, when the document named one. */
|
|
6086
|
+
schemaName: string | null;
|
|
6025
6087
|
/**
|
|
6026
|
-
*
|
|
6027
|
-
*
|
|
6028
|
-
* matches whatever the request asks for.
|
|
6088
|
+
* The declared type of each field, keyed by its path with array indices as `*` (`items.*.id`) - so one
|
|
6089
|
+
* entry annotates every element of an array, however many the designer goes on to add.
|
|
6029
6090
|
*/
|
|
6030
|
-
|
|
6031
|
-
/**
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
|
|
6037
|
-
|
|
6091
|
+
types: ReadonlyMap<string, string>;
|
|
6092
|
+
/** What had to be guessed, skipped or cut short, so a seeded body is never mistaken for the contract. */
|
|
6093
|
+
notes: readonly string[];
|
|
6094
|
+
};
|
|
6095
|
+
/**
|
|
6096
|
+
* How lifelike a seeded body is. `placeholder` names every field after itself, so a seed reads as
|
|
6097
|
+
* obviously unreal; `realistic` fills it with varied sample values, so a list is not three identical
|
|
6098
|
+
* rows; `stress` fills it with what a layout breaks on - long unbreakable words, unicode, huge numbers.
|
|
6099
|
+
*/
|
|
6100
|
+
type QueryDevtoolsSeedStyle = 'placeholder' | 'realistic' | 'stress';
|
|
6101
|
+
/**
|
|
6102
|
+
* Where the description of one query client's API stands, for the panel's seeding controls.
|
|
6103
|
+
*
|
|
6104
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6105
|
+
*/
|
|
6106
|
+
declare const queryDevtoolsSchemaState: (clientName: string) => QueryDevtoolsSchemaState;
|
|
6107
|
+
/**
|
|
6108
|
+
* Loads the API description, once. Calling it while it is loading or after it has loaded does nothing;
|
|
6109
|
+
* calling it after a failure retries.
|
|
6110
|
+
*
|
|
6111
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6112
|
+
*/
|
|
6113
|
+
declare const loadQueryDevtoolsSchema: (clientName: string) => void;
|
|
6114
|
+
/**
|
|
6115
|
+
* Every schema one client's description names, sorted - the designer's "seed from a type" list.
|
|
6116
|
+
*
|
|
6117
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6118
|
+
*/
|
|
6119
|
+
declare const queryDevtoolsSchemaNames: (clientName: string) => readonly string[];
|
|
6120
|
+
/**
|
|
6121
|
+
* Generates a body from one schema the client's description names (`MatchView`), or `null` when it names
|
|
6122
|
+
* no such thing. The style decides how lifelike its values are; the shape is the same either way.
|
|
6123
|
+
*
|
|
6124
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6125
|
+
*/
|
|
6126
|
+
declare const seedQueryDevtoolsSchemaBody: (clientName: string, name: string, style?: QueryDevtoolsSeedStyle) => QueryDevtoolsSchemaSeed | null;
|
|
6127
|
+
/** Everything a set of named schemas needs to resolve on its own, lifted out of the description. */
|
|
6128
|
+
type QueryDevtoolsSchemaComponents = {
|
|
6038
6129
|
/**
|
|
6039
|
-
* The
|
|
6040
|
-
*
|
|
6130
|
+
* The named schemas plus everything they transitively `$ref`, keyed as `components.schemas` wants
|
|
6131
|
+
* them. A name the description does not declare is simply absent, which is what a caller checks.
|
|
6041
6132
|
*/
|
|
6042
|
-
|
|
6133
|
+
schemas: Record<string, unknown>;
|
|
6134
|
+
/** Refs that could not be brought along, so an exported document says why it does not resolve. */
|
|
6135
|
+
notes: readonly string[];
|
|
6043
6136
|
};
|
|
6044
|
-
/** The designed mocks, armed or not. Persisted, because losing an hour of authoring is unacceptable. */
|
|
6045
|
-
declare const queryDevtoolsMocks: Signal<readonly QueryDevtoolsMock[]>;
|
|
6046
6137
|
/**
|
|
6047
|
-
*
|
|
6048
|
-
*
|
|
6138
|
+
* Collects the named schemas a set of routes was designed against, ready to be handed back as the
|
|
6139
|
+
* `components.schemas` of an exported document - so a route seeded from `MatchView` can reference
|
|
6140
|
+
* `MatchView` instead of an anonymous shape inferred from one body.
|
|
6141
|
+
*
|
|
6142
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6049
6143
|
*/
|
|
6050
|
-
declare const
|
|
6144
|
+
declare const collectQueryDevtoolsSchemaComponents: (clientName: string, names: readonly string[]) => QueryDevtoolsSchemaComponents;
|
|
6051
6145
|
/**
|
|
6052
|
-
*
|
|
6053
|
-
*
|
|
6146
|
+
* Every route one client's description declares, as the designer offers them - including the ones no
|
|
6147
|
+
* query has ever called, which is the case a mock exists for.
|
|
6148
|
+
*
|
|
6149
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6054
6150
|
*/
|
|
6055
|
-
declare const
|
|
6151
|
+
declare const queryDevtoolsSchemaRoutes: (clientName: string) => readonly QueryDevtoolsSchemaRoute[];
|
|
6056
6152
|
/**
|
|
6057
|
-
*
|
|
6058
|
-
*
|
|
6153
|
+
* Generates a body for one route from the description's own success response - the seed that makes a
|
|
6154
|
+
* designed mock a real view model rather than a guess. `null` when the document does not declare the
|
|
6155
|
+
* route, or declares no JSON response for it.
|
|
6156
|
+
*
|
|
6157
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6059
6158
|
*/
|
|
6060
|
-
declare const
|
|
6061
|
-
|
|
6062
|
-
|
|
6159
|
+
declare const seedQueryDevtoolsSchemaRoute: (target: {
|
|
6160
|
+
clientName: string;
|
|
6161
|
+
method: string;
|
|
6162
|
+
pattern: string;
|
|
6163
|
+
}, style?: QueryDevtoolsSeedStyle) => QueryDevtoolsSchemaSeed | null;
|
|
6164
|
+
|
|
6063
6165
|
/**
|
|
6064
|
-
* The
|
|
6065
|
-
* string - what a pattern is matched against. A URL outside `baseUrl`, or no `baseUrl` at all, falls
|
|
6066
|
-
* back to the path without its origin.
|
|
6166
|
+
* The reactive list of every registered devtools entry, consumed by the `<et-query-devtools>` UI.
|
|
6067
6167
|
*/
|
|
6068
|
-
declare const
|
|
6168
|
+
declare const queryDevtoolsEntries: Signal<QueryDevtoolsEntry[]>;
|
|
6169
|
+
/** Renders parsed route parts as a template, e.g. `/team/:teamId/players`. */
|
|
6170
|
+
declare const stringifyQueryRouteParts: (parts: QueryDevtoolsRoutePart[]) => string;
|
|
6171
|
+
/**
|
|
6172
|
+
* Forgets destroyed entries the registry is holding - the panel's "clear gone" action. Pass the ids to
|
|
6173
|
+
* drop to forget only those; with no argument every tombstone goes. Live entries are untouched.
|
|
6174
|
+
*/
|
|
6175
|
+
declare const clearQueryDevtoolsTombstones: (ids?: Iterable<string>) => void;
|
|
6176
|
+
type QueryDevtoolsOptions = {
|
|
6177
|
+
/**
|
|
6178
|
+
* How many of each query's most recent runs keep their response (or error) body, which is what the
|
|
6179
|
+
* panel's response diff compares. Defaults to `5`. Bodies dominate what the run buffer retains, so
|
|
6180
|
+
* raise this only as far as the reach you actually need - a polling query holds one per run.
|
|
6181
|
+
*
|
|
6182
|
+
* This is the default; the panel's Settings tab can raise it for the rest of a page.
|
|
6183
|
+
*/
|
|
6184
|
+
responseHistory?: number;
|
|
6185
|
+
/**
|
|
6186
|
+
* Build information about the application - version, commit SHA, environment name. Shown on the
|
|
6187
|
+
* panel's About tab, included in the session export and exposed on `window.ethlete`, so a bug report
|
|
6188
|
+
* says which build it came from. Generate it rather than typing it:
|
|
6189
|
+
* `nx g @ethlete/core:devtools-about <app>`.
|
|
6190
|
+
*/
|
|
6191
|
+
about?: QueryDevtoolsAppInfo;
|
|
6192
|
+
/**
|
|
6193
|
+
* The OpenAPI (or JSON Schema) document behind each query client, so the panel's mock designer can
|
|
6194
|
+
* seed a response from the real shape of a route and label each field with the type it is declared as.
|
|
6195
|
+
* One loader describes every client; a record keyed by client name describes an application whose
|
|
6196
|
+
* clients speak to different APIs. Each loader runs at most once, and only when the designer first
|
|
6197
|
+
* asks for it - see {@link QueryDevtoolsSchemaLoaders}.
|
|
6198
|
+
*/
|
|
6199
|
+
schema?: QueryDevtoolsSchemaLoaders;
|
|
6200
|
+
/**
|
|
6201
|
+
* The backends this application can be pointed at, one entry per `localStorage` key it reads at
|
|
6202
|
+
* startup. Declaring them puts a picker next to the floating toggle and on the panel's Settings tab;
|
|
6203
|
+
* picking writes the key and reloads. Nothing else changes - the application still resolves the key
|
|
6204
|
+
* itself, so an env is whatever it already means to it.
|
|
6205
|
+
*/
|
|
6206
|
+
apiEnvs?: QueryDevtoolsApiEnvSwitch[];
|
|
6207
|
+
/**
|
|
6208
|
+
* The accounts the panel may log in as, so a session can be switched without typing a login form
|
|
6209
|
+
* again. Declare the slot only - the label, the query and the fields it needs. Whoever runs the app
|
|
6210
|
+
* types the credentials into the panel once, and they stay in that browser: **never put a password in
|
|
6211
|
+
* the repository.**
|
|
6212
|
+
*
|
|
6213
|
+
* Scope an account to the backends it exists on with `envs`, for an API whose users are not the next
|
|
6214
|
+
* one's. Accounts are not offered at all while an `apiEnvs` env marked `production` is the pick.
|
|
6215
|
+
*/
|
|
6216
|
+
authAccounts?: QueryDevtoolsAuthAccount[];
|
|
6217
|
+
};
|
|
6069
6218
|
/**
|
|
6070
|
-
*
|
|
6071
|
-
*
|
|
6219
|
+
* Enables the `@ethlete/query` devtools. Add this to your application providers (e.g. in
|
|
6220
|
+
* `bootstrapApplication`) to make query clients, queries, stacks, sequences and auth providers
|
|
6221
|
+
* appear in the `<et-query-devtools>` panel.
|
|
6222
|
+
*
|
|
6223
|
+
* When omitted, all devtools instrumentation is a no-op: the registry is never installed, so nothing
|
|
6224
|
+
* is retained at runtime and the registry itself is dropped from the bundle.
|
|
6225
|
+
*
|
|
6226
|
+
* The options are read once, on the first call. A second application on the same page keeps the
|
|
6227
|
+
* options of the first one, and this call warns about the ones it declared itself.
|
|
6228
|
+
*
|
|
6229
|
+
* @example
|
|
6230
|
+
* ```ts
|
|
6231
|
+
* bootstrapApplication(AppComponent, {
|
|
6232
|
+
* providers: [provideQueryDevtools()],
|
|
6233
|
+
* });
|
|
6234
|
+
* ```
|
|
6072
6235
|
*/
|
|
6073
|
-
declare const
|
|
6236
|
+
declare const provideQueryDevtools: (options?: QueryDevtoolsOptions) => EnvironmentProviders;
|
|
6237
|
+
|
|
6074
6238
|
/**
|
|
6075
|
-
*
|
|
6076
|
-
*
|
|
6077
|
-
* happened to build.
|
|
6239
|
+
* The longest lifetime an armed override may claim, in seconds (7 days). Anything beyond it is never
|
|
6240
|
+
* refreshed at all, which is what arming nothing already does.
|
|
6078
6241
|
*/
|
|
6079
|
-
declare const
|
|
6242
|
+
declare const QUERY_DEVTOOLS_TOKEN_TTL_LIMIT = 604800;
|
|
6080
6243
|
/**
|
|
6081
|
-
*
|
|
6082
|
-
*
|
|
6244
|
+
* The access-token lifetime armed per auth provider name, in seconds, consumed by the
|
|
6245
|
+
* `<et-query-devtools>` panel. A provider on its token's real lifetime is absent rather than present
|
|
6246
|
+
* with it.
|
|
6083
6247
|
*/
|
|
6084
|
-
declare const
|
|
6085
|
-
/** Removes a designed mock, disarming it on the way out. */
|
|
6086
|
-
declare const deleteQueryDevtoolsMock: (id: string) => void;
|
|
6087
|
-
/** Starts or stops serving one designed mock. Arming a mock that is not in the library does nothing. */
|
|
6088
|
-
declare const armQueryDevtoolsMock: (id: string, isArmed: boolean) => void;
|
|
6089
|
-
/** Starts serving every mock in the library - the counterpart of {@link clearQueryDevtoolsArmedMocks}. */
|
|
6090
|
-
declare const armAllQueryDevtoolsMocks: () => void;
|
|
6091
|
-
/** Stops serving every mock, leaving the library alone - the armed bar's one-click way out. */
|
|
6092
|
-
declare const clearQueryDevtoolsArmedMocks: () => void;
|
|
6248
|
+
declare const queryDevtoolsTokenTtls: Signal<Record<string, number>>;
|
|
6093
6249
|
/**
|
|
6094
|
-
*
|
|
6095
|
-
* the
|
|
6096
|
-
*
|
|
6250
|
+
* Whether an overridden lifetime can be applied to a decoded access token at all. It needs the claim
|
|
6251
|
+
* carrying the expiry - so a lifetime is never invented for a token that declares none - plus `iat` or
|
|
6252
|
+
* `nbf` to measure the new lifetime from.
|
|
6097
6253
|
*/
|
|
6098
|
-
declare const
|
|
6099
|
-
|
|
6100
|
-
|
|
6101
|
-
|
|
6102
|
-
/** One entry id the last page load left ops for, as the panel's banner reports it. */
|
|
6103
|
-
type RestoredQueryDevtoolsOverrides = {
|
|
6104
|
-
/** The devtools entry id the ops were stored under. */
|
|
6105
|
-
id: string;
|
|
6106
|
-
/** How many ops were stored for it. */
|
|
6107
|
-
count: number;
|
|
6108
|
-
/**
|
|
6109
|
-
* Whether a query with this id has registered and taken them. `false` means the store outlived the
|
|
6110
|
-
* query it was written for - a route that no longer runs, or a creation order that shifted - so those
|
|
6111
|
-
* ops are sitting on nothing rather than quietly landing somewhere else.
|
|
6112
|
-
*/
|
|
6113
|
-
armed: boolean;
|
|
6114
|
-
};
|
|
6254
|
+
declare const canOverrideQueryDevtoolsTokenTtl: (options: {
|
|
6255
|
+
payload: Record<string, unknown> | null;
|
|
6256
|
+
expiresInPropertyName?: string;
|
|
6257
|
+
}) => boolean;
|
|
6115
6258
|
/**
|
|
6116
|
-
*
|
|
6117
|
-
*
|
|
6259
|
+
* Presents one auth provider's access token as living `seconds` from the moment it was issued, rather
|
|
6260
|
+
* than as long as it says it does. Everything that reads the expiry sees the shortened lifetime - the
|
|
6261
|
+
* proactive refresh schedule, `withBearerAuthTokenExpirationWarning`, and the panel's own countdown -
|
|
6262
|
+
* so arming 60 seconds makes a real refresh happen a minute after each token is issued, and keeps
|
|
6263
|
+
* happening for every token that refresh brings back.
|
|
6264
|
+
*
|
|
6265
|
+
* It is a lifetime, not a remaining time: `0` presents the current token as long expired, which is what
|
|
6266
|
+
* makes a refresh happen at once. Nothing is persisted, so a reload leaves every provider on its real
|
|
6267
|
+
* lifetime.
|
|
6268
|
+
*
|
|
6269
|
+
* Part of the devtools contract consumed by `<et-query-devtools>`; a token's lifetime is not something
|
|
6270
|
+
* an application should override on itself.
|
|
6118
6271
|
*/
|
|
6119
|
-
declare const
|
|
6272
|
+
declare const setQueryDevtoolsTokenTtl: (options: {
|
|
6273
|
+
providerName: string;
|
|
6274
|
+
seconds: number;
|
|
6275
|
+
}) => void;
|
|
6120
6276
|
/**
|
|
6121
|
-
*
|
|
6122
|
-
*
|
|
6123
|
-
*
|
|
6124
|
-
* op exactly where it is for the rest of this page.
|
|
6277
|
+
* Puts one provider back on its token's real lifetime, or every provider when no name is given.
|
|
6278
|
+
*
|
|
6279
|
+
* @see setQueryDevtoolsTokenTtl
|
|
6125
6280
|
*/
|
|
6126
|
-
declare const
|
|
6281
|
+
declare const clearQueryDevtoolsTokenTtl: (providerName?: string) => void;
|
|
6127
6282
|
/**
|
|
6128
|
-
*
|
|
6129
|
-
*
|
|
6283
|
+
* The decoded access token as the devtools want it seen: the claim carrying the expiry rewritten to the
|
|
6284
|
+
* armed lifetime, measured from `iat`. Returns `payload` untouched when nothing is armed for the
|
|
6285
|
+
* provider, or when the token cannot carry the override - see {@link canOverrideQueryDevtoolsTokenTtl}.
|
|
6286
|
+
*
|
|
6287
|
+
* Installed as the token payload patcher by `provideQueryDevtools()`, and called directly by the panel
|
|
6288
|
+
* for its own countdown.
|
|
6130
6289
|
*/
|
|
6131
|
-
declare const
|
|
6290
|
+
declare const applyQueryDevtoolsTokenTtl: <T>(options: {
|
|
6291
|
+
payload: T;
|
|
6292
|
+
providerName: string;
|
|
6293
|
+
expiresInPropertyName?: string;
|
|
6294
|
+
}) => T;
|
|
6295
|
+
|
|
6132
6296
|
/**
|
|
6133
|
-
*
|
|
6134
|
-
*
|
|
6297
|
+
* Whether a devtools UI is on the page, which is what the floating pills follow. Kept apart from the
|
|
6298
|
+
* pills themselves so `@ethlete/query-devtools/toggle` can declare itself without pulling the pill
|
|
6299
|
+
* renderer into the bundle an application ships.
|
|
6135
6300
|
*/
|
|
6136
|
-
declare const clearQueryDevtoolsOverrideStore: () => void;
|
|
6137
6301
|
/**
|
|
6138
|
-
*
|
|
6139
|
-
*
|
|
6140
|
-
*
|
|
6302
|
+
* Declares a devtools UI on the page, and takes the declaration back when it goes. The floating pills
|
|
6303
|
+
* paint only while one is mounted, so an application that renders no devtools trigger shows no pills
|
|
6304
|
+
* either.
|
|
6305
|
+
*
|
|
6306
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6141
6307
|
*/
|
|
6142
|
-
declare const
|
|
6308
|
+
declare const setQueryDevtoolsUiMounted: (isMounted: boolean) => void;
|
|
6309
|
+
|
|
6143
6310
|
/**
|
|
6144
|
-
*
|
|
6145
|
-
*
|
|
6311
|
+
* Where one kind of devtools state is kept between page loads. `none` means it is not kept at all -
|
|
6312
|
+
* what that costs differs per kind, which is why every kind picks its own.
|
|
6146
6313
|
*/
|
|
6147
|
-
|
|
6148
|
-
/** Disarms every op this page load inherited and empties the store - the banner's one-click way out. */
|
|
6149
|
-
declare const clearRestoredQueryDevtoolsOverrides: () => void;
|
|
6150
|
-
|
|
6151
|
-
declare const TRANSFER_KIND = "ethlete-query-overrides";
|
|
6314
|
+
type QueryDevtoolsStorageScope = 'none' | 'session' | 'local';
|
|
6152
6315
|
/**
|
|
6153
|
-
*
|
|
6154
|
-
*
|
|
6155
|
-
*
|
|
6316
|
+
* The devtools' own configuration: where each kind of panel state is kept, and the limits the panel
|
|
6317
|
+
* would otherwise hold as constants. Read it as {@link queryDevtoolsSettings}, change it with
|
|
6318
|
+
* {@link setQueryDevtoolsSettings}.
|
|
6156
6319
|
*/
|
|
6157
|
-
type
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
|
|
6161
|
-
|
|
6162
|
-
|
|
6163
|
-
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
|
|
6168
|
-
|
|
6169
|
-
|
|
6170
|
-
|
|
6171
|
-
|
|
6172
|
-
|
|
6173
|
-
|
|
6174
|
-
|
|
6175
|
-
|
|
6176
|
-
|
|
6177
|
-
|
|
6178
|
-
|
|
6320
|
+
type QueryDevtoolsSettings = {
|
|
6321
|
+
/** Panel chrome and view state: dock, sizes, open tab, filters, selections. */
|
|
6322
|
+
viewState: QueryDevtoolsStorageScope;
|
|
6323
|
+
/** The entry ids sorted to the top of the Queries list. */
|
|
6324
|
+
pins: QueryDevtoolsStorageScope;
|
|
6325
|
+
/**
|
|
6326
|
+
* Armed response overrides, replayed as queries register on the next load. `none` by default: an app
|
|
6327
|
+
* that stays tampered with across reloads is hours of debugging the wrong thing.
|
|
6328
|
+
*/
|
|
6329
|
+
overrides: QueryDevtoolsStorageScope;
|
|
6330
|
+
/** The library of designed mocks - the authoring, not whether any of them is armed. */
|
|
6331
|
+
mocks: QueryDevtoolsStorageScope;
|
|
6332
|
+
/**
|
|
6333
|
+
* Which mocks are **armed**, as opposed to the library above. `none` by default: an app that silently
|
|
6334
|
+
* serves designed data tomorrow morning is worse than arming them again, so keeping them is a choice
|
|
6335
|
+
* someone makes rather than the way the panel ships.
|
|
6336
|
+
*/
|
|
6337
|
+
armedMocks: QueryDevtoolsStorageScope;
|
|
6338
|
+
/** The faults armed per client, for the same reason and with the same default. */
|
|
6339
|
+
armedFaults: QueryDevtoolsStorageScope;
|
|
6340
|
+
/**
|
|
6341
|
+
* The session vault: the token pairs the panel switches between, and the credentials it logs in with.
|
|
6342
|
+
* `local` by default, because a vault that forgets the other user on every reload is not one - and
|
|
6343
|
+
* `none` for a machine where nothing of the sort may be kept. Outside a development build `local` is
|
|
6344
|
+
* refused and read back as `none`, see {@link queryDevtoolsAllowsLocalAuthSessions}.
|
|
6345
|
+
*/
|
|
6346
|
+
authSessions: QueryDevtoolsStorageScope;
|
|
6347
|
+
/** How many entries the Events log keeps. */
|
|
6348
|
+
maxEvents: number;
|
|
6349
|
+
/** How many dropped cache entries the Cache tab remembers, per client. */
|
|
6350
|
+
maxDroppedCacheEntries: number;
|
|
6351
|
+
/**
|
|
6352
|
+
* How many bodies each query retains, overriding `provideQueryDevtools({ responseHistory })` for the
|
|
6353
|
+
* rest of this page. `null` leaves the application's value alone.
|
|
6354
|
+
*/
|
|
6355
|
+
responseHistory: number | null;
|
|
6356
|
+
/**
|
|
6357
|
+
* Whether switching to another session reloads the page. On by default: a switch replaces what the
|
|
6358
|
+
* query layer holds, and an application that keeps the user anywhere else - a profile service, the
|
|
6359
|
+
* router, an open form - is still showing the last one until it boots again.
|
|
6360
|
+
*/
|
|
6361
|
+
reloadOnAuthSwitch: boolean;
|
|
6179
6362
|
};
|
|
6180
6363
|
/**
|
|
6181
|
-
*
|
|
6182
|
-
*
|
|
6364
|
+
* How the devtools are configured. Every consumer reads the live value rather than a copy, so a change
|
|
6365
|
+
* in the panel's Settings takes effect without a reload.
|
|
6366
|
+
*
|
|
6367
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6183
6368
|
*/
|
|
6184
|
-
declare const
|
|
6185
|
-
id?: string;
|
|
6186
|
-
url?: string;
|
|
6187
|
-
}) => string;
|
|
6369
|
+
declare const queryDevtoolsSettings: Signal<QueryDevtoolsSettings>;
|
|
6188
6370
|
/**
|
|
6189
|
-
*
|
|
6190
|
-
*
|
|
6191
|
-
*
|
|
6192
|
-
*
|
|
6371
|
+
* The `Storage` a scope names, or `null` for `none` and for a browser that refuses one (private mode,
|
|
6372
|
+
* storage disabled, server-side rendering). Callers treat "no storage" and "not persisted" alike.
|
|
6373
|
+
*
|
|
6374
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6193
6375
|
*/
|
|
6194
|
-
declare const
|
|
6376
|
+
declare const queryDevtoolsStorage: (scope: QueryDevtoolsStorageScope) => Storage | null;
|
|
6195
6377
|
/**
|
|
6196
|
-
*
|
|
6197
|
-
*
|
|
6198
|
-
*
|
|
6378
|
+
* Reads one JSON-encoded devtools key from the store a scope names, or `null`.
|
|
6379
|
+
*
|
|
6380
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6199
6381
|
*/
|
|
6200
|
-
declare const
|
|
6201
|
-
/** Arms every op of a parsed set onto a query, on top of whatever it already has armed. */
|
|
6202
|
-
declare const armQueryDevtoolsOverrideTransfer: (recorder: QueryDevtoolsOverridesRecorder, ops: readonly OverrideOp[]) => void;
|
|
6203
|
-
|
|
6382
|
+
declare const readQueryDevtoolsStore: <T>(scope: QueryDevtoolsStorageScope, key: string) => T | null;
|
|
6204
6383
|
/**
|
|
6205
|
-
*
|
|
6206
|
-
* real shape of a response instead of a guess. TypeScript types are erased at runtime, so a generated
|
|
6207
|
-
* `.d.ts` is not readable from here - the document the types were generated *from* is.
|
|
6208
|
-
*
|
|
6209
|
-
* OpenAPI 3.x, Swagger 2 and a bare JSON Schema document all work: named schemas are read from
|
|
6210
|
-
* `components.schemas`, `definitions` or `$defs`, and routes from `paths`.
|
|
6384
|
+
* Writes one devtools key into the store a scope names. A scope of `none` writes nothing.
|
|
6211
6385
|
*
|
|
6212
|
-
*
|
|
6213
|
-
|
|
6386
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6387
|
+
*/
|
|
6388
|
+
declare const writeQueryDevtoolsStore: (scope: QueryDevtoolsStorageScope, key: string, value: unknown) => void;
|
|
6389
|
+
/**
|
|
6390
|
+
* Removes one devtools key from **both** stores, whatever the scope currently is - so a scope that
|
|
6391
|
+
* changed cannot leave a stale copy behind for the next load to read.
|
|
6214
6392
|
*
|
|
6215
|
-
*
|
|
6216
|
-
* ```ts
|
|
6217
|
-
* provideQueryDevtools({ schema: () => import('../openapi.json') })
|
|
6218
|
-
* provideQueryDevtools({ schema: () => fetch('/openapi.json').then((res) => res.json()) })
|
|
6219
|
-
* ```
|
|
6393
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6220
6394
|
*/
|
|
6221
|
-
|
|
6395
|
+
declare const clearQueryDevtoolsStore: (key: string) => void;
|
|
6222
6396
|
/**
|
|
6223
|
-
*
|
|
6224
|
-
*
|
|
6225
|
-
*
|
|
6226
|
-
*
|
|
6397
|
+
* Whether the session vault may be kept in `localStorage`. Only a development build may: the vault
|
|
6398
|
+
* holds live access and refresh tokens plus the credentials somebody typed in, and a deployed
|
|
6399
|
+
* application that mounts the panel for its debugging value must not leave those on the machine of
|
|
6400
|
+
* whoever opened it. Outside a development build a stored or default `local` reads back as `none`, so a
|
|
6401
|
+
* plain login keeps nothing; `session` stays on offer for whoever picks it in Settings.
|
|
6227
6402
|
*
|
|
6228
|
-
*
|
|
6229
|
-
* ```ts
|
|
6230
|
-
* provideQueryDevtools({
|
|
6231
|
-
* schema: {
|
|
6232
|
-
* hubApiClient: () => import('../hub-openapi.json'),
|
|
6233
|
-
* votingApiClient: () => fetch('/voting/openapi.json').then((res) => res.json()),
|
|
6234
|
-
* },
|
|
6235
|
-
* })
|
|
6236
|
-
* ```
|
|
6403
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6237
6404
|
*/
|
|
6238
|
-
|
|
6405
|
+
declare const queryDevtoolsAllowsLocalAuthSessions: () => boolean;
|
|
6239
6406
|
/**
|
|
6240
|
-
*
|
|
6241
|
-
*
|
|
6407
|
+
* Changes part of the devtools configuration and stores it. Values outside the range a field allows are
|
|
6408
|
+
* clamped rather than rejected.
|
|
6409
|
+
*
|
|
6410
|
+
* Overrides are the one field not to set here: their scope moves an existing store, so it goes through
|
|
6411
|
+
* `setQueryDevtoolsOverridesScope()` instead.
|
|
6412
|
+
*
|
|
6413
|
+
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6242
6414
|
*/
|
|
6243
|
-
|
|
6244
|
-
|
|
6245
|
-
} | {
|
|
6246
|
-
status: 'idle';
|
|
6247
|
-
} | {
|
|
6248
|
-
status: 'loading';
|
|
6249
|
-
} | {
|
|
6250
|
-
status: 'ready';
|
|
6251
|
-
} | {
|
|
6252
|
-
status: 'error';
|
|
6253
|
-
message: string;
|
|
6254
|
-
};
|
|
6255
|
-
/** One route the description declares, whether or not the application has ever called it. */
|
|
6256
|
-
type QueryDevtoolsSchemaRoute = {
|
|
6257
|
-
method: string;
|
|
6258
|
-
/** The route with its path params as `:name`, so it reads the way a mock's pattern does. */
|
|
6259
|
-
pattern: string;
|
|
6260
|
-
/** The operation's summary, its `operationId`, or empty - whatever the document offers as a label. */
|
|
6261
|
-
summary: string;
|
|
6262
|
-
};
|
|
6415
|
+
declare const setQueryDevtoolsSettings: (patch: Partial<QueryDevtoolsSettings>) => void;
|
|
6416
|
+
|
|
6263
6417
|
/**
|
|
6264
|
-
* A
|
|
6265
|
-
*
|
|
6418
|
+
* A fault armed on one query client from the devtools panel. Unlike the panel's forced states - which
|
|
6419
|
+
* write a query's signals directly - an armed fault is applied inside the request pipeline, so retries,
|
|
6420
|
+
* error handling features and the cache all see it exactly as they would see a real one.
|
|
6266
6421
|
*/
|
|
6267
|
-
type
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
schemaName: string | null;
|
|
6422
|
+
type QueryDevtoolsFault = {
|
|
6423
|
+
/** Extra latency in ms added before every attempt starts. `0` disables it. */
|
|
6424
|
+
latencyMs: number;
|
|
6271
6425
|
/**
|
|
6272
|
-
*
|
|
6273
|
-
*
|
|
6426
|
+
* How many upcoming attempts fail before the client is let through again, counted down as they are
|
|
6427
|
+
* consumed. `0` disables it.
|
|
6274
6428
|
*/
|
|
6275
|
-
|
|
6276
|
-
/**
|
|
6277
|
-
|
|
6429
|
+
failNext: number;
|
|
6430
|
+
/** The percentage of attempts that fail, rolled per attempt. `0` disables it, `100` fails everything. */
|
|
6431
|
+
failRate: number;
|
|
6432
|
+
/** The status an injected failure responds with. */
|
|
6433
|
+
status: number;
|
|
6278
6434
|
};
|
|
6435
|
+
/** The neutral fault: nothing armed. */
|
|
6436
|
+
declare const EMPTY_QUERY_DEVTOOLS_FAULT: QueryDevtoolsFault;
|
|
6279
6437
|
/**
|
|
6280
|
-
*
|
|
6281
|
-
*
|
|
6282
|
-
*
|
|
6438
|
+
* Statuses worth injecting, and whether the SDK's default retry policy retries them. A picker built from
|
|
6439
|
+
* this cannot arm a 500 and then leave you wondering why no retry fired.
|
|
6440
|
+
* @see runDefaultQueryRetry
|
|
6283
6441
|
*/
|
|
6284
|
-
|
|
6442
|
+
declare const QUERY_DEVTOOLS_FAULT_STATUSES: {
|
|
6443
|
+
status: number;
|
|
6444
|
+
label: string;
|
|
6445
|
+
retryable: boolean;
|
|
6446
|
+
}[];
|
|
6285
6447
|
/**
|
|
6286
|
-
*
|
|
6287
|
-
*
|
|
6288
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6448
|
+
* The faults armed per client name, consumed by the `<et-query-devtools>` UI. Clients with nothing armed
|
|
6449
|
+
* are absent rather than present with an {@link EMPTY_QUERY_DEVTOOLS_FAULT}.
|
|
6289
6450
|
*/
|
|
6290
|
-
declare const
|
|
6451
|
+
declare const queryDevtoolsFaults: Signal<Record<string, QueryDevtoolsFault>>;
|
|
6291
6452
|
/**
|
|
6292
|
-
*
|
|
6293
|
-
*
|
|
6453
|
+
* Whether what is armed right now came back from a previous page load rather than being armed by hand.
|
|
6454
|
+
* The panel's armed bar says so, because injected failures nobody remembers arming look exactly like a
|
|
6455
|
+
* broken API.
|
|
6456
|
+
*/
|
|
6457
|
+
declare const queryDevtoolsFaultsRestored: Signal<boolean>;
|
|
6458
|
+
/**
|
|
6459
|
+
* Where the armed faults are kept. Switching to a scope that keeps them stores whatever is armed right
|
|
6460
|
+
* now; switching to `none` empties the store and leaves this page's faults exactly where they are.
|
|
6461
|
+
*/
|
|
6462
|
+
declare const setQueryDevtoolsFaultsScope: (next: QueryDevtoolsStorageScope) => void;
|
|
6463
|
+
/** Whether anything at all is armed on a fault. */
|
|
6464
|
+
declare const isQueryDevtoolsFaultArmed: (fault: QueryDevtoolsFault) => boolean;
|
|
6465
|
+
/**
|
|
6466
|
+
* Arms (or updates) the fault of one client. Only the given fields change; the rest keep their current
|
|
6467
|
+
* value. A client whose resulting fault has nothing armed is dropped from {@link queryDevtoolsFaults}.
|
|
6294
6468
|
*
|
|
6295
|
-
* Part of the devtools contract
|
|
6469
|
+
* Part of the devtools contract consumed by `<et-query-devtools>`; a fault is a debugging tool, not
|
|
6470
|
+
* something an application should arm on itself.
|
|
6296
6471
|
*/
|
|
6297
|
-
declare const
|
|
6472
|
+
declare const setQueryDevtoolsFault: (options: {
|
|
6473
|
+
clientName: string;
|
|
6474
|
+
patch: Partial<QueryDevtoolsFault>;
|
|
6475
|
+
}) => void;
|
|
6298
6476
|
/**
|
|
6299
|
-
*
|
|
6477
|
+
* Disarms every fault of one client, or of all clients when no name is given.
|
|
6300
6478
|
*
|
|
6301
|
-
*
|
|
6479
|
+
* @see setQueryDevtoolsFault
|
|
6302
6480
|
*/
|
|
6303
|
-
declare const
|
|
6481
|
+
declare const clearQueryDevtoolsFaults: (clientName?: string) => void;
|
|
6482
|
+
|
|
6304
6483
|
/**
|
|
6305
|
-
*
|
|
6306
|
-
*
|
|
6484
|
+
* One field of a query form, as the devtools panel reads it: what it holds, what it puts in the URL,
|
|
6485
|
+
* and the rules that decide when either changes.
|
|
6486
|
+
*/
|
|
6487
|
+
type QueryDevtoolsFormField = {
|
|
6488
|
+
key: string;
|
|
6489
|
+
/** The query-param key the field serializes to, with the form's prefix applied. */
|
|
6490
|
+
paramKey: string;
|
|
6491
|
+
/** The committed value - what the query args are built from. */
|
|
6492
|
+
value: unknown;
|
|
6493
|
+
/** The live value of the bound control, which differs from {@link value} while a debounce is pending. */
|
|
6494
|
+
liveValue: unknown;
|
|
6495
|
+
defaultValue: unknown;
|
|
6496
|
+
/** Whether the committed value is the default one. */
|
|
6497
|
+
isDefault: boolean;
|
|
6498
|
+
/** What the field writes to the URL, or `undefined` when it writes nothing. */
|
|
6499
|
+
queryParam: unknown;
|
|
6500
|
+
/** How long a change waits before it is committed, or `null` when it commits immediately. */
|
|
6501
|
+
debounceMs: number | null;
|
|
6502
|
+
/** The sibling fields whose change resets this one back to its default. */
|
|
6503
|
+
isResetBy: readonly string[];
|
|
6504
|
+
/** Whether the field counts towards {@link QueryDevtoolsFormHandle.activeFilterCount}. */
|
|
6505
|
+
countsAsFilter: boolean;
|
|
6506
|
+
};
|
|
6507
|
+
/**
|
|
6508
|
+
* The live state of a query form, as `<et-query-devtools>` renders it. Part of the devtools contract -
|
|
6509
|
+
* not a general-purpose query-form API.
|
|
6510
|
+
*/
|
|
6511
|
+
type QueryDevtoolsFormHandle = {
|
|
6512
|
+
fields: Signal<QueryDevtoolsFormField[]>;
|
|
6513
|
+
/** The committed value of the whole form. */
|
|
6514
|
+
value: Signal<Record<string, unknown>>;
|
|
6515
|
+
/** The value of every field before the most recent commit, or `null` before the first one. */
|
|
6516
|
+
previousValue: Signal<Record<string, unknown> | null>;
|
|
6517
|
+
defaultValue: Record<string, unknown>;
|
|
6518
|
+
/** @see QueryFormSignals.activeFilterCount */
|
|
6519
|
+
activeFilterCount: Signal<number>;
|
|
6520
|
+
/** Whether every field sits at its default. */
|
|
6521
|
+
isAtDefaults: Signal<boolean>;
|
|
6522
|
+
/** Whether a change is waiting out its debounce, so the committed value is one edit behind. */
|
|
6523
|
+
isCommitPending: Signal<boolean>;
|
|
6524
|
+
/** Whether the form is syncing with the URL, i.e. whether `observe()` has been called. */
|
|
6525
|
+
isObserving: Signal<boolean>;
|
|
6526
|
+
resetField: (key: string) => void;
|
|
6527
|
+
resetAll: () => void;
|
|
6528
|
+
};
|
|
6529
|
+
|
|
6530
|
+
/**
|
|
6531
|
+
* Whether the client that owns a repository is still alive. A destroyed client's queries survive as
|
|
6532
|
+
* tombstones, which keep their `meta.repository`, so this is the only way to tell a dead client from
|
|
6533
|
+
* one whose queries all happen to be destroyed.
|
|
6534
|
+
*
|
|
6535
|
+
* Reads a version signal, so a computed that calls it recomputes as clients come and go.
|
|
6307
6536
|
*
|
|
6308
6537
|
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6309
6538
|
*/
|
|
6310
|
-
declare const
|
|
6311
|
-
|
|
6312
|
-
|
|
6539
|
+
declare const isQueryDevtoolsRepositoryLive: (repository: QueryRepository) => boolean;
|
|
6540
|
+
|
|
6541
|
+
/**
|
|
6542
|
+
* A response designed in the devtools panel and served in place of a request. An override edits what came
|
|
6543
|
+
* back; a mock replaces the request itself, so it can be armed for a route that has never run - or does
|
|
6544
|
+
* not exist yet.
|
|
6545
|
+
*/
|
|
6546
|
+
type QueryDevtoolsMock = {
|
|
6547
|
+
/** `clientName|method|pattern` - stable across reloads, and what the armed set holds. */
|
|
6548
|
+
id: string;
|
|
6549
|
+
/** Display name of the query client this is served for. */
|
|
6550
|
+
clientName: string;
|
|
6551
|
+
method: string;
|
|
6552
|
+
/** The route with its path params as `:name`, matched against a request's path. */
|
|
6553
|
+
pattern: string;
|
|
6313
6554
|
/**
|
|
6314
|
-
*
|
|
6315
|
-
*
|
|
6555
|
+
* Query parameters the request must carry for this mock to answer it, as a query string
|
|
6556
|
+
* (`page=2&limit=10`). Every declared pair has to match; anything else on the request is ignored. Empty
|
|
6557
|
+
* matches whatever the request asks for.
|
|
6316
6558
|
*/
|
|
6317
|
-
|
|
6318
|
-
/**
|
|
6319
|
-
|
|
6559
|
+
query: string;
|
|
6560
|
+
/** The status the mock responds with. `400` and above arrive as an `HttpErrorResponse`. */
|
|
6561
|
+
status: number;
|
|
6562
|
+
body: unknown;
|
|
6563
|
+
/** Delay before the mocked response settles, so a mocked route still has a loading state. */
|
|
6564
|
+
latencyMs: number;
|
|
6565
|
+
/** When the body was captured from a real response, or `null` if it was authored from nothing. */
|
|
6566
|
+
capturedAt: number | null;
|
|
6567
|
+
/**
|
|
6568
|
+
* The schema the body was seeded from, when it came from the application's API description - so the
|
|
6569
|
+
* designer can label its fields with their declared types again after a reload.
|
|
6570
|
+
*/
|
|
6571
|
+
schemaName?: string | null;
|
|
6320
6572
|
};
|
|
6573
|
+
/** The designed mocks, armed or not. Persisted, because losing an hour of authoring is unacceptable. */
|
|
6574
|
+
declare const queryDevtoolsMocks: Signal<readonly QueryDevtoolsMock[]>;
|
|
6321
6575
|
/**
|
|
6322
|
-
*
|
|
6323
|
-
*
|
|
6324
|
-
|
|
6325
|
-
|
|
6326
|
-
|
|
6576
|
+
* The ids currently being served. Not kept across page loads unless the `armedMocks` setting asks for it -
|
|
6577
|
+
* an app that silently serves designed data tomorrow morning is worse than losing which mocks were armed.
|
|
6578
|
+
*/
|
|
6579
|
+
declare const queryDevtoolsArmedMocks: Signal<ReadonlySet<string>>;
|
|
6580
|
+
/**
|
|
6581
|
+
* Whether what is armed right now came back from a previous page load rather than being armed by hand.
|
|
6582
|
+
* The panel's armed bar says so, because mocks nobody remembers arming look exactly like a broken API.
|
|
6583
|
+
*/
|
|
6584
|
+
declare const queryDevtoolsArmedMocksRestored: Signal<boolean>;
|
|
6585
|
+
/**
|
|
6586
|
+
* The identity of a designed mock: one per client, method, route **and** declared query. The query is part
|
|
6587
|
+
* of it so `/posts?page=1` and `/posts?page=2` can hold different bodies.
|
|
6588
|
+
*/
|
|
6589
|
+
declare const queryDevtoolsMockId: (parts: Pick<QueryDevtoolsMock, "clientName" | "method" | "pattern"> & {
|
|
6590
|
+
query?: string;
|
|
6591
|
+
}) => string;
|
|
6592
|
+
/**
|
|
6593
|
+
* The path of a request URL relative to the client's `baseUrl` (base path included), without its query
|
|
6594
|
+
* string - what a pattern is matched against. A URL outside `baseUrl`, or no `baseUrl` at all, falls
|
|
6595
|
+
* back to the path without its origin.
|
|
6327
6596
|
*/
|
|
6328
|
-
declare const
|
|
6597
|
+
declare const queryDevtoolsRequestPath: (url: string, baseUrl?: string) => string;
|
|
6329
6598
|
/**
|
|
6330
|
-
*
|
|
6331
|
-
*
|
|
6332
|
-
*
|
|
6333
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6599
|
+
* Whether a request carries every query parameter a mock declares. Extra parameters are ignored - a mock
|
|
6600
|
+
* says what the request must ask for, not everything it may.
|
|
6334
6601
|
*/
|
|
6335
|
-
declare const
|
|
6602
|
+
declare const matchesQueryDevtoolsMockQuery: (declared: string, url: string) => boolean;
|
|
6336
6603
|
/**
|
|
6337
|
-
*
|
|
6338
|
-
*
|
|
6339
|
-
*
|
|
6340
|
-
*
|
|
6341
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6604
|
+
* Whether a request path is the route a pattern describes. A `:param` segment matches any single
|
|
6605
|
+
* non-empty segment, which is the whole point: a mock is armed for a route, not for the one URL a query
|
|
6606
|
+
* happened to build.
|
|
6342
6607
|
*/
|
|
6343
|
-
declare const
|
|
6344
|
-
clientName: string;
|
|
6345
|
-
method: string;
|
|
6346
|
-
pattern: string;
|
|
6347
|
-
}, style?: QueryDevtoolsSeedStyle) => QueryDevtoolsSchemaSeed | null;
|
|
6348
|
-
|
|
6608
|
+
declare const matchesQueryDevtoolsMockPattern: (pattern: string, path: string) => boolean;
|
|
6349
6609
|
/**
|
|
6350
|
-
*
|
|
6610
|
+
* Adds a designed mock, or replaces the one already under its id. Arming is untouched: re-designing a
|
|
6611
|
+
* body while it is being served changes what the next request gets.
|
|
6351
6612
|
*/
|
|
6352
|
-
declare const
|
|
6353
|
-
/**
|
|
6354
|
-
declare const
|
|
6613
|
+
declare const saveQueryDevtoolsMock: (mock: QueryDevtoolsMock) => void;
|
|
6614
|
+
/** Removes a designed mock, disarming it on the way out. */
|
|
6615
|
+
declare const deleteQueryDevtoolsMock: (id: string) => void;
|
|
6616
|
+
/** Starts or stops serving one designed mock. Arming a mock that is not in the library does nothing. */
|
|
6617
|
+
declare const armQueryDevtoolsMock: (id: string, isArmed: boolean) => void;
|
|
6618
|
+
/** Starts serving every mock in the library - the counterpart of {@link clearQueryDevtoolsArmedMocks}. */
|
|
6619
|
+
declare const armAllQueryDevtoolsMocks: () => void;
|
|
6620
|
+
/** Stops serving every mock, leaving the library alone - the armed bar's one-click way out. */
|
|
6621
|
+
declare const clearQueryDevtoolsArmedMocks: () => void;
|
|
6355
6622
|
/**
|
|
6356
|
-
*
|
|
6357
|
-
*
|
|
6623
|
+
* Where the armed set is kept. Switching to a scope that keeps it stores whatever is armed right now, so
|
|
6624
|
+
* the choice reads as "keep these"; switching to `none` empties the store and leaves this page serving
|
|
6625
|
+
* exactly what it was already serving.
|
|
6358
6626
|
*/
|
|
6359
|
-
declare const
|
|
6360
|
-
|
|
6361
|
-
|
|
6362
|
-
|
|
6363
|
-
|
|
6364
|
-
|
|
6365
|
-
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
/**
|
|
6370
|
-
* Build information about the application - version, commit SHA, environment name. Shown on the
|
|
6371
|
-
* panel's About tab, included in the session export and exposed on `window.ethlete`, so a bug report
|
|
6372
|
-
* says which build it came from. Generate it rather than typing it:
|
|
6373
|
-
* `nx g @ethlete/core:devtools-about <app>`.
|
|
6374
|
-
*/
|
|
6375
|
-
about?: QueryDevtoolsAppInfo;
|
|
6376
|
-
/**
|
|
6377
|
-
* The OpenAPI (or JSON Schema) document behind each query client, so the panel's mock designer can
|
|
6378
|
-
* seed a response from the real shape of a route and label each field with the type it is declared as.
|
|
6379
|
-
* One loader describes every client; a record keyed by client name describes an application whose
|
|
6380
|
-
* clients speak to different APIs. Each loader runs at most once, and only when the designer first
|
|
6381
|
-
* asks for it - see {@link QueryDevtoolsSchemaLoaders}.
|
|
6382
|
-
*/
|
|
6383
|
-
schema?: QueryDevtoolsSchemaLoaders;
|
|
6384
|
-
/**
|
|
6385
|
-
* The backends this application can be pointed at, one entry per `localStorage` key it reads at
|
|
6386
|
-
* startup. Declaring them puts a picker next to the floating toggle and on the panel's Settings tab;
|
|
6387
|
-
* picking writes the key and reloads. Nothing else changes - the application still resolves the key
|
|
6388
|
-
* itself, so an env is whatever it already means to it.
|
|
6389
|
-
*/
|
|
6390
|
-
apiEnvs?: QueryDevtoolsApiEnvSwitch[];
|
|
6627
|
+
declare const setQueryDevtoolsArmedMocksScope: (next: QueryDevtoolsStorageScope) => void;
|
|
6628
|
+
/** Empties the designed library and disarms everything - the panel's "Reset devtools". */
|
|
6629
|
+
declare const clearQueryDevtoolsMockStore: () => void;
|
|
6630
|
+
|
|
6631
|
+
/** One entry id the last page load left ops for, as the panel's banner reports it. */
|
|
6632
|
+
type RestoredQueryDevtoolsOverrides = {
|
|
6633
|
+
/** The devtools entry id the ops were stored under. */
|
|
6634
|
+
id: string;
|
|
6635
|
+
/** How many ops were stored for it. */
|
|
6636
|
+
count: number;
|
|
6391
6637
|
/**
|
|
6392
|
-
*
|
|
6393
|
-
*
|
|
6394
|
-
*
|
|
6395
|
-
* the repository.**
|
|
6396
|
-
*
|
|
6397
|
-
* Scope an account to the backends it exists on with `envs`, for an API whose users are not the next
|
|
6398
|
-
* one's. Accounts are not offered at all while an `apiEnvs` env marked `production` is the pick.
|
|
6638
|
+
* Whether a query with this id has registered and taken them. `false` means the store outlived the
|
|
6639
|
+
* query it was written for - a route that no longer runs, or a creation order that shifted - so those
|
|
6640
|
+
* ops are sitting on nothing rather than quietly landing somewhere else.
|
|
6399
6641
|
*/
|
|
6400
|
-
|
|
6642
|
+
armed: boolean;
|
|
6401
6643
|
};
|
|
6402
6644
|
/**
|
|
6403
|
-
*
|
|
6404
|
-
*
|
|
6405
|
-
* appear in the `<et-query-devtools>` panel.
|
|
6406
|
-
*
|
|
6407
|
-
* When omitted, all devtools instrumentation is a no-op: the registry is never installed, so nothing
|
|
6408
|
-
* is retained at runtime and the registry itself is dropped from the bundle.
|
|
6409
|
-
*
|
|
6410
|
-
* The options are read once, on the first call. A second application on the same page keeps the
|
|
6411
|
-
* options of the first one, and this call warns about the ones it declared itself.
|
|
6412
|
-
*
|
|
6413
|
-
* @example
|
|
6414
|
-
* ```ts
|
|
6415
|
-
* bootstrapApplication(AppComponent, {
|
|
6416
|
-
* providers: [provideQueryDevtools()],
|
|
6417
|
-
* });
|
|
6418
|
-
* ```
|
|
6645
|
+
* Whether armed response overrides are stored and replayed on the next page load - that is, whether
|
|
6646
|
+
* their scope is anything other than `none`. Off by default.
|
|
6419
6647
|
*/
|
|
6420
|
-
declare const
|
|
6421
|
-
|
|
6648
|
+
declare const queryDevtoolsOverridePersistence: Signal<boolean>;
|
|
6422
6649
|
/**
|
|
6423
|
-
*
|
|
6424
|
-
*
|
|
6650
|
+
* Where armed response overrides are kept. Switching to a scope that keeps them captures whatever is
|
|
6651
|
+
* armed right now, so the choice reads as "keep these" rather than "keep the next ones"; switching
|
|
6652
|
+
* between `session` and `local` moves the store; switching to `none` empties it and leaves every armed
|
|
6653
|
+
* op exactly where it is for the rest of this page.
|
|
6425
6654
|
*/
|
|
6426
|
-
declare const
|
|
6655
|
+
declare const setQueryDevtoolsOverridesScope: (next: QueryDevtoolsStorageScope) => void;
|
|
6427
6656
|
/**
|
|
6428
|
-
*
|
|
6429
|
-
*
|
|
6430
|
-
* with it.
|
|
6657
|
+
* Turns persistence on or off - the panel's "Keep across reloads" toggle. On restores the last scope
|
|
6658
|
+
* that kept them (`session` unless Settings picked `local`).
|
|
6431
6659
|
*/
|
|
6432
|
-
declare const
|
|
6660
|
+
declare const setQueryDevtoolsOverridePersistence: (value: boolean) => void;
|
|
6433
6661
|
/**
|
|
6434
|
-
*
|
|
6435
|
-
*
|
|
6436
|
-
* `nbf` to measure the new lifetime from.
|
|
6662
|
+
* Empties the override store in both browser stores and disarms everything a reload brought back,
|
|
6663
|
+
* without changing where overrides are kept - the panel's "Reset devtools".
|
|
6437
6664
|
*/
|
|
6438
|
-
declare const
|
|
6439
|
-
payload: Record<string, unknown> | null;
|
|
6440
|
-
expiresInPropertyName?: string;
|
|
6441
|
-
}) => boolean;
|
|
6665
|
+
declare const clearQueryDevtoolsOverrideStore: () => void;
|
|
6442
6666
|
/**
|
|
6443
|
-
*
|
|
6444
|
-
*
|
|
6445
|
-
*
|
|
6446
|
-
* so arming 60 seconds makes a real refresh happen a minute after each token is issued, and keeps
|
|
6447
|
-
* happening for every token that refresh brings back.
|
|
6448
|
-
*
|
|
6449
|
-
* It is a lifetime, not a remaining time: `0` presents the current token as long expired, which is what
|
|
6450
|
-
* makes a refresh happen at once. Nothing is persisted, so a reload leaves every provider on its real
|
|
6451
|
-
* lifetime.
|
|
6452
|
-
*
|
|
6453
|
-
* Part of the devtools contract consumed by `<et-query-devtools>`; a token's lifetime is not something
|
|
6454
|
-
* an application should override on itself.
|
|
6667
|
+
* The ops this page load inherited from the previous one, and for each id whether a live query has taken
|
|
6668
|
+
* it. Overrides that outlive the page that armed them have to announce themselves, because an app being
|
|
6669
|
+
* lied to looks exactly like an app that is broken.
|
|
6455
6670
|
*/
|
|
6456
|
-
declare const
|
|
6457
|
-
providerName: string;
|
|
6458
|
-
seconds: number;
|
|
6459
|
-
}) => void;
|
|
6671
|
+
declare const restoredQueryDevtoolsOverrides: Signal<readonly RestoredQueryDevtoolsOverrides[]>;
|
|
6460
6672
|
/**
|
|
6461
|
-
*
|
|
6462
|
-
*
|
|
6463
|
-
* @see setQueryDevtoolsTokenTtl
|
|
6673
|
+
* The scope those ops came back from, or `null` when this page inherited none. `local` is the one worth
|
|
6674
|
+
* naming in the banner: it means they outlived closing the tab, not just a reload.
|
|
6464
6675
|
*/
|
|
6465
|
-
declare const
|
|
6676
|
+
declare const queryDevtoolsRestoredOverridesScope: Signal<QueryDevtoolsStorageScope | null>;
|
|
6677
|
+
/** Disarms every op this page load inherited and empties the store - the banner's one-click way out. */
|
|
6678
|
+
declare const clearRestoredQueryDevtoolsOverrides: () => void;
|
|
6679
|
+
|
|
6680
|
+
declare const TRANSFER_KIND = "ethlete-query-overrides";
|
|
6466
6681
|
/**
|
|
6467
|
-
*
|
|
6468
|
-
*
|
|
6469
|
-
*
|
|
6470
|
-
*
|
|
6471
|
-
* Installed as the token payload patcher by `provideQueryDevtools()`, and called directly by the panel
|
|
6472
|
-
* for its own countdown.
|
|
6682
|
+
* A whole armed override set, as the devtools panel writes it to the clipboard: pretty-printed JSON so
|
|
6683
|
+
* it can be pasted onto another query, into a ticket, or hand-edited on the way. `source` is only ever
|
|
6684
|
+
* a human's bearing on where it came from - a paste never resolves against it.
|
|
6473
6685
|
*/
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
|
|
6686
|
+
type QueryDevtoolsOverrideTransfer = {
|
|
6687
|
+
kind: typeof TRANSFER_KIND;
|
|
6688
|
+
version: number;
|
|
6689
|
+
source?: {
|
|
6690
|
+
id?: string;
|
|
6691
|
+
url?: string;
|
|
6692
|
+
};
|
|
6693
|
+
ops: OverrideOp[];
|
|
6694
|
+
};
|
|
6695
|
+
/** What {@link parseQueryDevtoolsOverrideTransfer} makes of a piece of clipboard text. */
|
|
6696
|
+
type QueryDevtoolsOverrideTransferParse = {
|
|
6697
|
+
ok: true;
|
|
6698
|
+
ops: OverrideOp[];
|
|
6699
|
+
/** Ops the payload held that this build cannot replay: a `type` a newer panel wrote, or a field missing. */
|
|
6700
|
+
skipped: number;
|
|
6701
|
+
source?: {
|
|
6702
|
+
id?: string;
|
|
6703
|
+
url?: string;
|
|
6704
|
+
};
|
|
6705
|
+
} | {
|
|
6706
|
+
ok: false;
|
|
6707
|
+
reason: string;
|
|
6708
|
+
};
|
|
6709
|
+
/**
|
|
6710
|
+
* Serializes the ops armed on one query into clipboard text. `reset` never reaches a recorder's list, so
|
|
6711
|
+
* what comes out is exactly what a paste can put back.
|
|
6712
|
+
*/
|
|
6713
|
+
declare const serializeQueryDevtoolsOverrideTransfer: (entries: readonly QueryDevtoolsOverrideEntry[], source?: {
|
|
6714
|
+
id?: string;
|
|
6715
|
+
url?: string;
|
|
6716
|
+
}) => string;
|
|
6717
|
+
/**
|
|
6718
|
+
* Reads clipboard text back into ops. A bare array of ops is accepted alongside the full envelope, so a
|
|
6719
|
+
* set pasted out of a ticket and trimmed by hand still lands; an op whose `type` this build doesn't know
|
|
6720
|
+
* is counted in `skipped` rather than failing the whole paste, so an older panel can take a newer one's
|
|
6721
|
+
* set minus the parts it cannot replay.
|
|
6722
|
+
*/
|
|
6723
|
+
declare const parseQueryDevtoolsOverrideTransfer: (text: string) => QueryDevtoolsOverrideTransferParse;
|
|
6724
|
+
/**
|
|
6725
|
+
* How many of `ops` would not resolve against `raw` - what a paste onto a differently-shaped query
|
|
6726
|
+
* reports, so ops sitting on nothing say so instead of looking armed. Replays them the same way the
|
|
6727
|
+
* pipeline will, since an earlier op can be what makes a later one's path exist.
|
|
6728
|
+
*/
|
|
6729
|
+
declare const countUnresolvedQueryDevtoolsOverrides: (ops: readonly OverrideOp[], raw: unknown) => number;
|
|
6730
|
+
/** Arms every op of a parsed set onto a query, on top of whatever it already has armed. */
|
|
6731
|
+
declare const armQueryDevtoolsOverrideTransfer: (recorder: QueryDevtoolsOverridesRecorder, ops: readonly OverrideOp[]) => void;
|
|
6479
6732
|
|
|
6480
6733
|
/**
|
|
6481
6734
|
* How many destroyed queries the registry keeps. A tombstone holds the last response body it captured,
|
|
@@ -6516,20 +6769,6 @@ declare const snapshotQueryDevtoolsHandle: (handle: unknown) => unknown;
|
|
|
6516
6769
|
*/
|
|
6517
6770
|
declare const tombstoneOf: (entry: QueryDevtoolsEntry, destroyedAt: number) => QueryDevtoolsEntry;
|
|
6518
6771
|
|
|
6519
|
-
/**
|
|
6520
|
-
* Whether a devtools UI is on the page, which is what the floating pills follow. Kept apart from the
|
|
6521
|
-
* pills themselves so `@ethlete/query-devtools/toggle` can declare itself without pulling the pill
|
|
6522
|
-
* renderer into the bundle an application ships.
|
|
6523
|
-
*/
|
|
6524
|
-
/**
|
|
6525
|
-
* Declares a devtools UI on the page, and takes the declaration back when it goes. The floating pills
|
|
6526
|
-
* paint only while one is mounted, so an application that renders no devtools trigger shows no pills
|
|
6527
|
-
* either.
|
|
6528
|
-
*
|
|
6529
|
-
* Part of the devtools contract. **Not part of the general public contract.**
|
|
6530
|
-
*/
|
|
6531
|
-
declare const setQueryDevtoolsUiMounted: (isMounted: boolean) => void;
|
|
6532
|
-
|
|
6533
6772
|
type TransformedGqlQuery = {
|
|
6534
6773
|
query: string;
|
|
6535
6774
|
variables?: string | Record<string, unknown>;
|
|
@@ -7285,6 +7524,8 @@ declare class LegacyQuery<Response, Arguments extends BaseArguments | undefined,
|
|
|
7285
7524
|
* @internal
|
|
7286
7525
|
*/
|
|
7287
7526
|
_canBeCached?: boolean);
|
|
7527
|
+
/** The full URL of the request the underlying query is bound to, `null` before the first execution. */
|
|
7528
|
+
get url(): string | null;
|
|
7288
7529
|
get rawState(): V2QueryState<ResponseType<QueryArgsOf<TNewQuery>>>;
|
|
7289
7530
|
/**
|
|
7290
7531
|
* `abort()` resets the underlying query, so it holds no execution state - the shape of a query that has
|
|
@@ -8801,7 +9042,7 @@ declare class QueryDevtoolsComponent {
|
|
|
8801
9042
|
secure: boolean | undefined;
|
|
8802
9043
|
route: any;
|
|
8803
9044
|
reportProgress: boolean | undefined;
|
|
8804
|
-
responseType: "
|
|
9045
|
+
responseType: "json" | "text" | "blob" | "arraybuffer" | undefined;
|
|
8805
9046
|
withCredentials: boolean | undefined;
|
|
8806
9047
|
autoRefreshOn: _ethlete_query.QueryAutoRefreshConfig | undefined;
|
|
8807
9048
|
enableSmartPolling: boolean | undefined;
|
|
@@ -8811,7 +9052,7 @@ declare class QueryDevtoolsComponent {
|
|
|
8811
9052
|
secure: boolean | undefined;
|
|
8812
9053
|
route: any;
|
|
8813
9054
|
reportProgress: boolean | undefined;
|
|
8814
|
-
responseType: "
|
|
9055
|
+
responseType: "json" | "text" | "blob" | "arraybuffer" | undefined;
|
|
8815
9056
|
withCredentials: boolean | undefined;
|
|
8816
9057
|
autoRefreshOn: _ethlete_query.QueryAutoRefreshConfig | undefined;
|
|
8817
9058
|
enableSmartPolling: boolean | undefined;
|
|
@@ -9232,15 +9473,15 @@ declare class QueryDirective<Q extends QueryDirectiveType | null> {
|
|
|
9232
9473
|
/**
|
|
9233
9474
|
* @deprecated Part of the legacy (v2) query system. Migrate to the current query API - see https://ethlete-sdk-docs.web.app/query/migrating-from-v2, and run `nx g @ethlete/query:migrate-to-query-v3` to rewrite the mechanical parts. Intent to remove in v7.
|
|
9234
9475
|
*/
|
|
9235
|
-
declare const invalidBaseRouteError: (
|
|
9476
|
+
declare const invalidBaseRouteError: (base: unknown) => RuntimeError<10>;
|
|
9236
9477
|
/**
|
|
9237
9478
|
* @deprecated Part of the legacy (v2) query system. Migrate to the current query API - see https://ethlete-sdk-docs.web.app/query/migrating-from-v2, and run `nx g @ethlete/query:migrate-to-query-v3` to rewrite the mechanical parts. Intent to remove in v7.
|
|
9238
9479
|
*/
|
|
9239
|
-
declare const invalidRouteError: (
|
|
9480
|
+
declare const invalidRouteError: (route: unknown) => RuntimeError<11>;
|
|
9240
9481
|
/**
|
|
9241
9482
|
* @deprecated Part of the legacy (v2) query system. Migrate to the current query API - see https://ethlete-sdk-docs.web.app/query/migrating-from-v2, and run `nx g @ethlete/query:migrate-to-query-v3` to rewrite the mechanical parts. Intent to remove in v7.
|
|
9242
9483
|
*/
|
|
9243
|
-
declare const pathParamsMissingInRouteFunctionError: (
|
|
9484
|
+
declare const pathParamsMissingInRouteFunctionError: (route: unknown) => RuntimeError<12>;
|
|
9244
9485
|
/**
|
|
9245
9486
|
* @deprecated Part of the legacy (v2) query system. Migrate to the current query API - see https://ethlete-sdk-docs.web.app/query/migrating-from-v2, and run `nx g @ethlete/query:migrate-to-query-v3` to rewrite the mechanical parts. Intent to remove in v7.
|
|
9246
9487
|
*/
|
|
@@ -9444,7 +9685,7 @@ type QueryFormChange<TFields extends QueryFormFields> = {
|
|
|
9444
9685
|
* Options passed to `observe()`. Named distinctly from the legacy
|
|
9445
9686
|
* `QueryFormObserveOptions` to keep both APIs' barrel exports intact.
|
|
9446
9687
|
*/
|
|
9447
|
-
type QueryFormSignalsObserveOptions = {
|
|
9688
|
+
type QueryFormSignalsObserveOptions<TKey extends string = string> = {
|
|
9448
9689
|
/**
|
|
9449
9690
|
* Sync the committed value to the URL query params.
|
|
9450
9691
|
* @default true
|
|
@@ -9464,7 +9705,7 @@ type QueryFormSignalsObserveOptions = {
|
|
|
9464
9705
|
* Keep the committed value in a storage and restore it when the URL carries none of the persisted fields.
|
|
9465
9706
|
* Off unless set.
|
|
9466
9707
|
*/
|
|
9467
|
-
readonly persistence?: QueryFormPersistence
|
|
9708
|
+
readonly persistence?: QueryFormPersistence<TKey>;
|
|
9468
9709
|
};
|
|
9469
9710
|
/**
|
|
9470
9711
|
* The storage a query form persists into. `sessionStorage` and `localStorage` satisfy it. Both methods are
|
|
@@ -9475,7 +9716,7 @@ type QueryFormStorage = {
|
|
|
9475
9716
|
setItem(key: string, value: string): void;
|
|
9476
9717
|
};
|
|
9477
9718
|
/** Where and what a query form persists - the `persistence` option of `observe()`. */
|
|
9478
|
-
type QueryFormPersistence = {
|
|
9719
|
+
type QueryFormPersistence<TKey extends string = string> = {
|
|
9479
9720
|
/** The storage key. Scope it per list, e.g. `'players-list'`. */
|
|
9480
9721
|
readonly key: string;
|
|
9481
9722
|
/**
|
|
@@ -9484,7 +9725,7 @@ type QueryFormPersistence = {
|
|
|
9484
9725
|
*/
|
|
9485
9726
|
readonly storage: 'session' | 'local' | QueryFormStorage;
|
|
9486
9727
|
/** The fields to persist and to check the URL for. Defaults to every field. */
|
|
9487
|
-
readonly fields?: readonly
|
|
9728
|
+
readonly fields?: readonly TKey[];
|
|
9488
9729
|
};
|
|
9489
9730
|
/**
|
|
9490
9731
|
* Options for a single programmatic write (`setValue`/`patchValue`/reset).
|
|
@@ -9577,7 +9818,7 @@ type QueryFormSignals<TFields extends QueryFormFields> = {
|
|
|
9577
9818
|
/** The default value of the whole form. */
|
|
9578
9819
|
readonly defaultValue: QueryFormModel<TFields>;
|
|
9579
9820
|
/** Start syncing with the URL. Returns the form, so it can be chained onto the definition. */
|
|
9580
|
-
observe(options?: QueryFormSignalsObserveOptions): QueryFormSignals<TFields>;
|
|
9821
|
+
observe(options?: QueryFormSignalsObserveOptions<keyof TFields & string>): QueryFormSignals<TFields>;
|
|
9581
9822
|
/**
|
|
9582
9823
|
* Stop syncing and strip the form's params from the URL. A pending debounced edit is committed to `value`
|
|
9583
9824
|
* but not written to the URL. Only an explicit call strips the params - the
|
|
@@ -9668,7 +9909,8 @@ type DateStringQueryFieldConfig = QueryFieldConfig<string | null> & {
|
|
|
9668
9909
|
readonly as: 'string';
|
|
9669
9910
|
};
|
|
9670
9911
|
/**
|
|
9671
|
-
* A single date field. By default it holds a `Date
|
|
9912
|
+
* A single date field. By default it holds a `Date`, written to the URL as an ISO string and read back from
|
|
9913
|
+
* any `Date`-parseable one.
|
|
9672
9914
|
* `as: 'string'` types it `string | null` like the `@ethlete/components` date and time controls, so
|
|
9673
9915
|
* `[formField]` binds it to them; the URL then carries the control's `valueFormat` string verbatim.
|
|
9674
9916
|
*
|
|
@@ -9769,14 +10011,29 @@ type CreateWebSocketClientConfigOptions = {
|
|
|
9769
10011
|
withCredentials?: boolean;
|
|
9770
10012
|
/**
|
|
9771
10013
|
* The handshake payload, sent on every connect and reconnect. Pass a function to read a fresh value
|
|
9772
|
-
*
|
|
10014
|
+
* each time; it runs outside an injection context, so it cannot call `injectAuthProvider()`. For a
|
|
10015
|
+
* bearer auth provider use {@link authProvider} instead. Setting both is a dev-mode error and
|
|
10016
|
+
* `authProvider` wins.
|
|
9773
10017
|
*
|
|
9774
10018
|
* @example
|
|
9775
10019
|
* ```ts
|
|
9776
|
-
* createWebSocketClient({ name: 'match', url, io, auth: () => ({ token:
|
|
10020
|
+
* createWebSocketClient({ name: 'match', url, io, auth: () => ({ token: readCookieToken() }) });
|
|
9777
10021
|
* ```
|
|
9778
10022
|
*/
|
|
9779
10023
|
auth?: WebSocketClientAuth | (() => WebSocketClientAuth);
|
|
10024
|
+
/**
|
|
10025
|
+
* A bearer auth provider whose session the socket follows. The handshake carries
|
|
10026
|
+
* `{ token: accessToken() }`. The socket does not connect while the session is `'unknown'` or
|
|
10027
|
+
* `'restoring'`, reconnects when a session starts (a login, or a different user), and disconnects and
|
|
10028
|
+
* completes its rooms on logout. A token rotation within a session does not reconnect; the next
|
|
10029
|
+
* reconnect reads the fresh token.
|
|
10030
|
+
*
|
|
10031
|
+
* @example
|
|
10032
|
+
* ```ts
|
|
10033
|
+
* createWebSocketClient({ name: 'match', url, io, authProvider: myAuthProviderRef });
|
|
10034
|
+
* ```
|
|
10035
|
+
*/
|
|
10036
|
+
authProvider?: AnyCreateBearerAuthProviderResult;
|
|
9780
10037
|
};
|
|
9781
10038
|
/** A default socket io message view */
|
|
9782
10039
|
type SocketMessageView<TMessageData = unknown> = {
|
|
@@ -9831,7 +10088,7 @@ type AnyWebSocketClient<TMessageData extends SocketMessageView = SocketMessageVi
|
|
|
9831
10088
|
declare const createWebSocketClient: <TMessageData extends SocketMessageView = SocketMessageView>(options: CreateWebSocketClientConfigOptions) => WebSocketClientResult<TMessageData>;
|
|
9832
10089
|
|
|
9833
10090
|
/** The version of `@ethlete/query` this build was cut from. */
|
|
9834
|
-
declare const QUERY_VERSION = "6.0.0-next.
|
|
10091
|
+
declare const QUERY_VERSION = "6.0.0-next.55";
|
|
9835
10092
|
|
|
9836
|
-
export { AuthBearerRefreshStrategy, BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, 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, IS_QUERY_REQUEST, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_QUERY_BATCH_TOMBSTONES, MAX_QUERY_BATCH_TOMBSTONE_BUCKETS, MAX_QUERY_DEVTOOLS_TOMBSTONES, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QUERY_DEVTOOLS_FAULT_STATUSES, QUERY_DEVTOOLS_TOKEN_TTL_LIMIT, QUERY_PERSISTENCE_STORE_VERSION, QUERY_SYNC_PROTOCOL_VERSION, QUERY_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, addQueryDevtoolsAuthAccount, applyQueryDevtoolsOverrides, applyQueryDevtoolsTokenTtl, applyQueryFeatures, armAllQueryDevtoolsMocks, armQueryDevtoolsMock, armQueryDevtoolsOverrideTransfer, authExtractTokensResponseMissingAccessToken, authExtractTokensResponseMissingRefreshToken, authExtractTokensResponseNotObject, authProviderFeatureUsedMultipleTimes, booleanArrayQueryField, buildQueryCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, canOverrideQueryDevtoolsTokenTtl, castQueryCreatorTypes, circularQueryDependency, circularQueryDependencyChecker, clearQueryDevtoolsArmedMocks, clearQueryDevtoolsAuthCredentials, clearQueryDevtoolsAuthSessions, clearQueryDevtoolsFaults, clearQueryDevtoolsMockStore, clearQueryDevtoolsOverrideStore, clearQueryDevtoolsStore, clearQueryDevtoolsTokenTtl, clearQueryDevtoolsTombstones, clearRestoredQueryDevtoolsOverrides, collectLeafPaths, collectQueryDevtoolsSchemaComponents, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, contentfulGqlLikePaginationAdapter, countUnresolvedQueryDevtoolsOverrides, createAuthGuard, createBaseQuery, createBaseQueryCreator, createBearerAuthProvider, createDefaultRetryFn, createDeleteQuery, createExecuteFn, createGetQuery, createGqlMutationViaGet, createGqlMutationViaPost, createGqlQuery, createGqlQueryCreator, createGqlQueryViaGet, createGqlQueryViaPost, createHeadQuery, createHttpRequest, createIndexedDbQueryPersistenceAdapter, createInfinityQueryConfig, createLegacyQueryCreator, createNoopQueryPersistenceAdapter, createOptionsQuery, createPagedQueryStack, createPatchQuery, createPersistentAuthFeature, createPostQuery, createPutQuery, createQuery, createQueryBatch, createQueryClient, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, createQueryCreator, createQueryDevtoolsOverrides, createQueryErrorResponse, createQueryFeature, createQueryInvalidationFilter, createQueryKeyLockManager, createQueryObject, createQueryPersistenceEngine, createQueryRepository, createQuerySnapshotFn, createQueryStack, createQuerySubmission, createQuerySyncTransport, createSecureDeleteQuery, createSecureExecuteFactory, createSecureExecuteFn, createSecureGetQuery, createSecureGqlMutationViaGet, createSecureGqlMutationViaPost, createSecureGqlQuery, createSecureGqlQueryCreator, createSecureGqlQueryViaGet, createSecureGqlQueryViaPost, createSecureHeadQuery, createSecureOptionsQuery, createSecurePatchQuery, createSecurePostQuery, createSecurePutQuery, createSecureQuery, createSecureQueryCreator, createTrackingFeature, createWebSocketClient, dateArrayQueryField, dateQueryField, decryptBearer, deepFreeze, def, defineQueryForm, deleteQueryDevtoolsMock, detectContentTypeHeader, detectPaginationShape, dynLikePaginationAdapter, effectComputed, emptyQueryArgs, ethletePaginationAdapter, executeUntilSettled, executeUntilSettled$, extractExpiresInSeconds, extractFormViolations, extractHtmlErrorMessage, extractQuery, fakePaginationAdapter, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, forgetQueryDevtoolsAuthSession, forgetQueryDevtoolsAuthSessionsFor, generateQueryDevtoolsNumberPreset, generateQueryDevtoolsSampleNumber, generateQueryDevtoolsStringPreset, getDefaultHeaders, getQueryFeatureUsage, getResponseUrl, ggLikePaginationAdapter, gql, gqlDataPropertyMissingInResponse, gqlErrorsInResponse, hasHeader, hasQueryDevtoolsOverridesAtPath, htmlErrorPayload, htmlQueryErrorParser, ignoreAutoRefresh, injectInfinityQueryResponseDelay, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, invalidStateInsideSecureExecuteFactory, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCreateGqlQueryOptions, isCustomHeaderAuthProvider, isDateShapedLeaf, isEmptyString, isGqlQueryConfig, isHtmlErrorPayload, isIdempotentQueryMethod, isLegacyQuery, isNaN, isPageOutOfRangeError, isQuery, isQueryCollection, isQueryDevtoolsEnabled, isQueryDevtoolsFaultArmed, isQueryDevtoolsRepositoryLive, isQueryErrorResponse, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyListError, isSymfonyPagerfantaOutOfRangeError, isUnderInvalidatedUrl, legacyPrepareWithoutInjectionContext, loadQueryDevtoolsSchema, loginQueryDevtoolsAuthAccount, logoutQueryDevtoolsAuthSession, mapToPaginated, mapViolationsToFormErrors, matchesQueryDevtoolsMockPattern, matchesQueryDevtoolsMockQuery, maybeExecute, measureQueryDevtoolsPayload, mergeHeaders, nestedEffect, numberArrayQueryField, pagedQueryStackNextPageCalledWithoutPreviousPage, pagedQueryStackPageBiggerThanTotalPages, pagedQueryStackPreviousPageCalledButAlreadyAtFirstPage, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleDe, parseHttpErrorCodeToTitleEn, parseQueryDevtoolsOverrideTransfer, pathParamsMissingInRouteFunctionError, provideInfinityQueryResponseDelay, provideLegacyPrepareFallback, provideQueryClientForDevtools, provideQueryDevtools, queryArrayComputed, queryBatchAlreadyRunning, queryBatchWithArgsUsed, queryClientFeatureUsedMultipleTimes, queryComputed, queryComputedTillTruthy, queryCreatedInReactiveContext, queryDevtoolsAbout, queryDevtoolsAllowsLocalAuthSessions, queryDevtoolsApiEnvIds, queryDevtoolsApiEnvIsProduction, queryDevtoolsApiEnvScope, queryDevtoolsApiEnvValues, queryDevtoolsApiEnvs, queryDevtoolsArmedMocks, queryDevtoolsArmedMocksRestored, queryDevtoolsAuthAccountsFor, queryDevtoolsAuthActive, queryDevtoolsAuthFieldsFor, queryDevtoolsAuthOtherScopeCount, queryDevtoolsAuthSessions, queryDevtoolsAuthSessionsFor, queryDevtoolsAuthTabLocal, queryDevtoolsEntries, queryDevtoolsFaults, queryDevtoolsFaultsRestored, queryDevtoolsMockId, queryDevtoolsMocks, queryDevtoolsOverridePersistence, queryDevtoolsRequestPath, queryDevtoolsResponseHistory, queryDevtoolsRestoredOverridesScope, queryDevtoolsSchemaNames, queryDevtoolsSchemaRoutes, queryDevtoolsSchemaState, queryDevtoolsSettings, queryDevtoolsStorage, queryDevtoolsTokenTtls, queryErrorMessage, queryErrorMessages, queryExecute, queryExecutedAfterDestroyMessage, queryFeatureUsedMultipleTimes, queryField, querySequence, querySequenceAlreadyRunning, queryStackWithArgsUsed, queryStackWithResponseUpdateUsed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, readQueryDevtoolsStore, recordExecutionArgs, registerEthleteVersion, registerQueryErrorParser, removeFrom, removeQueryDevtoolsAuthAccount, renameQueryDevtoolsAuthSession, request, resetExecuteState, resetPageOnError, resolveInvalidationUrl, resolveQueryHeaders, restoredQueryDevtoolsOverrides, saveQueryDevtoolsMock, searchQueryField, seedQueryDevtoolsSchemaBody, seedQueryDevtoolsSchemaRoute, serializeBody, serializeQueryDevtoolsOverrideTransfer, setQueryDevtoolsApiEnv, setQueryDevtoolsAppInfo, setQueryDevtoolsArmedMocksScope, setQueryDevtoolsAuthCredentials, setQueryDevtoolsAuthTabLocal, setQueryDevtoolsFault, setQueryDevtoolsFaultsScope, setQueryDevtoolsOverridePersistence, setQueryDevtoolsOverridesScope, setQueryDevtoolsSettings, setQueryDevtoolsTokenTtl, setQueryDevtoolsUiMounted, setupQueryExecuteState, setupQueryState, shouldAutoExecuteGqlQuery, shouldAutoExecuteQuery, shouldCacheQuery, shouldRetryRequest, silenceMissingWithArgsFeatureErrorUsedButWithArgsPresent, skipPaginationPageParamCalculator, smartDuplicateArrayItem, snapshotQueryDevtoolsHandle, sortQueryField, splitQueryConfig, stringArrayQueryField, stringifyQueryRouteParts, sumQueryDevtoolsStats, switchQueryCollectionState, switchQueryDevtoolsAuthSession, switchQueryState, symfonyQueryErrorParser, tableSortQueryField, takeUntilResponse, toQuerySignal, toQuerySubject, tokensNotAvailableInsideAuthAndExec, tombstoneOf, transformArrayResponse, transformExecStateToQueryState, transformGql, transformMethod, transformPaginatedResponse, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray, transformToTableSort, transformToTableSortQueryParam, uncacheableRequestHasAllowCacheParam, uncacheableRequestHasCacheKeyParam, unwrapGqlResponseWithErrors, unwrapQuerySyncMessage, v2BuildQueryCacheKey, v2ExtractExpiresInSeconds, v2ShouldCacheQuery, v2ShouldRetryRequest, validateWithQuery, validateWithV2Query, withArgs, withArgsQueryFeatureMissingButRouteIsFunction, withAuthenticationQuery, withAutoRefresh, withAutoRefreshUsedInManualQuery, withAutoRefreshUsedOnUnsupportedHttpMethod, withBearerAuthMultiTabSync, withDefaultRetry, withErrorHandling, withEthleteApiErrors, withHtmlErrorParsing, withInactivityLogout, withLogging, withLongPolling, withLongPollingUsedOnUnsupportedHttpMethod, withLongPollingUsedWithPolling, withMultiTabSync, withPageResetOnError, withPersistentAuth, withPolling, withPollingUsedOnUnsupportedHttpMethod, withQueryPersistence, withRefreshQuery, withResponseUpdate, withSuccessHandling, withSymfonyErrors, withTokenExpirationWarning, withTokenRevocation, withTracking, wrapAsObservableSignal, wrapQuerySyncMessage, writeQueryDevtoolsStore };
|
|
9837
|
-
export type { AnyBearerAuthProvider, AnyCreateBearerAuthProviderResult, AnyCreateGqlQueryCreatorOptions, AnyCreateQueryClientResult, AnyGqlQueryConfig, AnyInfinityQuery, AnyInfinityQueryConfig, AnyLegacyQuery, AnyLegacyQueryCreator, AnyNewQuery, AnyPagedQueryStack, AnyQueryBatch, AnyQueryBatchItemResult, AnyQueryBuilder, AnyQueryClient, AnyQueryCollection, AnyQueryCollectionData, AnyQueryCollectionResponse, AnyQueryCreator, AnyQueryCreatorCollection, AnyQueryForm, AnyQuerySnapshot, AnyQueryStack, AnyRestQueryConfig, AnyRoute, AnyV2Query, AnyV2QueryCreator, AnyWebSocketClient, AppendItemsLocation, ApplyExternalResponseOptions, ApplyPersistedResponseOptions, AuthGuard, AuthGuardConfig, AuthGuardPermission, AuthGuardPermissionOptions, AuthGuardTarget, AuthProvider, AuthProviderBasicConfig, AuthProviderBearerConfig, AuthProviderCustomHeaderConfig, AuthQueryBuilder, AuthQueryConfig, BaseArguments, BaseQueryCreatorFactoryOptions, BaseQueryCreatorOptions, BaseQueryCreatorOptionsSubtle, BearerAuthActivityCoordination, BearerAuthExecutionState, BearerAuthExecutionStateError, BearerAuthExecutionStateLoading, BearerAuthExecutionStateLogout, BearerAuthExecutionStateSuccess, BearerAuthExecutionStateTokenSeed, BearerAuthFeature, BearerAuthMultiTabSyncConfig, BearerAuthMultiTabSyncFeature, BearerAuthProvider, BearerAuthProviderEarlySetup, BearerAuthProviderEarlySetupContext, BearerAuthProviderEarlySetupResult, BearerAuthProviderFeatureContext, BearerAuthProviderOf, BearerAuthProviderQueryContext, BearerAuthProviderRef, BearerAuthProviderTokens, BearerAuthRefreshCoordination, BearerAuthSession, BearerAuthSessionAdoption, BearerAuthSessionEndCause, BearerAuthSessionStatus, BearerRefreshConfig, BodyType, BuildQueryStringConfig, CacheAdapterFn, Cancelled, ClassValidatorError, ConstructQuery, CreateBaseQueryOptions, CreateBearerAuthProviderConfig, CreateGqlQueryCreatorOptions, CreateGqlQueryExecuteOptions, CreateGqlQueryOptions, CreateHttpRequestDependencies, CreateHttpRequestOptions, CreateIndexedDbQueryPersistenceAdapterOptions, CreateLegacyQueryCreatorOptions, CreateLegacyQueryOptions, CreatePagedQueryStackOptions, CreateQueryBatchOptions, CreateQueryClientConfigOptions, CreateQueryCreatorOptions, CreateQueryExecuteOptions, CreateQueryObjectOptions, CreateQueryOptions, CreateQueryPersistenceEngineOptions, CreateQueryRepositoryConfig, CreateQuerySnapshotOptions, CreateQueryStackOptions, CreateQuerySubmissionConfig, CreateQuerySyncEngineOptions, CreateSecureGqlQueryExecuteOptions, CreateSecureGqlQueryOptions, CreateSecureQueryExecuteOptions, CreateSecureQueryOptions, CreateWebSocketClientConfigOptions, CreateWebSocketClientTransport, DateQueryFieldConfig, DateStringQueryFieldConfig, DefaultRetryOptions, DefineQueryFormConfig, DescribableFeature, DestroyCleanupCallback, EmptyObject, EntityGetParams, EntityIdParams, EntityKey, EntitySetParams, EntityStoreConfig, ExecuteFactory, ExecuteQueryOptions, ExtractQueryArgs, ExtractQueryKey, Failure, FeatureRegistry, GQL, GqlDataWithErrors, GqlEnvelope, GqlError, GqlQueryArgs, GqlQueryConfig, GqlQueryConfigWithoutMethod, GqlQueryMethod, GqlQueryTransport, GqlRawResponseType, GqlTransferOption, GqlTransformer, GqlVariablesType, HttpCancelEvent, 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, QueryBatch, QueryBatchDevtoolsHandle, QueryBatchItemCancelled, QueryBatchItemError, QueryBatchItemResult, QueryBatchItemSkipped, QueryBatchItemSuccess, QueryBatchResult, QueryBatchStatus, QueryClient, QueryClientDevtoolsOptions, QueryClientErrorPipelineFeature, QueryClientFeature, QueryClientFeatureContext, QueryClientFeatureFn, QueryClientMultiTabSyncFeature, QueryClientPersistenceFeature, QueryClientRef, QueryClientSubtle, QueryCollectionKeysOf, QueryCollectionOf, QueryCollectionWithNullableQuery, QueryConfig, QueryConfigBase, QueryConfigWithoutMethod, QueryContainerConfig, QueryCreator, QueryCreatorInput, QueryDataOf, QueryDependencies, QueryDevtoolsAbout, QueryDevtoolsApiEnv, QueryDevtoolsApiEnvSwitch, QueryDevtoolsAppInfo, QueryDevtoolsAuthAccount, QueryDevtoolsAuthAccountView, QueryDevtoolsAuthField, QueryDevtoolsAuthLocalAccount, QueryDevtoolsAuthProviderHandle, QueryDevtoolsAuthProviderRegistration, QueryDevtoolsAuthQuery, QueryDevtoolsAuthSeed, QueryDevtoolsAuthSession, QueryDevtoolsEntry, QueryDevtoolsEntryKind, QueryDevtoolsEntryMeta, QueryDevtoolsFault, QueryDevtoolsFaultTarget, QueryDevtoolsFeature, QueryDevtoolsFeatureDescriber, QueryDevtoolsFeatureDetail, QueryDevtoolsFormField, QueryDevtoolsFormHandle, QueryDevtoolsFormLinksHandle, QueryDevtoolsFormLinksRecorder, QueryDevtoolsMock, QueryDevtoolsMockTarget, QueryDevtoolsOptions, QueryDevtoolsOverrideEntry, QueryDevtoolsOverrideTransfer, QueryDevtoolsOverrideTransferParse, QueryDevtoolsOverridesHandle, QueryDevtoolsOverridesRecorder, QueryDevtoolsPayload, QueryDevtoolsRegistrar, QueryDevtoolsRegistration, QueryDevtoolsResolvedFault, QueryDevtoolsResolvedMock, QueryDevtoolsRoutePart, QueryDevtoolsRun, QueryDevtoolsRunError, QueryDevtoolsRunStatus, QueryDevtoolsSchemaComponents, QueryDevtoolsSchemaLoader, QueryDevtoolsSchemaLoaders, QueryDevtoolsSchemaRoute, QueryDevtoolsSchemaSeed, QueryDevtoolsSchemaState, QueryDevtoolsSeedStyle, QueryDevtoolsSettings, QueryDevtoolsStats, QueryDevtoolsStatsHandle, QueryDevtoolsStatsRecorder, QueryDevtoolsStorageScope, QueryDirectiveContext, QueryDirectiveType, QueryEntityConfig, QueryErrorParser, QueryErrorResponse, QueryErrorResponseItem, QueryErrorResponseList, QueryErrorResponseSingle, QueryExecute, QueryExecuteArgs, QueryExecuteEventData, QueryExecuteOptions, QueryExecuteState, QueryExecutionState, QueryExecutionStateFailure, QueryExecutionStateFailureWithCachedResponse, QueryExecutionStateFailureWithNoResponse, QueryExecutionStateLoading, QueryExecutionStateLoadingWithCachedResponse, QueryExecutionStateLoadingWithNoResponse, QueryExecutionStateSuccess, QueryFailureEventData, QueryFeature, QueryFeatureContext, QueryFeatureFlags, QueryFeatureFn, QueryFieldConfig, QueryFieldDef, QueryFieldOptions, QueryFieldValue, QueryFilterConfig, QueryFormBranch, QueryFormBranchWriteOptions, QueryFormChange, QueryFormFields, QueryFormGroup, QueryFormGroupControls, QueryFormModel, QueryFormObserveOptions, QueryFormOf, QueryFormOptions, QueryFormPersistence, QueryFormSignals, QueryFormSignalsObserveOptions, QueryFormSignalsWriteOptions, QueryFormStorage, QueryFormValue, QueryFormValueEvent, QueryFormWriteOptions, QueryHeaders, QueryHeadersInput, QueryInvalidationCandidate, QueryInvalidationFilterFn, QueryInvalidationOptions, QueryKey, QueryKeyLockHold, QueryKeyLockHoldOptions, 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, QuerySubmissionRef, 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, RestoredQueryDevtoolsOverrides, RouteString, RouteType, RunQueryCreator, RunQueryExecuteOptions, SecureExecuteFactoryOptions, ServerValidationError, ServerViolationValidationError, SetupQueryDependenciesOptions, SetupQueryStateOptions, ShouldRetryRequestFn, ShouldRetryRequestOptions, ShouldRetryRequestResult, SocketMessageView, Sort, SortDirection, Success, SymfonyError, SymfonyErrorTrace, TableSortEntry, 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, WebSocketClientAuth, WebSocketClientIo, WebSocketClientIoOptions, WebSocketClientResult, WebSocketClientSocket, WebSocketClientSubtle, WebSocketDevtoolsHandle, WebSocketDevtoolsMessage, WebSocketRoom, WithArgsCheck, WithArgsQueryFeature, WithAutoRefreshFeatureOptions, WithBody, WithConfig, WithErrorHandlingFeatureOptions, WithHeaders, WithInjector, WithLegacyConfig, WithLoggingFeatureOptions, WithLongPollingFeatureOptions, WithMock, WithPageResetOnErrorFeatureOptions, WithPathParams, WithPollingFeatureOptions, WithQueryParams, WithResponseUpdateFeatureFnData, WithResponseUpdateFeatureOptions, WithSuccessHandlingFeatureOptions, WithVariables };
|
|
10093
|
+
export { AuthBearerRefreshStrategy, BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, 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, EntityStore, IGNORED_FILTER_COUNT_FIELDS, INFINITY_QUERY_TOKEN, IS_QUERY_REQUEST, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QUERY_PERSISTENCE_STORE_VERSION, QUERY_SYNC_PROTOCOL_VERSION, QUERY_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, applyQueryFeatures, authAccessTokenExpiryUnreadable, authExtractTokensResponseMissingAccessToken, authExtractTokensResponseMissingRefreshToken, authExtractTokensResponseNotObject, authProviderFeatureUsedMultipleTimes, booleanArrayQueryField, buildQueryCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, circularQueryDependency, circularQueryDependencyChecker, clearQueryDevtoolsTokenTtl, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, contentfulGqlLikePaginationAdapter, createAuthGuard, createBaseQuery, createBaseQueryCreator, createBearerAuthProvider, createDefaultRetryFn, createDeleteQuery, createExecuteFn, createGetQuery, createGqlMutationViaGet, createGqlMutationViaPost, createGqlQuery, createGqlQueryCreator, createGqlQueryViaGet, createGqlQueryViaPost, createHeadQuery, createHttpRequest, createIndexedDbQueryPersistenceAdapter, createInfinityQueryConfig, createLegacyQueryCreator, createNoopQueryPersistenceAdapter, createOptionsQuery, createPagedQueryStack, createPatchQuery, createPersistentAuthFeature, createPostQuery, createPutQuery, createQuery, createQueryBatch, createQueryClient, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, createQueryCreator, createQueryErrorResponse, createQueryFeature, createQueryGroup, createQueryInvalidationFilter, createQueryKeyLockManager, createQueryObject, createQueryPersistenceEngine, createQueryRepository, createQuerySnapshotFn, createQueryStack, createQuerySubmission, createQuerySyncTransport, createSecureDeleteQuery, createSecureExecuteFactory, createSecureExecuteFn, createSecureGetQuery, createSecureGqlMutationViaGet, createSecureGqlMutationViaPost, createSecureGqlQuery, createSecureGqlQueryCreator, createSecureGqlQueryViaGet, createSecureGqlQueryViaPost, createSecureHeadQuery, createSecureOptionsQuery, createSecurePatchQuery, createSecurePostQuery, createSecurePutQuery, createSecureQuery, createSecureQueryCreator, createTrackingFeature, createWebSocketClient, dateArrayQueryField, dateQueryField, decryptBearer, deepFreeze, def, defineQueryForm, detectContentTypeHeader, dynLikePaginationAdapter, effectComputed, emptyQueryArgs, ethletePaginationAdapter, executeUntilSettled, executeUntilSettled$, extractExpiresInSeconds, extractFormViolations, extractHtmlErrorMessage, extractQuery, fakePaginationAdapter, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, getDefaultHeaders, getQueryFeatureUsage, getResponseUrl, ggLikePaginationAdapter, gql, gqlDataPropertyMissingInResponse, gqlErrorsInResponse, hasHeader, htmlErrorPayload, htmlQueryErrorParser, ignoreAutoRefresh, injectInfinityQueryResponseDelay, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, invalidStateInsideSecureExecuteFactory, invalidatesUsedOnRead, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCreateGqlQueryOptions, isCustomHeaderAuthProvider, isEmptyString, isGqlQueryConfig, isHtmlErrorPayload, isIdempotentQueryMethod, isLegacyQuery, isNaN, isPageOutOfRangeError, isQuery, isQueryCollection, isQueryErrorResponse, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyListError, isSymfonyPagerfantaOutOfRangeError, isUnderInvalidatedUrl, legacyPrepareWithoutInjectionContext, mapToPaginated, mapViolationsToFormErrors, maybeExecute, mergeHeaders, nestedEffect, numberArrayQueryField, pagedQueryStackNextPageCalledWithoutPreviousPage, pagedQueryStackPageBiggerThanTotalPages, pagedQueryStackPreviousPageCalledButAlreadyAtFirstPage, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleDe, parseHttpErrorCodeToTitleEn, pathParamsMissingInRouteFunctionError, provideInfinityQueryResponseDelay, provideLegacyPrepareFallback, provideQueryClientForDevtools, provideQueryDevtools, queryArrayComputed, queryBatchAlreadyRunning, queryBatchWithArgsUsed, queryClientFeatureUsedMultipleTimes, queryComputed, queryComputedTillTruthy, queryCreatedInReactiveContext, queryErrorMessage, queryErrorMessages, queryExecute, queryExecutedAfterDestroyMessage, queryExecutedWhileParkedMessage, queryFeatureUsedMultipleTimes, queryField, querySequence, querySequenceAlreadyRunning, queryStackWithArgsUsed, queryStackWithResponseUpdateUsed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, recordExecutionArgs, registerQueryErrorParser, removeFrom, request, resetExecuteState, resetPageOnError, resolveInvalidationUrl, resolveQueryHeaders, searchQueryField, serializeBody, setQueryDevtoolsTokenTtl, setQueryDevtoolsUiMounted, setupQueryExecuteState, setupQueryState, shouldAutoExecuteGqlQuery, shouldAutoExecuteQuery, shouldCacheQuery, shouldRetryRequest, silenceMissingWithArgsFeatureErrorUsedButWithArgsPresent, skipPaginationPageParamCalculator, skipParkedExecution, sortQueryField, splitQueryConfig, stringArrayQueryField, switchQueryCollectionState, switchQueryState, symfonyQueryErrorParser, tableSortQueryField, takeUntilResponse, toQuerySignal, toQuerySubject, tokensNotAvailableInsideAuthAndExec, transformArrayResponse, transformExecStateToQueryState, transformGql, transformMethod, transformPaginatedResponse, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray, transformToTableSort, transformToTableSortQueryParam, uncacheableRequestHasAllowCacheParam, uncacheableRequestHasCacheKeyParam, unwrapGqlResponseWithErrors, unwrapQuerySyncMessage, v2BuildQueryCacheKey, v2ExtractExpiresInSeconds, v2ShouldCacheQuery, v2ShouldRetryRequest, validateWithQuery, validateWithV2Query, withArgs, withArgsQueryFeatureMissingButRouteIsFunction, withAuthenticationQuery, withAutoRefresh, withAutoRefreshUsedInManualQuery, withAutoRefreshUsedOnUnsupportedHttpMethod, withBearerAuthMultiTabSync, withDefaultRetry, withErrorHandling, withEthleteApiErrors, withHtmlErrorParsing, withInactivityLogout, withLogging, withLongPolling, withLongPollingUsedOnUnsupportedHttpMethod, withLongPollingUsedWithPolling, withMultiTabSync, withOptimisticUpdate, withOptimisticUpdateUsedOnRead, withPageResetOnError, withPersistentAuth, withPolling, withPollingUsedOnUnsupportedHttpMethod, withQueryPersistence, withRefreshQuery, withResponseUpdate, withSuccessHandling, withSymfonyErrors, withTokenExpirationWarning, withTokenRevocation, withTracking, wrapAsObservableSignal, wrapQuerySyncMessage, EMPTY_QUERY_DEVTOOLS_FAULT as ɵEMPTY_QUERY_DEVTOOLS_FAULT, MAX_QUERY_BATCH_TOMBSTONES as ɵMAX_QUERY_BATCH_TOMBSTONES, MAX_QUERY_BATCH_TOMBSTONE_BUCKETS as ɵMAX_QUERY_BATCH_TOMBSTONE_BUCKETS, MAX_QUERY_DEVTOOLS_TOMBSTONES as ɵMAX_QUERY_DEVTOOLS_TOMBSTONES, QUERY_DEVTOOLS_FAULT_STATUSES as ɵQUERY_DEVTOOLS_FAULT_STATUSES, QUERY_DEVTOOLS_TOKEN_TTL_LIMIT as ɵQUERY_DEVTOOLS_TOKEN_TTL_LIMIT, addQueryDevtoolsAuthAccount as ɵaddQueryDevtoolsAuthAccount, applyQueryDevtoolsOverrides as ɵapplyQueryDevtoolsOverrides, applyQueryDevtoolsTokenTtl as ɵapplyQueryDevtoolsTokenTtl, armAllQueryDevtoolsMocks as ɵarmAllQueryDevtoolsMocks, armQueryDevtoolsMock as ɵarmQueryDevtoolsMock, armQueryDevtoolsOverrideTransfer as ɵarmQueryDevtoolsOverrideTransfer, canOverrideQueryDevtoolsTokenTtl as ɵcanOverrideQueryDevtoolsTokenTtl, clearQueryDevtoolsArmedMocks as ɵclearQueryDevtoolsArmedMocks, clearQueryDevtoolsAuthCredentials as ɵclearQueryDevtoolsAuthCredentials, clearQueryDevtoolsAuthSessions as ɵclearQueryDevtoolsAuthSessions, clearQueryDevtoolsFaults as ɵclearQueryDevtoolsFaults, clearQueryDevtoolsMockStore as ɵclearQueryDevtoolsMockStore, clearQueryDevtoolsOverrideStore as ɵclearQueryDevtoolsOverrideStore, clearQueryDevtoolsStore as ɵclearQueryDevtoolsStore, clearQueryDevtoolsTombstones as ɵclearQueryDevtoolsTombstones, clearRestoredQueryDevtoolsOverrides as ɵclearRestoredQueryDevtoolsOverrides, collectLeafPaths as ɵcollectLeafPaths, collectQueryDevtoolsSchemaComponents as ɵcollectQueryDevtoolsSchemaComponents, countUnresolvedQueryDevtoolsOverrides as ɵcountUnresolvedQueryDevtoolsOverrides, createQueryDevtoolsOverrides as ɵcreateQueryDevtoolsOverrides, deleteQueryDevtoolsMock as ɵdeleteQueryDevtoolsMock, detectPaginationShape as ɵdetectPaginationShape, forgetQueryDevtoolsAuthSession as ɵforgetQueryDevtoolsAuthSession, forgetQueryDevtoolsAuthSessionsFor as ɵforgetQueryDevtoolsAuthSessionsFor, generateQueryDevtoolsNumberPreset as ɵgenerateQueryDevtoolsNumberPreset, generateQueryDevtoolsSampleNumber as ɵgenerateQueryDevtoolsSampleNumber, generateQueryDevtoolsStringPreset as ɵgenerateQueryDevtoolsStringPreset, hasQueryDevtoolsOverridesAtPath as ɵhasQueryDevtoolsOverridesAtPath, isDateShapedLeaf as ɵisDateShapedLeaf, isQueryDevtoolsEnabled as ɵisQueryDevtoolsEnabled, isQueryDevtoolsFaultArmed as ɵisQueryDevtoolsFaultArmed, isQueryDevtoolsRepositoryLive as ɵisQueryDevtoolsRepositoryLive, loadQueryDevtoolsSchema as ɵloadQueryDevtoolsSchema, loginQueryDevtoolsAuthAccount as ɵloginQueryDevtoolsAuthAccount, logoutQueryDevtoolsAuthSession as ɵlogoutQueryDevtoolsAuthSession, matchesQueryDevtoolsMockPattern as ɵmatchesQueryDevtoolsMockPattern, matchesQueryDevtoolsMockQuery as ɵmatchesQueryDevtoolsMockQuery, measureQueryDevtoolsPayload as ɵmeasureQueryDevtoolsPayload, parseQueryDevtoolsOverrideTransfer as ɵparseQueryDevtoolsOverrideTransfer, queryDevtoolsAbout as ɵqueryDevtoolsAbout, queryDevtoolsAllowsLocalAuthSessions as ɵqueryDevtoolsAllowsLocalAuthSessions, queryDevtoolsApiEnvIds as ɵqueryDevtoolsApiEnvIds, queryDevtoolsApiEnvIsProduction as ɵqueryDevtoolsApiEnvIsProduction, queryDevtoolsApiEnvScope as ɵqueryDevtoolsApiEnvScope, queryDevtoolsApiEnvValues as ɵqueryDevtoolsApiEnvValues, queryDevtoolsApiEnvs as ɵqueryDevtoolsApiEnvs, queryDevtoolsArmedMocks as ɵqueryDevtoolsArmedMocks, queryDevtoolsArmedMocksRestored as ɵqueryDevtoolsArmedMocksRestored, queryDevtoolsAuthAccountsFor as ɵqueryDevtoolsAuthAccountsFor, queryDevtoolsAuthActive as ɵqueryDevtoolsAuthActive, queryDevtoolsAuthFieldsFor as ɵqueryDevtoolsAuthFieldsFor, queryDevtoolsAuthOtherScopeCount as ɵqueryDevtoolsAuthOtherScopeCount, queryDevtoolsAuthSessions as ɵqueryDevtoolsAuthSessions, queryDevtoolsAuthSessionsFor as ɵqueryDevtoolsAuthSessionsFor, queryDevtoolsAuthTabLocal as ɵqueryDevtoolsAuthTabLocal, queryDevtoolsEntries as ɵqueryDevtoolsEntries, queryDevtoolsFaults as ɵqueryDevtoolsFaults, queryDevtoolsFaultsRestored as ɵqueryDevtoolsFaultsRestored, queryDevtoolsMockId as ɵqueryDevtoolsMockId, queryDevtoolsMocks as ɵqueryDevtoolsMocks, queryDevtoolsOverridePersistence as ɵqueryDevtoolsOverridePersistence, queryDevtoolsRequestPath as ɵqueryDevtoolsRequestPath, queryDevtoolsResponseHistory as ɵqueryDevtoolsResponseHistory, queryDevtoolsRestoredOverridesScope as ɵqueryDevtoolsRestoredOverridesScope, queryDevtoolsSchemaNames as ɵqueryDevtoolsSchemaNames, queryDevtoolsSchemaRoutes as ɵqueryDevtoolsSchemaRoutes, queryDevtoolsSchemaState as ɵqueryDevtoolsSchemaState, queryDevtoolsSettings as ɵqueryDevtoolsSettings, queryDevtoolsStorage as ɵqueryDevtoolsStorage, queryDevtoolsTokenTtls as ɵqueryDevtoolsTokenTtls, readQueryDevtoolsStore as ɵreadQueryDevtoolsStore, registerEthleteVersion as ɵregisterEthleteVersion, removeQueryDevtoolsAuthAccount as ɵremoveQueryDevtoolsAuthAccount, renameQueryDevtoolsAuthSession as ɵrenameQueryDevtoolsAuthSession, restoredQueryDevtoolsOverrides as ɵrestoredQueryDevtoolsOverrides, saveQueryDevtoolsMock as ɵsaveQueryDevtoolsMock, seedQueryDevtoolsSchemaBody as ɵseedQueryDevtoolsSchemaBody, seedQueryDevtoolsSchemaRoute as ɵseedQueryDevtoolsSchemaRoute, serializeQueryDevtoolsOverrideTransfer as ɵserializeQueryDevtoolsOverrideTransfer, setQueryDevtoolsApiEnv as ɵsetQueryDevtoolsApiEnv, setQueryDevtoolsAppInfo as ɵsetQueryDevtoolsAppInfo, setQueryDevtoolsArmedMocksScope as ɵsetQueryDevtoolsArmedMocksScope, setQueryDevtoolsAuthCredentials as ɵsetQueryDevtoolsAuthCredentials, setQueryDevtoolsAuthTabLocal as ɵsetQueryDevtoolsAuthTabLocal, setQueryDevtoolsFault as ɵsetQueryDevtoolsFault, setQueryDevtoolsFaultsScope as ɵsetQueryDevtoolsFaultsScope, setQueryDevtoolsOverridePersistence as ɵsetQueryDevtoolsOverridePersistence, setQueryDevtoolsOverridesScope as ɵsetQueryDevtoolsOverridesScope, setQueryDevtoolsSettings as ɵsetQueryDevtoolsSettings, smartDuplicateArrayItem as ɵsmartDuplicateArrayItem, snapshotQueryDevtoolsHandle as ɵsnapshotQueryDevtoolsHandle, stringifyQueryRouteParts as ɵstringifyQueryRouteParts, sumQueryDevtoolsStats as ɵsumQueryDevtoolsStats, switchQueryDevtoolsAuthSession as ɵswitchQueryDevtoolsAuthSession, tombstoneOf as ɵtombstoneOf, writeQueryDevtoolsStore as ɵwriteQueryDevtoolsStore };
|
|
10094
|
+
export type { AnyBearerAuthProvider, AnyCreateBearerAuthProviderResult, AnyCreateGqlQueryCreatorOptions, AnyCreateQueryClientResult, AnyGqlQueryConfig, AnyInfinityQuery, AnyInfinityQueryConfig, AnyLegacyQuery, AnyLegacyQueryCreator, AnyNewQuery, AnyPagedQueryStack, AnyQueryBatch, AnyQueryBatchItemResult, AnyQueryBuilder, AnyQueryClient, AnyQueryCollection, AnyQueryCollectionData, AnyQueryCollectionResponse, AnyQueryCreator, AnyQueryCreatorCollection, AnyQueryForm, AnyQueryGroup, AnyQuerySnapshot, AnyQueryStack, AnyRestQueryConfig, AnyRoute, AnyV2Query, AnyV2QueryCreator, AnyWebSocketClient, AppendItemsLocation, ApplyExternalResponseOptions, ApplyPersistedResponseOptions, AuthGuard, AuthGuardConfig, AuthGuardPermission, AuthGuardPermissionOptions, AuthGuardTarget, AuthProvider, AuthProviderBasicConfig, AuthProviderBearerConfig, AuthProviderCustomHeaderConfig, AuthQueryBuilder, AuthQueryConfig, BaseArguments, BaseQueryCreatorFactoryOptions, BaseQueryCreatorOptions, BaseQueryCreatorOptionsSubtle, BearerAuthActivityCoordination, BearerAuthExecutionState, BearerAuthExecutionStateError, BearerAuthExecutionStateLoading, BearerAuthExecutionStateLogout, BearerAuthExecutionStateSuccess, BearerAuthExecutionStateTokenSeed, BearerAuthFeature, BearerAuthMultiTabSyncConfig, BearerAuthMultiTabSyncFeature, BearerAuthProvider, BearerAuthProviderEarlySetup, BearerAuthProviderEarlySetupContext, BearerAuthProviderEarlySetupResult, BearerAuthProviderFeatureContext, BearerAuthProviderOf, BearerAuthProviderQueryContext, BearerAuthProviderRef, BearerAuthProviderTokens, BearerAuthRefreshCoordination, BearerAuthSession, BearerAuthSessionAdoption, BearerAuthSessionEndCause, BearerAuthSessionStatus, BearerRefreshConfig, BodyType, BuildQueryStringConfig, CacheAdapterFn, Cancelled, ClassValidatorError, ConstructQuery, CreateBaseQueryOptions, CreateBearerAuthProviderConfig, CreateGqlQueryCreatorOptions, CreateGqlQueryExecuteOptions, CreateGqlQueryOptions, CreateHttpRequestDependencies, CreateHttpRequestOptions, CreateIndexedDbQueryPersistenceAdapterOptions, CreateLegacyQueryCreatorOptions, CreateLegacyQueryOptions, CreatePagedQueryStackOptions, CreateQueryBatchOptions, CreateQueryClientConfigOptions, CreateQueryCreatorOptions, CreateQueryExecuteOptions, CreateQueryObjectOptions, CreateQueryOptions, CreateQueryPersistenceEngineOptions, CreateQueryRepositoryConfig, CreateQuerySnapshotOptions, CreateQueryStackOptions, CreateQuerySubmissionConfig, CreateQuerySyncEngineOptions, CreateSecureGqlQueryExecuteOptions, CreateSecureGqlQueryOptions, CreateSecureQueryExecuteOptions, CreateSecureQueryOptions, CreateWebSocketClientConfigOptions, CreateWebSocketClientTransport, DateQueryFieldConfig, DateStringQueryFieldConfig, DefaultRetryOptions, DefineQueryFormConfig, DestroyCleanupCallback, EmptyObject, EntityGetParams, EntityIdParams, EntityKey, EntitySetParams, EntityStoreConfig, ExecuteFactory, ExecuteQueryOptions, ExtractQueryArgs, ExtractQueryKey, Failure, FeatureRegistry, GQL, GqlDataWithErrors, GqlEnvelope, GqlError, GqlQueryArgs, GqlQueryConfig, GqlQueryConfigWithoutMethod, GqlQueryMethod, GqlQueryTransport, GqlRawResponseType, GqlTransferOption, GqlTransformer, GqlVariablesType, HttpCancelEvent, HttpErrorEvent, HttpRequest, HttpRequestLoadingProgressState, HttpRequestLoadingState, HttpRequestResponseType, HttpRequestRetryState, HttpRequestSubtle, HttpRequestTransferCacheConfig, InactivityLogoutConfig, InactivityLogoutFeature, InfinityQueryConfig, InfinityQueryConfigType, InfinityQueryOf, InfinityQueryParamLocation, InsertFromConfig, InternalCreateGqlQueryCreatorOptions, InternalCreateQueryCreatorOptions, InternalQueryExecute, InternalSecureCreateGqlQueryCreatorOptions, InternalSecureCreateQueryCreatorOptions, InternalWebSocketRoom, LeaderInstanceCountChangeEventData, LeaderStatusChangeEventData, LegacyArgumentsOfQueryArgs, LegacyQueryPrepareFn, Loading, LogoutEventData, MapViolationsToFormErrorsOptions, Method, ObservableSignal, OptimisticUpdateContext, OptionalQueryFieldOptions, PageParamCalculatorOptions, PagedQueryStack, PagedQueryStackDirection, PagedQueryStackExecuteOptions, PagedQueryStackResetOptions, PartialXhrState, PathParams, PathParamsType, PersistedQueryBody, PersistedQueryEntry, PersistedQueryEntryMeta, PersistentAuthConfig, PersistentAuthFeature, PollConfig, Prepared, Query, QueryArgs, QueryArgsOf, QueryArgsOfLegacyArguments, QueryAutoRefreshConfig, QueryBase, QueryBatch, QueryBatchDevtoolsHandle, QueryBatchItemCancelled, QueryBatchItemError, QueryBatchItemResult, QueryBatchItemSkipped, QueryBatchItemSuccess, QueryBatchResult, QueryBatchStatus, QueryBeforeExecuteFn, QueryClient, QueryClientDevtoolsOptions, QueryClientErrorPipelineFeature, QueryClientFeature, QueryClientFeatureContext, QueryClientFeatureFn, QueryClientMultiTabSyncFeature, QueryClientPersistenceFeature, QueryClientRef, QueryClientSubtle, QueryCollectionKeysOf, QueryCollectionOf, QueryCollectionWithNullableQuery, QueryConfig, QueryConfigBase, QueryConfigWithoutMethod, QueryContainerConfig, QueryCreator, QueryCreatorInput, QueryDataOf, QueryDependencies, QueryDevtoolsApiEnv, QueryDevtoolsApiEnvSwitch, QueryDevtoolsAppInfo, QueryDevtoolsAuthAccount, QueryDevtoolsAuthField, QueryDevtoolsFeatureDescriber, QueryDevtoolsFeatureDetail, QueryDevtoolsOptions, QueryDevtoolsSchemaLoader, QueryDevtoolsSchemaLoaders, QueryDirectiveContext, QueryDirectiveType, QueryEntityConfig, QueryErrorParser, QueryErrorResponse, QueryErrorResponseItem, QueryErrorResponseList, QueryErrorResponseSingle, QueryExecute, QueryExecuteArgs, QueryExecuteEventData, QueryExecuteOptions, QueryExecuteState, QueryExecutionState, QueryExecutionStateFailure, QueryExecutionStateFailureWithCachedResponse, QueryExecutionStateFailureWithNoResponse, QueryExecutionStateLoading, QueryExecutionStateLoadingWithCachedResponse, QueryExecutionStateLoadingWithNoResponse, QueryExecutionStateSuccess, QueryFailureEventData, QueryFeature, QueryFeatureContext, QueryFeatureFlags, QueryFeatureFn, QueryFieldConfig, QueryFieldDef, QueryFieldOptions, QueryFieldValue, QueryFilterConfig, QueryFormBranch, QueryFormBranchWriteOptions, QueryFormChange, QueryFormFields, QueryFormGroup, QueryFormGroupControls, QueryFormModel, QueryFormObserveOptions, QueryFormOf, QueryFormOptions, QueryFormPersistence, QueryFormSignals, QueryFormSignalsObserveOptions, QueryFormSignalsWriteOptions, QueryFormStorage, QueryFormValue, QueryFormValueEvent, QueryFormWriteOptions, QueryGroup, QueryGroupLatest, QueryGroupMembers, QueryGroupSuccess, QueryHeaders, QueryHeadersInput, QueryInvalidatesContext, QueryInvalidatesOption, QueryInvalidationCandidate, QueryInvalidationFilterFn, QueryInvalidationOptions, QueryInvalidationTarget, QueryInvalidationUrl, QueryKey, QueryKeyLockHold, QueryKeyLockHoldOptions, 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, QuerySubmissionRef, QuerySubtle, QuerySuccessEventData, QuerySyncEngine, QuerySyncEnvelope, QuerySyncInvalidateMessage, QuerySyncMessage, QuerySyncMessageListener, QuerySyncMutation, QuerySyncMutationFilterFn, QuerySyncMutationMessage, QuerySyncRefreshCandidate, QuerySyncRefreshOnMutationConfig, QuerySyncResponseMessage, QuerySyncTransport, QueryTagsContext, QueryTagsOption, 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, TableSortEntry, 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, WebSocketClientAuth, WebSocketClientIo, WebSocketClientIoOptions, WebSocketClientResult, WebSocketClientSocket, WebSocketClientSubtle, WebSocketDevtoolsHandle, WebSocketDevtoolsMessage, WebSocketRoom, WithArgsCheck, WithArgsQueryFeature, WithAutoRefreshFeatureOptions, WithBody, WithConfig, WithErrorHandlingFeatureOptions, WithHeaders, WithInjector, WithLegacyConfig, WithLoggingFeatureOptions, WithLongPollingFeatureOptions, WithMock, WithOptimisticUpdateOptions, WithPageResetOnErrorFeatureOptions, WithPathParams, WithPollingFeatureOptions, WithQueryParams, WithResponseUpdateFeatureFnData, WithResponseUpdateFeatureOptions, WithSuccessHandlingFeatureOptions, WithVariables, DescribableFeature as ɵDescribableFeature, JsonPath as ɵJsonPath, OverrideOp as ɵOverrideOp, QueryDevtoolsAbout as ɵQueryDevtoolsAbout, QueryDevtoolsAuthAccountView as ɵQueryDevtoolsAuthAccountView, QueryDevtoolsAuthLocalAccount as ɵQueryDevtoolsAuthLocalAccount, QueryDevtoolsAuthProviderHandle as ɵQueryDevtoolsAuthProviderHandle, QueryDevtoolsAuthProviderRegistration as ɵQueryDevtoolsAuthProviderRegistration, QueryDevtoolsAuthQuery as ɵQueryDevtoolsAuthQuery, QueryDevtoolsAuthSeed as ɵQueryDevtoolsAuthSeed, QueryDevtoolsAuthSession as ɵQueryDevtoolsAuthSession, QueryDevtoolsEntry as ɵQueryDevtoolsEntry, QueryDevtoolsEntryKind as ɵQueryDevtoolsEntryKind, QueryDevtoolsEntryMeta as ɵQueryDevtoolsEntryMeta, QueryDevtoolsFault as ɵQueryDevtoolsFault, QueryDevtoolsFaultTarget as ɵQueryDevtoolsFaultTarget, QueryDevtoolsFeature as ɵQueryDevtoolsFeature, QueryDevtoolsFormField as ɵQueryDevtoolsFormField, QueryDevtoolsFormHandle as ɵQueryDevtoolsFormHandle, QueryDevtoolsFormLinksHandle as ɵQueryDevtoolsFormLinksHandle, QueryDevtoolsFormLinksRecorder as ɵQueryDevtoolsFormLinksRecorder, QueryDevtoolsMock as ɵQueryDevtoolsMock, QueryDevtoolsMockTarget as ɵQueryDevtoolsMockTarget, QueryDevtoolsOverrideEntry as ɵQueryDevtoolsOverrideEntry, QueryDevtoolsOverrideTransfer as ɵQueryDevtoolsOverrideTransfer, QueryDevtoolsOverrideTransferParse as ɵQueryDevtoolsOverrideTransferParse, QueryDevtoolsOverridesHandle as ɵQueryDevtoolsOverridesHandle, QueryDevtoolsOverridesRecorder as ɵQueryDevtoolsOverridesRecorder, QueryDevtoolsPayload as ɵQueryDevtoolsPayload, QueryDevtoolsRegistrar as ɵQueryDevtoolsRegistrar, QueryDevtoolsRegistration as ɵQueryDevtoolsRegistration, QueryDevtoolsResolvedFault as ɵQueryDevtoolsResolvedFault, QueryDevtoolsResolvedMock as ɵQueryDevtoolsResolvedMock, QueryDevtoolsRoutePart as ɵQueryDevtoolsRoutePart, QueryDevtoolsRun as ɵQueryDevtoolsRun, QueryDevtoolsRunError as ɵQueryDevtoolsRunError, QueryDevtoolsRunStatus as ɵQueryDevtoolsRunStatus, QueryDevtoolsSchemaComponents as ɵQueryDevtoolsSchemaComponents, QueryDevtoolsSchemaRoute as ɵQueryDevtoolsSchemaRoute, QueryDevtoolsSchemaSeed as ɵQueryDevtoolsSchemaSeed, QueryDevtoolsSchemaState as ɵQueryDevtoolsSchemaState, QueryDevtoolsSeedStyle as ɵQueryDevtoolsSeedStyle, QueryDevtoolsSettings as ɵQueryDevtoolsSettings, QueryDevtoolsStats as ɵQueryDevtoolsStats, QueryDevtoolsStatsHandle as ɵQueryDevtoolsStatsHandle, QueryDevtoolsStatsRecorder as ɵQueryDevtoolsStatsRecorder, QueryDevtoolsStorageScope as ɵQueryDevtoolsStorageScope, RestoredQueryDevtoolsOverrides as ɵRestoredQueryDevtoolsOverrides };
|