@ethlete/query 6.0.0-next.20 → 6.0.0-next.22
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 +29 -0
- package/fesm2022/ethlete-query.mjs +167 -4
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ethlete-query.d.ts +61 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# @ethlete/query
|
|
2
2
|
|
|
3
|
+
## 6.0.0-next.22
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#3040](https://github.com/ethlete-io/ethdk/pull/3040) [`dcd8585`](https://github.com/ethlete-io/ethdk/commit/dcd8585423c4d0a66d968016a6e88b03c87b168a) Thanks [@github-actions](https://github.com/apps/github-actions)! - Error normalization: reduce an HTML error page (a proxy's `502`, a maintenance page) to its heading and message text instead of using the raw markup as the message. Exposes `isHtmlErrorPayload`, `htmlErrorPayload` and `extractHtmlErrorMessage`.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#3040](https://github.com/ethlete-io/ethdk/pull/3040) [`bc8aca7`](https://github.com/ethlete-io/ethdk/commit/bc8aca76900a47a3faed4ad2be2ce2ab7b70b27d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Filter overlay: new `provideFilterOverlay` / `injectFilterOverlay` — a filter panel that drafts the page's query
|
|
12
|
+
form, reports how many results the draft would return on its submit button, and applies on submit or discards on
|
|
13
|
+
dismiss. Replaces cdk's `FilterOverlayService`, rebuilt on signal forms and the current query client.
|
|
14
|
+
|
|
15
|
+
## 6.0.0-next.21
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#3038](https://github.com/ethlete-io/ethdk/pull/3038) [`0be9397`](https://github.com/ethlete-io/ethdk/commit/0be939765c6074a518c5c05a7110513f1e3e8ef0) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix `ET301` on every legacy interop mutation. `LegacyQuery.execute()` translates v2's single `skipCache` into
|
|
20
|
+
`allowCache: options.skipCache !== true` for **every** method, so any `legacyPost*` / `legacyPut*` /
|
|
21
|
+
`legacyPatch*` / `legacyDelete*` executed without an explicit `skipCache: true` reached the repository with
|
|
22
|
+
`allowCache: true` and threw "This request is uncacheable, but allowCache is set to true".
|
|
23
|
+
|
|
24
|
+
`allowCache` is never read on the uncacheable path — there is no cache entry to reuse — so the throw was purely a
|
|
25
|
+
guard against a mistake in hand-written code. It stays for that, and gains a
|
|
26
|
+
`silenceUncacheableAllowCacheError` opt-out on `QueryConfig`, which `createLegacyQueryCreator` sets alongside the
|
|
27
|
+
`silenceMissingWithArgsFeatureError` it already passed. The cache-key guard is unaffected.
|
|
28
|
+
|
|
29
|
+
Note that dropping `allowCache: true` in the interop instead would have silently made every legacy `GET` refetch,
|
|
30
|
+
since an absent `allowCache` means "do not reuse the entry" rather than "use the default".
|
|
31
|
+
|
|
3
32
|
## 6.0.0-next.20
|
|
4
33
|
|
|
5
34
|
### Minor Changes
|
|
@@ -1014,6 +1014,7 @@ const queryExecute = (options) => {
|
|
|
1014
1014
|
previousKey: executeState.previousKey(),
|
|
1015
1015
|
runQueryOptions,
|
|
1016
1016
|
isSecure,
|
|
1017
|
+
silenceUncacheableAllowCacheError: queryConfig.silenceUncacheableAllowCacheError,
|
|
1017
1018
|
});
|
|
1018
1019
|
executeState.previousKey.set(key);
|
|
1019
1020
|
state.lastTimeExecutedAt.set(Date.now());
|
|
@@ -1678,6 +1679,149 @@ const buildQueryCacheKey = (route, args) => {
|
|
|
1678
1679
|
return hash.toString();
|
|
1679
1680
|
};
|
|
1680
1681
|
|
|
1682
|
+
/**
|
|
1683
|
+
* An error body can be an HTML page instead of JSON: a proxy's 502, a load balancer's maintenance page, a
|
|
1684
|
+
* platform's "service temporarily unavailable". The markup is never worth showing, but the sentence inside it
|
|
1685
|
+
* usually is — this file pulls that sentence out.
|
|
1686
|
+
*
|
|
1687
|
+
* Parsing is done with string matching rather than `DOMParser` on purpose: it must work during SSR, and the
|
|
1688
|
+
* markup must never reach a DOM. What comes back is plain text, so a template can bind it as text like any
|
|
1689
|
+
* other error message.
|
|
1690
|
+
*/
|
|
1691
|
+
/** A full document, however sloppily written. */
|
|
1692
|
+
const HTML_DOCUMENT_PATTERN = /<!doctype\s+html|<html[\s>]|<head[\s>]|<body[\s>]/i;
|
|
1693
|
+
/** A fragment — matched only as a balanced pair, so a message that merely mentions `<p>` is not markup. */
|
|
1694
|
+
const HTML_ELEMENT_PATTERN = /<(h[1-6]|p|div|title|pre)\b[^>]*>[\s\S]*<\/\1>/i;
|
|
1695
|
+
/** Carries no readable text, and `<style>` in particular would otherwise flood the fallback. */
|
|
1696
|
+
const HTML_NOISE_PATTERN = /<(script|style|noscript|svg|iframe|template)\b[^>]*>[\s\S]*?<\/\1>/gi;
|
|
1697
|
+
const HTML_COMMENT_PATTERN = /<!--[\s\S]*?-->/g;
|
|
1698
|
+
const HTML_TAG_PATTERN = /<[^>]*>/g;
|
|
1699
|
+
const HTML_ENTITY_PATTERN = /&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);/gi;
|
|
1700
|
+
const HTML_BODY_PATTERN = /<body\b[^>]*>([\s\S]*?)<\/body>/i;
|
|
1701
|
+
const HTML_HEADING_PATTERN = /<h([1-6])\b[^>]*>([\s\S]*?)<\/h\1>/i;
|
|
1702
|
+
const HTML_TITLE_PATTERN = /<title\b[^>]*>([\s\S]*?)<\/title>/i;
|
|
1703
|
+
const HTML_PARAGRAPH_PATTERN = /<p\b[^>]*>([\s\S]*?)<\/p>/gi;
|
|
1704
|
+
/**
|
|
1705
|
+
* The entities an error page actually uses. A complete table would be kilobytes for no gain — anything missing
|
|
1706
|
+
* is left as written, which is still readable.
|
|
1707
|
+
*/
|
|
1708
|
+
const HTML_ENTITIES = {
|
|
1709
|
+
amp: '&',
|
|
1710
|
+
lt: '<',
|
|
1711
|
+
gt: '>',
|
|
1712
|
+
quot: '"',
|
|
1713
|
+
apos: "'",
|
|
1714
|
+
nbsp: ' ',
|
|
1715
|
+
ensp: ' ',
|
|
1716
|
+
emsp: ' ',
|
|
1717
|
+
thinsp: ' ',
|
|
1718
|
+
shy: '',
|
|
1719
|
+
ndash: '–',
|
|
1720
|
+
mdash: '—',
|
|
1721
|
+
hellip: '…',
|
|
1722
|
+
lsquo: '‘',
|
|
1723
|
+
rsquo: '’',
|
|
1724
|
+
ldquo: '“',
|
|
1725
|
+
rdquo: '”',
|
|
1726
|
+
laquo: '«',
|
|
1727
|
+
raquo: '»',
|
|
1728
|
+
bull: '•',
|
|
1729
|
+
middot: '·',
|
|
1730
|
+
deg: '°',
|
|
1731
|
+
copy: '©',
|
|
1732
|
+
reg: '®',
|
|
1733
|
+
trade: '™',
|
|
1734
|
+
euro: '€',
|
|
1735
|
+
pound: '£',
|
|
1736
|
+
auml: 'ä',
|
|
1737
|
+
ouml: 'ö',
|
|
1738
|
+
uuml: 'ü',
|
|
1739
|
+
Auml: 'Ä',
|
|
1740
|
+
Ouml: 'Ö',
|
|
1741
|
+
Uuml: 'Ü',
|
|
1742
|
+
szlig: 'ß',
|
|
1743
|
+
};
|
|
1744
|
+
/** Long enough for a real explanation, short enough that a dumped stack trace can't become the message. */
|
|
1745
|
+
const MAX_MESSAGE_LENGTH = 300;
|
|
1746
|
+
const MAX_CODE_POINT = 0x10ffff;
|
|
1747
|
+
const decodeHtmlEntities = (value) => value.replace(HTML_ENTITY_PATTERN, (match, entity) => {
|
|
1748
|
+
if (entity.startsWith('#')) {
|
|
1749
|
+
const isHex = entity[1] === 'x' || entity[1] === 'X';
|
|
1750
|
+
const codePoint = Number.parseInt(isHex ? entity.slice(2) : entity.slice(1), isHex ? 16 : 10);
|
|
1751
|
+
// `String.fromCodePoint` throws on anything out of range, and a malformed page is exactly where that shows up.
|
|
1752
|
+
return Number.isInteger(codePoint) && codePoint > 0 && codePoint <= MAX_CODE_POINT
|
|
1753
|
+
? String.fromCodePoint(codePoint)
|
|
1754
|
+
: match;
|
|
1755
|
+
}
|
|
1756
|
+
return HTML_ENTITIES[entity] ?? HTML_ENTITIES[entity.toLowerCase()] ?? match;
|
|
1757
|
+
});
|
|
1758
|
+
/**
|
|
1759
|
+
* Tags are dropped before entities are decoded, so an escaped `<script>` in the page's text can never
|
|
1760
|
+
* turn back into markup on the way out.
|
|
1761
|
+
*/
|
|
1762
|
+
const toPlainText = (html) => decodeHtmlEntities(html.replace(HTML_TAG_PATTERN, ' ')).replace(/\s+/g, ' ').trim();
|
|
1763
|
+
const truncate = (value) => value.length <= MAX_MESSAGE_LENGTH ? value : `${value.slice(0, MAX_MESSAGE_LENGTH - 1).trimEnd()}…`;
|
|
1764
|
+
const matchText = (html, pattern, group) => {
|
|
1765
|
+
const text = pattern.exec(html)?.[group];
|
|
1766
|
+
return text ? toPlainText(text) || null : null;
|
|
1767
|
+
};
|
|
1768
|
+
const paragraphTexts = (html) => {
|
|
1769
|
+
const texts = [];
|
|
1770
|
+
for (const match of html.matchAll(HTML_PARAGRAPH_PATTERN)) {
|
|
1771
|
+
const text = toPlainText(match[1] ?? '');
|
|
1772
|
+
if (text)
|
|
1773
|
+
texts.push(text);
|
|
1774
|
+
}
|
|
1775
|
+
return texts;
|
|
1776
|
+
};
|
|
1777
|
+
/**
|
|
1778
|
+
* Whether a value is an HTML error page rather than a message meant to be read as-is.
|
|
1779
|
+
*
|
|
1780
|
+
* Deliberately strict: a document marker, or a balanced element pair. A message containing a stray `<` or a
|
|
1781
|
+
* lone `<br>` stays a message.
|
|
1782
|
+
*/
|
|
1783
|
+
const isHtmlErrorPayload = (value) => typeof value === 'string' && (HTML_DOCUMENT_PATTERN.test(value) || HTML_ELEMENT_PATTERN.test(value));
|
|
1784
|
+
/**
|
|
1785
|
+
* The HTML of an error body, or `null` when the body isn't an error page.
|
|
1786
|
+
*
|
|
1787
|
+
* Two shapes carry one: the raw string body of any failed response, and the `{ error, text }` wrapper
|
|
1788
|
+
* Angular's XHR backend produces when a `200` response fails to parse as JSON — which is how a proxy handing
|
|
1789
|
+
* back an HTML page with a success status arrives.
|
|
1790
|
+
*/
|
|
1791
|
+
const htmlErrorPayload = (body) => {
|
|
1792
|
+
if (isHtmlErrorPayload(body))
|
|
1793
|
+
return body;
|
|
1794
|
+
if (typeof body === 'object' && !!body && 'text' in body && isHtmlErrorPayload(body.text)) {
|
|
1795
|
+
return body.text;
|
|
1796
|
+
}
|
|
1797
|
+
return null;
|
|
1798
|
+
};
|
|
1799
|
+
/**
|
|
1800
|
+
* The readable message inside an HTML error page, or `null` when it has none.
|
|
1801
|
+
*
|
|
1802
|
+
* Prefers what a page puts its message in: the first heading (or the `<title>` when there is no heading),
|
|
1803
|
+
* followed by the first paragraph that says something new. Falls back to the page's flattened text, so an
|
|
1804
|
+
* unusually structured page still yields something. The result is always plain text, and always short enough
|
|
1805
|
+
* to sit in a toast.
|
|
1806
|
+
*
|
|
1807
|
+
* @example
|
|
1808
|
+
* extractHtmlErrorMessage('<h1>Service Unavailable</h1><p>The server is restarting.</p>');
|
|
1809
|
+
* // 'Service Unavailable: The server is restarting.'
|
|
1810
|
+
*/
|
|
1811
|
+
const extractHtmlErrorMessage = (html) => {
|
|
1812
|
+
const document = html.replace(HTML_COMMENT_PATTERN, ' ').replace(HTML_NOISE_PATTERN, ' ');
|
|
1813
|
+
const body = HTML_BODY_PATTERN.exec(document)?.[1] ?? document;
|
|
1814
|
+
const headline = matchText(body, HTML_HEADING_PATTERN, 2) ?? matchText(document, HTML_TITLE_PATTERN, 1);
|
|
1815
|
+
const detail = paragraphTexts(body).find((text) => text !== headline) ?? null;
|
|
1816
|
+
if (headline && detail) {
|
|
1817
|
+
// A headline that already ends in punctuation is a sentence, not a label.
|
|
1818
|
+
const separator = /[.!?:]$/.test(headline) ? ' ' : ': ';
|
|
1819
|
+
return truncate(`${headline}${separator}${detail}`);
|
|
1820
|
+
}
|
|
1821
|
+
const message = headline ?? detail ?? toPlainText(body);
|
|
1822
|
+
return message ? truncate(message) : null;
|
|
1823
|
+
};
|
|
1824
|
+
|
|
1681
1825
|
const shouldRetryRequest = (options) => {
|
|
1682
1826
|
const normalizedOptions = options instanceof HttpErrorResponse ? { retryCount: 0, error: options } : options;
|
|
1683
1827
|
const { retryCount, error } = normalizedOptions;
|
|
@@ -1761,7 +1905,17 @@ const createQueryErrorResponse = (error) => {
|
|
|
1761
1905
|
const retryState = shouldRetryRequest(err);
|
|
1762
1906
|
const detail = err.error;
|
|
1763
1907
|
const errorList = [];
|
|
1764
|
-
|
|
1908
|
+
const html = htmlErrorPayload(detail);
|
|
1909
|
+
if (html) {
|
|
1910
|
+
// An HTML error page (a proxy's 502, a maintenance page) is never shown as-is: keep the sentence inside it
|
|
1911
|
+
// and drop the markup. A page with no readable text leaves the list empty, which falls back to the
|
|
1912
|
+
// HttpErrorResponse's own message below — still better than a wall of tags.
|
|
1913
|
+
const message = extractHtmlErrorMessage(html);
|
|
1914
|
+
if (message) {
|
|
1915
|
+
errorList.push({ message });
|
|
1916
|
+
}
|
|
1917
|
+
}
|
|
1918
|
+
else if (isClassValidatorError(detail)) {
|
|
1765
1919
|
for (const error of detail.message) {
|
|
1766
1920
|
errorList.push({ message: error });
|
|
1767
1921
|
}
|
|
@@ -3401,7 +3555,11 @@ class LegacyQuery {
|
|
|
3401
3555
|
this.newQuery.subtle.destroy();
|
|
3402
3556
|
}
|
|
3403
3557
|
execute(options = {}) {
|
|
3404
|
-
untracked(() =>
|
|
3558
|
+
untracked(() =>
|
|
3559
|
+
// v2 had a single `skipCache` for every method, so this cannot tell whether the underlying request is
|
|
3560
|
+
// cacheable. The creator is built with `silenceUncacheableAllowCacheError`, which makes `allowCache` inert
|
|
3561
|
+
// on a mutation instead of throwing ET301.
|
|
3562
|
+
this.newQuery.execute({ args: this._arguments, options: { allowCache: options.skipCache !== true } }));
|
|
3405
3563
|
return this;
|
|
3406
3564
|
}
|
|
3407
3565
|
abort() {
|
|
@@ -3612,6 +3770,8 @@ class LegacyQueryCreator {
|
|
|
3612
3770
|
onlyManualExecution: true,
|
|
3613
3771
|
injector,
|
|
3614
3772
|
silenceMissingWithArgsFeatureError: true,
|
|
3773
|
+
// `LegacyQuery.execute()` forwards v2's `skipCache` as `allowCache` for every method, cacheable or not.
|
|
3774
|
+
silenceUncacheableAllowCacheError: true,
|
|
3615
3775
|
});
|
|
3616
3776
|
const legacyQuery = new LegacyQuery(newQuery, queryArgs, this.options.entity);
|
|
3617
3777
|
if (args?.config?.destroyOnResponse) {
|
|
@@ -5723,8 +5883,11 @@ const createQueryRepository = (config) => {
|
|
|
5723
5883
|
: shouldCacheQuery(options.method) || creatorOptions?.subtle?.useQueryRepositoryCache === true;
|
|
5724
5884
|
if (!shouldCache && options.key)
|
|
5725
5885
|
throw uncacheableRequestHasCacheKeyParam(options.key);
|
|
5726
|
-
|
|
5886
|
+
// `allowCache` is never read on the uncacheable path below — there is no cache entry to reuse — so this throw
|
|
5887
|
+
// is purely a guard against a mistake in hand-written code. The legacy interop opts out of it.
|
|
5888
|
+
if (!shouldCache && runQueryOptions?.allowCache && !options.silenceUncacheableAllowCacheError) {
|
|
5727
5889
|
throw uncacheableRequestHasAllowCacheParam();
|
|
5890
|
+
}
|
|
5728
5891
|
const route = buildRoute({
|
|
5729
5892
|
base: config.baseUrl,
|
|
5730
5893
|
route: options.route,
|
|
@@ -8915,5 +9078,5 @@ const createWebSocketClient = (options) => {
|
|
|
8915
9078
|
* Generated bundle index. Do not edit.
|
|
8916
9079
|
*/
|
|
8917
9080
|
|
|
8918
|
-
export { BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, CLEAR_QUERY_ARGS, CustomHeaderAuthProvider, DEFAULT_KEEP_UNUSED_FOR, DateArrayQueryField, DateQueryField, EntityStore, IGNORED_FILTER_COUNT_FIELDS, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QueryDevtoolsComponent, QueryDirective, QueryError, QueryFeatureType, QueryField, QueryForm, QueryFormSignals, QueryRuntimeErrorCode, QueryShortNamePipe, QueryStore, SERVER_ERROR_KIND, SERVER_VIOLATION_ERROR_KIND, SPEED_BUFFER_TIME_IN_MS, SearchQueryField, SortQueryField, StringArrayQueryField, V2BearerAuthProvider, V2Query, V2QueryClient, V2QueryCreator, addQueryContainerHandling, applyQueryFeatures, authExtractTokensResponseMissingAccessToken, authExtractTokensResponseMissingRefreshToken, authExtractTokensResponseNotObject, authProviderFeatureUsedMultipleTimes, booleanArrayQueryField, buildErrorMessage, buildQueryCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, circularQueryDependency, circularQueryDependencyChecker, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, consumeSuppressQueryStackDevtools, contentfulGqlLikePaginationAdapter, createBaseQuery, createBaseQueryCreator, createBearerAuthProvider, createDeleteQuery, createExecuteFn, createGetQuery, createGqlExecuteFn, createGqlMutationViaGet, createGqlMutationViaPost, createGqlQuery, createGqlQueryCreator, createGqlQueryViaGet, createGqlQueryViaPost, createHttpRequest, createInfinityQueryConfig, createLegacyQueryCreator, createPagedQueryStack, createPatchQuery, createPersistentAuthFeature, createPostQuery, createPutQuery, createQuery, createQueryClient, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, createQueryContext, createQueryCreator, createQueryErrorResponse, createQueryFeature, createQueryForm, createQueryObject, createQueryRepository, createQuerySnapshotFn, createQueryStack, createSecureDeleteQuery, createSecureExecuteFactory, createSecureExecuteFn, createSecureGetQuery, createSecureGqlExecuteFn, createSecureGqlMutationViaGet, createSecureGqlMutationViaPost, createSecureGqlQuery, createSecureGqlQueryCreator, createSecureGqlQueryViaGet, createSecureGqlQueryViaPost, createSecurePatchQuery, createSecurePostQuery, createSecurePutQuery, createSecureQuery, createSecureQueryCreator, createTrackingFeature, createWebSocketClient, dateArrayQueryField, dateQueryField, decryptBearer, deepFreeze, def, detectContentTypeHeader, dynLikePaginationAdapter, effectComputed, emptyQueryArgs, ethletePaginationAdapter, executeUntilSettled, extractExpiresInSeconds, extractFormViolations, extractQuery, fakePaginationAdapter, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, getDefaultHeaders, getQueryClientName, getQueryFeatureUsage, getResponseUrl, ggLikePaginationAdapter, gql, gqlDataPropertyMissingInResponse, hasHeader, ignoreAutoRefresh, injectInfinityQueryResponseDelay, injectQueryContext, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, invalidStateInsideSecureExecuteFactory, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCreateGqlQueryOptions, isCustomHeaderAuthProvider, isEmptyString, isGqlQueryConfig, isLegacyQuery, isNaN$1 as isNaN, isPageOutOfRangeError, isQuery, isQueryCollection, isQueryDevtoolsEnabled, isQueryErrorResponse, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyListError, isSymfonyPagerfantaOutOfRangeError, legacyPrepareWithoutInjectionContext, mapToPaginated, mapViolationsToFormErrors, maybeExecute, mergeHeaders, nestedEffect, numberArrayQueryField, pagedQueryStackNextPageCalledWithoutPreviousPage, pagedQueryStackPageBiggerThanTotalPages, pagedQueryStackPreviousPageCalledButAlreadyAtFirstPage, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleDe, parseHttpErrorCodeToTitleEn, pathParamsMissingInRouteFunctionError, provideInfinityQueryResponseDelay, provideQueryClientForDevtools, provideQueryDevtools, queryArrayComputed, queryComputed, queryComputedTillTruthy, queryDevtoolsEntries, queryErrorMessage, queryErrorMessages, queryExecute, queryFeatureUsedMultipleTimes, queryField, querySequence, querySequenceAlreadyRunning, queryStackTotalQueriesAndExpectedQueriesMismatch, queryStackWithArgsUsed, queryStackWithResponseUpdateUsed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, registerQueryDevtoolsEntry, removeFrom, request, resetExecuteState, resetPageOnError, searchQueryField, serializeBody, setupQueryDependencies, setupQueryExecuteState, setupQueryState, shouldAutoExecuteGqlQuery, shouldAutoExecuteQuery, shouldCacheQuery, shouldRetryRequest, silenceMissingWithArgsFeatureErrorUsedButWithArgsPresent, skipPaginationPageParamCalculator, sortQueryField, splitQueryConfig, stringArrayQueryField, stringifyQueryRoute, suppressNextQueryStackDevtools, switchQueryCollectionState, switchQueryState, takeUntilResponse, toQuerySignal, toQuerySubject, tokensNotAvailableInsideAuthAndExec, transformArrayResponse, transformExecStateToQueryState, transformGql, transformMethod, transformPaginatedResponse, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray, uncacheableRequestHasAllowCacheParam, uncacheableRequestHasCacheKeyParam, v2BuildQueryCacheKey, v2ExtractExpiresInSeconds, v2ShouldCacheQuery, v2ShouldRetryRequest, validateWithQuery, validateWithV2Query, withArgs, withArgsQueryFeatureMissingButRouteIsFunction, withAuthenticationQuery, withAutoRefresh, withAutoRefreshUsedInManualQuery, withAutoRefreshUsedOnUnsupportedHttpMethod, withErrorHandling, withInactivityLogout, withLogging, withPageResetOnError, withPersistentAuth, withPolling, withPollingUsedOnUnsupportedHttpMethod, withRefreshQuery, withResponseUpdate, withSuccessHandling, withTokenExpirationWarning, withTokenRevocation, withTracking, wrapAsObservableSignal };
|
|
9081
|
+
export { BasicAuthProvider, BearerAuthFeatureType, BooleanArrayQueryField, CLEAR_QUERY_ARGS, CustomHeaderAuthProvider, DEFAULT_KEEP_UNUSED_FOR, DateArrayQueryField, DateQueryField, EntityStore, IGNORED_FILTER_COUNT_FIELDS, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, LegacyQuery, LegacyQueryCreator, MAX_UNUSED_ENTRIES, NumberArrayQueryField, ParseHttpErrorCodeToMessageDePipe, ParseHttpErrorCodeToMessageEnPipe, ParseHttpErrorCodeToTitleDePipe, ParseHttpErrorCodeToTitleEnPipe, QUERY_CLIENT_DEVTOOLS_TOKEN, QueryDevtoolsComponent, QueryDirective, QueryError, QueryFeatureType, QueryField, QueryForm, QueryFormSignals, QueryRuntimeErrorCode, QueryShortNamePipe, QueryStore, SERVER_ERROR_KIND, SERVER_VIOLATION_ERROR_KIND, SPEED_BUFFER_TIME_IN_MS, SearchQueryField, SortQueryField, StringArrayQueryField, V2BearerAuthProvider, V2Query, V2QueryClient, V2QueryCreator, addQueryContainerHandling, applyQueryFeatures, authExtractTokensResponseMissingAccessToken, authExtractTokensResponseMissingRefreshToken, authExtractTokensResponseNotObject, authProviderFeatureUsedMultipleTimes, booleanArrayQueryField, buildErrorMessage, buildQueryCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, circularQueryDependency, circularQueryDependencyChecker, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, consumeSuppressQueryStackDevtools, contentfulGqlLikePaginationAdapter, createBaseQuery, createBaseQueryCreator, createBearerAuthProvider, createDeleteQuery, createExecuteFn, createGetQuery, createGqlExecuteFn, createGqlMutationViaGet, createGqlMutationViaPost, createGqlQuery, createGqlQueryCreator, createGqlQueryViaGet, createGqlQueryViaPost, createHttpRequest, createInfinityQueryConfig, createLegacyQueryCreator, createPagedQueryStack, createPatchQuery, createPersistentAuthFeature, createPostQuery, createPutQuery, createQuery, createQueryClient, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, createQueryContext, createQueryCreator, createQueryErrorResponse, createQueryFeature, createQueryForm, createQueryObject, createQueryRepository, createQuerySnapshotFn, createQueryStack, createSecureDeleteQuery, createSecureExecuteFactory, createSecureExecuteFn, createSecureGetQuery, createSecureGqlExecuteFn, createSecureGqlMutationViaGet, createSecureGqlMutationViaPost, createSecureGqlQuery, createSecureGqlQueryCreator, createSecureGqlQueryViaGet, createSecureGqlQueryViaPost, createSecurePatchQuery, createSecurePostQuery, createSecurePutQuery, createSecureQuery, createSecureQueryCreator, createTrackingFeature, createWebSocketClient, dateArrayQueryField, dateQueryField, decryptBearer, deepFreeze, def, detectContentTypeHeader, dynLikePaginationAdapter, effectComputed, emptyQueryArgs, ethletePaginationAdapter, executeUntilSettled, extractExpiresInSeconds, extractFormViolations, extractHtmlErrorMessage, extractQuery, fakePaginationAdapter, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, getDefaultHeaders, getQueryClientName, getQueryFeatureUsage, getResponseUrl, ggLikePaginationAdapter, gql, gqlDataPropertyMissingInResponse, hasHeader, htmlErrorPayload, ignoreAutoRefresh, injectInfinityQueryResponseDelay, injectQueryContext, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, invalidStateInsideSecureExecuteFactory, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCreateGqlQueryOptions, isCustomHeaderAuthProvider, isEmptyString, isGqlQueryConfig, isHtmlErrorPayload, isLegacyQuery, isNaN$1 as isNaN, isPageOutOfRangeError, isQuery, isQueryCollection, isQueryDevtoolsEnabled, isQueryErrorResponse, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyListError, isSymfonyPagerfantaOutOfRangeError, legacyPrepareWithoutInjectionContext, mapToPaginated, mapViolationsToFormErrors, maybeExecute, mergeHeaders, nestedEffect, numberArrayQueryField, pagedQueryStackNextPageCalledWithoutPreviousPage, pagedQueryStackPageBiggerThanTotalPages, pagedQueryStackPreviousPageCalledButAlreadyAtFirstPage, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, parseHttpErrorCodeToMessageDe, parseHttpErrorCodeToMessageEn, parseHttpErrorCodeToTitleDe, parseHttpErrorCodeToTitleEn, pathParamsMissingInRouteFunctionError, provideInfinityQueryResponseDelay, provideQueryClientForDevtools, provideQueryDevtools, queryArrayComputed, queryComputed, queryComputedTillTruthy, queryDevtoolsEntries, queryErrorMessage, queryErrorMessages, queryExecute, queryFeatureUsedMultipleTimes, queryField, querySequence, querySequenceAlreadyRunning, queryStackTotalQueriesAndExpectedQueriesMismatch, queryStackWithArgsUsed, queryStackWithResponseUpdateUsed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, registerQueryDevtoolsEntry, removeFrom, request, resetExecuteState, resetPageOnError, searchQueryField, serializeBody, setupQueryDependencies, setupQueryExecuteState, setupQueryState, shouldAutoExecuteGqlQuery, shouldAutoExecuteQuery, shouldCacheQuery, shouldRetryRequest, silenceMissingWithArgsFeatureErrorUsedButWithArgsPresent, skipPaginationPageParamCalculator, sortQueryField, splitQueryConfig, stringArrayQueryField, stringifyQueryRoute, suppressNextQueryStackDevtools, switchQueryCollectionState, switchQueryState, takeUntilResponse, toQuerySignal, toQuerySubject, tokensNotAvailableInsideAuthAndExec, transformArrayResponse, transformExecStateToQueryState, transformGql, transformMethod, transformPaginatedResponse, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray, uncacheableRequestHasAllowCacheParam, uncacheableRequestHasCacheKeyParam, v2BuildQueryCacheKey, v2ExtractExpiresInSeconds, v2ShouldCacheQuery, v2ShouldRetryRequest, validateWithQuery, validateWithV2Query, withArgs, withArgsQueryFeatureMissingButRouteIsFunction, withAuthenticationQuery, withAutoRefresh, withAutoRefreshUsedInManualQuery, withAutoRefreshUsedOnUnsupportedHttpMethod, withErrorHandling, withInactivityLogout, withLogging, withPageResetOnError, withPersistentAuth, withPolling, withPollingUsedOnUnsupportedHttpMethod, withRefreshQuery, withResponseUpdate, withSuccessHandling, withTokenExpirationWarning, withTokenRevocation, withTracking, wrapAsObservableSignal };
|
|
8919
9082
|
//# sourceMappingURL=ethlete-query.mjs.map
|