@ethlete/query 6.0.0-next.21 → 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,17 @@
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
+
3
15
  ## 6.0.0-next.21
4
16
 
5
17
  ### Patch Changes
@@ -1679,6 +1679,149 @@ const buildQueryCacheKey = (route, args) => {
1679
1679
  return hash.toString();
1680
1680
  };
1681
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
+
1682
1825
  const shouldRetryRequest = (options) => {
1683
1826
  const normalizedOptions = options instanceof HttpErrorResponse ? { retryCount: 0, error: options } : options;
1684
1827
  const { retryCount, error } = normalizedOptions;
@@ -1762,7 +1905,17 @@ const createQueryErrorResponse = (error) => {
1762
1905
  const retryState = shouldRetryRequest(err);
1763
1906
  const detail = err.error;
1764
1907
  const errorList = [];
1765
- 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)) {
1766
1919
  for (const error of detail.message) {
1767
1920
  errorList.push({ message: error });
1768
1921
  }
@@ -8925,5 +9078,5 @@ const createWebSocketClient = (options) => {
8925
9078
  * Generated bundle index. Do not edit.
8926
9079
  */
8927
9080
 
8928
- 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 };
8929
9082
  //# sourceMappingURL=ethlete-query.mjs.map