@apollo/client 3.5.3 → 3.6.0-beta.2
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/apollo-client.cjs +95 -133
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/core/core.cjs +5 -5
- package/core/core.cjs.map +1 -1
- package/invariantErrorCodes.js +1 -1
- package/main.cjs +4 -4
- package/package.json +15 -10
- package/react/components/components.cjs +3 -3
- package/react/context/context.cjs +3 -3
- package/react/hoc/hoc.cjs +4 -4
- package/react/hooks/hooks.cjs +89 -127
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/useLazyQuery.d.ts.map +1 -1
- package/react/hooks/useLazyQuery.js.map +1 -1
- package/react/hooks/useMutation.d.ts.map +1 -1
- package/react/hooks/useMutation.js +7 -4
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.d.ts.map +1 -1
- package/react/hooks/useQuery.js +82 -123
- package/react/hooks/useQuery.js.map +1 -1
- package/react/react.cjs +2 -2
- package/react/ssr/RenderPromises.d.ts +2 -2
- package/react/ssr/RenderPromises.d.ts.map +1 -1
- package/react/ssr/RenderPromises.js +5 -7
- package/react/ssr/RenderPromises.js.map +1 -1
- package/react/ssr/ssr.cjs +8 -10
- package/react/ssr/ssr.cjs.map +1 -1
- package/testing/testing.cjs +5 -5
- package/utilities/globals/fix-graphql.js +1 -1
- package/version.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { equal } from '@wry/equality';\nimport { OperationVariables } from '../../core';\nimport { getApolloContext } from '../context';\nimport { ApolloError } from '../../errors';\nimport {\n ApolloQueryResult,\n NetworkStatus,\n ObservableQuery,\n DocumentNode,\n TypedDocumentNode,\n WatchQueryOptions,\n} from '../../core';\nimport {\n QueryHookOptions,\n QueryResult,\n} from '../types/types';\n\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport { useApolloClient } from './useApolloClient';\n\nexport function useQuery<\n TData = any,\n TVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: QueryHookOptions<TData, TVariables>,\n): QueryResult<TData, TVariables> {\n const context = useContext(getApolloContext());\n const client = useApolloClient(options?.client);\n verifyDocumentType(query, DocumentType.Query);\n const [obsQuery, setObsQuery] = useState(() => {\n const watchQueryOptions = createWatchQueryOptions(query, options);\n // See if there is an existing observable that was used to fetch the same\n // data and if so, use it instead since it will contain the proper queryId\n // to fetch the result set. This is used during SSR.\n let obsQuery: ObservableQuery<TData, TVariables> | null = null;\n if (context.renderPromises) {\n obsQuery = context.renderPromises.getSSRObservable(watchQueryOptions);\n }\n\n if (!obsQuery) {\n // Is it safe (StrictMode/memory-wise) to call client.watchQuery here?\n obsQuery = client.watchQuery(watchQueryOptions);\n if (context.renderPromises) {\n context.renderPromises.registerSSRObservable(\n obsQuery,\n watchQueryOptions,\n );\n }\n }\n\n if (\n context.renderPromises &&\n options?.ssr !== false &&\n !options?.skip &&\n obsQuery.getCurrentResult().loading\n ) {\n // TODO: This is a legacy API which could probably be cleaned up\n context.renderPromises.addQueryPromise(\n {\n // The only options which seem to actually be used by the\n // RenderPromises class are query and variables.\n getOptions: () => createWatchQueryOptions(query, options),\n fetchData: () => new Promise<void>((resolve) => {\n const sub = obsQuery!.subscribe({\n next(result) {\n if (!result.loading) {\n resolve()\n sub.unsubscribe();\n }\n },\n error() {\n resolve();\n sub.unsubscribe();\n },\n complete() {\n resolve();\n },\n });\n }),\n },\n // This callback never seemed to do anything\n () => null,\n );\n }\n\n return obsQuery;\n });\n\n let [result, setResult] = useState(() => {\n const result = obsQuery.getCurrentResult();\n if (!result.loading && options) {\n if (result.error) {\n options.onError?.(result.error);\n } else if (result.data) {\n options.onCompleted?.(result.data);\n }\n }\n\n return result;\n });\n\n const ref = useRef({\n client,\n query,\n options,\n result,\n previousData: void 0 as TData | undefined,\n watchQueryOptions: createWatchQueryOptions(query, options),\n });\n\n // An effect to recreate the obsQuery whenever the client or query changes.\n // This effect is also responsible for checking and updating the obsQuery\n // options whenever they change.\n useEffect(() => {\n const watchQueryOptions = createWatchQueryOptions(query, options);\n let nextResult: ApolloQueryResult<TData> | undefined;\n if (ref.current.client !== client || !equal(ref.current.query, query)) {\n const obsQuery = client.watchQuery(watchQueryOptions);\n setObsQuery(obsQuery);\n nextResult = obsQuery.getCurrentResult();\n } else if (!equal(ref.current.watchQueryOptions, watchQueryOptions)) {\n obsQuery.setOptions(watchQueryOptions).catch(() => {});\n nextResult = obsQuery.getCurrentResult();\n ref.current.watchQueryOptions = watchQueryOptions;\n }\n\n if (nextResult) {\n const previousResult = ref.current.result;\n if (previousResult.data) {\n ref.current.previousData = previousResult.data;\n }\n\n setResult(ref.current.result = nextResult);\n if (!nextResult.loading && options) {\n if (!result.loading) {\n if (result.error) {\n options.onError?.(result.error);\n } else if (result.data) {\n options.onCompleted?.(result.data);\n }\n }\n }\n }\n\n Object.assign(ref.current, { client, query, options });\n }, [obsQuery, client, query, options]);\n\n // An effect to subscribe to the current observable query\n useEffect(() => {\n if (context.renderPromises) {\n return;\n }\n\n let subscription = obsQuery.subscribe(onNext, onError);\n // We use `getCurrentResult()` instead of the callback argument because\n // the values differ slightly. Specifically, loading results will have\n // an empty object for data instead of `undefined` for some reason.\n function onNext() {\n const previousResult = ref.current.result;\n const result = obsQuery.getCurrentResult();\n // Make sure we're not attempting to re-render similar results\n if (\n previousResult &&\n previousResult.loading === result.loading &&\n previousResult.networkStatus === result.networkStatus &&\n equal(previousResult.data, result.data)\n ) {\n return;\n }\n\n if (previousResult.data) {\n ref.current.previousData = previousResult.data;\n }\n\n setResult(ref.current.result = result);\n if (!result.loading) {\n ref.current.options?.onCompleted?.(result.data);\n }\n }\n\n function onError(error: Error) {\n const last = obsQuery[\"last\"];\n subscription.unsubscribe();\n // Unfortunately, if `lastError` is set in the current\n // `observableQuery` when the subscription is re-created,\n // the subscription will immediately receive the error, which will\n // cause it to terminate again. To avoid this, we first clear\n // the last error/result from the `observableQuery` before re-starting\n // the subscription, and restore it afterwards (so the subscription\n // has a chance to stay open).\n try {\n obsQuery.resetLastResults();\n subscription = obsQuery.subscribe(onNext, onError);\n } finally {\n obsQuery[\"last\"] = last;\n }\n\n if (!error.hasOwnProperty('graphQLErrors')) {\n // The error is not a GraphQL error\n throw error;\n }\n\n const previousResult = ref.current.result;\n if (\n (previousResult && previousResult.loading) ||\n !equal(error, previousResult.error)\n ) {\n setResult(ref.current.result = {\n data: previousResult.data,\n error: error as ApolloError,\n loading: false,\n networkStatus: NetworkStatus.error,\n });\n ref.current.options?.onError?.(error as ApolloError);\n }\n }\n\n return () => subscription.unsubscribe();\n }, [obsQuery, context.renderPromises, client.disableNetworkFetches]);\n\n let partial: boolean | undefined;\n ({ partial, ...result } = result);\n\n {\n // BAD BOY CODE BLOCK WHERE WE PUT SIDE-EFFECTS IN THE RENDER FUNCTION\n //\n // TODO: This code should be removed when the partialRefetch option is\n // removed. I was unable to get this hook to behave reasonably in certain\n // edge cases when this block was put in an effect.\n if (\n partial &&\n options?.partialRefetch &&\n !result.loading &&\n (!result.data || Object.keys(result.data).length === 0) &&\n obsQuery.options.fetchPolicy !== 'cache-only'\n ) {\n result = {\n ...result,\n loading: true,\n networkStatus: NetworkStatus.refetch,\n };\n\n obsQuery.refetch();\n }\n\n // TODO: This is a hack to make sure useLazyQuery executions update the\n // obsevable query options for ssr.\n if (\n context.renderPromises &&\n options?.ssr !== false &&\n !options?.skip &&\n result.loading\n ) {\n obsQuery.setOptions(createWatchQueryOptions(query, options)).catch(() => {});\n }\n }\n\n if (\n (context.renderPromises || client.disableNetworkFetches) &&\n options?.ssr === false\n ) {\n // If SSR has been explicitly disabled, and this function has been called\n // on the server side, return the default loading state.\n result = ref.current.result = {\n loading: true,\n data: void 0 as unknown as TData,\n error: void 0,\n networkStatus: NetworkStatus.loading,\n };\n } else if (options?.skip || options?.fetchPolicy === 'standby') {\n // When skipping a query (ie. we're not querying for data but still want to\n // render children), make sure the `data` is cleared out and `loading` is\n // set to `false` (since we aren't loading anything).\n //\n // NOTE: We no longer think this is the correct behavior. Skipping should\n // not automatically set `data` to `undefined`, but instead leave the\n // previous data in place. In other words, skipping should not mandate that\n // previously received data is all of a sudden removed. Unfortunately,\n // changing this is breaking, so we'll have to wait until Apollo Client 4.0\n // to address this.\n result = {\n loading: false,\n data: void 0 as unknown as TData,\n error: void 0,\n networkStatus: NetworkStatus.ready,\n };\n }\n\n if (result.errors && result.errors.length) {\n // Until a set naming convention for networkError and graphQLErrors is\n // decided upon, we map errors (graphQLErrors) to the error options.\n // TODO: Is it possible for both result.error and result.errors to be\n // defined here?\n result = {\n ...result,\n error: result.error || new ApolloError({ graphQLErrors: result.errors }),\n };\n }\n\n const obsQueryFields = useMemo(() => ({\n refetch: obsQuery.refetch.bind(obsQuery),\n fetchMore: obsQuery.fetchMore.bind(obsQuery),\n updateQuery: obsQuery.updateQuery.bind(obsQuery),\n startPolling: obsQuery.startPolling.bind(obsQuery),\n stopPolling: obsQuery.stopPolling.bind(obsQuery),\n subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),\n }), [obsQuery]);\n\n return {\n ...obsQueryFields,\n variables: obsQuery.variables,\n client,\n called: true,\n previousData: ref.current.previousData,\n ...result,\n };\n}\n\nfunction createWatchQueryOptions<TData, TVariables>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: QueryHookOptions<TData, TVariables> = {},\n): WatchQueryOptions<TVariables, TData> {\n // TODO: For some reason, we pass context, which is the React Apollo Context,\n // into observable queries, and test for that.\n // removing hook specific options\n const {\n skip,\n ssr,\n onCompleted,\n onError,\n displayName,\n ...watchQueryOptions\n } = options;\n\n if (skip) {\n watchQueryOptions.fetchPolicy = 'standby';\n } else if (\n watchQueryOptions.context?.renderPromises &&\n (\n watchQueryOptions.fetchPolicy === 'network-only' ||\n watchQueryOptions.fetchPolicy === 'cache-and-network'\n )\n ) {\n // this behavior was added to react-apollo without explanation in this PR\n // https://github.com/apollographql/react-apollo/pull/1579\n watchQueryOptions.fetchPolicy = 'cache-first';\n } else if (!watchQueryOptions.fetchPolicy) {\n // cache-first is the default policy, but we explicitly assign it here so\n // the cache policies computed based on options can be cleared\n watchQueryOptions.fetchPolicy = 'cache-first';\n }\n\n return { query, ...watchQueryOptions };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useQuery.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAEL,aAAa,GAKd,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,QAAQ,CAItB,KAA0D,EAC1D,OAA6C;;IAE7C,IAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/C,IAAM,MAAM,GAAG,eAAe,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,CAAC;IAChD,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAM,GAAG,GAAG,MAAM,CAAC;QACjB,MAAM,QAAA;QACN,KAAK,OAAA;QACL,OAAO,SAAA;QACP,iBAAiB,EAAE,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC;KAC3D,CAAC,CAAC;IAEG,IAAA,KAA0B,QAAQ,CAAC;QACvC,IAAM,iBAAiB,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAIlE,IAAI,QAAQ,GAA8C,IAAI,CAAC;QAC/D,IAAI,OAAO,CAAC,cAAc,EAAE;YAC1B,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,QAAQ,EAAE;YAEb,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,cAAc,EAAE;gBAC1B,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAC1C,QAAQ,EACR,iBAAiB,CAClB,CAAC;aACH;SACF;QAED,IACE,OAAO,CAAC,cAAc;YACtB,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,MAAK,KAAK;YACtB,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAA;YACd,QAAQ,CAAC,gBAAgB,EAAE,CAAC,OAAO,EACnC;YAEA,OAAO,CAAC,cAAc,CAAC,eAAe,CACpC;gBAGE,UAAU,EAAE,cAAM,OAAA,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAvC,CAAuC;gBACzD,SAAS,EAAE,cAAM,OAAA,IAAI,OAAO,CAAO,UAAC,OAAO;oBACzC,IAAM,GAAG,GAAG,QAAS,CAAC,SAAS,CAAC;wBAC9B,IAAI,YAAC,MAAM;4BACT,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gCACnB,OAAO,EAAE,CAAA;gCACT,GAAG,CAAC,WAAW,EAAE,CAAC;6BACnB;wBACH,CAAC;wBACD,KAAK;4BACH,OAAO,EAAE,CAAC;4BACV,GAAG,CAAC,WAAW,EAAE,CAAC;wBACpB,CAAC;wBACD,QAAQ;4BAEN,OAAO,EAAE,CAAC;wBACZ,CAAC;qBACF,CAAC,CAAC;gBACL,CAAC,CAAC,EAjBe,CAiBf;aACH,EAED,cAAM,OAAA,IAAI,EAAJ,CAAI,CACX,CAAC;SACH;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,EA1DK,QAAQ,QAAA,EAAE,WAAW,QA0D1B,CAAC;IAKH,SAAS,CAAC;QACR,IAAM,iBAAiB,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACrE,IAAM,UAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YACtD,WAAW,CAAC,UAAQ,CAAC,CAAC;SACvB;aAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE;YACnE,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAEvC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACvB;QAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;YACzB,MAAM,QAAA;YACN,KAAK,OAAA;YACL,OAAO,SAAA;YACP,iBAAiB,mBAAA;SAClB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjC,IAAA,KAA2B,OAAO,CAAC;QACvC,IAAI,cAAoD,CAAC;QACzD,IAAM,SAAS,GAAG,UAAC,WAAuB;YACxC,IAAI,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC5D,SAAS,OAAO,CAAC,KAAY;gBAC3B,WAAW,EAAE,CAAC;gBACd,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC3B,IAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9B,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACzC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;oBAE1C,MAAM,KAAK,CAAC;iBACb;YACH,CAAC;YAED,OAAO;gBACL,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAM,WAAW,GAAG;YAClB,IAAI,MAAM,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gBAKzC,MAAM,yBACD,MAAM,KACT,KAAK,EACH,MAAM,CAAC,KAAK,IAAI,IAAI,WAAW,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GACpE,CAAC;aACH;YAED,IACE,CAAC,cAAc;gBACf,cAAc,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;gBACzC,cAAc,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;gBACrD,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;gBACxC,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAC1C;gBACA,IAAI,cAAc,EAAE;oBAClB,MAAM,GAAG,sBACJ,MAAM,KACT,YAAY,EAAE,cAAc,CAAC,IAAI,IAAK,cAAsB,CAAC,YAAY,GAC9C,CAAC;iBAC/B;gBAED,cAAc,GAAG,MAAM,CAAC;aACzB;YAED,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAzDP,SAAS,QAAA,EAAE,WAAW,QAyDf,CAAC;IAEf,IAAM,eAAe,GAAG,OAAO,CAAC,cAAM,OAAA,CAAC;QACrC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC5C,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChD,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClD,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChD,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;KACzD,CAAC,EAPoC,CAOpC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhB,IAAI,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvE,SAAS,CAAC;;QACR,IACE,CAAA,MAAA,GAAG,CAAC,OAAO,CAAC,OAAO,0CAAE,IAAI;YACzB,CAAA,MAAA,GAAG,CAAC,OAAO,CAAC,OAAO,0CAAE,WAAW,MAAK,SAAS,EAC9C;YACA,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,MAAA,MAAA,GAAG,CAAC,OAAO,CAAC,OAAO,0CAAE,OAAO,mDAAG,MAAM,CAAC,KAAK,CAAC,CAAC;aAC9C;iBAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACtB,MAAA,MAAA,GAAG,CAAC,OAAO,CAAC,OAAO,0CAAE,WAAW,mDAAG,MAAM,CAAC,IAAI,CAAC,CAAC;aACjD;SACF;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAI,OAA4B,CAAC;IACjC,CAAC,KAAyB,MAAM,EAA7B,OAAO,aAAA,EAAK,MAAM,cAApB,WAAsB,CAAF,CAAY,CAAC;IAClC,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,MAAK,SAAS,EAAE;QAWvD,MAAM,GAAG;YACP,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK,CAAqB;YAChC,KAAK,EAAE,KAAK,CAAC;YACb,aAAa,EAAE,aAAa,CAAC,KAAK;SACnC,CAAC;KACH;SAAM;QAKL,IACE,OAAO;aACP,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAA;YACvB,CAAC,MAAM,CAAC,OAAO;YACf,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YACvD,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,YAAY,EAC7C;YACA,MAAM,yBACD,MAAM,KACT,OAAO,EAAE,IAAI,EACb,aAAa,EAAE,aAAa,CAAC,OAAO,GACrC,CAAC;YAEF,QAAQ,CAAC,OAAO,EAAE,CAAC;SACpB;QAID,IAAI,OAAO,CAAC,cAAc,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,MAAK,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE;YACtE,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;iBACzD,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;SACpB;KACF;IAED,sCACK,eAAe,KAClB,SAAS,EAAE,QAAQ,CAAC,SAAS,EAC7B,MAAM,QAAA,EACN,MAAM,EAAE,IAAI,KACT,MAAM,EACT;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAA0D,EAC1D,OAAiD;;IAAjD,wBAAA,EAAA,YAAiD;IAI/C,IAAA,IAAI,GAMF,OAAO,KANL,EACJ,GAAG,GAKD,OAAO,IALN,EACH,WAAW,GAIT,OAAO,YAJE,EACX,OAAO,GAGL,OAAO,QAHF,EACP,WAAW,GAET,OAAO,YAFE,EACR,iBAAiB,UAClB,OAAO,EAPL,wDAOL,CADqB,CACV;IAIZ,IAAI,IAAI,EAAE;QACR,iBAAiB,CAAC,WAAW,GAAG,SAAS,CAAC;KAC3C;SAAM,IACL,CAAA,MAAA,iBAAiB,CAAC,OAAO,0CAAE,cAAc;QACzC,CACE,iBAAiB,CAAC,WAAW,KAAK,cAAc;YAChD,iBAAiB,CAAC,WAAW,KAAK,mBAAmB,CACtD,EACD;QAGA,iBAAiB,CAAC,WAAW,GAAG,aAAa,CAAC;KAC/C;SAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;QAGzC,iBAAiB,CAAC,WAAW,GAAG,aAAa,CAAC;KAC/C;IAED,kBAAS,KAAK,OAAA,IAAK,iBAAiB,EAAG;AACzC,CAAC","sourcesContent":["import { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { equal } from '@wry/equality';\nimport { OperationVariables } from '../../core';\nimport { getApolloContext } from '../context';\nimport { ApolloError } from '../../errors';\nimport {\n ApolloQueryResult,\n NetworkStatus,\n ObservableQuery,\n DocumentNode,\n TypedDocumentNode,\n WatchQueryOptions,\n} from '../../core';\nimport {\n QueryHookOptions,\n QueryResult,\n} from '../types/types';\n\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport { useApolloClient } from './useApolloClient';\n\nexport function useQuery<\n TData = any,\n TVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: QueryHookOptions<TData, TVariables>,\n): QueryResult<TData, TVariables> {\n const context = useContext(getApolloContext());\n const client = useApolloClient(options?.client);\n verifyDocumentType(query, DocumentType.Query);\n const ref = useRef({\n client,\n query,\n options,\n watchQueryOptions: createWatchQueryOptions(query, options),\n });\n\n const [obsQuery, setObsQuery] = useState(() => {\n const watchQueryOptions = createWatchQueryOptions(query, options);\n // See if there is an existing observable that was used to fetch the same\n // data and if so, use it instead since it will contain the proper queryId\n // to fetch the result set. This is used during SSR.\n let obsQuery: ObservableQuery<TData, TVariables> | null = null;\n if (context.renderPromises) {\n obsQuery = context.renderPromises.getSSRObservable(watchQueryOptions);\n }\n\n if (!obsQuery) {\n // Is it safe (StrictMode/memory-wise) to call client.watchQuery here?\n obsQuery = client.watchQuery(watchQueryOptions);\n if (context.renderPromises) {\n context.renderPromises.registerSSRObservable(\n obsQuery,\n watchQueryOptions,\n );\n }\n }\n\n if (\n context.renderPromises &&\n options?.ssr !== false &&\n !options?.skip &&\n obsQuery.getCurrentResult().loading\n ) {\n // TODO: This is a legacy API which could probably be cleaned up\n context.renderPromises.addQueryPromise(\n {\n // The only options which seem to actually be used by the\n // RenderPromises class are query and variables.\n getOptions: () => createWatchQueryOptions(query, options),\n fetchData: () => new Promise<void>((resolve) => {\n const sub = obsQuery!.subscribe({\n next(result) {\n if (!result.loading) {\n resolve()\n sub.unsubscribe();\n }\n },\n error() {\n resolve();\n sub.unsubscribe();\n },\n complete() {\n // TODO: Does this branch ever get called before next() and error()?\n resolve();\n },\n });\n }),\n },\n // This callback never seemed to do anything\n () => null,\n );\n }\n\n return obsQuery;\n });\n\n // An effect to recreate the obsQuery whenever the client or query changes.\n // This effect is also responsible for updating the obsQuery options whenever\n // they change.\n useEffect(() => {\n const watchQueryOptions = createWatchQueryOptions(query, options);\n if (ref.current.client !== client || !equal(ref.current.query, query)) {\n const obsQuery = client.watchQuery(watchQueryOptions);\n setObsQuery(obsQuery);\n } else if (!equal(ref.current.watchQueryOptions, watchQueryOptions)) {\n obsQuery.setOptions(watchQueryOptions);\n // We call setObsQuery to rerender the hook.\n setObsQuery(obsQuery);\n }\n\n Object.assign(ref.current, {\n client,\n query,\n options,\n watchQueryOptions,\n });\n }, [obsQuery, client, query, options]);\n\n const [subscribe, getSnapshot] = useMemo(() => {\n let previousResult: ApolloQueryResult<TData> | undefined;\n const subscribe = (forceUpdate: () => void) => {\n let subscription = obsQuery.subscribe(forceUpdate, onError);\n function onError(error: Error) {\n forceUpdate();\n subscription.unsubscribe();\n const last = obsQuery[\"last\"];\n obsQuery.resetLastResults();\n obsQuery.subscribe(forceUpdate, onError);\n obsQuery[\"last\"] = last;\n if (!error.hasOwnProperty('graphQLErrors')) {\n // The error is not a GraphQL error\n throw error;\n }\n }\n\n return () => {\n subscription.unsubscribe();\n };\n };\n\n const getSnapshot = () => {\n let result = obsQuery.getCurrentResult();\n if (result.errors && result.errors.length) {\n // Until a set naming convention for networkError and graphQLErrors is\n // decided upon, we map errors (graphQLErrors) to the error options.\n // TODO: Is it possible for both result.error and result.errors to be\n // defined here?\n result = {\n ...result,\n error:\n result.error || new ApolloError({ graphQLErrors: result.errors }),\n };\n }\n\n if (\n !previousResult ||\n previousResult.loading !== result.loading ||\n previousResult.networkStatus !== result.networkStatus ||\n !equal(previousResult.data, result.data) ||\n !equal(previousResult.error, result.error)\n ) {\n if (previousResult) {\n result = {\n ...result,\n previousData: previousResult.data || (previousResult as any).previousData,\n } as ApolloQueryResult<TData>;\n }\n\n previousResult = result;\n }\n\n return previousResult;\n };\n\n return [subscribe, getSnapshot];\n }, [obsQuery]);\n\n const obsQueryMethods = useMemo(() => ({\n refetch: obsQuery.refetch.bind(obsQuery),\n fetchMore: obsQuery.fetchMore.bind(obsQuery),\n updateQuery: obsQuery.updateQuery.bind(obsQuery),\n startPolling: obsQuery.startPolling.bind(obsQuery),\n stopPolling: obsQuery.stopPolling.bind(obsQuery),\n subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),\n }), [obsQuery]);\n\n let result = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n useEffect(() => {\n if (\n ref.current.options?.skip ||\n ref.current.options?.fetchPolicy === 'standby'\n ) {\n return;\n }\n\n if (!result.loading) {\n if (result.error) {\n ref.current.options?.onError?.(result.error);\n } else if (result.data) {\n ref.current.options?.onCompleted?.(result.data);\n }\n }\n }, [result]);\n\n let partial: boolean | undefined;\n ({ partial, ...result } = result);\n if (options?.skip || options?.fetchPolicy === 'standby') {\n // When skipping a query (ie. we're not querying for data but still want to\n // render children), make sure the `data` is cleared out and `loading` is\n // set to `false` (since we aren't loading anything).\n //\n // NOTE: We no longer think this is the correct behavior. Skipping should\n // not automatically set `data` to `undefined`, but instead leave the\n // previous data in place. In other words, skipping should not mandate that\n // previously received data is all of a sudden removed. Unfortunately,\n // changing this is breaking, so we'll have to wait until Apollo Client 4.0\n // to address this.\n result = {\n loading: false,\n data: void 0 as unknown as TData,\n error: void 0,\n networkStatus: NetworkStatus.ready,\n };\n } else {\n // BAD BOY CODE BLOCK WHERE WE PUT SIDE-EFFECTS IN THE RENDER FUNCTION\n // TODO: This code should be removed when the partialRefetch option is\n // removed. I was unable to get this hook to behave reasonably in certain\n // edge cases when this block was put in an effect.\n if (\n partial &&\n options?.partialRefetch &&\n !result.loading &&\n (!result.data || Object.keys(result.data).length === 0) &&\n obsQuery.options.fetchPolicy !== 'cache-only'\n ) {\n result = {\n ...result,\n loading: true,\n networkStatus: NetworkStatus.refetch,\n };\n\n obsQuery.refetch();\n }\n\n // TODO: This is a hack to make sure useLazyQuery executions update the\n // obsevable query options for ssr.\n if (context.renderPromises && options?.ssr !== false && result.loading) {\n obsQuery.setOptions(createWatchQueryOptions(query, options))\n .catch(() => {});\n }\n }\n\n return {\n ...obsQueryMethods,\n variables: obsQuery.variables,\n client,\n called: true,\n ...result,\n };\n}\n\nfunction createWatchQueryOptions<TData, TVariables>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: QueryHookOptions<TData, TVariables> = {},\n): WatchQueryOptions<TVariables, TData> {\n // Using destructuring to remove hook specific options.\n const {\n skip,\n ssr,\n onCompleted,\n onError,\n displayName,\n ...watchQueryOptions\n } = options;\n // TODO: For some reason, we pass context, which is the React Apollo Context,\n // into observable queries, and test for that.\n\n if (skip) {\n watchQueryOptions.fetchPolicy = 'standby';\n } else if (\n watchQueryOptions.context?.renderPromises &&\n (\n watchQueryOptions.fetchPolicy === 'network-only' ||\n watchQueryOptions.fetchPolicy === 'cache-and-network'\n )\n ) {\n // this behavior was added to react-apollo without explanation in this PR\n // https://github.com/apollographql/react-apollo/pull/1579\n watchQueryOptions.fetchPolicy = 'cache-first';\n } else if (!watchQueryOptions.fetchPolicy) {\n // cache-first is the default policy, but we explicitly assign it here so\n // the cache policies computed based on options can be cleared\n watchQueryOptions.fetchPolicy = 'cache-first';\n }\n\n return { query, ...watchQueryOptions };\n}\n"]}
|
package/react/react.cjs
CHANGED
|
@@ -16,7 +16,7 @@ exports.resetApolloContext = context.resetApolloContext;
|
|
|
16
16
|
exports.DocumentType = parser.DocumentType;
|
|
17
17
|
exports.operationName = parser.operationName;
|
|
18
18
|
exports.parser = parser.parser;
|
|
19
|
-
|
|
19
|
+
for (var k in hooks) {
|
|
20
20
|
if (k !== 'default' && !exports.hasOwnProperty(k)) exports[k] = hooks[k];
|
|
21
|
-
}
|
|
21
|
+
}
|
|
22
22
|
//# sourceMappingURL=react.cjs.map
|
|
@@ -10,8 +10,8 @@ export declare class RenderPromises {
|
|
|
10
10
|
private queryInfoTrie;
|
|
11
11
|
private stopped;
|
|
12
12
|
stop(): void;
|
|
13
|
-
registerSSRObservable<TData, TVariables>(observable: ObservableQuery<any, TVariables>,
|
|
14
|
-
getSSRObservable<TData, TVariables>(
|
|
13
|
+
registerSSRObservable<TData, TVariables>(observable: ObservableQuery<any, TVariables>, options: QueryDataOptions<TData, TVariables>): void;
|
|
14
|
+
getSSRObservable<TData, TVariables>(options: QueryDataOptions<TData, TVariables>): ObservableQuery<any, TVariables> | null;
|
|
15
15
|
addQueryPromise(queryInstance: QueryData, finish: () => React.ReactNode): React.ReactNode;
|
|
16
16
|
hasPromises(): boolean;
|
|
17
17
|
consumeAndAwaitPromises(): Promise<any[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderPromises.d.ts","sourceRoot":"","sources":["../../../src/react/ssr/RenderPromises.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,UAAU,SAAS;IACjB,UAAU,IAAI,GAAG,CAAC;IAClB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAcD,qBAAa,cAAc;IAEzB,OAAO,CAAC,aAAa,CAAuD;IAM5E,OAAO,CAAC,aAAa,CAAmD;IAExE,OAAO,CAAC,OAAO,CAAS;IACjB,IAAI;IASJ,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAC5C,UAAU,EAAE,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,EAC5C,
|
|
1
|
+
{"version":3,"file":"RenderPromises.d.ts","sourceRoot":"","sources":["../../../src/react/ssr/RenderPromises.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,UAAU,SAAS;IACjB,UAAU,IAAI,GAAG,CAAC;IAClB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAcD,qBAAa,cAAc;IAEzB,OAAO,CAAC,aAAa,CAAuD;IAM5E,OAAO,CAAC,aAAa,CAAmD;IAExE,OAAO,CAAC,OAAO,CAAS;IACjB,IAAI;IASJ,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAC5C,UAAU,EAAE,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,EAC5C,OAAO,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;IAOvC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EACvC,OAAO,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,GAC3C,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,IAAI;IAInC,eAAe,CACpB,aAAa,EAAE,SAAS,EAExB,MAAM,EAAE,MAAM,KAAK,CAAC,SAAS,GAC5B,KAAK,CAAC,SAAS;IAiBX,WAAW;IAIX,uBAAuB;IAmB9B,OAAO,CAAC,eAAe;CAYxB"}
|
|
@@ -17,21 +17,19 @@ var RenderPromises = (function () {
|
|
|
17
17
|
this.stopped = true;
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
RenderPromises.prototype.registerSSRObservable = function (observable,
|
|
20
|
+
RenderPromises.prototype.registerSSRObservable = function (observable, options) {
|
|
21
21
|
if (this.stopped)
|
|
22
22
|
return;
|
|
23
|
-
this.lookupQueryInfo(
|
|
23
|
+
this.lookupQueryInfo(options).observable = observable;
|
|
24
24
|
};
|
|
25
|
-
RenderPromises.prototype.getSSRObservable = function (
|
|
26
|
-
return this.lookupQueryInfo(
|
|
25
|
+
RenderPromises.prototype.getSSRObservable = function (options) {
|
|
26
|
+
return this.lookupQueryInfo(options).observable;
|
|
27
27
|
};
|
|
28
28
|
RenderPromises.prototype.addQueryPromise = function (queryInstance, finish) {
|
|
29
29
|
if (!this.stopped) {
|
|
30
30
|
var info = this.lookupQueryInfo(queryInstance.getOptions());
|
|
31
31
|
if (!info.seen) {
|
|
32
|
-
this.queryPromises.set(queryInstance.getOptions(), new Promise(function (resolve) {
|
|
33
|
-
resolve(queryInstance.fetchData());
|
|
34
|
-
}));
|
|
32
|
+
this.queryPromises.set(queryInstance.getOptions(), new Promise(function (resolve) { return resolve(queryInstance.fetchData()); }));
|
|
35
33
|
return null;
|
|
36
34
|
}
|
|
37
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderPromises.js","sourceRoot":"","sources":["../../../src/react/ssr/RenderPromises.ts"],"names":[],"mappings":"AAiBA,SAAS,oBAAoB;IAC3B,OAAO;QACL,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED;IAAA;QAEU,kBAAa,GAAG,IAAI,GAAG,EAA4C,CAAC;QAMpE,kBAAa,GAAG,IAAI,GAAG,EAAwC,CAAC;QAEhE,YAAO,GAAG,KAAK,CAAC;IAiF1B,CAAC;IAhFQ,6BAAI,GAAX;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;IACH,CAAC;IAGM,8CAAqB,GAA5B,UACE,UAA4C,EAC5C,
|
|
1
|
+
{"version":3,"file":"RenderPromises.js","sourceRoot":"","sources":["../../../src/react/ssr/RenderPromises.ts"],"names":[],"mappings":"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","sourcesContent":["import { DocumentNode } from 'graphql';\n\nimport { ObservableQuery } from '../../core';\nimport { QueryDataOptions } from '../types/types';\n\n// TODO: A vestigial interface from when hooks were implemented with utility\n// classes, which should be deleted in the future.\ninterface QueryData {\n getOptions(): any;\n fetchData(): Promise<void>;\n}\n\ntype QueryInfo = {\n seen: boolean;\n observable: ObservableQuery<any, any> | null;\n};\n\nfunction makeDefaultQueryInfo(): QueryInfo {\n return {\n seen: false,\n observable: null\n };\n}\n\nexport class RenderPromises {\n // Map from Query component instances to pending fetchData promises.\n private queryPromises = new Map<QueryDataOptions<any, any>, Promise<any>>();\n\n // Two-layered map from (query document, stringified variables) to QueryInfo\n // objects. These QueryInfo objects are intended to survive through the whole\n // getMarkupFromTree process, whereas specific Query instances do not survive\n // beyond a single call to renderToStaticMarkup.\n private queryInfoTrie = new Map<DocumentNode, Map<string, QueryInfo>>();\n\n private stopped = false;\n public stop() {\n if (!this.stopped) {\n this.queryPromises.clear();\n this.queryInfoTrie.clear();\n this.stopped = true;\n }\n }\n\n // Registers the server side rendered observable.\n public registerSSRObservable<TData, TVariables>(\n observable: ObservableQuery<any, TVariables>,\n options: QueryDataOptions<TData, TVariables>\n ) {\n if (this.stopped) return;\n this.lookupQueryInfo(options).observable = observable;\n }\n\n // Get's the cached observable that matches the SSR Query instances query and variables.\n public getSSRObservable<TData, TVariables>(\n options: QueryDataOptions<TData, TVariables>\n ): ObservableQuery<any, TVariables> | null {\n return this.lookupQueryInfo(options).observable;\n }\n\n public addQueryPromise(\n queryInstance: QueryData,\n // TODO: This callback is a noop on the useQuery side.\n finish: () => React.ReactNode\n ): React.ReactNode {\n if (!this.stopped) {\n const info = this.lookupQueryInfo(queryInstance.getOptions());\n if (!info.seen) {\n this.queryPromises.set(\n queryInstance.getOptions(),\n new Promise(resolve => resolve(queryInstance.fetchData()))\n );\n // Render null to abandon this subtree for this rendering, so that we\n // can wait for the data to arrive.\n return null;\n }\n }\n\n return finish();\n }\n\n public hasPromises() {\n return this.queryPromises.size > 0;\n }\n\n public consumeAndAwaitPromises() {\n const promises: Promise<any>[] = [];\n this.queryPromises.forEach((promise, queryInstance) => {\n // Make sure we never try to call fetchData for this query document and\n // these variables again. Since the queryInstance objects change with\n // every rendering, deduplicating them by query and variables is the\n // best we can do. If a different Query component happens to have the\n // same query document and variables, it will be immediately rendered\n // by calling finish() in addQueryPromise, which could result in the\n // rendering of an unwanted loading state, but that's not nearly as bad\n // as getting stuck in an infinite rendering loop because we kept calling\n // queryInstance.fetchData for the same Query component indefinitely.\n this.lookupQueryInfo(queryInstance).seen = true;\n promises.push(promise);\n });\n this.queryPromises.clear();\n return Promise.all(promises);\n }\n\n private lookupQueryInfo<TData, TVariables>(\n props: QueryDataOptions<TData, TVariables>\n ): QueryInfo {\n const { queryInfoTrie } = this;\n const { query, variables } = props;\n const varMap = queryInfoTrie.get(query) || new Map<string, QueryInfo>();\n if (!queryInfoTrie.has(query)) queryInfoTrie.set(query, varMap);\n const variablesString = JSON.stringify(variables);\n const info = varMap.get(variablesString) || makeDefaultQueryInfo();\n if (!varMap.has(variablesString)) varMap.set(variablesString, info);\n return info;\n }\n}\n"]}
|
package/react/ssr/ssr.cjs
CHANGED
|
@@ -10,11 +10,11 @@ function _interopNamespace(e) {
|
|
|
10
10
|
if (e && e.__esModule) return e;
|
|
11
11
|
var n = Object.create(null);
|
|
12
12
|
if (e) {
|
|
13
|
-
|
|
13
|
+
for (var k in e) {
|
|
14
14
|
n[k] = e[k];
|
|
15
|
-
}
|
|
15
|
+
}
|
|
16
16
|
}
|
|
17
|
-
n[
|
|
17
|
+
n["default"] = e;
|
|
18
18
|
return Object.freeze(n);
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -39,21 +39,19 @@ var RenderPromises = (function () {
|
|
|
39
39
|
this.stopped = true;
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
-
RenderPromises.prototype.registerSSRObservable = function (observable,
|
|
42
|
+
RenderPromises.prototype.registerSSRObservable = function (observable, options) {
|
|
43
43
|
if (this.stopped)
|
|
44
44
|
return;
|
|
45
|
-
this.lookupQueryInfo(
|
|
45
|
+
this.lookupQueryInfo(options).observable = observable;
|
|
46
46
|
};
|
|
47
|
-
RenderPromises.prototype.getSSRObservable = function (
|
|
48
|
-
return this.lookupQueryInfo(
|
|
47
|
+
RenderPromises.prototype.getSSRObservable = function (options) {
|
|
48
|
+
return this.lookupQueryInfo(options).observable;
|
|
49
49
|
};
|
|
50
50
|
RenderPromises.prototype.addQueryPromise = function (queryInstance, finish) {
|
|
51
51
|
if (!this.stopped) {
|
|
52
52
|
var info = this.lookupQueryInfo(queryInstance.getOptions());
|
|
53
53
|
if (!info.seen) {
|
|
54
|
-
this.queryPromises.set(queryInstance.getOptions(), new Promise(function (resolve) {
|
|
55
|
-
resolve(queryInstance.fetchData());
|
|
56
|
-
}));
|
|
54
|
+
this.queryPromises.set(queryInstance.getOptions(), new Promise(function (resolve) { return resolve(queryInstance.fetchData()); }));
|
|
57
55
|
return null;
|
|
58
56
|
}
|
|
59
57
|
}
|
package/react/ssr/ssr.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr.cjs","sources":["RenderPromises.js","getDataFromTree.js","renderToStringWithData.js"],"sourcesContent":["function makeDefaultQueryInfo() {\n return {\n seen: false,\n observable: null\n };\n}\nvar RenderPromises = (function () {\n function RenderPromises() {\n this.queryPromises = new Map();\n this.queryInfoTrie = new Map();\n this.stopped = false;\n }\n RenderPromises.prototype.stop = function () {\n if (!this.stopped) {\n this.queryPromises.clear();\n this.queryInfoTrie.clear();\n this.stopped = true;\n }\n };\n RenderPromises.prototype.registerSSRObservable = function (observable,
|
|
1
|
+
{"version":3,"file":"ssr.cjs","sources":["RenderPromises.js","getDataFromTree.js","renderToStringWithData.js"],"sourcesContent":["function makeDefaultQueryInfo() {\n return {\n seen: false,\n observable: null\n };\n}\nvar RenderPromises = (function () {\n function RenderPromises() {\n this.queryPromises = new Map();\n this.queryInfoTrie = new Map();\n this.stopped = false;\n }\n RenderPromises.prototype.stop = function () {\n if (!this.stopped) {\n this.queryPromises.clear();\n this.queryInfoTrie.clear();\n this.stopped = true;\n }\n };\n RenderPromises.prototype.registerSSRObservable = function (observable, options) {\n if (this.stopped)\n return;\n this.lookupQueryInfo(options).observable = observable;\n };\n RenderPromises.prototype.getSSRObservable = function (options) {\n return this.lookupQueryInfo(options).observable;\n };\n RenderPromises.prototype.addQueryPromise = function (queryInstance, finish) {\n if (!this.stopped) {\n var info = this.lookupQueryInfo(queryInstance.getOptions());\n if (!info.seen) {\n this.queryPromises.set(queryInstance.getOptions(), new Promise(function (resolve) { return resolve(queryInstance.fetchData()); }));\n return null;\n }\n }\n return finish();\n };\n RenderPromises.prototype.hasPromises = function () {\n return this.queryPromises.size > 0;\n };\n RenderPromises.prototype.consumeAndAwaitPromises = function () {\n var _this = this;\n var promises = [];\n this.queryPromises.forEach(function (promise, queryInstance) {\n _this.lookupQueryInfo(queryInstance).seen = true;\n promises.push(promise);\n });\n this.queryPromises.clear();\n return Promise.all(promises);\n };\n RenderPromises.prototype.lookupQueryInfo = function (props) {\n var queryInfoTrie = this.queryInfoTrie;\n var query = props.query, variables = props.variables;\n var varMap = queryInfoTrie.get(query) || new Map();\n if (!queryInfoTrie.has(query))\n queryInfoTrie.set(query, varMap);\n var variablesString = JSON.stringify(variables);\n var info = varMap.get(variablesString) || makeDefaultQueryInfo();\n if (!varMap.has(variablesString))\n varMap.set(variablesString, info);\n return info;\n };\n return RenderPromises;\n}());\nexport { RenderPromises };\n//# sourceMappingURL=RenderPromises.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { getApolloContext } from '../context';\nimport { RenderPromises } from './RenderPromises';\nexport function getDataFromTree(tree, context) {\n if (context === void 0) { context = {}; }\n return getMarkupFromTree({\n tree: tree,\n context: context,\n renderFunction: require('react-dom/server').renderToStaticMarkup\n });\n}\nexport function getMarkupFromTree(_a) {\n var tree = _a.tree, _b = _a.context, context = _b === void 0 ? {} : _b, _c = _a.renderFunction, renderFunction = _c === void 0 ? require('react-dom/server').renderToStaticMarkup : _c;\n var renderPromises = new RenderPromises();\n function process() {\n var ApolloContext = getApolloContext();\n return new Promise(function (resolve) {\n var element = React.createElement(ApolloContext.Provider, { value: __assign(__assign({}, context), { renderPromises: renderPromises }) }, tree);\n resolve(renderFunction(element));\n }).then(function (html) {\n return renderPromises.hasPromises()\n ? renderPromises.consumeAndAwaitPromises().then(process)\n : html;\n }).finally(function () {\n renderPromises.stop();\n });\n }\n return Promise.resolve().then(process);\n}\n//# sourceMappingURL=getDataFromTree.js.map","import { getMarkupFromTree } from './getDataFromTree';\nexport function renderToStringWithData(component) {\n return getMarkupFromTree({\n tree: component,\n renderFunction: require('react-dom/server').renderToString\n });\n}\n//# sourceMappingURL=renderToStringWithData.js.map"],"names":["context","getApolloContext","React","__assign"],"mappings":"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"}
|
package/testing/testing.cjs
CHANGED
|
@@ -14,11 +14,11 @@ function _interopNamespace(e) {
|
|
|
14
14
|
if (e && e.__esModule) return e;
|
|
15
15
|
var n = Object.create(null);
|
|
16
16
|
if (e) {
|
|
17
|
-
|
|
17
|
+
for (var k in e) {
|
|
18
18
|
n[k] = e[k];
|
|
19
|
-
}
|
|
19
|
+
}
|
|
20
20
|
}
|
|
21
|
-
n[
|
|
21
|
+
n["default"] = e;
|
|
22
22
|
return Object.freeze(n);
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -52,7 +52,7 @@ var MockedProvider = (function (_super) {
|
|
|
52
52
|
}(React__namespace.Component));
|
|
53
53
|
|
|
54
54
|
exports.MockedProvider = MockedProvider;
|
|
55
|
-
|
|
55
|
+
for (var k in core) {
|
|
56
56
|
if (k !== 'default' && !exports.hasOwnProperty(k)) exports[k] = core[k];
|
|
57
|
-
}
|
|
57
|
+
}
|
|
58
58
|
//# sourceMappingURL=testing.cjs.map
|
package/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export var version = '3.
|
|
1
|
+
export var version = '3.6.0-beta.2';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|