@apollo/client 3.9.4 → 3.9.6
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 +41 -19
- package/apollo-client.cjs +82 -50
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/core/QueryInfo.js +17 -0
- package/core/QueryInfo.js.map +1 -1
- package/core/core.cjs +8 -1
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +8 -1
- package/dev/dev.cjs +1 -1
- package/dev/dev.cjs.map +1 -1
- package/dev/dev.cjs.native.js +1 -1
- package/package.json +19 -19
- package/react/hooks/hooks.cjs +67 -44
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +67 -44
- package/react/hooks/internal/index.d.ts +1 -0
- package/react/hooks/internal/index.js +1 -0
- package/react/hooks/internal/index.js.map +1 -1
- package/react/hooks/internal/wrapHook.d.ts +56 -0
- package/react/hooks/internal/wrapHook.js +43 -0
- package/react/hooks/internal/wrapHook.js.map +1 -0
- package/react/hooks/useBackgroundQuery.js +4 -0
- package/react/hooks/useBackgroundQuery.js.map +1 -1
- package/react/hooks/useFragment.js +4 -1
- package/react/hooks/useFragment.js.map +1 -1
- package/react/hooks/useQuery.js +4 -0
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useReadQuery.js +4 -1
- package/react/hooks/useReadQuery.js.map +1 -1
- package/react/hooks/useSuspenseQuery.js +4 -1
- package/react/hooks/useSuspenseQuery.js.map +1 -1
- package/react/internal/cache/QueryReference.js +17 -5
- package/react/internal/cache/QueryReference.js.map +1 -1
- package/react/internal/index.d.ts +1 -0
- package/react/internal/index.js.map +1 -1
- package/react/internal/internal.cjs +7 -5
- package/react/internal/internal.cjs.map +1 -1
- package/react/internal/internal.cjs.native.js +7 -5
- package/testing/core/core.cjs +2 -2
- package/testing/core/core.cjs.map +1 -1
- package/testing/core/core.cjs.native.js +2 -2
- package/testing/core/mocking/mockLink.d.ts +1 -1
- package/testing/core/mocking/mockLink.js +2 -2
- package/testing/core/mocking/mockLink.js.map +1 -1
- package/testing/internal/scenarios/index.js +1 -1
- package/testing/internal/scenarios/index.js.map +1 -1
- package/utilities/globals/globals.cjs +1 -1
- package/utilities/globals/globals.cjs.map +1 -1
- package/utilities/globals/globals.cjs.native.js +1 -1
- package/version.js +1 -1
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import * as React from "rehackt";
|
|
2
2
|
import { getWrappedPromise, unwrapQueryRef, updateWrappedQueryRef, } from "../internal/index.js";
|
|
3
|
-
import { __use } from "./internal/index.js";
|
|
3
|
+
import { __use, wrapHook } from "./internal/index.js";
|
|
4
4
|
import { toApolloError } from "./useSuspenseQuery.js";
|
|
5
5
|
import { useSyncExternalStore } from "./useSyncExternalStore.js";
|
|
6
6
|
export function useReadQuery(queryRef) {
|
|
7
|
+
return wrapHook("useReadQuery", _useReadQuery, unwrapQueryRef(queryRef)["observable"])(queryRef);
|
|
8
|
+
}
|
|
9
|
+
function _useReadQuery(queryRef) {
|
|
7
10
|
var internalQueryRef = React.useMemo(function () { return unwrapQueryRef(queryRef); }, [queryRef]);
|
|
8
11
|
var getPromise = React.useCallback(function () { return getWrappedPromise(queryRef); }, [queryRef]);
|
|
9
12
|
if (internalQueryRef.disposed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReadQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useReadQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useReadQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useReadQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AA6BjE,MAAM,UAAU,YAAY,CAC1B,QAA+B;IAE/B,OAAO,QAAQ,CACb,cAAc,EACd,aAAa,EACb,cAAc,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CACvC,CAAC,QAAQ,CAAC,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CACpB,QAA+B;IAE/B,IAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CACpC,cAAM,OAAA,cAAc,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAC9B,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,IAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,cAAM,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAA3B,CAA2B,EACjC,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAC9B,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAChC,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,cAAM,OAAA,gBAAgB,CAAC,MAAM,EAAE,EAAzB,CAAyB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAErE,IAAM,OAAO,GAAG,oBAAoB,CAClC,KAAK,CAAC,WAAW,CACf,UAAC,WAAW;QACV,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAC,OAAO;YACrC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzC,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB,EACD,UAAU,EACV,UAAU,CACX,CAAC;IAEF,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,KAAK,CAAC,OAAO,CAAC;QACnB,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;SAC7B,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC","sourcesContent":["import * as React from \"rehackt\";\nimport {\n getWrappedPromise,\n unwrapQueryRef,\n updateWrappedQueryRef,\n} from \"../internal/index.js\";\nimport type { QueryReference } from \"../internal/index.js\";\nimport { __use, wrapHook } from \"./internal/index.js\";\nimport { toApolloError } from \"./useSuspenseQuery.js\";\nimport { useSyncExternalStore } from \"./useSyncExternalStore.js\";\nimport type { ApolloError } from \"../../errors/index.js\";\nimport type { NetworkStatus } from \"../../core/index.js\";\n\nexport interface UseReadQueryResult<TData = unknown> {\n /**\n * An object containing the result of your GraphQL query after it completes.\n *\n * This value might be `undefined` if a query results in one or more errors\n * (depending on the query's `errorPolicy`).\n */\n data: TData;\n /**\n * If the query produces one or more errors, this object contains either an\n * array of `graphQLErrors` or a single `networkError`. Otherwise, this value\n * is `undefined`.\n *\n * This property can be ignored when using the default `errorPolicy` or an\n * `errorPolicy` of `none`. The hook will throw the error instead of setting\n * this property.\n */\n error: ApolloError | undefined;\n /**\n * A number indicating the current network state of the query's associated\n * request. {@link https://github.com/apollographql/apollo-client/blob/d96f4578f89b933c281bb775a39503f6cdb59ee8/src/core/networkStatus.ts#L4 | See possible values}.\n */\n networkStatus: NetworkStatus;\n}\n\nexport function useReadQuery<TData>(\n queryRef: QueryReference<TData>\n): UseReadQueryResult<TData> {\n return wrapHook(\n \"useReadQuery\",\n _useReadQuery,\n unwrapQueryRef(queryRef)[\"observable\"]\n )(queryRef);\n}\n\nfunction _useReadQuery<TData>(\n queryRef: QueryReference<TData>\n): UseReadQueryResult<TData> {\n const internalQueryRef = React.useMemo(\n () => unwrapQueryRef(queryRef),\n [queryRef]\n );\n\n const getPromise = React.useCallback(\n () => getWrappedPromise(queryRef),\n [queryRef]\n );\n\n if (internalQueryRef.disposed) {\n internalQueryRef.reinitialize();\n updateWrappedQueryRef(queryRef, internalQueryRef.promise);\n }\n\n React.useEffect(() => internalQueryRef.retain(), [internalQueryRef]);\n\n const promise = useSyncExternalStore(\n React.useCallback(\n (forceUpdate) => {\n return internalQueryRef.listen((promise) => {\n updateWrappedQueryRef(queryRef, promise);\n forceUpdate();\n });\n },\n [internalQueryRef]\n ),\n getPromise,\n getPromise\n );\n\n const result = __use(promise);\n\n return React.useMemo(() => {\n return {\n data: result.data,\n networkStatus: result.networkStatus,\n error: toApolloError(result),\n };\n }, [result]);\n}\n"]}
|
|
@@ -5,12 +5,15 @@ import { ApolloError, NetworkStatus } from "../../core/index.js";
|
|
|
5
5
|
import { isNonEmptyArray } from "../../utilities/index.js";
|
|
6
6
|
import { useApolloClient } from "./useApolloClient.js";
|
|
7
7
|
import { DocumentType, verifyDocumentType } from "../parser/index.js";
|
|
8
|
-
import { __use, useDeepMemo } from "./internal/index.js";
|
|
8
|
+
import { __use, useDeepMemo, wrapHook } from "./internal/index.js";
|
|
9
9
|
import { getSuspenseCache } from "../internal/index.js";
|
|
10
10
|
import { canonicalStringify } from "../../cache/index.js";
|
|
11
11
|
import { skipToken } from "./constants.js";
|
|
12
12
|
export function useSuspenseQuery(query, options) {
|
|
13
13
|
if (options === void 0) { options = Object.create(null); }
|
|
14
|
+
return wrapHook("useSuspenseQuery", _useSuspenseQuery, useApolloClient(typeof options === "object" ? options.client : undefined))(query, options);
|
|
15
|
+
}
|
|
16
|
+
function _useSuspenseQuery(query, options) {
|
|
14
17
|
var client = useApolloClient(options.client);
|
|
15
18
|
var suspenseCache = getSuspenseCache(client);
|
|
16
19
|
var watchQueryOptions = useWatchQueryOptions({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"rehackt\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport type {\n ApolloClient,\n ApolloQueryResult,\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryFetchPolicy,\n FetchMoreQueryOptions,\n WatchQueryOptions,\n} from \"../../core/index.js\";\nimport { ApolloError, NetworkStatus } from \"../../core/index.js\";\nimport type { DeepPartial } from \"../../utilities/index.js\";\nimport { isNonEmptyArray } from \"../../utilities/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport type {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n NoInfer,\n} from \"../types/types.js\";\nimport { __use, useDeepMemo } from \"./internal/index.js\";\nimport { getSuspenseCache } from \"../internal/index.js\";\nimport { canonicalStringify } from \"../../cache/index.js\";\nimport { skipToken } from \"./constants.js\";\nimport type { SkipToken } from \"./constants.js\";\nimport type { CacheKey, QueryKey } from \"../internal/index.js\";\n\nexport interface UseSuspenseQueryResult<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: FetchMoreFunction<TData, TVariables>;\n networkStatus: NetworkStatus;\n refetch: RefetchFunction<TData, TVariables>;\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n}\n\nexport type FetchMoreFunction<TData, TVariables extends OperationVariables> = (\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TData;\n variables: TVariables;\n }\n ) => TData;\n }\n) => Promise<ApolloQueryResult<TData>>;\n\nexport type RefetchFunction<\n TData,\n TVariables extends OperationVariables,\n> = ObservableQueryFields<TData, TVariables>[\"refetch\"];\n\nexport type SubscribeToMoreFunction<\n TData,\n TVariables extends OperationVariables,\n> = ObservableQueryFields<TData, TVariables>[\"subscribeToMore\"];\n\nexport function useSuspenseQuery<\n TData,\n TVariables extends OperationVariables,\n TOptions extends Omit<SuspenseQueryHookOptions<TData>, \"variables\">,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> &\n TOptions\n): UseSuspenseQueryResult<\n TOptions[\"errorPolicy\"] extends \"ignore\" | \"all\" ?\n TOptions[\"returnPartialData\"] extends true ?\n DeepPartial<TData> | undefined\n : TData | undefined\n : TOptions[\"returnPartialData\"] extends true ?\n TOptions[\"skip\"] extends boolean ?\n DeepPartial<TData> | undefined\n : DeepPartial<TData>\n : TOptions[\"skip\"] extends boolean ? TData | undefined\n : TData,\n TVariables\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n errorPolicy: \"ignore\" | \"all\";\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n errorPolicy: \"ignore\" | \"all\";\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n skip: boolean;\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData>, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n skip: boolean;\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>\n): UseSuspenseQueryResult<TData, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | SkipToken\n | (SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n })\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?:\n | SkipToken\n | SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | (SkipToken & Partial<SuspenseQueryHookOptions<TData, TVariables>>)\n | SuspenseQueryHookOptions<TData, TVariables> = Object.create(null)\n): UseSuspenseQueryResult<TData | undefined, TVariables> {\n const client = useApolloClient(options.client);\n const suspenseCache = getSuspenseCache(client);\n const watchQueryOptions = useWatchQueryOptions<any, any>({\n client,\n query,\n options,\n });\n const { fetchPolicy, variables } = watchQueryOptions;\n const { queryKey = [] } = options;\n\n const cacheKey: CacheKey = [\n query,\n canonicalStringify(variables),\n ...([] as any[]).concat(queryKey),\n ];\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery(watchQueryOptions)\n );\n\n let [current, setPromise] = React.useState<\n [QueryKey, Promise<ApolloQueryResult<any>>]\n >([queryRef.key, queryRef.promise]);\n\n // This saves us a re-execution of the render function when a variable changed.\n if (current[0] !== queryRef.key) {\n current[0] = queryRef.key;\n current[1] = queryRef.promise;\n }\n let promise = current[1];\n\n if (queryRef.didChangeOptions(watchQueryOptions)) {\n current[1] = promise = queryRef.applyOptions(watchQueryOptions);\n }\n\n React.useEffect(() => {\n const dispose = queryRef.retain();\n\n const removeListener = queryRef.listen((promise) => {\n setPromise([queryRef.key, promise]);\n });\n\n return () => {\n removeListener();\n dispose();\n };\n }, [queryRef]);\n\n const skipResult = React.useMemo(() => {\n const error = toApolloError(queryRef.result);\n\n return {\n loading: false,\n data: queryRef.result.data,\n networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,\n error,\n };\n }, [queryRef.result]);\n\n const result = fetchPolicy === \"standby\" ? skipResult : __use(promise);\n const fetchMore = React.useCallback(\n ((options) => {\n const promise = queryRef.fetchMore(options);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n }) satisfies FetchMoreFunction<\n unknown,\n OperationVariables\n > as FetchMoreFunction<TData | undefined, TVariables>,\n [queryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = React.useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n },\n [queryRef]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<\n TData | undefined,\n TVariables\n > = React.useCallback(\n (options) => queryRef.observable.subscribeToMore(options),\n [queryRef]\n );\n\n return React.useMemo<\n UseSuspenseQueryResult<TData | undefined, TVariables>\n >(() => {\n return {\n client,\n data: result.data,\n error: toApolloError(result),\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n };\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const { query, fetchPolicy, returnPartialData } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(\n fetchPolicy: WatchQueryFetchPolicy = \"cache-first\"\n) {\n const supportedFetchPolicies: WatchQueryFetchPolicy[] = [\n \"cache-first\",\n \"network-only\",\n \"no-cache\",\n \"cache-and-network\",\n ];\n\n invariant(\n supportedFetchPolicies.includes(fetchPolicy),\n `The fetch policy \\`%s\\` is not supported with suspense.`,\n fetchPolicy\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy | undefined,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === \"no-cache\" && returnPartialData) {\n invariant.warn(\n \"Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.\"\n );\n }\n}\n\nexport function toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors) ?\n new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables,\n> {\n client: ApolloClient<unknown>;\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SkipToken | SuspenseQueryHookOptions<TData, TVariables>;\n}\n\nexport function useWatchQueryOptions<\n TData,\n TVariables extends OperationVariables,\n>({\n client,\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n return useDeepMemo<WatchQueryOptions<TVariables, TData>>(() => {\n if (options === skipToken) {\n return { query, fetchPolicy: \"standby\" };\n }\n\n const fetchPolicy =\n options.fetchPolicy ||\n client.defaultOptions.watchQuery?.fetchPolicy ||\n \"cache-first\";\n\n const watchQueryOptions = {\n ...options,\n fetchPolicy,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n };\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n // Assign the updated fetch policy after our validation since `standby` is\n // not a supported fetch policy on its own without the use of `skip`.\n if (options.skip) {\n watchQueryOptions.fetchPolicy = \"standby\";\n }\n\n return watchQueryOptions;\n }, [client, options, query]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"rehackt\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport type {\n ApolloClient,\n ApolloQueryResult,\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryFetchPolicy,\n FetchMoreQueryOptions,\n WatchQueryOptions,\n} from \"../../core/index.js\";\nimport { ApolloError, NetworkStatus } from \"../../core/index.js\";\nimport type { DeepPartial } from \"../../utilities/index.js\";\nimport { isNonEmptyArray } from \"../../utilities/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport type {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n NoInfer,\n} from \"../types/types.js\";\nimport { __use, useDeepMemo, wrapHook } from \"./internal/index.js\";\nimport { getSuspenseCache } from \"../internal/index.js\";\nimport { canonicalStringify } from \"../../cache/index.js\";\nimport { skipToken } from \"./constants.js\";\nimport type { SkipToken } from \"./constants.js\";\nimport type { CacheKey, QueryKey } from \"../internal/index.js\";\n\nexport interface UseSuspenseQueryResult<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: FetchMoreFunction<TData, TVariables>;\n networkStatus: NetworkStatus;\n refetch: RefetchFunction<TData, TVariables>;\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n}\n\nexport type FetchMoreFunction<TData, TVariables extends OperationVariables> = (\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TData;\n variables: TVariables;\n }\n ) => TData;\n }\n) => Promise<ApolloQueryResult<TData>>;\n\nexport type RefetchFunction<\n TData,\n TVariables extends OperationVariables,\n> = ObservableQueryFields<TData, TVariables>[\"refetch\"];\n\nexport type SubscribeToMoreFunction<\n TData,\n TVariables extends OperationVariables,\n> = ObservableQueryFields<TData, TVariables>[\"subscribeToMore\"];\n\nexport function useSuspenseQuery<\n TData,\n TVariables extends OperationVariables,\n TOptions extends Omit<SuspenseQueryHookOptions<TData>, \"variables\">,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> &\n TOptions\n): UseSuspenseQueryResult<\n TOptions[\"errorPolicy\"] extends \"ignore\" | \"all\" ?\n TOptions[\"returnPartialData\"] extends true ?\n DeepPartial<TData> | undefined\n : TData | undefined\n : TOptions[\"returnPartialData\"] extends true ?\n TOptions[\"skip\"] extends boolean ?\n DeepPartial<TData> | undefined\n : DeepPartial<TData>\n : TOptions[\"skip\"] extends boolean ? TData | undefined\n : TData,\n TVariables\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n errorPolicy: \"ignore\" | \"all\";\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n errorPolicy: \"ignore\" | \"all\";\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n skip: boolean;\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData>, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n skip: boolean;\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>\n): UseSuspenseQueryResult<TData, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | SkipToken\n | (SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n })\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?:\n | SkipToken\n | SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | (SkipToken & Partial<SuspenseQueryHookOptions<TData, TVariables>>)\n | SuspenseQueryHookOptions<TData, TVariables> = Object.create(null)\n): UseSuspenseQueryResult<TData | undefined, TVariables> {\n return wrapHook(\n \"useSuspenseQuery\",\n _useSuspenseQuery,\n useApolloClient(typeof options === \"object\" ? options.client : undefined)\n )(query, options);\n}\n\nfunction _useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | (SkipToken & Partial<SuspenseQueryHookOptions<TData, TVariables>>)\n | SuspenseQueryHookOptions<TData, TVariables>\n): UseSuspenseQueryResult<TData | undefined, TVariables> {\n const client = useApolloClient(options.client);\n const suspenseCache = getSuspenseCache(client);\n const watchQueryOptions = useWatchQueryOptions<any, any>({\n client,\n query,\n options,\n });\n const { fetchPolicy, variables } = watchQueryOptions;\n const { queryKey = [] } = options;\n\n const cacheKey: CacheKey = [\n query,\n canonicalStringify(variables),\n ...([] as any[]).concat(queryKey),\n ];\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery(watchQueryOptions)\n );\n\n let [current, setPromise] = React.useState<\n [QueryKey, Promise<ApolloQueryResult<any>>]\n >([queryRef.key, queryRef.promise]);\n\n // This saves us a re-execution of the render function when a variable changed.\n if (current[0] !== queryRef.key) {\n current[0] = queryRef.key;\n current[1] = queryRef.promise;\n }\n let promise = current[1];\n\n if (queryRef.didChangeOptions(watchQueryOptions)) {\n current[1] = promise = queryRef.applyOptions(watchQueryOptions);\n }\n\n React.useEffect(() => {\n const dispose = queryRef.retain();\n\n const removeListener = queryRef.listen((promise) => {\n setPromise([queryRef.key, promise]);\n });\n\n return () => {\n removeListener();\n dispose();\n };\n }, [queryRef]);\n\n const skipResult = React.useMemo(() => {\n const error = toApolloError(queryRef.result);\n\n return {\n loading: false,\n data: queryRef.result.data,\n networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,\n error,\n };\n }, [queryRef.result]);\n\n const result = fetchPolicy === \"standby\" ? skipResult : __use(promise);\n const fetchMore = React.useCallback(\n ((options) => {\n const promise = queryRef.fetchMore(options);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n }) satisfies FetchMoreFunction<\n unknown,\n OperationVariables\n > as FetchMoreFunction<TData | undefined, TVariables>,\n [queryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = React.useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n },\n [queryRef]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<\n TData | undefined,\n TVariables\n > = React.useCallback(\n (options) => queryRef.observable.subscribeToMore(options),\n [queryRef]\n );\n\n return React.useMemo<\n UseSuspenseQueryResult<TData | undefined, TVariables>\n >(() => {\n return {\n client,\n data: result.data,\n error: toApolloError(result),\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n };\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const { query, fetchPolicy, returnPartialData } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(\n fetchPolicy: WatchQueryFetchPolicy = \"cache-first\"\n) {\n const supportedFetchPolicies: WatchQueryFetchPolicy[] = [\n \"cache-first\",\n \"network-only\",\n \"no-cache\",\n \"cache-and-network\",\n ];\n\n invariant(\n supportedFetchPolicies.includes(fetchPolicy),\n `The fetch policy \\`%s\\` is not supported with suspense.`,\n fetchPolicy\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy | undefined,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === \"no-cache\" && returnPartialData) {\n invariant.warn(\n \"Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.\"\n );\n }\n}\n\nexport function toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors) ?\n new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables,\n> {\n client: ApolloClient<unknown>;\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SkipToken | SuspenseQueryHookOptions<TData, TVariables>;\n}\n\nexport function useWatchQueryOptions<\n TData,\n TVariables extends OperationVariables,\n>({\n client,\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n return useDeepMemo<WatchQueryOptions<TVariables, TData>>(() => {\n if (options === skipToken) {\n return { query, fetchPolicy: \"standby\" };\n }\n\n const fetchPolicy =\n options.fetchPolicy ||\n client.defaultOptions.watchQuery?.fetchPolicy ||\n \"cache-first\";\n\n const watchQueryOptions = {\n ...options,\n fetchPolicy,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n };\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n // Assign the updated fetch policy after our validation since `standby` is\n // not a supported fetch policy on its own without the use of `skip`.\n if (options.skip) {\n watchQueryOptions.fetchPolicy = \"standby\";\n }\n\n return watchQueryOptions;\n }, [client, options, query]);\n}\n"]}
|
|
@@ -237,11 +237,23 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
237
237
|
// promise is resolved correctly.
|
|
238
238
|
returnedPromise
|
|
239
239
|
.then(function (result) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
240
|
+
// In the case of `fetchMore`, this promise is resolved before a cache
|
|
241
|
+
// result is emitted due to the fact that `fetchMore` sets a `no-cache`
|
|
242
|
+
// fetch policy and runs `cache.batch` in its `.then` handler. Because
|
|
243
|
+
// the timing is different, we accidentally run this update twice
|
|
244
|
+
// causing an additional re-render with the `fetchMore` result by
|
|
245
|
+
// itself. By wrapping in `setTimeout`, this should provide a short
|
|
246
|
+
// delay to allow the `QueryInfo.notify` handler to run before this
|
|
247
|
+
// promise is checked.
|
|
248
|
+
// See https://github.com/apollographql/apollo-client/issues/11315 for
|
|
249
|
+
// more information
|
|
250
|
+
setTimeout(function () {
|
|
251
|
+
var _a;
|
|
252
|
+
if (_this.promise.status === "pending") {
|
|
253
|
+
_this.result = result;
|
|
254
|
+
(_a = _this.resolve) === null || _a === void 0 ? void 0 : _a.call(_this, result);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
245
257
|
})
|
|
246
258
|
.catch(function () { });
|
|
247
259
|
return returnedPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryReference.js","sourceRoot":"","sources":["../../../../src/react/internal/cache/QueryReference.ts"],"names":[],"mappings":"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","sourcesContent":["import { equal } from \"@wry/equality\";\nimport type {\n ApolloError,\n ApolloQueryResult,\n ObservableQuery,\n OperationVariables,\n WatchQueryOptions,\n} from \"../../../core/index.js\";\nimport type {\n ObservableSubscription,\n PromiseWithState,\n} from \"../../../utilities/index.js\";\nimport {\n createFulfilledPromise,\n createRejectedPromise,\n} from \"../../../utilities/index.js\";\nimport type { QueryKey } from \"./types.js\";\nimport type { useBackgroundQuery, useReadQuery } from \"../../hooks/index.js\";\nimport { wrapPromiseWithState } from \"../../../utilities/index.js\";\n\ntype QueryRefPromise<TData> = PromiseWithState<ApolloQueryResult<TData>>;\n\ntype Listener<TData> = (promise: QueryRefPromise<TData>) => void;\n\ntype FetchMoreOptions<TData> = Parameters<\n ObservableQuery<TData>[\"fetchMore\"]\n>[0];\n\nconst QUERY_REFERENCE_SYMBOL: unique symbol = Symbol();\nconst PROMISE_SYMBOL: unique symbol = Symbol();\n\n/**\n * A `QueryReference` is an opaque object returned by {@link useBackgroundQuery}.\n * A child component reading the `QueryReference` via {@link useReadQuery} will\n * suspend until the promise resolves.\n */\nexport interface QueryReference<TData = unknown, TVariables = unknown> {\n /** @internal */\n readonly [QUERY_REFERENCE_SYMBOL]: InternalQueryReference<TData>;\n /** @internal */\n [PROMISE_SYMBOL]: QueryRefPromise<TData>;\n /**\n * A function that returns a promise that resolves when the query has finished\n * loading. The promise resolves with the `QueryReference` itself.\n *\n * @remarks\n * This method is useful for preloading queries in data loading routers, such\n * as [React Router](https://reactrouter.com/en/main) or [TanStack Router](https://tanstack.com/router),\n * to prevent routes from transitioning until the query has finished loading.\n * `data` is not exposed on the promise to discourage using the data in\n * `loader` functions and exposing it to your route components. Instead, we\n * prefer you rely on `useReadQuery` to access the data to ensure your\n * component can rerender with cache updates. If you need to access raw query\n * data, use `client.query()` directly.\n *\n * @example\n * Here's an example using React Router's `loader` function:\n * ```ts\n * import { createQueryPreloader } from \"@apollo/client\";\n *\n * const preloadQuery = createQueryPreloader(client);\n *\n * export async function loader() {\n * const queryRef = preloadQuery(GET_DOGS_QUERY);\n *\n * return queryRef.toPromise();\n * }\n *\n * export function RouteComponent() {\n * const queryRef = useLoaderData();\n * const { data } = useReadQuery(queryRef);\n *\n * // ...\n * }\n * ```\n *\n * @alpha\n */\n toPromise(): Promise<QueryReference<TData, TVariables>>;\n}\n\ninterface InternalQueryReferenceOptions {\n onDispose?: () => void;\n autoDisposeTimeoutMs?: number;\n}\n\nexport function wrapQueryRef<TData, TVariables extends OperationVariables>(\n internalQueryRef: InternalQueryReference<TData>\n) {\n const ref: QueryReference<TData, TVariables> = {\n toPromise() {\n // We avoid resolving this promise with the query data because we want to\n // discourage using the server data directly from the queryRef. Instead,\n // the data should be accessed through `useReadQuery`. When the server\n // data is needed, its better to use `client.query()` directly.\n //\n // Here we resolve with the ref itself to make using this in React Router\n // or TanStack Router `loader` functions a bit more ergonomic e.g.\n //\n // function loader() {\n // return { queryRef: await preloadQuery(query).toPromise() }\n // }\n return getWrappedPromise(ref).then(() => ref);\n },\n [QUERY_REFERENCE_SYMBOL]: internalQueryRef,\n [PROMISE_SYMBOL]: internalQueryRef.promise,\n };\n\n return ref;\n}\n\nexport function getWrappedPromise<TData>(queryRef: QueryReference<TData, any>) {\n const internalQueryRef = unwrapQueryRef(queryRef);\n\n return internalQueryRef.promise.status === \"fulfilled\" ?\n internalQueryRef.promise\n : queryRef[PROMISE_SYMBOL];\n}\n\nexport function unwrapQueryRef<TData>(\n queryRef: QueryReference<TData>\n): InternalQueryReference<TData> {\n return queryRef[QUERY_REFERENCE_SYMBOL];\n}\n\nexport function updateWrappedQueryRef<TData>(\n queryRef: QueryReference<TData>,\n promise: QueryRefPromise<TData>\n) {\n queryRef[PROMISE_SYMBOL] = promise;\n}\n\nconst OBSERVED_CHANGED_OPTIONS = [\n \"canonizeResults\",\n \"context\",\n \"errorPolicy\",\n \"fetchPolicy\",\n \"refetchWritePolicy\",\n \"returnPartialData\",\n] as const;\n\ntype ObservedOptions = Pick<\n WatchQueryOptions,\n (typeof OBSERVED_CHANGED_OPTIONS)[number]\n>;\n\nexport class InternalQueryReference<TData = unknown> {\n public result!: ApolloQueryResult<TData>;\n public readonly key: QueryKey = {};\n public readonly observable: ObservableQuery<TData>;\n\n public promise!: QueryRefPromise<TData>;\n\n private subscription!: ObservableSubscription;\n private listeners = new Set<Listener<TData>>();\n private autoDisposeTimeoutId?: NodeJS.Timeout;\n\n private resolve: ((result: ApolloQueryResult<TData>) => void) | undefined;\n private reject: ((error: unknown) => void) | undefined;\n\n private references = 0;\n\n constructor(\n observable: ObservableQuery<TData, any>,\n options: InternalQueryReferenceOptions\n ) {\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n\n this.setResult();\n this.subscribeToQuery();\n\n // Start a timer that will automatically dispose of the query if the\n // suspended resource does not use this queryRef in the given time. This\n // helps prevent memory leaks when a component has unmounted before the\n // query has finished loading.\n const startDisposeTimer = () => {\n if (!this.references) {\n this.autoDisposeTimeoutId = setTimeout(\n this.dispose,\n options.autoDisposeTimeoutMs ?? 30_000\n );\n }\n };\n\n // We wait until the request has settled to ensure we don't dispose of the\n // query ref before the request finishes, otherwise we would leave the\n // promise in a pending state rendering the suspense boundary indefinitely.\n this.promise.then(startDisposeTimer, startDisposeTimer);\n }\n\n get disposed() {\n return this.subscription.closed;\n }\n\n get watchQueryOptions() {\n return this.observable.options;\n }\n\n reinitialize() {\n const { observable } = this;\n\n const originalFetchPolicy = this.watchQueryOptions.fetchPolicy;\n\n try {\n if (originalFetchPolicy !== \"no-cache\") {\n observable.resetLastResults();\n observable.silentSetOptions({ fetchPolicy: \"cache-first\" });\n } else {\n observable.silentSetOptions({ fetchPolicy: \"standby\" });\n }\n\n this.subscribeToQuery();\n\n if (originalFetchPolicy === \"no-cache\") {\n return;\n }\n\n observable.resetDiff();\n this.setResult();\n } finally {\n observable.silentSetOptions({ fetchPolicy: originalFetchPolicy });\n }\n }\n\n retain() {\n this.references++;\n clearTimeout(this.autoDisposeTimeoutId);\n let disposed = false;\n\n return () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n this.references--;\n\n // Wait before fully disposing in case the app is running in strict mode.\n setTimeout(() => {\n if (!this.references) {\n this.dispose();\n }\n });\n };\n }\n\n didChangeOptions(watchQueryOptions: ObservedOptions) {\n return OBSERVED_CHANGED_OPTIONS.some(\n (option) =>\n !equal(this.watchQueryOptions[option], watchQueryOptions[option])\n );\n }\n\n applyOptions(watchQueryOptions: ObservedOptions) {\n const {\n fetchPolicy: currentFetchPolicy,\n canonizeResults: currentCanonizeResults,\n } = this.watchQueryOptions;\n\n // \"standby\" is used when `skip` is set to `true`. Detect when we've\n // enabled the query (i.e. `skip` is `false`) to execute a network request.\n if (\n currentFetchPolicy === \"standby\" &&\n currentFetchPolicy !== watchQueryOptions.fetchPolicy\n ) {\n this.initiateFetch(this.observable.reobserve(watchQueryOptions));\n } else {\n this.observable.silentSetOptions(watchQueryOptions);\n\n if (currentCanonizeResults !== watchQueryOptions.canonizeResults) {\n this.result = { ...this.result, ...this.observable.getCurrentResult() };\n this.promise = createFulfilledPromise(this.result);\n }\n }\n\n return this.promise;\n }\n\n listen(listener: Listener<TData>) {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n refetch(variables: OperationVariables | undefined) {\n return this.initiateFetch(this.observable.refetch(variables));\n }\n\n fetchMore(options: FetchMoreOptions<TData>) {\n return this.initiateFetch(this.observable.fetchMore<TData>(options));\n }\n\n private dispose() {\n this.subscription.unsubscribe();\n this.onDispose();\n }\n\n private onDispose() {\n // noop. overridable by options\n }\n\n private handleNext(result: ApolloQueryResult<TData>) {\n switch (this.promise.status) {\n case \"pending\": {\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n this.resolve?.(result);\n break;\n }\n default: {\n // This occurs when switching to a result that is fully cached when this\n // class is instantiated. ObservableQuery will run reobserve when\n // subscribing, which delivers a result from the cache.\n if (\n result.data === this.result.data &&\n result.networkStatus === this.result.networkStatus\n ) {\n return;\n }\n\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n break;\n }\n }\n }\n\n private handleError(error: ApolloError) {\n this.subscription.unsubscribe();\n this.subscription = this.observable.resubscribeAfterError(\n this.handleNext,\n this.handleError\n );\n\n switch (this.promise.status) {\n case \"pending\": {\n this.reject?.(error);\n break;\n }\n default: {\n this.promise = createRejectedPromise<ApolloQueryResult<TData>>(error);\n this.deliver(this.promise);\n }\n }\n }\n\n private deliver(promise: QueryRefPromise<TData>) {\n this.listeners.forEach((listener) => listener(promise));\n }\n\n private initiateFetch(returnedPromise: Promise<ApolloQueryResult<TData>>) {\n this.promise = this.createPendingPromise();\n this.promise.catch(() => {});\n\n // If the data returned from the fetch is deeply equal to the data already\n // in the cache, `handleNext` will not be triggered leaving the promise we\n // created in a pending state forever. To avoid this situtation, we attempt\n // to resolve the promise if `handleNext` hasn't been run to ensure the\n // promise is resolved correctly.\n returnedPromise\n .then((result) => {\n if (this.promise.status === \"pending\") {\n this.result = result;\n this.resolve?.(result);\n }\n })\n .catch(() => {});\n\n return returnedPromise;\n }\n\n private subscribeToQuery() {\n this.subscription = this.observable\n .filter(\n (result) => !equal(result.data, {}) && !equal(result, this.result)\n )\n .subscribe(this.handleNext, this.handleError);\n }\n\n private setResult() {\n // Don't save this result as last result to prevent delivery of last result\n // when first subscribing\n const result = this.observable.getCurrentResult(false);\n\n if (equal(result, this.result)) {\n return;\n }\n\n this.result = result;\n this.promise =\n (\n result.data &&\n (!result.partial || this.watchQueryOptions.returnPartialData)\n ) ?\n createFulfilledPromise(result)\n : this.createPendingPromise();\n }\n\n private createPendingPromise() {\n return wrapPromiseWithState(\n new Promise<ApolloQueryResult<TData>>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n })\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"QueryReference.js","sourceRoot":"","sources":["../../../../src/react/internal/cache/QueryReference.ts"],"names":[],"mappings":"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","sourcesContent":["import { equal } from \"@wry/equality\";\nimport type {\n ApolloError,\n ApolloQueryResult,\n ObservableQuery,\n OperationVariables,\n WatchQueryOptions,\n} from \"../../../core/index.js\";\nimport type {\n ObservableSubscription,\n PromiseWithState,\n} from \"../../../utilities/index.js\";\nimport {\n createFulfilledPromise,\n createRejectedPromise,\n} from \"../../../utilities/index.js\";\nimport type { QueryKey } from \"./types.js\";\nimport type { useBackgroundQuery, useReadQuery } from \"../../hooks/index.js\";\nimport { wrapPromiseWithState } from \"../../../utilities/index.js\";\n\ntype QueryRefPromise<TData> = PromiseWithState<ApolloQueryResult<TData>>;\n\ntype Listener<TData> = (promise: QueryRefPromise<TData>) => void;\n\ntype FetchMoreOptions<TData> = Parameters<\n ObservableQuery<TData>[\"fetchMore\"]\n>[0];\n\nconst QUERY_REFERENCE_SYMBOL: unique symbol = Symbol();\nconst PROMISE_SYMBOL: unique symbol = Symbol();\n\n/**\n * A `QueryReference` is an opaque object returned by {@link useBackgroundQuery}.\n * A child component reading the `QueryReference` via {@link useReadQuery} will\n * suspend until the promise resolves.\n */\nexport interface QueryReference<TData = unknown, TVariables = unknown> {\n /** @internal */\n readonly [QUERY_REFERENCE_SYMBOL]: InternalQueryReference<TData>;\n /** @internal */\n [PROMISE_SYMBOL]: QueryRefPromise<TData>;\n /**\n * A function that returns a promise that resolves when the query has finished\n * loading. The promise resolves with the `QueryReference` itself.\n *\n * @remarks\n * This method is useful for preloading queries in data loading routers, such\n * as [React Router](https://reactrouter.com/en/main) or [TanStack Router](https://tanstack.com/router),\n * to prevent routes from transitioning until the query has finished loading.\n * `data` is not exposed on the promise to discourage using the data in\n * `loader` functions and exposing it to your route components. Instead, we\n * prefer you rely on `useReadQuery` to access the data to ensure your\n * component can rerender with cache updates. If you need to access raw query\n * data, use `client.query()` directly.\n *\n * @example\n * Here's an example using React Router's `loader` function:\n * ```ts\n * import { createQueryPreloader } from \"@apollo/client\";\n *\n * const preloadQuery = createQueryPreloader(client);\n *\n * export async function loader() {\n * const queryRef = preloadQuery(GET_DOGS_QUERY);\n *\n * return queryRef.toPromise();\n * }\n *\n * export function RouteComponent() {\n * const queryRef = useLoaderData();\n * const { data } = useReadQuery(queryRef);\n *\n * // ...\n * }\n * ```\n *\n * @alpha\n */\n toPromise(): Promise<QueryReference<TData, TVariables>>;\n}\n\ninterface InternalQueryReferenceOptions {\n onDispose?: () => void;\n autoDisposeTimeoutMs?: number;\n}\n\nexport function wrapQueryRef<TData, TVariables extends OperationVariables>(\n internalQueryRef: InternalQueryReference<TData>\n) {\n const ref: QueryReference<TData, TVariables> = {\n toPromise() {\n // We avoid resolving this promise with the query data because we want to\n // discourage using the server data directly from the queryRef. Instead,\n // the data should be accessed through `useReadQuery`. When the server\n // data is needed, its better to use `client.query()` directly.\n //\n // Here we resolve with the ref itself to make using this in React Router\n // or TanStack Router `loader` functions a bit more ergonomic e.g.\n //\n // function loader() {\n // return { queryRef: await preloadQuery(query).toPromise() }\n // }\n return getWrappedPromise(ref).then(() => ref);\n },\n [QUERY_REFERENCE_SYMBOL]: internalQueryRef,\n [PROMISE_SYMBOL]: internalQueryRef.promise,\n };\n\n return ref;\n}\n\nexport function getWrappedPromise<TData>(queryRef: QueryReference<TData, any>) {\n const internalQueryRef = unwrapQueryRef(queryRef);\n\n return internalQueryRef.promise.status === \"fulfilled\" ?\n internalQueryRef.promise\n : queryRef[PROMISE_SYMBOL];\n}\n\nexport function unwrapQueryRef<TData>(\n queryRef: QueryReference<TData>\n): InternalQueryReference<TData> {\n return queryRef[QUERY_REFERENCE_SYMBOL];\n}\n\nexport function updateWrappedQueryRef<TData>(\n queryRef: QueryReference<TData>,\n promise: QueryRefPromise<TData>\n) {\n queryRef[PROMISE_SYMBOL] = promise;\n}\n\nconst OBSERVED_CHANGED_OPTIONS = [\n \"canonizeResults\",\n \"context\",\n \"errorPolicy\",\n \"fetchPolicy\",\n \"refetchWritePolicy\",\n \"returnPartialData\",\n] as const;\n\ntype ObservedOptions = Pick<\n WatchQueryOptions,\n (typeof OBSERVED_CHANGED_OPTIONS)[number]\n>;\n\nexport class InternalQueryReference<TData = unknown> {\n public result!: ApolloQueryResult<TData>;\n public readonly key: QueryKey = {};\n public readonly observable: ObservableQuery<TData>;\n\n public promise!: QueryRefPromise<TData>;\n\n private subscription!: ObservableSubscription;\n private listeners = new Set<Listener<TData>>();\n private autoDisposeTimeoutId?: NodeJS.Timeout;\n\n private resolve: ((result: ApolloQueryResult<TData>) => void) | undefined;\n private reject: ((error: unknown) => void) | undefined;\n\n private references = 0;\n\n constructor(\n observable: ObservableQuery<TData, any>,\n options: InternalQueryReferenceOptions\n ) {\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n\n this.setResult();\n this.subscribeToQuery();\n\n // Start a timer that will automatically dispose of the query if the\n // suspended resource does not use this queryRef in the given time. This\n // helps prevent memory leaks when a component has unmounted before the\n // query has finished loading.\n const startDisposeTimer = () => {\n if (!this.references) {\n this.autoDisposeTimeoutId = setTimeout(\n this.dispose,\n options.autoDisposeTimeoutMs ?? 30_000\n );\n }\n };\n\n // We wait until the request has settled to ensure we don't dispose of the\n // query ref before the request finishes, otherwise we would leave the\n // promise in a pending state rendering the suspense boundary indefinitely.\n this.promise.then(startDisposeTimer, startDisposeTimer);\n }\n\n get disposed() {\n return this.subscription.closed;\n }\n\n get watchQueryOptions() {\n return this.observable.options;\n }\n\n reinitialize() {\n const { observable } = this;\n\n const originalFetchPolicy = this.watchQueryOptions.fetchPolicy;\n\n try {\n if (originalFetchPolicy !== \"no-cache\") {\n observable.resetLastResults();\n observable.silentSetOptions({ fetchPolicy: \"cache-first\" });\n } else {\n observable.silentSetOptions({ fetchPolicy: \"standby\" });\n }\n\n this.subscribeToQuery();\n\n if (originalFetchPolicy === \"no-cache\") {\n return;\n }\n\n observable.resetDiff();\n this.setResult();\n } finally {\n observable.silentSetOptions({ fetchPolicy: originalFetchPolicy });\n }\n }\n\n retain() {\n this.references++;\n clearTimeout(this.autoDisposeTimeoutId);\n let disposed = false;\n\n return () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n this.references--;\n\n // Wait before fully disposing in case the app is running in strict mode.\n setTimeout(() => {\n if (!this.references) {\n this.dispose();\n }\n });\n };\n }\n\n didChangeOptions(watchQueryOptions: ObservedOptions) {\n return OBSERVED_CHANGED_OPTIONS.some(\n (option) =>\n !equal(this.watchQueryOptions[option], watchQueryOptions[option])\n );\n }\n\n applyOptions(watchQueryOptions: ObservedOptions) {\n const {\n fetchPolicy: currentFetchPolicy,\n canonizeResults: currentCanonizeResults,\n } = this.watchQueryOptions;\n\n // \"standby\" is used when `skip` is set to `true`. Detect when we've\n // enabled the query (i.e. `skip` is `false`) to execute a network request.\n if (\n currentFetchPolicy === \"standby\" &&\n currentFetchPolicy !== watchQueryOptions.fetchPolicy\n ) {\n this.initiateFetch(this.observable.reobserve(watchQueryOptions));\n } else {\n this.observable.silentSetOptions(watchQueryOptions);\n\n if (currentCanonizeResults !== watchQueryOptions.canonizeResults) {\n this.result = { ...this.result, ...this.observable.getCurrentResult() };\n this.promise = createFulfilledPromise(this.result);\n }\n }\n\n return this.promise;\n }\n\n listen(listener: Listener<TData>) {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n refetch(variables: OperationVariables | undefined) {\n return this.initiateFetch(this.observable.refetch(variables));\n }\n\n fetchMore(options: FetchMoreOptions<TData>) {\n return this.initiateFetch(this.observable.fetchMore<TData>(options));\n }\n\n private dispose() {\n this.subscription.unsubscribe();\n this.onDispose();\n }\n\n private onDispose() {\n // noop. overridable by options\n }\n\n private handleNext(result: ApolloQueryResult<TData>) {\n switch (this.promise.status) {\n case \"pending\": {\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n this.resolve?.(result);\n break;\n }\n default: {\n // This occurs when switching to a result that is fully cached when this\n // class is instantiated. ObservableQuery will run reobserve when\n // subscribing, which delivers a result from the cache.\n if (\n result.data === this.result.data &&\n result.networkStatus === this.result.networkStatus\n ) {\n return;\n }\n\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n break;\n }\n }\n }\n\n private handleError(error: ApolloError) {\n this.subscription.unsubscribe();\n this.subscription = this.observable.resubscribeAfterError(\n this.handleNext,\n this.handleError\n );\n\n switch (this.promise.status) {\n case \"pending\": {\n this.reject?.(error);\n break;\n }\n default: {\n this.promise = createRejectedPromise<ApolloQueryResult<TData>>(error);\n this.deliver(this.promise);\n }\n }\n }\n\n private deliver(promise: QueryRefPromise<TData>) {\n this.listeners.forEach((listener) => listener(promise));\n }\n\n private initiateFetch(returnedPromise: Promise<ApolloQueryResult<TData>>) {\n this.promise = this.createPendingPromise();\n this.promise.catch(() => {});\n\n // If the data returned from the fetch is deeply equal to the data already\n // in the cache, `handleNext` will not be triggered leaving the promise we\n // created in a pending state forever. To avoid this situtation, we attempt\n // to resolve the promise if `handleNext` hasn't been run to ensure the\n // promise is resolved correctly.\n returnedPromise\n .then((result) => {\n // In the case of `fetchMore`, this promise is resolved before a cache\n // result is emitted due to the fact that `fetchMore` sets a `no-cache`\n // fetch policy and runs `cache.batch` in its `.then` handler. Because\n // the timing is different, we accidentally run this update twice\n // causing an additional re-render with the `fetchMore` result by\n // itself. By wrapping in `setTimeout`, this should provide a short\n // delay to allow the `QueryInfo.notify` handler to run before this\n // promise is checked.\n // See https://github.com/apollographql/apollo-client/issues/11315 for\n // more information\n setTimeout(() => {\n if (this.promise.status === \"pending\") {\n this.result = result;\n this.resolve?.(result);\n }\n });\n })\n .catch(() => {});\n\n return returnedPromise;\n }\n\n private subscribeToQuery() {\n this.subscription = this.observable\n .filter(\n (result) => !equal(result.data, {}) && !equal(result, this.result)\n )\n .subscribe(this.handleNext, this.handleError);\n }\n\n private setResult() {\n // Don't save this result as last result to prevent delivery of last result\n // when first subscribing\n const result = this.observable.getCurrentResult(false);\n\n if (equal(result, this.result)) {\n return;\n }\n\n this.result = result;\n this.promise =\n (\n result.data &&\n (!result.partial || this.watchQueryOptions.returnPartialData)\n ) ?\n createFulfilledPromise(result)\n : this.createPendingPromise();\n }\n\n private createPendingPromise() {\n return wrapPromiseWithState(\n new Promise<ApolloQueryResult<TData>>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n })\n );\n }\n}\n"]}
|
|
@@ -3,4 +3,5 @@ export type { CacheKey, QueryKey } from "./cache/types.js";
|
|
|
3
3
|
export type { QueryReference } from "./cache/QueryReference.js";
|
|
4
4
|
export { InternalQueryReference, getWrappedPromise, unwrapQueryRef, updateWrappedQueryRef, wrapQueryRef, } from "./cache/QueryReference.js";
|
|
5
5
|
export type { SuspenseCacheOptions } from "./cache/SuspenseCache.js";
|
|
6
|
+
export type { HookWrappers } from "../hooks/internal/wrapHook.js";
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,YAAY,GACb,MAAM,2BAA2B,CAAC","sourcesContent":["export { getSuspenseCache } from \"./cache/getSuspenseCache.js\";\nexport type { CacheKey, QueryKey } from \"./cache/types.js\";\nexport type { QueryReference } from \"./cache/QueryReference.js\";\nexport {\n InternalQueryReference,\n getWrappedPromise,\n unwrapQueryRef,\n updateWrappedQueryRef,\n wrapQueryRef,\n} from \"./cache/QueryReference.js\";\nexport type { SuspenseCacheOptions } from \"./cache/SuspenseCache.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,YAAY,GACb,MAAM,2BAA2B,CAAC","sourcesContent":["export { getSuspenseCache } from \"./cache/getSuspenseCache.js\";\nexport type { CacheKey, QueryKey } from \"./cache/types.js\";\nexport type { QueryReference } from \"./cache/QueryReference.js\";\nexport {\n InternalQueryReference,\n getWrappedPromise,\n unwrapQueryRef,\n updateWrappedQueryRef,\n wrapQueryRef,\n} from \"./cache/QueryReference.js\";\nexport type { SuspenseCacheOptions } from \"./cache/SuspenseCache.js\";\nexport type { HookWrappers } from \"../hooks/internal/wrapHook.js\";\n"]}
|
|
@@ -208,11 +208,13 @@ var InternalQueryReference = (function () {
|
|
|
208
208
|
this.promise.catch(function () { });
|
|
209
209
|
returnedPromise
|
|
210
210
|
.then(function (result) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
_this.
|
|
214
|
-
|
|
215
|
-
|
|
211
|
+
setTimeout(function () {
|
|
212
|
+
var _a;
|
|
213
|
+
if (_this.promise.status === "pending") {
|
|
214
|
+
_this.result = result;
|
|
215
|
+
(_a = _this.resolve) === null || _a === void 0 ? void 0 : _a.call(_this, result);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
216
218
|
})
|
|
217
219
|
.catch(function () { });
|
|
218
220
|
return returnedPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.cjs","sources":["cache/QueryReference.js","cache/SuspenseCache.js","cache/getSuspenseCache.js"],"sourcesContent":["import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { createFulfilledPromise, createRejectedPromise, } from \"../../../utilities/index.js\";\nimport { wrapPromiseWithState } from \"../../../utilities/index.js\";\nvar QUERY_REFERENCE_SYMBOL = Symbol();\nvar PROMISE_SYMBOL = Symbol();\nexport function wrapQueryRef(internalQueryRef) {\n var _a;\n var ref = (_a = {\n toPromise: function () {\n // We avoid resolving this promise with the query data because we want to\n // discourage using the server data directly from the queryRef. Instead,\n // the data should be accessed through `useReadQuery`. When the server\n // data is needed, its better to use `client.query()` directly.\n //\n // Here we resolve with the ref itself to make using this in React Router\n // or TanStack Router `loader` functions a bit more ergonomic e.g.\n //\n // function loader() {\n // return { queryRef: await preloadQuery(query).toPromise() }\n // }\n return getWrappedPromise(ref).then(function () { return ref; });\n }\n },\n _a[QUERY_REFERENCE_SYMBOL] = internalQueryRef,\n _a[PROMISE_SYMBOL] = internalQueryRef.promise,\n _a);\n return ref;\n}\nexport function getWrappedPromise(queryRef) {\n var internalQueryRef = unwrapQueryRef(queryRef);\n return internalQueryRef.promise.status === \"fulfilled\" ?\n internalQueryRef.promise\n : queryRef[PROMISE_SYMBOL];\n}\nexport function unwrapQueryRef(queryRef) {\n return queryRef[QUERY_REFERENCE_SYMBOL];\n}\nexport function updateWrappedQueryRef(queryRef, promise) {\n queryRef[PROMISE_SYMBOL] = promise;\n}\nvar OBSERVED_CHANGED_OPTIONS = [\n \"canonizeResults\",\n \"context\",\n \"errorPolicy\",\n \"fetchPolicy\",\n \"refetchWritePolicy\",\n \"returnPartialData\",\n];\nvar InternalQueryReference = /** @class */ (function () {\n function InternalQueryReference(observable, options) {\n var _this = this;\n this.key = {};\n this.listeners = new Set();\n this.references = 0;\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n this.setResult();\n this.subscribeToQuery();\n // Start a timer that will automatically dispose of the query if the\n // suspended resource does not use this queryRef in the given time. This\n // helps prevent memory leaks when a component has unmounted before the\n // query has finished loading.\n var startDisposeTimer = function () {\n var _a;\n if (!_this.references) {\n _this.autoDisposeTimeoutId = setTimeout(_this.dispose, (_a = options.autoDisposeTimeoutMs) !== null && _a !== void 0 ? _a : 30000);\n }\n };\n // We wait until the request has settled to ensure we don't dispose of the\n // query ref before the request finishes, otherwise we would leave the\n // promise in a pending state rendering the suspense boundary indefinitely.\n this.promise.then(startDisposeTimer, startDisposeTimer);\n }\n Object.defineProperty(InternalQueryReference.prototype, \"disposed\", {\n get: function () {\n return this.subscription.closed;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InternalQueryReference.prototype, \"watchQueryOptions\", {\n get: function () {\n return this.observable.options;\n },\n enumerable: false,\n configurable: true\n });\n InternalQueryReference.prototype.reinitialize = function () {\n var observable = this.observable;\n var originalFetchPolicy = this.watchQueryOptions.fetchPolicy;\n try {\n if (originalFetchPolicy !== \"no-cache\") {\n observable.resetLastResults();\n observable.silentSetOptions({ fetchPolicy: \"cache-first\" });\n }\n else {\n observable.silentSetOptions({ fetchPolicy: \"standby\" });\n }\n this.subscribeToQuery();\n if (originalFetchPolicy === \"no-cache\") {\n return;\n }\n observable.resetDiff();\n this.setResult();\n }\n finally {\n observable.silentSetOptions({ fetchPolicy: originalFetchPolicy });\n }\n };\n InternalQueryReference.prototype.retain = function () {\n var _this = this;\n this.references++;\n clearTimeout(this.autoDisposeTimeoutId);\n var disposed = false;\n return function () {\n if (disposed) {\n return;\n }\n disposed = true;\n _this.references--;\n // Wait before fully disposing in case the app is running in strict mode.\n setTimeout(function () {\n if (!_this.references) {\n _this.dispose();\n }\n });\n };\n };\n InternalQueryReference.prototype.didChangeOptions = function (watchQueryOptions) {\n var _this = this;\n return OBSERVED_CHANGED_OPTIONS.some(function (option) {\n return !equal(_this.watchQueryOptions[option], watchQueryOptions[option]);\n });\n };\n InternalQueryReference.prototype.applyOptions = function (watchQueryOptions) {\n var _a = this.watchQueryOptions, currentFetchPolicy = _a.fetchPolicy, currentCanonizeResults = _a.canonizeResults;\n // \"standby\" is used when `skip` is set to `true`. Detect when we've\n // enabled the query (i.e. `skip` is `false`) to execute a network request.\n if (currentFetchPolicy === \"standby\" &&\n currentFetchPolicy !== watchQueryOptions.fetchPolicy) {\n this.initiateFetch(this.observable.reobserve(watchQueryOptions));\n }\n else {\n this.observable.silentSetOptions(watchQueryOptions);\n if (currentCanonizeResults !== watchQueryOptions.canonizeResults) {\n this.result = __assign(__assign({}, this.result), this.observable.getCurrentResult());\n this.promise = createFulfilledPromise(this.result);\n }\n }\n return this.promise;\n };\n InternalQueryReference.prototype.listen = function (listener) {\n var _this = this;\n this.listeners.add(listener);\n return function () {\n _this.listeners.delete(listener);\n };\n };\n InternalQueryReference.prototype.refetch = function (variables) {\n return this.initiateFetch(this.observable.refetch(variables));\n };\n InternalQueryReference.prototype.fetchMore = function (options) {\n return this.initiateFetch(this.observable.fetchMore(options));\n };\n InternalQueryReference.prototype.dispose = function () {\n this.subscription.unsubscribe();\n this.onDispose();\n };\n InternalQueryReference.prototype.onDispose = function () {\n // noop. overridable by options\n };\n InternalQueryReference.prototype.handleNext = function (result) {\n var _a;\n switch (this.promise.status) {\n case \"pending\": {\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n (_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, result);\n break;\n }\n default: {\n // This occurs when switching to a result that is fully cached when this\n // class is instantiated. ObservableQuery will run reobserve when\n // subscribing, which delivers a result from the cache.\n if (result.data === this.result.data &&\n result.networkStatus === this.result.networkStatus) {\n return;\n }\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n break;\n }\n }\n };\n InternalQueryReference.prototype.handleError = function (error) {\n var _a;\n this.subscription.unsubscribe();\n this.subscription = this.observable.resubscribeAfterError(this.handleNext, this.handleError);\n switch (this.promise.status) {\n case \"pending\": {\n (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, error);\n break;\n }\n default: {\n this.promise = createRejectedPromise(error);\n this.deliver(this.promise);\n }\n }\n };\n InternalQueryReference.prototype.deliver = function (promise) {\n this.listeners.forEach(function (listener) { return listener(promise); });\n };\n InternalQueryReference.prototype.initiateFetch = function (returnedPromise) {\n var _this = this;\n this.promise = this.createPendingPromise();\n this.promise.catch(function () { });\n // If the data returned from the fetch is deeply equal to the data already\n // in the cache, `handleNext` will not be triggered leaving the promise we\n // created in a pending state forever. To avoid this situtation, we attempt\n // to resolve the promise if `handleNext` hasn't been run to ensure the\n // promise is resolved correctly.\n returnedPromise\n .then(function (result) {\n var _a;\n if (_this.promise.status === \"pending\") {\n _this.result = result;\n (_a = _this.resolve) === null || _a === void 0 ? void 0 : _a.call(_this, result);\n }\n })\n .catch(function () { });\n return returnedPromise;\n };\n InternalQueryReference.prototype.subscribeToQuery = function () {\n var _this = this;\n this.subscription = this.observable\n .filter(function (result) { return !equal(result.data, {}) && !equal(result, _this.result); })\n .subscribe(this.handleNext, this.handleError);\n };\n InternalQueryReference.prototype.setResult = function () {\n // Don't save this result as last result to prevent delivery of last result\n // when first subscribing\n var result = this.observable.getCurrentResult(false);\n if (equal(result, this.result)) {\n return;\n }\n this.result = result;\n this.promise =\n (result.data &&\n (!result.partial || this.watchQueryOptions.returnPartialData)) ?\n createFulfilledPromise(result)\n : this.createPendingPromise();\n };\n InternalQueryReference.prototype.createPendingPromise = function () {\n var _this = this;\n return wrapPromiseWithState(new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n }));\n };\n return InternalQueryReference;\n}());\nexport { InternalQueryReference };\n//# sourceMappingURL=QueryReference.js.map","import { Trie } from \"@wry/trie\";\nimport { canUseWeakMap } from \"../../../utilities/index.js\";\nimport { InternalQueryReference } from \"./QueryReference.js\";\nvar SuspenseCache = /** @class */ (function () {\n function SuspenseCache(options) {\n if (options === void 0) { options = Object.create(null); }\n this.queryRefs = new Trie(canUseWeakMap);\n this.options = options;\n }\n SuspenseCache.prototype.getQueryRef = function (cacheKey, createObservable) {\n var ref = this.queryRefs.lookupArray(cacheKey);\n if (!ref.current) {\n ref.current = new InternalQueryReference(createObservable(), {\n autoDisposeTimeoutMs: this.options.autoDisposeTimeoutMs,\n onDispose: function () {\n delete ref.current;\n },\n });\n }\n return ref.current;\n };\n return SuspenseCache;\n}());\nexport { SuspenseCache };\n//# sourceMappingURL=SuspenseCache.js.map","import { SuspenseCache } from \"./SuspenseCache.js\";\nvar suspenseCacheSymbol = Symbol.for(\"apollo.suspenseCache\");\nexport function getSuspenseCache(client) {\n var _a;\n if (!client[suspenseCacheSymbol]) {\n client[suspenseCacheSymbol] = new SuspenseCache((_a = client.defaultOptions.react) === null || _a === void 0 ? void 0 : _a.suspense);\n }\n return client[suspenseCacheSymbol];\n}\n//# sourceMappingURL=getSuspenseCache.js.map"],"names":["equal","__assign","createFulfilledPromise","createRejectedPromise","wrapPromiseWithState","Trie","canUseWeakMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"internal.cjs","sources":["cache/QueryReference.js","cache/SuspenseCache.js","cache/getSuspenseCache.js"],"sourcesContent":["import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { createFulfilledPromise, createRejectedPromise, } from \"../../../utilities/index.js\";\nimport { wrapPromiseWithState } from \"../../../utilities/index.js\";\nvar QUERY_REFERENCE_SYMBOL = Symbol();\nvar PROMISE_SYMBOL = Symbol();\nexport function wrapQueryRef(internalQueryRef) {\n var _a;\n var ref = (_a = {\n toPromise: function () {\n // We avoid resolving this promise with the query data because we want to\n // discourage using the server data directly from the queryRef. Instead,\n // the data should be accessed through `useReadQuery`. When the server\n // data is needed, its better to use `client.query()` directly.\n //\n // Here we resolve with the ref itself to make using this in React Router\n // or TanStack Router `loader` functions a bit more ergonomic e.g.\n //\n // function loader() {\n // return { queryRef: await preloadQuery(query).toPromise() }\n // }\n return getWrappedPromise(ref).then(function () { return ref; });\n }\n },\n _a[QUERY_REFERENCE_SYMBOL] = internalQueryRef,\n _a[PROMISE_SYMBOL] = internalQueryRef.promise,\n _a);\n return ref;\n}\nexport function getWrappedPromise(queryRef) {\n var internalQueryRef = unwrapQueryRef(queryRef);\n return internalQueryRef.promise.status === \"fulfilled\" ?\n internalQueryRef.promise\n : queryRef[PROMISE_SYMBOL];\n}\nexport function unwrapQueryRef(queryRef) {\n return queryRef[QUERY_REFERENCE_SYMBOL];\n}\nexport function updateWrappedQueryRef(queryRef, promise) {\n queryRef[PROMISE_SYMBOL] = promise;\n}\nvar OBSERVED_CHANGED_OPTIONS = [\n \"canonizeResults\",\n \"context\",\n \"errorPolicy\",\n \"fetchPolicy\",\n \"refetchWritePolicy\",\n \"returnPartialData\",\n];\nvar InternalQueryReference = /** @class */ (function () {\n function InternalQueryReference(observable, options) {\n var _this = this;\n this.key = {};\n this.listeners = new Set();\n this.references = 0;\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n this.setResult();\n this.subscribeToQuery();\n // Start a timer that will automatically dispose of the query if the\n // suspended resource does not use this queryRef in the given time. This\n // helps prevent memory leaks when a component has unmounted before the\n // query has finished loading.\n var startDisposeTimer = function () {\n var _a;\n if (!_this.references) {\n _this.autoDisposeTimeoutId = setTimeout(_this.dispose, (_a = options.autoDisposeTimeoutMs) !== null && _a !== void 0 ? _a : 30000);\n }\n };\n // We wait until the request has settled to ensure we don't dispose of the\n // query ref before the request finishes, otherwise we would leave the\n // promise in a pending state rendering the suspense boundary indefinitely.\n this.promise.then(startDisposeTimer, startDisposeTimer);\n }\n Object.defineProperty(InternalQueryReference.prototype, \"disposed\", {\n get: function () {\n return this.subscription.closed;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InternalQueryReference.prototype, \"watchQueryOptions\", {\n get: function () {\n return this.observable.options;\n },\n enumerable: false,\n configurable: true\n });\n InternalQueryReference.prototype.reinitialize = function () {\n var observable = this.observable;\n var originalFetchPolicy = this.watchQueryOptions.fetchPolicy;\n try {\n if (originalFetchPolicy !== \"no-cache\") {\n observable.resetLastResults();\n observable.silentSetOptions({ fetchPolicy: \"cache-first\" });\n }\n else {\n observable.silentSetOptions({ fetchPolicy: \"standby\" });\n }\n this.subscribeToQuery();\n if (originalFetchPolicy === \"no-cache\") {\n return;\n }\n observable.resetDiff();\n this.setResult();\n }\n finally {\n observable.silentSetOptions({ fetchPolicy: originalFetchPolicy });\n }\n };\n InternalQueryReference.prototype.retain = function () {\n var _this = this;\n this.references++;\n clearTimeout(this.autoDisposeTimeoutId);\n var disposed = false;\n return function () {\n if (disposed) {\n return;\n }\n disposed = true;\n _this.references--;\n // Wait before fully disposing in case the app is running in strict mode.\n setTimeout(function () {\n if (!_this.references) {\n _this.dispose();\n }\n });\n };\n };\n InternalQueryReference.prototype.didChangeOptions = function (watchQueryOptions) {\n var _this = this;\n return OBSERVED_CHANGED_OPTIONS.some(function (option) {\n return !equal(_this.watchQueryOptions[option], watchQueryOptions[option]);\n });\n };\n InternalQueryReference.prototype.applyOptions = function (watchQueryOptions) {\n var _a = this.watchQueryOptions, currentFetchPolicy = _a.fetchPolicy, currentCanonizeResults = _a.canonizeResults;\n // \"standby\" is used when `skip` is set to `true`. Detect when we've\n // enabled the query (i.e. `skip` is `false`) to execute a network request.\n if (currentFetchPolicy === \"standby\" &&\n currentFetchPolicy !== watchQueryOptions.fetchPolicy) {\n this.initiateFetch(this.observable.reobserve(watchQueryOptions));\n }\n else {\n this.observable.silentSetOptions(watchQueryOptions);\n if (currentCanonizeResults !== watchQueryOptions.canonizeResults) {\n this.result = __assign(__assign({}, this.result), this.observable.getCurrentResult());\n this.promise = createFulfilledPromise(this.result);\n }\n }\n return this.promise;\n };\n InternalQueryReference.prototype.listen = function (listener) {\n var _this = this;\n this.listeners.add(listener);\n return function () {\n _this.listeners.delete(listener);\n };\n };\n InternalQueryReference.prototype.refetch = function (variables) {\n return this.initiateFetch(this.observable.refetch(variables));\n };\n InternalQueryReference.prototype.fetchMore = function (options) {\n return this.initiateFetch(this.observable.fetchMore(options));\n };\n InternalQueryReference.prototype.dispose = function () {\n this.subscription.unsubscribe();\n this.onDispose();\n };\n InternalQueryReference.prototype.onDispose = function () {\n // noop. overridable by options\n };\n InternalQueryReference.prototype.handleNext = function (result) {\n var _a;\n switch (this.promise.status) {\n case \"pending\": {\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n (_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, result);\n break;\n }\n default: {\n // This occurs when switching to a result that is fully cached when this\n // class is instantiated. ObservableQuery will run reobserve when\n // subscribing, which delivers a result from the cache.\n if (result.data === this.result.data &&\n result.networkStatus === this.result.networkStatus) {\n return;\n }\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n break;\n }\n }\n };\n InternalQueryReference.prototype.handleError = function (error) {\n var _a;\n this.subscription.unsubscribe();\n this.subscription = this.observable.resubscribeAfterError(this.handleNext, this.handleError);\n switch (this.promise.status) {\n case \"pending\": {\n (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, error);\n break;\n }\n default: {\n this.promise = createRejectedPromise(error);\n this.deliver(this.promise);\n }\n }\n };\n InternalQueryReference.prototype.deliver = function (promise) {\n this.listeners.forEach(function (listener) { return listener(promise); });\n };\n InternalQueryReference.prototype.initiateFetch = function (returnedPromise) {\n var _this = this;\n this.promise = this.createPendingPromise();\n this.promise.catch(function () { });\n // If the data returned from the fetch is deeply equal to the data already\n // in the cache, `handleNext` will not be triggered leaving the promise we\n // created in a pending state forever. To avoid this situtation, we attempt\n // to resolve the promise if `handleNext` hasn't been run to ensure the\n // promise is resolved correctly.\n returnedPromise\n .then(function (result) {\n // In the case of `fetchMore`, this promise is resolved before a cache\n // result is emitted due to the fact that `fetchMore` sets a `no-cache`\n // fetch policy and runs `cache.batch` in its `.then` handler. Because\n // the timing is different, we accidentally run this update twice\n // causing an additional re-render with the `fetchMore` result by\n // itself. By wrapping in `setTimeout`, this should provide a short\n // delay to allow the `QueryInfo.notify` handler to run before this\n // promise is checked.\n // See https://github.com/apollographql/apollo-client/issues/11315 for\n // more information\n setTimeout(function () {\n var _a;\n if (_this.promise.status === \"pending\") {\n _this.result = result;\n (_a = _this.resolve) === null || _a === void 0 ? void 0 : _a.call(_this, result);\n }\n });\n })\n .catch(function () { });\n return returnedPromise;\n };\n InternalQueryReference.prototype.subscribeToQuery = function () {\n var _this = this;\n this.subscription = this.observable\n .filter(function (result) { return !equal(result.data, {}) && !equal(result, _this.result); })\n .subscribe(this.handleNext, this.handleError);\n };\n InternalQueryReference.prototype.setResult = function () {\n // Don't save this result as last result to prevent delivery of last result\n // when first subscribing\n var result = this.observable.getCurrentResult(false);\n if (equal(result, this.result)) {\n return;\n }\n this.result = result;\n this.promise =\n (result.data &&\n (!result.partial || this.watchQueryOptions.returnPartialData)) ?\n createFulfilledPromise(result)\n : this.createPendingPromise();\n };\n InternalQueryReference.prototype.createPendingPromise = function () {\n var _this = this;\n return wrapPromiseWithState(new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n }));\n };\n return InternalQueryReference;\n}());\nexport { InternalQueryReference };\n//# sourceMappingURL=QueryReference.js.map","import { Trie } from \"@wry/trie\";\nimport { canUseWeakMap } from \"../../../utilities/index.js\";\nimport { InternalQueryReference } from \"./QueryReference.js\";\nvar SuspenseCache = /** @class */ (function () {\n function SuspenseCache(options) {\n if (options === void 0) { options = Object.create(null); }\n this.queryRefs = new Trie(canUseWeakMap);\n this.options = options;\n }\n SuspenseCache.prototype.getQueryRef = function (cacheKey, createObservable) {\n var ref = this.queryRefs.lookupArray(cacheKey);\n if (!ref.current) {\n ref.current = new InternalQueryReference(createObservable(), {\n autoDisposeTimeoutMs: this.options.autoDisposeTimeoutMs,\n onDispose: function () {\n delete ref.current;\n },\n });\n }\n return ref.current;\n };\n return SuspenseCache;\n}());\nexport { SuspenseCache };\n//# sourceMappingURL=SuspenseCache.js.map","import { SuspenseCache } from \"./SuspenseCache.js\";\nvar suspenseCacheSymbol = Symbol.for(\"apollo.suspenseCache\");\nexport function getSuspenseCache(client) {\n var _a;\n if (!client[suspenseCacheSymbol]) {\n client[suspenseCacheSymbol] = new SuspenseCache((_a = client.defaultOptions.react) === null || _a === void 0 ? void 0 : _a.suspense);\n }\n return client[suspenseCacheSymbol];\n}\n//# sourceMappingURL=getSuspenseCache.js.map"],"names":["equal","__assign","createFulfilledPromise","createRejectedPromise","wrapPromiseWithState","Trie","canUseWeakMap"],"mappings":"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"}
|
|
@@ -208,11 +208,13 @@ var InternalQueryReference = (function () {
|
|
|
208
208
|
this.promise.catch(function () { });
|
|
209
209
|
returnedPromise
|
|
210
210
|
.then(function (result) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
_this.
|
|
214
|
-
|
|
215
|
-
|
|
211
|
+
setTimeout(function () {
|
|
212
|
+
var _a;
|
|
213
|
+
if (_this.promise.status === "pending") {
|
|
214
|
+
_this.result = result;
|
|
215
|
+
(_a = _this.resolve) === null || _a === void 0 ? void 0 : _a.call(_this, result);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
216
218
|
})
|
|
217
219
|
.catch(function () { });
|
|
218
220
|
return returnedPromise;
|
package/testing/core/core.cjs
CHANGED
|
@@ -91,8 +91,8 @@ var MockLink = (function (_super) {
|
|
|
91
91
|
response.result = newData(operation.variables);
|
|
92
92
|
mockedResponses.push(response);
|
|
93
93
|
}
|
|
94
|
-
if (!response.result && !response.error) {
|
|
95
|
-
configError = new Error("Mocked response should contain either result or
|
|
94
|
+
if (!response.result && !response.error && response.delay !== Infinity) {
|
|
95
|
+
configError = new Error("Mocked response should contain either `result`, `error` or a `delay` of `Infinity`: ".concat(key));
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
return new utilities.Observable(function (observer) {
|