@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 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 `&lt;script&gt;` 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
- if (isClassValidatorError(detail)) {
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(() => this.newQuery.execute({ args: this._arguments, options: { allowCache: options.skipCache !== true } }));
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
- if (!shouldCache && runQueryOptions?.allowCache)
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