@ethlete/query 6.0.0-next.29 → 6.0.0-next.30
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 +17 -0
- package/fesm2022/ethlete-query.mjs +143 -28
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ethlete-query.d.ts +81 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @ethlete/query
|
|
2
2
|
|
|
3
|
+
## 6.0.0-next.30
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`70a0602`](https://github.com/ethlete-io/ethdk/commit/70a06025c2f919bd1582b2d0adbf80b21a25696a) Thanks [@TomTomB](https://github.com/TomTomB)! - `withBearerAuthMultiTabSync` exposes `leadership` (`election` / `off` / `unsupported`), so a tab reading `isLeader: true` can tell a won election from one that never ran.
|
|
8
|
+
|
|
9
|
+
- [#3050](https://github.com/ethlete-io/ethdk/pull/3050) [`cab3d1a`](https://github.com/ethlete-io/ethdk/commit/cab3d1ae2f3ef37df63663b62edb842e8e4a8f9b) Thanks [@github-actions](https://github.com/apps/github-actions)! - Auth: add `createAuthGuard(providerRef, config)` - route guards that wait out a session restore, redirect to your login URL with the attempted URL attached, and navigate back afterwards.
|
|
10
|
+
|
|
11
|
+
- [`33e705b`](https://github.com/ethlete-io/ethdk/commit/33e705bfb989ec80e245b4bd9e2091c57cd337b8) Thanks [@TomTomB](https://github.com/TomTomB)! - Query devtools: **Forget** shows only while the **Gone** chip is lit, drops exactly the tombstones the list is showing, and is styled as the destructive action it is instead of as a filter clear. `clearQueryDevtoolsTombstones()` takes optional ids.
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#3050](https://github.com/ethlete-io/ethdk/pull/3050) [`e7ffcfc`](https://github.com/ethlete-io/ethdk/commit/e7ffcfc5049e81f27732bda7d71ba4e467778fed) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query persistence: a logout purge or `clearPersistedQueries()` can no longer be undone by a write that was already on its way to disk, and `maxEntries` is applied at startup as well.
|
|
16
|
+
|
|
17
|
+
- [`4b8499d`](https://github.com/ethlete-io/ethdk/commit/4b8499dbd099b81a593ced27bd6df63b4047e173) Thanks [@TomTomB](https://github.com/TomTomB)! - `validateWithQuery` no longer throws `ET100` when the creator's route is a function - its args reach
|
|
18
|
+
the query at execute time, which the created query now declares.
|
|
19
|
+
|
|
3
20
|
## 6.0.0-next.29
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
|
@@ -1,15 +1,102 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { DestroyRef, InjectionToken,
|
|
2
|
+
import { inject, computed, DestroyRef, InjectionToken, Injector, EnvironmentInjector, ElementRef, ErrorHandler, createEnvironmentInjector, effect, untracked, signal, linkedSignal, runInInjectionContext, isDevMode, PLATFORM_ID, resource, DOCUMENT, makeEnvironmentProviders, assertInInjectionContext, provideEnvironmentInitializer, ChangeDetectorRef, ViewContainerRef, TemplateRef, Input, Directive, input, Pipe, ViewEncapsulation, Component, NgZone } from '@angular/core';
|
|
3
|
+
import { toObservable, takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { UrlTree, Router, RedirectCommand, ActivatedRoute } from '@angular/router';
|
|
5
|
+
import { filter, take, map, defer, from, Subject, Subscription, throwError, timer, switchMap, tap, retry, catchError, of, merge, firstValueFrom, fromEvent, throttleTime, interval, combineLatest, Observable, takeUntil, startWith, pairwise, BehaviorSubject, ReplaySubject, shareReplay, skip, takeWhile, EMPTY, withLatestFrom, debounceTime } from 'rxjs';
|
|
3
6
|
import { defineStaticProvider, RuntimeError, clamp, randomId, defineRootProvider, isObject, injectUnsavedChangesCoordinator, injectRoute, getCookie, getDomain, deleteCookie, setCookie, createDestroy, computedTillTruthy, defineProvider, toProvideFn, toInjectFn, nextFrame, injectQueryParams, injectQueryParamChanges, clone, equal, ET_PROPERTY_REMOVED, previousSignalValue } from '@ethlete/core';
|
|
4
|
-
import { filter, Subject, Subscription, defer, throwError, timer, switchMap, tap, retry, catchError, take, of, merge, firstValueFrom, fromEvent, throttleTime, interval, combineLatest, map, Observable, takeUntil, startWith, pairwise, BehaviorSubject, ReplaySubject, shareReplay, skip, takeWhile, EMPTY, withLatestFrom, debounceTime } from 'rxjs';
|
|
5
7
|
import { HttpClient, HttpEventType, HttpErrorResponse, HttpHeaders, HttpStatusCode } from '@angular/common/http';
|
|
6
|
-
import { toObservable, takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
7
8
|
import { getActiveConsumer, setActiveConsumer } from '@angular/core/primitives/signals';
|
|
8
9
|
import { isPlatformBrowser, NgClass, AsyncPipe, JsonPipe } from '@angular/common';
|
|
9
10
|
import { validateAsync, form } from '@angular/forms/signals';
|
|
10
11
|
import * as i1 from '@angular/forms';
|
|
11
12
|
import { FormControl, ReactiveFormsModule, FormGroup } from '@angular/forms';
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
const DEFAULT_RETURN_URL_PARAM = 'returnUrl';
|
|
15
|
+
const DEFAULT_URL = '/';
|
|
16
|
+
const resolveTarget = (router, target) => {
|
|
17
|
+
if (target instanceof UrlTree)
|
|
18
|
+
return target;
|
|
19
|
+
if (typeof target === 'function')
|
|
20
|
+
return target(router);
|
|
21
|
+
if (typeof target === 'string')
|
|
22
|
+
return router.parseUrl(target);
|
|
23
|
+
return router.createUrlTree([...target]);
|
|
24
|
+
};
|
|
25
|
+
const withQueryParam = (tree, param, value) => new UrlTree(tree.root, { ...tree.queryParams, [param]: value }, tree.fragment);
|
|
26
|
+
// A return URL arrives in the query string, so it is only followed when it points back into this
|
|
27
|
+
// app: a leading `//` is a protocol-relative URL to another origin, and anything not starting with
|
|
28
|
+
// `/` would resolve against wherever the login page happens to sit.
|
|
29
|
+
const readReturnUrl = (router, url, param) => {
|
|
30
|
+
if (!param)
|
|
31
|
+
return null;
|
|
32
|
+
const value = router.parseUrl(url).queryParams[param];
|
|
33
|
+
return typeof value === 'string' && value.startsWith('/') && !value.startsWith('//') ? value : null;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The route guards for a {@link createBearerAuthProvider} session, and the redirect back once the
|
|
37
|
+
* visitor signs in. Both halves share the return-URL param, so the two cannot drift apart.
|
|
38
|
+
*
|
|
39
|
+
* ```ts
|
|
40
|
+
* export const authGuard = createAuthGuard(authProviderRef, { loginUrl: '/login' });
|
|
41
|
+
*
|
|
42
|
+
* export const ROUTES: Routes = [
|
|
43
|
+
* { path: 'login', canMatch: [authGuard.canMatchAnonymous], loadComponent: … },
|
|
44
|
+
* { path: 'app', canMatch: [authGuard.canMatch], loadChildren: … },
|
|
45
|
+
* ];
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* A guard pends while a session restore is in flight rather than redirecting against a session that
|
|
49
|
+
* is about to exist, so a hard reload of a protected URL stays on that URL.
|
|
50
|
+
*/
|
|
51
|
+
const createAuthGuard = (providerRef, config) => {
|
|
52
|
+
const param = config.returnUrlParam === false ? null : (config.returnUrlParam ?? DEFAULT_RETURN_URL_PARAM);
|
|
53
|
+
const behavior = config.navigationBehaviorOptions ?? { replaceUrl: true };
|
|
54
|
+
const guardFor = (requiresSession) => () => {
|
|
55
|
+
const router = inject(Router);
|
|
56
|
+
const provider = providerRef.inject();
|
|
57
|
+
// Captured before the wait below: once the session settles the router has moved on, and the URL
|
|
58
|
+
// the visitor actually asked for is no longer reachable from it.
|
|
59
|
+
const attemptedUrl = router.currentNavigation()?.extractedUrl.toString() ?? router.url;
|
|
60
|
+
const settled = computed(() => {
|
|
61
|
+
const status = provider.sessionStatus();
|
|
62
|
+
return status !== 'unknown' && status !== 'restoring';
|
|
63
|
+
}, /* @ts-ignore */
|
|
64
|
+
...(ngDevMode ? [{ debugName: "settled" }] : /* istanbul ignore next */ []));
|
|
65
|
+
const decide = () => {
|
|
66
|
+
const authenticated = provider.sessionStatus() === 'authenticated';
|
|
67
|
+
if (authenticated === requiresSession)
|
|
68
|
+
return true;
|
|
69
|
+
if (requiresSession) {
|
|
70
|
+
const loginTree = resolveTarget(router, config.loginUrl);
|
|
71
|
+
return new RedirectCommand(param ? withQueryParam(loginTree, param, attemptedUrl) : loginTree, behavior);
|
|
72
|
+
}
|
|
73
|
+
const returnUrl = readReturnUrl(router, attemptedUrl, param);
|
|
74
|
+
return new RedirectCommand(returnUrl ? router.parseUrl(returnUrl) : resolveTarget(router, config.defaultUrl ?? DEFAULT_URL), behavior);
|
|
75
|
+
};
|
|
76
|
+
if (settled())
|
|
77
|
+
return decide();
|
|
78
|
+
return toObservable(settled).pipe(filter(Boolean), take(1), map(decide));
|
|
79
|
+
};
|
|
80
|
+
const requireSession = guardFor(true);
|
|
81
|
+
const requireAnonymous = guardFor(false);
|
|
82
|
+
return {
|
|
83
|
+
canMatch: requireSession,
|
|
84
|
+
canActivate: requireSession,
|
|
85
|
+
canMatchAnonymous: requireAnonymous,
|
|
86
|
+
canActivateAnonymous: requireAnonymous,
|
|
87
|
+
returnUrl: () => {
|
|
88
|
+
const router = inject(Router);
|
|
89
|
+
return readReturnUrl(router, router.url, param);
|
|
90
|
+
},
|
|
91
|
+
navigateAfterLogin: () => {
|
|
92
|
+
const router = inject(Router);
|
|
93
|
+
return defer(() => {
|
|
94
|
+
const returnUrl = readReturnUrl(router, router.url, param);
|
|
95
|
+
return from(router.navigateByUrl(returnUrl ?? resolveTarget(router, config.defaultUrl ?? DEFAULT_URL)));
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
};
|
|
13
100
|
|
|
14
101
|
/**
|
|
15
102
|
* Turns the features applied at creation into their devtools representation.
|
|
@@ -2316,6 +2403,17 @@ const createQueryPersistenceEngine = (options) => {
|
|
|
2316
2403
|
let isSecurePurgeDeferred = false;
|
|
2317
2404
|
let markReady;
|
|
2318
2405
|
const whenReady = new Promise((resolve) => (markReady = resolve));
|
|
2406
|
+
/**
|
|
2407
|
+
* Every task that touches the store runs through here, one at a time. A flush is already async by
|
|
2408
|
+
* the time the batch leaves for disk, so a logout purge or a clear starting in that window would
|
|
2409
|
+
* otherwise have the write land behind it and put the data back.
|
|
2410
|
+
*/
|
|
2411
|
+
let storeChain = Promise.resolve();
|
|
2412
|
+
const enqueue = (task) => {
|
|
2413
|
+
const run = storeChain.catch(() => undefined).then(task);
|
|
2414
|
+
storeChain = run.catch(() => undefined);
|
|
2415
|
+
return run;
|
|
2416
|
+
};
|
|
2319
2417
|
const isExpired = (meta, now = Date.now()) => meta.persistedAt + maxAge <= now;
|
|
2320
2418
|
const metaOf = ({ body: _body, ...meta }) => meta;
|
|
2321
2419
|
const removeKeys = async (keys) => {
|
|
@@ -2336,17 +2434,20 @@ const createQueryPersistenceEngine = (options) => {
|
|
|
2336
2434
|
const excess = byAge.slice(0, index.size - maxEntries).map((meta) => meta.key);
|
|
2337
2435
|
await removeKeys(excess);
|
|
2338
2436
|
};
|
|
2339
|
-
const purgeSecure =
|
|
2340
|
-
//
|
|
2341
|
-
//
|
|
2437
|
+
const purgeSecure = () => {
|
|
2438
|
+
// Dropping the queued bodies is not deferred like the disk half below: a flush scheduled before
|
|
2439
|
+
// the logout would otherwise still be holding them when it runs, and put the data back on disk
|
|
2440
|
+
// moments after it left memory.
|
|
2342
2441
|
for (const [key, entry] of pendingWrites) {
|
|
2343
2442
|
if (entry.isSecure)
|
|
2344
2443
|
pendingWrites.delete(key);
|
|
2345
2444
|
}
|
|
2346
|
-
|
|
2347
|
-
.
|
|
2348
|
-
|
|
2349
|
-
|
|
2445
|
+
return enqueue(async () => {
|
|
2446
|
+
const secureKeys = Array.from(index.values())
|
|
2447
|
+
.filter((meta) => meta.isSecure)
|
|
2448
|
+
.map((meta) => meta.key);
|
|
2449
|
+
await removeKeys(secureKeys);
|
|
2450
|
+
});
|
|
2350
2451
|
};
|
|
2351
2452
|
const start = async () => {
|
|
2352
2453
|
if (!adapter.isSupported) {
|
|
@@ -2372,11 +2473,15 @@ const createQueryPersistenceEngine = (options) => {
|
|
|
2372
2473
|
// shapes changed. Emptying the store outright also collects anything the index does not know
|
|
2373
2474
|
// about, which a key-by-key removal cannot.
|
|
2374
2475
|
if (droppedKeys.length && !index.size) {
|
|
2375
|
-
await adapter.clear();
|
|
2476
|
+
await enqueue(() => adapter.clear());
|
|
2376
2477
|
}
|
|
2377
2478
|
else if (droppedKeys.length) {
|
|
2378
|
-
await removeKeys(droppedKeys);
|
|
2479
|
+
await enqueue(() => removeKeys(droppedKeys));
|
|
2379
2480
|
}
|
|
2481
|
+
// The cap is otherwise only applied by a write, so a store left over the limit - by a deploy
|
|
2482
|
+
// that lowered `maxEntries`, or by several tabs writing against their own index - would stay
|
|
2483
|
+
// that way until this session happens to write something.
|
|
2484
|
+
await enqueue(enforceMaxEntries);
|
|
2380
2485
|
}
|
|
2381
2486
|
catch {
|
|
2382
2487
|
// Pruning is opportunistic: `maxAge` is re-checked before every hydration, so a failure here
|
|
@@ -2452,10 +2557,7 @@ const createQueryPersistenceEngine = (options) => {
|
|
|
2452
2557
|
}
|
|
2453
2558
|
await enforceMaxEntries().catch(() => undefined);
|
|
2454
2559
|
};
|
|
2455
|
-
|
|
2456
|
-
// two batches updating the index and the entry cap concurrently would race.
|
|
2457
|
-
let flushChain = Promise.resolve();
|
|
2458
|
-
const flush = () => (flushChain = flushChain.catch(() => undefined).then(runFlush));
|
|
2560
|
+
const flush = () => enqueue(runFlush);
|
|
2459
2561
|
const scheduleFlush = () => {
|
|
2460
2562
|
if (writeTimer !== undefined || areWritesDisabled || isDestroyed)
|
|
2461
2563
|
return;
|
|
@@ -2513,12 +2615,14 @@ const createQueryPersistenceEngine = (options) => {
|
|
|
2513
2615
|
queueWrite(event);
|
|
2514
2616
|
};
|
|
2515
2617
|
const eventSubscription = repository.events$.subscribe(handleEvent);
|
|
2516
|
-
const clear =
|
|
2618
|
+
const clear = () => {
|
|
2517
2619
|
clearTimeout(writeTimer);
|
|
2518
2620
|
writeTimer = undefined;
|
|
2519
2621
|
pendingWrites.clear();
|
|
2520
|
-
|
|
2521
|
-
|
|
2622
|
+
return enqueue(async () => {
|
|
2623
|
+
index.clear();
|
|
2624
|
+
await adapter.clear();
|
|
2625
|
+
});
|
|
2522
2626
|
};
|
|
2523
2627
|
const destroy = () => {
|
|
2524
2628
|
isDestroyed = true;
|
|
@@ -4262,8 +4366,10 @@ const validateWithQuery = (path, config) => {
|
|
|
4262
4366
|
mapViolations: config.mapViolations,
|
|
4263
4367
|
factory: (params) => {
|
|
4264
4368
|
// Created once, exactly like a query stack. A POST validate route doesn't auto-execute, so
|
|
4265
|
-
// the resource loader drives it - each params change re-executes with the new args.
|
|
4266
|
-
|
|
4369
|
+
// the resource loader drives it - each params change re-executes with the new args. Those args
|
|
4370
|
+
// reach the query through `execute()`, never `withArgs()`, so a function route has to be told
|
|
4371
|
+
// the missing feature is intentional or creating the query throws ET100.
|
|
4372
|
+
const query = config.queryCreator({ silenceMissingWithArgsFeatureError: true });
|
|
4267
4373
|
return resource({
|
|
4268
4374
|
params: () => params(),
|
|
4269
4375
|
loader: async ({ params: requestArgs }) => {
|
|
@@ -4924,6 +5030,7 @@ const setupLeaderElection = (options) => {
|
|
|
4924
5030
|
return {
|
|
4925
5031
|
isLeader: hold.isHolder,
|
|
4926
5032
|
instanceCount: instanceCount.asReadonly(),
|
|
5033
|
+
isSupported: false,
|
|
4927
5034
|
requestRefresh: noop,
|
|
4928
5035
|
refreshRequests$: refreshRequests.asObservable(),
|
|
4929
5036
|
cleanup: noop,
|
|
@@ -4978,6 +5085,7 @@ const setupLeaderElection = (options) => {
|
|
|
4978
5085
|
return {
|
|
4979
5086
|
isLeader: hold.isHolder,
|
|
4980
5087
|
instanceCount: instanceCount.asReadonly(),
|
|
5088
|
+
isSupported: true,
|
|
4981
5089
|
requestRefresh,
|
|
4982
5090
|
refreshRequests$: refreshRequests.asObservable(),
|
|
4983
5091
|
cleanup,
|
|
@@ -5156,7 +5264,7 @@ const setupMultiTabSync = (config, context) => {
|
|
|
5156
5264
|
const SINGLE_TAB = /* @__PURE__ */ (() => {
|
|
5157
5265
|
const isLeader = signal(true).asReadonly();
|
|
5158
5266
|
const instanceCount = signal(1).asReadonly();
|
|
5159
|
-
return { isLeader, instanceCount };
|
|
5267
|
+
return { isLeader, instanceCount, leadership: 'off' };
|
|
5160
5268
|
})();
|
|
5161
5269
|
/**
|
|
5162
5270
|
* Keeps one browser session consistent across the user's tabs: a login in one tab logs the others in,
|
|
@@ -5209,7 +5317,11 @@ const withBearerAuthMultiTabSync = (config = {}) => {
|
|
|
5209
5317
|
if (config.leaderElection === false)
|
|
5210
5318
|
return {};
|
|
5211
5319
|
const election = setupLeaderElection({ name: context.name });
|
|
5212
|
-
instance = {
|
|
5320
|
+
instance = {
|
|
5321
|
+
isLeader: election.isLeader,
|
|
5322
|
+
instanceCount: election.instanceCount,
|
|
5323
|
+
leadership: election.isSupported ? 'election' : 'unsupported',
|
|
5324
|
+
};
|
|
5213
5325
|
return {
|
|
5214
5326
|
isLeader: () => election.isLeader(),
|
|
5215
5327
|
leaderElection: instance,
|
|
@@ -6597,10 +6709,13 @@ const capTombstones = (list) => {
|
|
|
6597
6709
|
return list.filter((e) => !doomed.has(e));
|
|
6598
6710
|
};
|
|
6599
6711
|
/**
|
|
6600
|
-
* Forgets
|
|
6601
|
-
* entries are untouched.
|
|
6712
|
+
* Forgets destroyed entries the registry is holding - the panel's "clear gone" action. Pass the ids to
|
|
6713
|
+
* drop to forget only those; with no argument every tombstone goes. Live entries are untouched.
|
|
6602
6714
|
*/
|
|
6603
|
-
const clearQueryDevtoolsTombstones = () =>
|
|
6715
|
+
const clearQueryDevtoolsTombstones = (ids) => {
|
|
6716
|
+
const doomed = ids ? new Set(ids) : null;
|
|
6717
|
+
entries.update((list) => list.filter((e) => !e.destroyedAt || (doomed ? !doomed.has(e.id) : false)));
|
|
6718
|
+
};
|
|
6604
6719
|
/**
|
|
6605
6720
|
* Enables the `@ethlete/query` devtools. Add this to your application providers (e.g. in
|
|
6606
6721
|
* `bootstrapApplication`) to make query clients, queries, stacks, sequences and auth providers
|
|
@@ -12163,5 +12278,5 @@ const createWebSocketClient = (options) => {
|
|
|
12163
12278
|
* Generated bundle index. Do not edit.
|
|
12164
12279
|
*/
|
|
12165
12280
|
|
|
12166
|
-
export { BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, CLEAR_QUERY_ARGS, CustomHeaderAuthProvider, DEFAULT_KEEP_UNUSED_FOR, DEFAULT_QUERY_PERSISTENCE_MAX_AGE, DEFAULT_QUERY_PERSISTENCE_MAX_ENTRIES, DEFAULT_QUERY_PERSISTENCE_VERSION, DEFAULT_QUERY_PERSISTENCE_WRITE_DELAY, DateArrayQueryField, DateQueryField, EMPTY_QUERY_DEVTOOLS_FAULT, EntityStore, IGNORED_FILTER_COUNT_FIELDS, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_QUERY_DEVTOOLS_TOMBSTONES, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QUERY_DEVTOOLS_FAULT_STATUSES, QUERY_PERSISTENCE_STORE_VERSION, QUERY_SYNC_PROTOCOL_VERSION, QueryClientFeatureType, QueryDevtoolsComponent, QueryDirective, QueryFeatureType, QueryField, QueryForm, QueryRuntimeErrorCode, QueryShortNamePipe, QueryStore, SERVER_ERROR_KIND, SERVER_VIOLATION_ERROR_KIND, SPEED_BUFFER_TIME_IN_MS, SearchQueryField, SortQueryField, StringArrayQueryField, V2BearerAuthProvider, V2Query, V2QueryClient, V2QueryCreator, addQueryContainerHandling, applyQueryDevtoolsOverrides, applyQueryFeatures, authExtractTokensResponseMissingAccessToken, authExtractTokensResponseMissingRefreshToken, authExtractTokensResponseNotObject, authProviderFeatureUsedMultipleTimes, booleanArrayQueryField, buildQueryCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, circularQueryDependency, circularQueryDependencyChecker, clearQueryDevtoolsFaults, clearQueryDevtoolsTombstones, collectLeafPaths, collectQueryFormLinks, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, consumeSuppressQueryStackDevtools, contentfulGqlLikePaginationAdapter, createBaseQuery, createBaseQueryCreator, createBearerAuthProvider, createDeleteQuery, createExecuteFn, createGetQuery, createGqlExecuteFn, createGqlMutationViaGet, createGqlMutationViaPost, createGqlQuery, createGqlQueryCreator, createGqlQueryViaGet, createGqlQueryViaPost, createHttpRequest, createIndexedDbQueryPersistenceAdapter, createInfinityQueryConfig, createLegacyQueryCreator, createNoopQueryPersistenceAdapter, createPagedQueryStack, createPatchQuery, createPersistentAuthFeature, createPostQuery, createPutQuery, createQuery, createQueryClient, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, createQueryContext, createQueryCreator, createQueryDevtoolsFormLinks, createQueryDevtoolsFormLinksRecorder, createQueryDevtoolsOverrides, createQueryDevtoolsOverridesRecorder, createQueryDevtoolsStats, createQueryDevtoolsStatsRecorder, createQueryErrorResponse, createQueryFeature, createQueryInvalidationFilter, createQueryKeyLockManager, createQueryObject, createQueryPersistenceEngine, createQueryRepository, createQuerySnapshotFn, createQueryStack, createQuerySyncEngine, createQuerySyncTransport, createSecureDeleteQuery, createSecureExecuteFactory, createSecureExecuteFn, createSecureGetQuery, createSecureGqlExecuteFn, createSecureGqlMutationViaGet, createSecureGqlMutationViaPost, createSecureGqlQuery, createSecureGqlQueryCreator, createSecureGqlQueryViaGet, createSecureGqlQueryViaPost, createSecurePatchQuery, createSecurePostQuery, createSecurePutQuery, createSecureQuery, createSecureQueryCreator, createTrackingFeature, createWebSocketClient, dateArrayQueryField, dateQueryField, decryptBearer, deepFreeze, def, defineQueryForm, describeQueryDevtoolsFeatures, detectContentTypeHeader, detectPaginationShape, dynLikePaginationAdapter, effectComputed, emptyQueryArgs, ethletePaginationAdapter, executeUntilSettled, extractExpiresInSeconds, extractFormViolations, extractHtmlErrorMessage, extractQuery, fakePaginationAdapter, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, formatQueryDevtoolsDuration, generateQueryDevtoolsNumberPreset, generateQueryDevtoolsStringPreset, getBearerAuthProviderName, getDefaultHeaders, getQueryClientName, getQueryFeatureUsage, getResponseUrl, ggLikePaginationAdapter, gql, gqlDataPropertyMissingInResponse, hasHeader, hasQueryDevtoolsOverridesAtPath, htmlErrorPayload, htmlQueryErrorParser, ignoreAutoRefresh, injectInfinityQueryResponseDelay, injectQueryContext, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, invalidStateInsideSecureExecuteFactory, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCreateGqlQueryOptions, isCustomHeaderAuthProvider, isDateShapedLeaf, isEmptyString, isGqlQueryConfig, isHtmlErrorPayload, isLegacyQuery, isNaN$1 as isNaN, isPageOutOfRangeError, isQuery, isQueryCollection, isQueryDevtoolsEnabled, isQueryDevtoolsFaultArmed, isQueryDevtoolsFaultInjectionEnabled, isQueryErrorResponse, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyListError, isSymfonyPagerfantaOutOfRangeError, isUnderInvalidatedUrl, legacyPrepareFallbackInjector, legacyPrepareWithoutInjectionContext, mapToPaginated, mapViolationsToFormErrors, maybeExecute, measureQueryDevtoolsPayload, mergeHeaders, nestedEffect, noteQueryFormRead, numberArrayQueryField, pagedQueryStackNextPageCalledWithoutPreviousPage, pagedQueryStackPageBiggerThanTotalPages, pagedQueryStackPreviousPageCalledButAlreadyAtFirstPage, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleDe, parseHttpErrorCodeToTitleEn, parseQueryRoute, pathParamsMissingInRouteFunctionError, provideInfinityQueryResponseDelay, provideLegacyPrepareFallback, provideQueryClientForDevtools, provideQueryDevtools, queryArrayComputed, queryClientFeatureUsedMultipleTimes, queryComputed, queryComputedTillTruthy, queryDevtoolsEntries, queryDevtoolsFaults, queryDevtoolsFnDetail, queryDevtoolsResponseHistory, queryErrorMessage, queryErrorMessages, queryExecute, queryFeatureUsedMultipleTimes, queryField, querySequence, querySequenceAlreadyRunning, queryStackTotalQueriesAndExpectedQueriesMismatch, queryStackWithArgsUsed, queryStackWithResponseUpdateUsed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, registerQueryDevtoolsEntry, registerQueryErrorParser, removeFrom, request, resetExecuteState, resetPageOnError, resolveInvalidationUrl, resolveQueryDevtoolsFault, resolveQueryDevtoolsFaultForAttempt, runDefaultQueryRetry, runQueryErrorParsers, searchQueryField, serializeBody, setDefaultQueryRetryFn, setQueryDevtoolsFault, setQueryDevtoolsFaultResolver, setQueryDevtoolsFormLinksFactory, setQueryDevtoolsOverridesFactory, setQueryDevtoolsRegistrar, setQueryDevtoolsResponseHistory, setQueryDevtoolsStatsFactory, setupQueryDependencies, setupQueryExecuteState, setupQueryState, shouldAutoExecuteGqlQuery, shouldAutoExecuteQuery, shouldCacheQuery, shouldRetryRequest, silenceMissingWithArgsFeatureErrorUsedButWithArgsPresent, skipPaginationPageParamCalculator, smartDuplicateArrayItem, snapshotQueryDevtoolsHandle, sortQueryField, splitQueryConfig, stringArrayQueryField, stringifyQueryRouteParts, sumQueryDevtoolsStats, suppressNextQueryStackDevtools, switchQueryCollectionState, switchQueryState, symfonyQueryErrorParser, takeUntilResponse, toQuerySignal, toQuerySubject, tokensNotAvailableInsideAuthAndExec, tombstoneOf, transformArrayResponse, transformExecStateToQueryState, transformGql, transformMethod, transformPaginatedResponse, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray, uncacheableRequestHasAllowCacheParam, uncacheableRequestHasCacheKeyParam, unwrapQuerySyncMessage, v2BuildQueryCacheKey, v2ExtractExpiresInSeconds, v2ShouldCacheQuery, v2ShouldRetryRequest, validateWithQuery, validateWithV2Query, withArgs, withArgsQueryFeatureMissingButRouteIsFunction, withAuthenticationQuery, withAutoRefresh, withAutoRefreshUsedInManualQuery, withAutoRefreshUsedOnUnsupportedHttpMethod, withBearerAuthMultiTabSync, withDefaultRetry, withErrorHandling, withEthleteApiErrors, withHtmlErrorParsing, withInactivityLogout, withLogging, withMultiTabSync, withPageResetOnError, withPersistentAuth, withPolling, withPollingUsedOnUnsupportedHttpMethod, withQueryPersistence, withRefreshQuery, withResponseUpdate, withSuccessHandling, withSymfonyErrors, withTokenExpirationWarning, withTokenRevocation, withTracking, wrapAsObservableSignal, wrapQuerySyncMessage };
|
|
12281
|
+
export { BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, CLEAR_QUERY_ARGS, CustomHeaderAuthProvider, DEFAULT_KEEP_UNUSED_FOR, DEFAULT_QUERY_PERSISTENCE_MAX_AGE, DEFAULT_QUERY_PERSISTENCE_MAX_ENTRIES, DEFAULT_QUERY_PERSISTENCE_VERSION, DEFAULT_QUERY_PERSISTENCE_WRITE_DELAY, DateArrayQueryField, DateQueryField, EMPTY_QUERY_DEVTOOLS_FAULT, EntityStore, IGNORED_FILTER_COUNT_FIELDS, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_QUERY_DEVTOOLS_TOMBSTONES, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QUERY_DEVTOOLS_FAULT_STATUSES, QUERY_PERSISTENCE_STORE_VERSION, QUERY_SYNC_PROTOCOL_VERSION, QueryClientFeatureType, QueryDevtoolsComponent, QueryDirective, QueryFeatureType, QueryField, QueryForm, QueryRuntimeErrorCode, QueryShortNamePipe, QueryStore, SERVER_ERROR_KIND, SERVER_VIOLATION_ERROR_KIND, SPEED_BUFFER_TIME_IN_MS, SearchQueryField, SortQueryField, StringArrayQueryField, V2BearerAuthProvider, V2Query, V2QueryClient, V2QueryCreator, addQueryContainerHandling, applyQueryDevtoolsOverrides, applyQueryFeatures, authExtractTokensResponseMissingAccessToken, authExtractTokensResponseMissingRefreshToken, authExtractTokensResponseNotObject, authProviderFeatureUsedMultipleTimes, booleanArrayQueryField, buildQueryCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, circularQueryDependency, circularQueryDependencyChecker, clearQueryDevtoolsFaults, clearQueryDevtoolsTombstones, collectLeafPaths, collectQueryFormLinks, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, consumeSuppressQueryStackDevtools, contentfulGqlLikePaginationAdapter, createAuthGuard, createBaseQuery, createBaseQueryCreator, createBearerAuthProvider, createDeleteQuery, createExecuteFn, createGetQuery, createGqlExecuteFn, createGqlMutationViaGet, createGqlMutationViaPost, createGqlQuery, createGqlQueryCreator, createGqlQueryViaGet, createGqlQueryViaPost, createHttpRequest, createIndexedDbQueryPersistenceAdapter, createInfinityQueryConfig, createLegacyQueryCreator, createNoopQueryPersistenceAdapter, createPagedQueryStack, createPatchQuery, createPersistentAuthFeature, createPostQuery, createPutQuery, createQuery, createQueryClient, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, createQueryContext, createQueryCreator, createQueryDevtoolsFormLinks, createQueryDevtoolsFormLinksRecorder, createQueryDevtoolsOverrides, createQueryDevtoolsOverridesRecorder, createQueryDevtoolsStats, createQueryDevtoolsStatsRecorder, createQueryErrorResponse, createQueryFeature, createQueryInvalidationFilter, createQueryKeyLockManager, createQueryObject, createQueryPersistenceEngine, createQueryRepository, createQuerySnapshotFn, createQueryStack, createQuerySyncEngine, createQuerySyncTransport, createSecureDeleteQuery, createSecureExecuteFactory, createSecureExecuteFn, createSecureGetQuery, createSecureGqlExecuteFn, createSecureGqlMutationViaGet, createSecureGqlMutationViaPost, createSecureGqlQuery, createSecureGqlQueryCreator, createSecureGqlQueryViaGet, createSecureGqlQueryViaPost, createSecurePatchQuery, createSecurePostQuery, createSecurePutQuery, createSecureQuery, createSecureQueryCreator, createTrackingFeature, createWebSocketClient, dateArrayQueryField, dateQueryField, decryptBearer, deepFreeze, def, defineQueryForm, describeQueryDevtoolsFeatures, detectContentTypeHeader, detectPaginationShape, dynLikePaginationAdapter, effectComputed, emptyQueryArgs, ethletePaginationAdapter, executeUntilSettled, extractExpiresInSeconds, extractFormViolations, extractHtmlErrorMessage, extractQuery, fakePaginationAdapter, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, formatQueryDevtoolsDuration, generateQueryDevtoolsNumberPreset, generateQueryDevtoolsStringPreset, getBearerAuthProviderName, getDefaultHeaders, getQueryClientName, getQueryFeatureUsage, getResponseUrl, ggLikePaginationAdapter, gql, gqlDataPropertyMissingInResponse, hasHeader, hasQueryDevtoolsOverridesAtPath, htmlErrorPayload, htmlQueryErrorParser, ignoreAutoRefresh, injectInfinityQueryResponseDelay, injectQueryContext, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, invalidStateInsideSecureExecuteFactory, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCreateGqlQueryOptions, isCustomHeaderAuthProvider, isDateShapedLeaf, isEmptyString, isGqlQueryConfig, isHtmlErrorPayload, isLegacyQuery, isNaN$1 as isNaN, isPageOutOfRangeError, isQuery, isQueryCollection, isQueryDevtoolsEnabled, isQueryDevtoolsFaultArmed, isQueryDevtoolsFaultInjectionEnabled, isQueryErrorResponse, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyListError, isSymfonyPagerfantaOutOfRangeError, isUnderInvalidatedUrl, legacyPrepareFallbackInjector, legacyPrepareWithoutInjectionContext, mapToPaginated, mapViolationsToFormErrors, maybeExecute, measureQueryDevtoolsPayload, mergeHeaders, nestedEffect, noteQueryFormRead, numberArrayQueryField, pagedQueryStackNextPageCalledWithoutPreviousPage, pagedQueryStackPageBiggerThanTotalPages, pagedQueryStackPreviousPageCalledButAlreadyAtFirstPage, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleDe, parseHttpErrorCodeToTitleEn, parseQueryRoute, pathParamsMissingInRouteFunctionError, provideInfinityQueryResponseDelay, provideLegacyPrepareFallback, provideQueryClientForDevtools, provideQueryDevtools, queryArrayComputed, queryClientFeatureUsedMultipleTimes, queryComputed, queryComputedTillTruthy, queryDevtoolsEntries, queryDevtoolsFaults, queryDevtoolsFnDetail, queryDevtoolsResponseHistory, queryErrorMessage, queryErrorMessages, queryExecute, queryFeatureUsedMultipleTimes, queryField, querySequence, querySequenceAlreadyRunning, queryStackTotalQueriesAndExpectedQueriesMismatch, queryStackWithArgsUsed, queryStackWithResponseUpdateUsed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, registerQueryDevtoolsEntry, registerQueryErrorParser, removeFrom, request, resetExecuteState, resetPageOnError, resolveInvalidationUrl, resolveQueryDevtoolsFault, resolveQueryDevtoolsFaultForAttempt, runDefaultQueryRetry, runQueryErrorParsers, searchQueryField, serializeBody, setDefaultQueryRetryFn, setQueryDevtoolsFault, setQueryDevtoolsFaultResolver, setQueryDevtoolsFormLinksFactory, setQueryDevtoolsOverridesFactory, setQueryDevtoolsRegistrar, setQueryDevtoolsResponseHistory, setQueryDevtoolsStatsFactory, setupQueryDependencies, setupQueryExecuteState, setupQueryState, shouldAutoExecuteGqlQuery, shouldAutoExecuteQuery, shouldCacheQuery, shouldRetryRequest, silenceMissingWithArgsFeatureErrorUsedButWithArgsPresent, skipPaginationPageParamCalculator, smartDuplicateArrayItem, snapshotQueryDevtoolsHandle, sortQueryField, splitQueryConfig, stringArrayQueryField, stringifyQueryRouteParts, sumQueryDevtoolsStats, suppressNextQueryStackDevtools, switchQueryCollectionState, switchQueryState, symfonyQueryErrorParser, takeUntilResponse, toQuerySignal, toQuerySubject, tokensNotAvailableInsideAuthAndExec, tombstoneOf, transformArrayResponse, transformExecStateToQueryState, transformGql, transformMethod, transformPaginatedResponse, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray, uncacheableRequestHasAllowCacheParam, uncacheableRequestHasCacheKeyParam, unwrapQuerySyncMessage, v2BuildQueryCacheKey, v2ExtractExpiresInSeconds, v2ShouldCacheQuery, v2ShouldRetryRequest, validateWithQuery, validateWithV2Query, withArgs, withArgsQueryFeatureMissingButRouteIsFunction, withAuthenticationQuery, withAutoRefresh, withAutoRefreshUsedInManualQuery, withAutoRefreshUsedOnUnsupportedHttpMethod, withBearerAuthMultiTabSync, withDefaultRetry, withErrorHandling, withEthleteApiErrors, withHtmlErrorParsing, withInactivityLogout, withLogging, withMultiTabSync, withPageResetOnError, withPersistentAuth, withPolling, withPollingUsedOnUnsupportedHttpMethod, withQueryPersistence, withRefreshQuery, withResponseUpdate, withSuccessHandling, withSymfonyErrors, withTokenExpirationWarning, withTokenRevocation, withTracking, wrapAsObservableSignal, wrapQuerySyncMessage };
|
|
12167
12282
|
//# sourceMappingURL=ethlete-query.mjs.map
|