{"version":3,"file":"app-5e8cb0c1c01c616825ce.js","mappings":"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crpB,EAAUspB,GACpC,GAAItpB,EAAS1B,QAAU,IAAK,CAUxBkpB,GAAiBxnB,EARD,WACZ,IACI,OAAO5Q,KAAKC,MAAMi6B,EACtB,CACA,MAAO/rB,GACH,OAAO+rB,CACX,CACJ,CAC2BC,GAAa,iDAAiD19B,OAAOmU,EAAS1B,QAC7G,CACA,IACI,OAAOlP,KAAKC,MAAMi6B,EACtB,CACA,MAAO/rB,GACH,IAAIwoB,EAAaxoB,EAKjB,MAJAwoB,EAAWrqB,KAAO,mBAClBqqB,EAAW/lB,SAAWA,EACtB+lB,EAAW0B,WAAaznB,EAAS1B,OACjCynB,EAAWuD,SAAWA,EAChBvD,CACV,CACJ,CCnIO,eCOP,MAAMyD,GAAgB,gCAEtB,SAASC,GAAgBrT,GACvB,OAAOsT,GAAgBtT,EAAIuT,WAAW,GACxC,CAEA,MAAMD,GAAkB,CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAC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","sources":["webpack://sco-website/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://sco-website/./node_modules/gatsby-react-router-scroll/index.js","webpack://sco-website/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://sco-website/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://sco-website/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://sco-website/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/fetch.js","webpack://sco-website/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://sco-website/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://sco-website/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://sco-website/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://sco-website/./.cache/api-runner-browser-plugins.js","webpack://sco-website/./.cache/api-runner-browser.js","webpack://sco-website/./.cache/create-content-digest-browser-shim.js","webpack://sco-website/./.cache/emitter.js","webpack://sco-website/./node_modules/mitt/dist/mitt.es.js","webpack://sco-website/./.cache/normalize-page-path.js","webpack://sco-website/./.cache/find-path.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://sco-website/./.cache/slice/server-slice-renderer.js","webpack://sco-website/./.cache/slice/server-slice.js","webpack://sco-website/./.cache/slice/inline-slice.js","webpack://sco-website/./.cache/slice.js","webpack://sco-website/./.cache/gatsby-browser-entry.js","webpack://sco-website/./.cache/prefetch.js","webpack://sco-website/./.cache/loader.js","webpack://sco-website/./.cache/head/components/fire-callback-in-effect.js","webpack://sco-website/./.cache/head/constants.js","webpack://sco-website/./.cache/head/utils.js","webpack://sco-website/./.cache/head/head-export-handler-for-browser.js","webpack://sco-website/./.cache/page-renderer.js","webpack://sco-website/./.cache/route-announcer-props.js","webpack://sco-website/./.cache/navigation.js","webpack://sco-website/./node_modules/shallow-compare/es/index.js","webpack://sco-website/./.cache/ensure-resources.js","webpack://sco-website/./.cache/production-app.js","webpack://sco-website/./.cache/public-page-renderer-prod.js","webpack://sco-website/./.cache/public-page-renderer.js","webpack://sco-website/./.cache/react-dom-utils.js","webpack://sco-website/./.cache/redirect-utils.js","webpack://sco-website/./.cache/register-service-worker.js","webpack://sco-website/./.cache/slice/context.js","webpack://sco-website/./.cache/static-query.js","webpack://sco-website/./.cache/context-utils.js","webpack://sco-website/./.cache/strip-prefix.js","webpack://sco-website/./node_modules/@apollo/client/react/context/ApolloProvider.js","webpack://sco-website/./node_modules/zen-observable-ts/module.js","webpack://sco-website/./node_modules/@apollo/client/utilities/graphql/fragments.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/canonicalStringify.js","webpack://sco-website/./node_modules/@apollo/client/utilities/graphql/storeUtils.js","webpack://sco-website/./node_modules/@apollo/client/utilities/graphql/getFromAST.js","webpack://sco-website/./node_modules/@apollo/client/link/core/ApolloLink.js","webpack://sco-website/./node_modules/@apollo/client/link/utils/createOperation.js","webpack://sco-website/./node_modules/@apollo/client/link/utils/transformOperation.js","webpack://sco-website/./node_modules/@apollo/client/link/utils/validateOperation.js","webpack://sco-website/./node_modules/@apollo/client/link/core/execute.js","webpack://sco-website/./node_modules/graphql/language/visitor.mjs","webpack://sco-website/./node_modules/@apollo/client/utilities/graphql/directives.js","webpack://sco-website/./node_modules/@apollo/client/link/http/serializeFetchParameter.js","webpack://sco-website/./node_modules/@apollo/client/link/http/iterators/nodeStream.js","webpack://sco-website/./node_modules/@apollo/client/link/http/iterators/reader.js","webpack://sco-website/./node_modules/@apollo/client/link/http/responseIterator.js","webpack://sco-website/./node_modules/@apollo/client/link/http/iterators/async.js","webpack://sco-website/./node_modules/@apollo/client/link/http/iterators/promise.js","webpack://sco-website/./node_modules/@apollo/client/link/utils/throwServerError.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/mergeDeep.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/incrementalResult.js","webpack://sco-website/./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","webpack://sco-website/./node_modules/@apollo/client/link/http/checkFetcher.js","webpack://sco-website/./node_modules/graphql/language/printString.mjs","webpack://sco-website/./node_modules/graphql/language/printer.mjs","webpack://sco-website/./node_modules/@apollo/client/utilities/graphql/print.js","webpack://sco-website/./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","webpack://sco-website/./node_modules/@apollo/client/link/utils/fromError.js","webpack://sco-website/./node_modules/@apollo/client/utilities/graphql/transform.js","webpack://sco-website/./node_modules/@apollo/client/link/http/createHttpLink.js","webpack://sco-website/./node_modules/@apollo/client/link/http/selectURI.js","webpack://sco-website/./node_modules/@apollo/client/link/utils/filterOperationVariables.js","webpack://sco-website/./node_modules/@apollo/client/link/http/rewriteURIForGET.js","webpack://sco-website/./node_modules/@apollo/client/link/http/HttpLink.js","webpack://sco-website/./node_modules/@wry/trie/lib/index.js","webpack://sco-website/./node_modules/optimism/node_modules/@wry/trie/lib/index.js","webpack://sco-website/./node_modules/@wry/context/lib/slot.js","webpack://sco-website/./node_modules/@wry/context/lib/index.js","webpack://sco-website/./node_modules/optimism/lib/context.js","webpack://sco-website/./node_modules/optimism/lib/helpers.js","webpack://sco-website/./node_modules/optimism/lib/entry.js","webpack://sco-website/./node_modules/optimism/lib/dep.js","webpack://sco-website/./node_modules/optimism/lib/index.js","webpack://sco-website/./node_modules/@apollo/client/utilities/graphql/DocumentTransform.js","webpack://sco-website/./node_modules/@apollo/client/utilities/observables/asyncMap.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/errorHandling.js","webpack://sco-website/./node_modules/@apollo/client/utilities/observables/iteration.js","webpack://sco-website/./node_modules/@apollo/client/utilities/observables/subclassing.js","webpack://sco-website/./node_modules/@apollo/client/utilities/observables/Concast.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/cloneDeep.js","webpack://sco-website/./node_modules/@apollo/client/core/equalByQuery.js","webpack://sco-website/./node_modules/@apollo/client/core/ObservableQuery.js","webpack://sco-website/./node_modules/@apollo/client/core/QueryInfo.js","webpack://sco-website/./node_modules/@apollo/client/core/QueryManager.js","webpack://sco-website/./node_modules/graphql/language/predicates.mjs","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","webpack://sco-website/./node_modules/@apollo/client/core/LocalState.js","webpack://sco-website/./node_modules/@apollo/client/core/ApolloClient.js","webpack://sco-website/./node_modules/@apollo/client/cache/core/cache.js","webpack://sco-website/./node_modules/@apollo/client/cache/core/types/common.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/helpers.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/entityStore.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/object-canon.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/readFromStore.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/key-extractor.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/policies.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/writeToStore.js","webpack://sco-website/./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","webpack://sco-website/./node_modules/gatsby-plugin-apollo/gatsby-browser.js","webpack://sco-website/./node_modules/gatsby-plugin-google-gtag/gatsby-browser.js","webpack://sco-website/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://sco-website/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://sco-website/./node_modules/invariant/browser.js","webpack://sco-website/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://sco-website/./node_modules/react-server-dom-webpack/index.js","webpack://sco-website/./node_modules/rehackt/index.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://sco-website/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://sco-website/./node_modules/@apollo/client/core/networkStatus.js","webpack://sco-website/./node_modules/@apollo/client/errors/index.js","webpack://sco-website/./node_modules/@apollo/client/react/context/ApolloContext.js","webpack://sco-website/./node_modules/@apollo/client/utilities/caching/caches.js","webpack://sco-website/./node_modules/@apollo/client/utilities/caching/getMemoryInternals.js","webpack://sco-website/./node_modules/@apollo/client/utilities/caching/sizes.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/arrays.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/canUse.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/compact.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/makeUniqueId.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/mergeOptions.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/objects.js","webpack://sco-website/./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","webpack://sco-website/./node_modules/ts-invariant/lib/invariant.js","webpack://sco-website/./node_modules/@apollo/client/utilities/globals/maybe.js","webpack://sco-website/./node_modules/@apollo/client/utilities/globals/global.js","webpack://sco-website/./node_modules/@apollo/client/utilities/globals/invariantWrappers.js","webpack://sco-website/./node_modules/@apollo/client/utilities/globals/index.js","webpack://sco-website/./node_modules/@apollo/client/version.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://sco-website/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://sco-website/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://sco-website/./node_modules/@wry/caches/lib/strong.js","webpack://sco-website/./node_modules/@wry/caches/lib/weak.js","webpack://sco-website/./node_modules/@wry/equality/lib/index.js","webpack://sco-website/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://sco-website/./node_modules/gatsby-script/dist/index.modern.mjs","webpack://sco-website/./node_modules/graphql/jsutils/devAssert.mjs","webpack://sco-website/./node_modules/graphql/jsutils/inspect.mjs","webpack://sco-website/./node_modules/graphql/language/ast.mjs","webpack://sco-website/./node_modules/graphql/language/blockString.mjs","webpack://sco-website/./node_modules/graphql/language/characterClasses.mjs","webpack://sco-website/./node_modules/graphql/language/kinds.mjs","webpack://sco-website/./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\nconst endsWithSuffixes = (suffixes, input) => {\n for (const suffix of suffixes) {\n if (input.endsWith(suffix)) return true;\n }\n return false;\n};\nconst suffixes = [`.html`, `.json`, `.js`, `.map`, `.txt`, `.xml`, `.pdf`];\nconst applyTrailingSlashOption = (input, option = `always`) => {\n if (input === `/`) return input;\n const hasTrailingSlash = input.endsWith(`/`);\n if (endsWithSuffixes(suffixes, input)) {\n return input;\n }\n if (option === `always`) {\n return hasTrailingSlash ? input : `${input}/`;\n }\n if (option === `never`) {\n return hasTrailingSlash ? input.slice(0, -1) : input;\n }\n return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\nvar _scrollHandler = require(\"./scroll-handler\");\nexports.ScrollContext = _scrollHandler.ScrollHandler;\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sessionStorage = require(\"./session-storage\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n function ScrollHandler() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing this._stateStorage.\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n return _this;\n }\n var _proto = ScrollHandler.prototype;\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n this._isTicking = false;\n };\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** If a hash is present in the browser url as the component mounts (i.e. the user is navigating\n * from an external website) then scroll to the hash instead of any previously stored scroll\n * position. */\n if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n } else if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n return ScrollHandler;\n}(React.Component);\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n var _proto = SessionStorage.prototype;\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n return 0;\n }\n };\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n return SessionStorage;\n}();\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\nvar _scrollHandler = require(\"./scroll-handler\");\nvar _react = require(\"react\");\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nmodule.exports = global.fetch;\n//# sourceMappingURL=fetch.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname));\n\n // Clear scripts after we've used them to avoid leaky behavior\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n};\n\n// Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n if (existingSnippet) {\n existingSnippet.remove();\n }\n if (existingSandbox) {\n existingSandbox.remove();\n }\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}\n//# sourceMappingURL=inject-partytown-snippet.js.map","exports.components = {\n \"component---src-pages-404-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n \"component---src-pages-artistic-director-tsx\": () => import(\"./../../../src/pages/artistic-director.tsx\" /* webpackChunkName: \"component---src-pages-artistic-director-tsx\" */),\n \"component---src-pages-blog-tsx\": () => import(\"./../../../src/pages/blog.tsx\" /* webpackChunkName: \"component---src-pages-blog-tsx\" */),\n \"component---src-pages-concerts-tsx\": () => import(\"./../../../src/pages/concerts.tsx\" /* webpackChunkName: \"component---src-pages-concerts-tsx\" */),\n \"component---src-pages-conductors-tsx\": () => import(\"./../../../src/pages/conductors.tsx\" /* webpackChunkName: \"component---src-pages-conductors-tsx\" */),\n \"component---src-pages-contact-tsx\": () => import(\"./../../../src/pages/contact.tsx\" /* webpackChunkName: \"component---src-pages-contact-tsx\" */),\n \"component---src-pages-index-tsx\": () => import(\"./../../../src/pages/index.tsx\" /* webpackChunkName: \"component---src-pages-index-tsx\" */),\n \"component---src-pages-invite-tsx\": () => import(\"./../../../src/pages/invite.tsx\" /* webpackChunkName: \"component---src-pages-invite-tsx\" */),\n \"component---src-pages-leader-tsx\": () => import(\"./../../../src/pages/leader.tsx\" /* webpackChunkName: \"component---src-pages-leader-tsx\" */),\n \"component---src-pages-page-slug-tsx\": () => import(\"./../../../src/pages/{Page.slug}.tsx\" /* webpackChunkName: \"component---src-pages-page-slug-tsx\" */),\n \"component---src-pages-press-tsx\": () => import(\"./../../../src/pages/press.tsx\" /* webpackChunkName: \"component---src-pages-press-tsx\" */),\n \"component---src-pages-previous-concerts-tsx\": () => import(\"./../../../src/pages/previous-concerts.tsx\" /* webpackChunkName: \"component---src-pages-previous-concerts-tsx\" */),\n \"component---src-pages-status-tsx\": () => import(\"./../../../src/pages/status.tsx\" /* webpackChunkName: \"component---src-pages-status-tsx\" */),\n \"component---src-pages-subscribe-tsx\": () => import(\"./../../../src/pages/subscribe.tsx\" /* webpackChunkName: \"component---src-pages-subscribe-tsx\" */),\n \"component---src-pages-unsubscribe-tsx\": () => import(\"./../../../src/pages/unsubscribe.tsx\" /* webpackChunkName: \"component---src-pages-unsubscribe-tsx\" */),\n \"component---src-templates-blog-post-tsx\": () => import(\"./../../../src/templates/blog-post.tsx\" /* webpackChunkName: \"component---src-templates-blog-post-tsx\" */),\n \"component---src-templates-concert-page-tsx\": () => import(\"./../../../src/templates/concert-page.tsx\" /* webpackChunkName: \"component---src-templates-concert-page-tsx\" */),\n \"component---src-templates-person-page-tsx\": () => import(\"./../../../src/templates/person-page.tsx\" /* webpackChunkName: \"component---src-templates-person-page-tsx\" */),\n \"component---src-templates-venue-page-tsx\": () => import(\"./../../../src/templates/venue-page.tsx\" /* webpackChunkName: \"component---src-templates-venue-page-tsx\" */),\n \"slice---src-components-footer-index-tsx\": () => import(\"./../../../src/components/Footer/index.tsx\" /* webpackChunkName: \"slice---src-components-footer-index-tsx\" */),\n \"slice---src-components-header-index-tsx\": () => import(\"./../../../src/components/Header/index.tsx\" /* webpackChunkName: \"slice---src-components-header-index-tsx\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-google-gtag/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingIds\":[\"G-SKCN5BW69S\",\"G-MFBL4Y0F7C\",\"AW-16732658062\"],\"gtagConfig\":{\"anonymize_ip\":true,\"cookie_expires\":604800},\"pluginConfig\":{\"head\":true,\"respectDNT\":false,\"exclude\":[\"/preview/**\",\"/do-not-track/me/too/\"],\"delayOnRouteUpdate\":0,\"origin\":\"https://www.googletagmanager.com\"}},\n },{\n plugin: require('../node_modules/gatsby-plugin-apollo/gatsby-browser.js'),\n options: {\"plugins\":[],\"uri\":\"https://api.scorchestra.uk\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Sheffield Chamber Orchestra Website\",\"short_name\":\"SCO\",\"start_url\":\"/\",\"background_color\":\"#ffe491\",\"theme_color\":\"#004ca3\",\"icon\":\"src/favicon.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"74c45a23c6325faf0633339cc5f7614b\"},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","exports.createContentDigest = () => ``\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nexport { _isNativeFunction as default };","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","import React from \"react\"\n\nexport const ServerSliceRenderer = ({ sliceId, children }) => {\n const contents = [\n React.createElement(`slice-start`, {\n id: `${sliceId}-1`,\n }),\n React.createElement(`slice-end`, {\n id: `${sliceId}-1`,\n }),\n ]\n\n if (children) {\n // if children exist, we split the slice into a before and after piece\n // see renderSlices in render-html\n contents.push(children)\n contents.push(\n React.createElement(`slice-start`, {\n id: `${sliceId}-2`,\n }),\n React.createElement(`slice-end`, {\n id: `${sliceId}-2`,\n })\n )\n }\n\n return contents\n}\n","import React, { useContext } from \"react\"\nimport { createContentDigest } from \"gatsby-core-utils/create-content-digest\"\nimport { SlicesMapContext, SlicesPropsContext } from \"./context\"\nimport { ServerSliceRenderer } from \"./server-slice-renderer\"\n\nconst getSliceId = (sliceName, sliceProps) => {\n if (!Object.keys(sliceProps).length) {\n return sliceName\n }\n\n const propsString = createContentDigest(sliceProps)\n return `${sliceName}-${propsString}`\n}\n\nexport const ServerSlice = ({\n sliceName,\n allowEmpty,\n children,\n ...sliceProps\n}) => {\n const slicesMap = useContext(SlicesMapContext)\n const slicesProps = useContext(SlicesPropsContext)\n const concreteSliceName = slicesMap[sliceName]\n\n if (!concreteSliceName) {\n if (allowEmpty) {\n return null\n } else {\n throw new Error(\n `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n )\n }\n }\n\n const sliceId = getSliceId(concreteSliceName, sliceProps)\n\n // set props on context object for static-entry to return\n let sliceUsage = slicesProps[sliceId]\n if (!sliceUsage) {\n slicesProps[sliceId] = sliceUsage = {\n props: sliceProps,\n sliceName: concreteSliceName,\n hasChildren: !!children,\n }\n } else {\n if (children) {\n sliceUsage.hasChildren = true\n }\n }\n\n return {children}\n}\n","import React, { useContext } from \"react\"\nimport { SlicesMapContext, SlicesResultsContext } from \"./context\"\n\nexport const InlineSlice = ({\n sliceName,\n allowEmpty,\n children,\n ...sliceProps\n}) => {\n const slicesMap = useContext(SlicesMapContext)\n const slicesResultsMap = useContext(SlicesResultsContext)\n const concreteSliceName = slicesMap[sliceName]\n const slice = slicesResultsMap.get(concreteSliceName)\n\n if (!slice) {\n if (allowEmpty) {\n return null\n } else {\n throw new Error(\n `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n )\n }\n }\n\n return (\n \n {children}\n \n )\n}\n","\"use client\"\n\nimport React, { useContext } from \"react\"\nimport { ServerSlice } from \"./slice/server-slice\"\nimport { InlineSlice } from \"./slice/inline-slice\"\nimport { SlicesContext } from \"./slice/context\"\n\nexport function Slice(props) {\n if (process.env.GATSBY_SLICES) {\n // we use sliceName internally, so remap alias to sliceName\n const internalProps = {\n ...props,\n sliceName: props.alias,\n }\n delete internalProps.alias\n delete internalProps.__renderedByLocation\n\n const slicesContext = useContext(SlicesContext)\n\n // validate props\n const propErrors = validateSliceProps(props)\n if (Object.keys(propErrors).length) {\n throw new SlicePropsError(\n slicesContext.renderEnvironment === `browser`,\n internalProps.sliceName,\n propErrors,\n props.__renderedByLocation\n )\n }\n\n if (slicesContext.renderEnvironment === `server`) {\n return \n } else if (slicesContext.renderEnvironment === `browser`) {\n // in the browser, we'll just render the component as is\n return \n } else if (\n slicesContext.renderEnvironment === `engines` ||\n slicesContext.renderEnvironment === `dev-ssr`\n ) {\n // if we're in SSR, we'll just render the component as is\n return \n } else if (slicesContext.renderEnvironment === `slices`) {\n // we are not yet supporting nested slices\n\n let additionalContextMessage = ``\n\n // just in case generating additional contextual information fails, we still want the base message to show\n // and not show another cryptic error message\n try {\n additionalContextMessage = `\\n\\nSlice component \"${slicesContext.sliceRoot.name}\" (${slicesContext.sliceRoot.componentPath}) tried to render `\n } catch {\n // don't need to handle it, we will just skip the additional context message if we fail to generate it\n }\n\n throw new Error(\n `Nested slices are not supported.${additionalContextMessage}\\n\\nSee https://gatsbyjs.com/docs/reference/built-in-components/gatsby-slice#nested-slices`\n )\n } else {\n throw new Error(\n `Slice context \"${slicesContext.renderEnvironment}\" is not supported.`\n )\n }\n } else {\n throw new Error(`Slices are disabled.`)\n }\n}\n\nclass SlicePropsError extends Error {\n constructor(inBrowser, sliceName, propErrors, renderedByLocation) {\n const errors = Object.entries(propErrors)\n .map(\n ([key, value]) =>\n `not serializable \"${value}\" type passed to \"${key}\" prop`\n )\n .join(`, `)\n\n const name = `SlicePropsError`\n let stack = ``\n let message = ``\n\n if (inBrowser) {\n // They're just (kinda) kidding, I promise... You can still work here <3\n // https://www.gatsbyjs.com/careers/\n const fullStack =\n React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactDebugCurrentFrame.getCurrentStack()\n\n // remove the first line of the stack trace\n const stackLines = fullStack.trim().split(`\\n`).slice(1)\n stackLines[0] = stackLines[0].trim()\n stack = `\\n` + stackLines.join(`\\n`)\n\n message = `Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n } else {\n // we can't really grab any extra info outside of the browser, so just print what we can\n message = `${name}: Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n const stackLines = new Error().stack.trim().split(`\\n`).slice(2)\n stack = `${message}\\n${stackLines.join(`\\n`)}`\n }\n\n super(message)\n this.name = name\n if (stack) {\n this.stack = stack\n } else {\n Error.captureStackTrace(this, SlicePropsError)\n }\n\n if (renderedByLocation) {\n this.forcedLocation = { ...renderedByLocation, functionName: `Slice` }\n }\n }\n}\n\nconst validateSliceProps = (\n props,\n errors = {},\n seenObjects = [],\n path = null\n) => {\n // recursively validate all props\n for (const [name, value] of Object.entries(props)) {\n if (\n value === undefined ||\n value === null ||\n (!path && name === `children`)\n ) {\n continue\n }\n\n const propPath = path ? `${path}.${name}` : name\n\n if (typeof value === `function`) {\n errors[propPath] = typeof value\n } else if (typeof value === `object` && seenObjects.indexOf(value) <= 0) {\n seenObjects.push(value)\n validateSliceProps(value, errors, seenObjects, propPath)\n }\n }\n\n return errors\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport { StaticQuery, StaticQueryContext, useStaticQuery } from \"./static-query\"\nexport { Slice } from \"./slice\"\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\n/**\n * Utility to check the path that goes into doFetch for e.g. potential malicious intentions.\n * It checks for \"//\" because with this you could do a fetch request to a different domain.\n */\nconst shouldAbortFetch = rawPath => rawPath.startsWith(`//`)\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n slicesMap: pageData.slicesMap ?? {},\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.slicesDataDb = new Map()\n this.sliceInflightDb = new Map()\n this.slicesDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadSliceDataJson(sliceName) {\n if (this.slicesDataDb.has(sliceName)) {\n const jsonPayload = this.slicesDataDb.get(sliceName)\n return Promise.resolve({ sliceName, jsonPayload })\n }\n\n const url = `${__PATH_PREFIX__}/slice-data/${sliceName}.json`\n return doFetch(url, `GET`).then(res => {\n const jsonPayload = JSON.parse(res.responseText)\n\n this.slicesDataDb.set(sliceName, jsonPayload)\n return { sliceName, jsonPayload }\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return Promise.resolve({\n error: page.error,\n status: page.status,\n })\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const loadDataPromises = [\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]\n\n if (global.hasPartialHydration) {\n loadDataPromises.push(this.loadPartialHydrationJson(pagePath))\n }\n\n const inFlightPromise = Promise.all(loadDataPromises).then(allData => {\n const [appDataResponse, pageDataResponse, rscDataResponse] = allData\n\n if (\n pageDataResponse.status === PageResourceStatus.Error ||\n rscDataResponse?.status === PageResourceStatus.Error\n ) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = pageDataResponse.payload\n\n const {\n componentChunkName,\n staticQueryHashes: pageStaticQueryHashes = [],\n slicesMap = {},\n } = pageData\n\n const finalResult = {}\n\n const dedupedSliceNames = Array.from(new Set(Object.values(slicesMap)))\n\n const loadSlice = slice => {\n if (this.slicesDb.has(slice.name)) {\n return this.slicesDb.get(slice.name)\n } else if (this.sliceInflightDb.has(slice.name)) {\n return this.sliceInflightDb.get(slice.name)\n }\n\n const inFlight = this.loadComponent(slice.componentChunkName).then(\n component => {\n return {\n component: preferDefault(component),\n sliceContext: slice.result.sliceContext,\n data: slice.result.data,\n }\n }\n )\n\n this.sliceInflightDb.set(slice.name, inFlight)\n inFlight.then(results => {\n this.slicesDb.set(slice.name, results)\n this.sliceInflightDb.delete(slice.name)\n })\n\n return inFlight\n }\n\n return Promise.all(\n dedupedSliceNames.map(sliceName => this.loadSliceDataJson(sliceName))\n ).then(slicesData => {\n const slices = []\n const dedupedStaticQueryHashes = [...pageStaticQueryHashes]\n\n for (const { jsonPayload, sliceName } of Object.values(slicesData)) {\n slices.push({ name: sliceName, ...jsonPayload })\n for (const staticQueryHash of jsonPayload.staticQueryHashes) {\n if (!dedupedStaticQueryHashes.includes(staticQueryHash)) {\n dedupedStaticQueryHashes.push(staticQueryHash)\n }\n }\n }\n\n const loadChunkPromises = [\n Promise.all(slices.map(loadSlice)),\n this.loadComponent(componentChunkName, `head`),\n ]\n\n if (!global.hasPartialHydration) {\n loadChunkPromises.push(this.loadComponent(componentChunkName))\n }\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n // get list of components to get\n const componentChunkPromises = Promise.all(loadChunkPromises).then(\n components => {\n const [sliceComponents, headComponent, pageComponent] = components\n\n finalResult.createdAt = new Date()\n\n for (const sliceComponent of sliceComponents) {\n if (!sliceComponent || sliceComponent instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = sliceComponent\n }\n }\n\n if (\n !global.hasPartialHydration &&\n (!pageComponent || pageComponent instanceof Error)\n ) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = pageComponent\n }\n\n let pageResources\n\n if (finalResult.status !== PageResourceStatus.Error) {\n finalResult.status = PageResourceStatus.Success\n if (\n pageDataResponse.notFound === true ||\n rscDataResponse?.notFound === true\n ) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appDataResponse\n ? appDataResponse.webpackCompilationHash\n : ``,\n })\n\n if (typeof rscDataResponse?.payload === `string`) {\n pageResources = toPageResources(pageData, null, headComponent)\n\n pageResources.partialHydration = rscDataResponse.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(rscDataResponse.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n } else {\n pageResources = toPageResources(\n pageData,\n pageComponent,\n headComponent\n )\n }\n }\n\n // undefined if final result is an error\n return pageResources\n }\n )\n\n // get list of static queries to get\n const staticQueryBatchPromise = Promise.all(\n dedupedStaticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromises, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n\nexport function getSliceResults() {\n if (instance) {\n return instance.slicesDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n `html`,\n `body`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n serverData: input.serverData,\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid function\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in Head which may have been directly added or introduced by `wrapRootElement`\n * @param {string} tagName\n */\nexport function warnForInvalidTag(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = createWarningForInvalidTag(tagName)\n warnOnce(warning)\n }\n}\n\nfunction createWarningForInvalidTag(tagName) {\n return `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}.\\n\\nAlso make sure that wrapRootElement in gatsby-ssr/gatsby-browser doesn't contain UI elements: https://gatsby.dev/invalid-head-elements`\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n\nexport function getValidHeadNodesAndAttributes(\n rootNode,\n htmlAndBodyAttributes = {\n html: {},\n body: {},\n }\n) {\n const seenIds = new Map()\n const validHeadNodes = []\n\n // Filter out non-element nodes before looping since we don't care about them\n for (const node of rootNode.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!isElementType(node)) continue\n\n if (isValidNodeName(nodeName)) {\n // and tags are treated differently, in that we don't render them, we only extract the attributes and apply them separetely\n if (nodeName === `html` || nodeName === `body`) {\n for (const attribute of node.attributes) {\n const isStyleAttribute = attribute.name === `style`\n\n // Merge attributes for same nodeName from previous loop iteration\n htmlAndBodyAttributes[nodeName] = {\n ...htmlAndBodyAttributes[nodeName],\n }\n\n if (!isStyleAttribute) {\n htmlAndBodyAttributes[nodeName][attribute.name] = attribute.value\n }\n\n // If there is already a style attribute, we need to merge them as otherwise the last one will \"win\"\n if (isStyleAttribute) {\n htmlAndBodyAttributes[nodeName].style = `${\n htmlAndBodyAttributes[nodeName]?.style\n ? htmlAndBodyAttributes[nodeName].style\n : ``\n }${attribute.value} `\n }\n }\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // // This is hack to make script tags work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n clonedNode = massageScript(clonedNode)\n }\n // Duplicate ids are not allowed in the head, so we need to dedupe them\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[\n indexOfPreviouslyInsertedNode\n ].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n } else {\n warnForInvalidTag(nodeName)\n }\n\n if (node.childNodes.length) {\n validHeadNodes.push(\n ...getValidHeadNodesAndAttributes(node, htmlAndBodyAttributes)\n .validHeadNodes\n )\n }\n }\n\n return { validHeadNodes, htmlAndBodyAttributes }\n}\n\nfunction massageScript(node) {\n const script = document.createElement(`script`)\n for (const attr of node.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = node.innerHTML\n\n return script\n}\n\nexport function isValidNodeName(nodeName) {\n return VALID_NODE_NAMES.includes(nodeName)\n}\n/*\n * For Head, we only care about element nodes(type = 1), so this util is used to skip over non-element nodes\n * For Node type, see https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n */\nexport function isElementType(node) {\n return node.nodeType === 1\n}\n\n/**\n * Removes all the head elements that were added by `Head`\n */\nexport function removePrevHeadElements() {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nexport function applyHtmlAndBodyAttributes(htmlAndBodyAttributes) {\n if (!htmlAndBodyAttributes) return\n\n const { html, body } = htmlAndBodyAttributes\n\n const htmlElement = document.querySelector(`html`)\n if (htmlElement) {\n Object.entries(html).forEach(([attributeName, attributeValue]) => {\n htmlElement.setAttribute(attributeName, attributeValue)\n })\n }\n\n const bodyElement = document.querySelector(`body`)\n if (bodyElement) {\n Object.entries(body).forEach(([attributeName, attributeValue]) => {\n bodyElement.setAttribute(attributeName, attributeValue)\n })\n }\n}\n\nexport function removeHtmlAndBodyAttributes(htmlAndBodyattributeList) {\n if (!htmlAndBodyattributeList) return\n\n const { html, body } = htmlAndBodyattributeList\n\n if (html) {\n const htmlElement = document.querySelector(`html`)\n html.forEach(attributeName => {\n if (htmlElement) {\n htmlElement.removeAttribute(attributeName)\n }\n })\n }\n\n if (body) {\n const bodyElement = document.querySelector(`body`)\n body.forEach(attributeName => {\n if (bodyElement) {\n bodyElement.removeAttribute(attributeName)\n }\n })\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport {\n headExportValidator,\n filterHeadProps,\n diffNodes,\n getValidHeadNodesAndAttributes,\n removePrevHeadElements,\n applyHtmlAndBodyAttributes,\n removeHtmlAndBodyAttributes,\n} from \"./utils\"\nimport { apiRunner } from \"../api-runner-browser\"\n\nconst hiddenRoot = document.createElement(`div`)\nconst keysOfHtmlAndBodyAttributes = {\n html: [],\n body: [],\n}\n\nconst onHeadRendered = () => {\n const { validHeadNodes, htmlAndBodyAttributes } =\n getValidHeadNodesAndAttributes(hiddenRoot)\n\n keysOfHtmlAndBodyAttributes.html = Object.keys(htmlAndBodyAttributes.html)\n keysOfHtmlAndBodyAttributes.body = Object.keys(htmlAndBodyAttributes.body)\n\n applyHtmlAndBodyAttributes(htmlAndBodyAttributes)\n\n /**\n * The rest of the code block below is a diffing mechanism to ensure that\n * the head elements aren't duplicted on every re-render.\n */\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // sigh ... and elements are not valid descedents of
(our hidden element)\n // react-dom in dev mode will warn about this. There doesn't seem to be a way to render arbitrary\n // user Head without hitting this issue (our hidden element could be just \"new Document()\", but\n // this can only have 1 child, and we don't control what is being rendered so that's not an option)\n // instead we continue to render to
, and just silence warnings for and elements\n // https://github.com/facebook/react/blob/e2424f33b3ad727321fc12e75c5e94838e84c2b5/packages/react-dom-bindings/src/client/validateDOMNesting.js#L498-L520\n const originalConsoleError = console.error.bind(console)\n console.error = (...args) => {\n if (\n Array.isArray(args) &&\n args.length >= 2 &&\n args[0]?.includes?.(`validateDOMNesting(...): %s cannot appear as`) &&\n (args[1] === `` || args[1] === ``)\n ) {\n return undefined\n }\n return originalConsoleError(...args)\n }\n\n /* We set up observer to be able to regenerate after react-refresh\n updates our hidden element.\n */\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const HeadElement = (\n \n )\n\n const WrapHeadElement = apiRunner(\n `wrapRootElement`,\n { element: HeadElement },\n HeadElement,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n \n \n {WrapHeadElement}\n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n removeHtmlAndBodyAttributes(keysOfHtmlAndBodyAttributes)\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport {\n navigate as reachNavigate,\n globalHistory,\n} from \"@gatsbyjs/reach-router\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(nextProps) {\n if (compareLocationProps(this.props.location, nextProps.location)) {\n onPreRouteUpdate(nextProps.location, this.props.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"./static-query\"\nimport {\n SlicesMapContext,\n SlicesContext,\n SlicesResultsContext,\n} from \"./slice/context\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n getSliceResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n const slicesContext = {\n renderEnvironment: `browser`,\n }\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n const sliceResults = getSliceResults()\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","const map = new WeakMap()\n\nexport function reactDOMUtils() {\n const reactDomClient = require(`react-dom/client`)\n\n const render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n const hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n\n return { render, hydrate }\n}\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n SlicesResultsContext,\n SlicesContext,\n SlicesMapContext,\n SlicesPropsContext,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { createServerOrClientContext } from \"./context-utils\"\n\nconst StaticQueryContext = createServerOrClientContext(`StaticQuery`, {})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nlet warnedAboutStaticQuery = false\n\n// TODO(v6): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n if (process.env.NODE_ENV === `development` && !warnedAboutStaticQuery) {\n console.warn(\n `The component is deprecated and will be removed in Gatsby v6. Use useStaticQuery instead. Refer to the migration guide for more information: https://gatsby.dev/migrating-4-to-5/#staticquery--is-deprecated`\n )\n warnedAboutStaticQuery = true\n }\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport { StaticQuery, StaticQueryContext, useStaticQuery }\n","import React from \"react\"\n\n// Ensure serverContext is not created more than once as React will throw when creating it more than once\n// https://github.com/facebook/react/blob/dd2d6522754f52c70d02c51db25eb7cbd5d1c8eb/packages/react/src/ReactServerContext.js#L101\nconst createServerContext = (name, defaultValue = null) => {\n /* eslint-disable no-undef */\n if (!globalThis.__SERVER_CONTEXT) {\n globalThis.__SERVER_CONTEXT = {}\n }\n\n if (!globalThis.__SERVER_CONTEXT[name]) {\n globalThis.__SERVER_CONTEXT[name] = React.createServerContext(\n name,\n defaultValue\n )\n }\n\n return globalThis.__SERVER_CONTEXT[name]\n}\n\nfunction createServerOrClientContext(name, defaultValue) {\n if (React.createServerContext) {\n return createServerContext(name, defaultValue)\n }\n\n return React.createContext(defaultValue)\n}\n\nexport { createServerOrClientContext }\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","import { __assign } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from \"rehackt\";\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloProvider = function (_a) {\n var client = _a.client, children = _a.children;\n var ApolloContext = getApolloContext();\n var parentContext = React.useContext(ApolloContext);\n var context = React.useMemo(function () {\n return __assign(__assign({}, parentContext), { client: client || parentContext.client });\n }, [parentContext, client]);\n invariant(context.client, 47);\n return (React.createElement(ApolloContext.Provider, { value: context }, children));\n};\n//# sourceMappingURL=ApolloProvider.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n var _proto = Subscription.prototype;\n\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n\n var _proto2 = SubscriptionObserver.prototype;\n\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n var _proto3 = Observable.prototype;\n\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n };\n\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n\n _proto3.map = function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n\n _proto3.concat = function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n\n _proto3[SymbolObservable] = function () {\n return this;\n };\n\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n };\n\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n };\n\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\n\nexport { Observable };\n","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, newInvariantError } from \"../globals/index.js\";\n/**\n * Returns a query document which adds a single query operation that only\n * spreads the target fragment inside of it.\n *\n * So for example a document of:\n *\n * ```graphql\n * fragment foo on Foo { a b c }\n * ```\n *\n * Turns into:\n *\n * ```graphql\n * { ...foo }\n *\n * fragment foo on Foo { a b c }\n * ```\n *\n * The target fragment will either be the only fragment in the document, or a\n * fragment specified by the provided `fragmentName`. If there is more than one\n * fragment, but a `fragmentName` was not defined then an error will be thrown.\n */\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n // Build an array of all our fragment definitions that will be used for\n // validations. We also do some validations on the other definitions in the\n // document while building this list.\n var fragments = [];\n document.definitions.forEach(function (definition) {\n // Throw an error if we encounter an operation definition because we will\n // define our own operation definition later on.\n if (definition.kind === \"OperationDefinition\") {\n throw newInvariantError(\n 74,\n definition.operation,\n definition.name ? \" named '\".concat(definition.name.value, \"'\") : \"\"\n );\n }\n // Add our definition to the fragments array if it is a fragment\n // definition.\n if (definition.kind === \"FragmentDefinition\") {\n fragments.push(definition);\n }\n });\n // If the user did not give us a fragment name then let us try to get a\n // name from a single fragment in the definition.\n if (typeof actualFragmentName === \"undefined\") {\n invariant(fragments.length === 1, 75, fragments.length);\n actualFragmentName = fragments[0].name.value;\n }\n // Generate a query document with an operation that simply spreads the\n // fragment inside of it.\n var query = __assign(__assign({}, document), { definitions: __spreadArray([\n {\n kind: \"OperationDefinition\",\n // OperationTypeNode is an enum\n operation: \"query\",\n selectionSet: {\n kind: \"SelectionSet\",\n selections: [\n {\n kind: \"FragmentSpread\",\n name: {\n kind: \"Name\",\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions, true) });\n return query;\n}\n// Utility function that takes a list of fragment definitions and makes a hash out of them\n// that maps the name of the fragment to the fragment definition.\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case \"InlineFragment\":\n return selection;\n case \"FragmentSpread\": {\n var fragmentName = selection.name.value;\n if (typeof fragmentMap === \"function\") {\n return fragmentMap(fragmentName);\n }\n var fragment = fragmentMap && fragmentMap[fragmentName];\n invariant(fragment, 76, fragmentName);\n return fragment || null;\n }\n default:\n return null;\n }\n}\n//# sourceMappingURL=fragments.js.map","import { AutoCleanedStrongCache, cacheSizes, } from \"../../utilities/caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\n/**\n * Like JSON.stringify, but with object keys always sorted in the same order.\n *\n * To achieve performant sorting, this function uses a Map from JSON-serialized\n * arrays of keys (in any order) to sorted arrays of the same keys, with a\n * single sorted array reference shared by all permutations of the keys.\n *\n * As a drawback, this function will add a little bit more memory for every\n * object encountered that has different (more, less, a different order of) keys\n * than in the past.\n *\n * In a typical application, this extra memory usage should not play a\n * significant role, as `canonicalStringify` will be called for only a limited\n * number of object shapes, and the cache will not grow beyond a certain point.\n * But in some edge cases, this could be a problem, so we provide\n * canonicalStringify.reset() as a way of clearing the cache.\n * */\nexport var canonicalStringify = Object.assign(function canonicalStringify(value) {\n return JSON.stringify(value, stableObjectReplacer);\n}, {\n reset: function () {\n // Clearing the sortingMap will reclaim all cached memory, without\n // affecting the logical results of canonicalStringify, but potentially\n // sacrificing performance until the cache is refilled.\n sortingMap = new AutoCleanedStrongCache(cacheSizes.canonicalStringify || 1000 /* defaultCacheSizes.canonicalStringify */);\n },\n});\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"canonicalStringify\", function () { return sortingMap.size; });\n}\n// Values are JSON-serialized arrays of object keys (in any order), and values\n// are sorted arrays of the same keys.\nvar sortingMap;\ncanonicalStringify.reset();\n// The JSON.stringify function takes an optional second argument called a\n// replacer function. This function is called for each key-value pair in the\n// object being stringified, and its return value is used instead of the\n// original value. If the replacer function returns a new value, that value is\n// stringified as JSON instead of the original value of the property.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#the_replacer_parameter\nfunction stableObjectReplacer(key, value) {\n if (value && typeof value === \"object\") {\n var proto = Object.getPrototypeOf(value);\n // We don't want to mess with objects that are not \"plain\" objects, which\n // means their prototype is either Object.prototype or null. This check also\n // prevents needlessly rearranging the indices of arrays.\n if (proto === Object.prototype || proto === null) {\n var keys = Object.keys(value);\n // If keys is already sorted, let JSON.stringify serialize the original\n // value instead of creating a new object with keys in the same order.\n if (keys.every(everyKeyInOrder))\n return value;\n var unsortedKey = JSON.stringify(keys);\n var sortedKeys = sortingMap.get(unsortedKey);\n if (!sortedKeys) {\n keys.sort();\n var sortedKey = JSON.stringify(keys);\n // Checking for sortedKey in the sortingMap allows us to share the same\n // sorted array reference for all permutations of the same set of keys.\n sortedKeys = sortingMap.get(sortedKey) || keys;\n sortingMap.set(unsortedKey, sortedKeys);\n sortingMap.set(sortedKey, sortedKeys);\n }\n var sortedObject_1 = Object.create(proto);\n // Reassigning the keys in sorted order will cause JSON.stringify to\n // serialize them in sorted order.\n sortedKeys.forEach(function (key) {\n sortedObject_1[key] = value[key];\n });\n return sortedObject_1;\n }\n }\n return value;\n}\n// Since everything that happens in stableObjectReplacer benefits from being as\n// efficient as possible, we use a static function as the callback for\n// keys.every in order to test if the provided keys are already sorted without\n// allocating extra memory for a callback.\nfunction everyKeyInOrder(key, i, keys) {\n return i === 0 || keys[i - 1] <= key;\n}\n//# sourceMappingURL=canonicalStringify.js.map","import { newInvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nimport { canonicalStringify } from \"../common/canonicalStringify.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === \"object\" && typeof obj.__ref === \"string\");\n}\nexport function isDocumentNode(value) {\n return (isNonNullObject(value) &&\n value.kind === \"Document\" &&\n Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n return value.kind === \"StringValue\";\n}\nfunction isBooleanValue(value) {\n return value.kind === \"BooleanValue\";\n}\nfunction isIntValue(value) {\n return value.kind === \"IntValue\";\n}\nfunction isFloatValue(value) {\n return value.kind === \"FloatValue\";\n}\nfunction isVariable(value) {\n return value.kind === \"Variable\";\n}\nfunction isObjectValue(value) {\n return value.kind === \"ObjectValue\";\n}\nfunction isListValue(value) {\n return value.kind === \"ListValue\";\n}\nfunction isEnumValue(value) {\n return value.kind === \"EnumValue\";\n}\nfunction isNullValue(value) {\n return value.kind === \"NullValue\";\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw newInvariantError(85, name.value, value.kind);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n \"connection\",\n \"include\",\n \"skip\",\n \"client\",\n \"rest\",\n \"export\",\n \"nonreactive\",\n];\n// Default stable JSON.stringify implementation used by getStoreKeyName. Can be\n// updated/replaced with something better by calling\n// getStoreKeyName.setStringify(newStringifyFunction).\nvar storeKeyNameStringify = canonicalStringify;\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args &&\n directives &&\n directives[\"connection\"] &&\n directives[\"connection\"][\"key\"]) {\n if (directives[\"connection\"][\"filter\"] &&\n directives[\"connection\"][\"filter\"].length > 0) {\n var filterKeys = directives[\"connection\"][\"filter\"] ?\n directives[\"connection\"][\"filter\"]\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives[\"connection\"][\"key\"], \"(\").concat(storeKeyNameStringify(filteredArgs_1), \")\");\n }\n else {\n return directives[\"connection\"][\"key\"];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n // We can't use `JSON.stringify` here since it's non-deterministic,\n // and can lead to different store key names being created even though\n // the `args` object used during creation has the same properties/values.\n var stringifiedArgs = storeKeyNameStringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(storeKeyNameStringify(directives[key]), \")\");\n }\n else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = storeKeyNameStringify;\n storeKeyNameStringify = s;\n return previous;\n },\n});\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n var fragments;\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === \"__typename\") {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else if (fragments) {\n fragments.push(selection);\n }\n else {\n fragments = [selection];\n }\n }\n if (typeof result.__typename === \"string\") {\n return result.__typename;\n }\n if (fragments) {\n for (var _b = 0, fragments_1 = fragments; _b < fragments_1.length; _b++) {\n var selection = fragments_1[_b];\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === \"string\") {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === \"Field\";\n}\nexport function isInlineFragment(selection) {\n return selection.kind === \"InlineFragment\";\n}\n//# sourceMappingURL=storeUtils.js.map","import { invariant, newInvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\n// Checks the document for errors and throws an exception if there is an error.\nexport function checkDocument(doc) {\n invariant(doc && doc.kind === \"Document\", 77);\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== \"FragmentDefinition\"; })\n .map(function (definition) {\n if (definition.kind !== \"OperationDefinition\") {\n throw newInvariantError(78, definition.kind);\n }\n return definition;\n });\n invariant(operations.length <= 1, 79, operations.length);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"OperationDefinition\";\n })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === \"OperationDefinition\" && !!definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\n// Returns the FragmentDefinitions from a particular document as an array\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"FragmentDefinition\";\n });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n invariant(queryDef && queryDef.operation === \"query\", 80);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n invariant(doc.kind === \"Document\", 81);\n invariant(doc.definitions.length <= 1, 82);\n var fragmentDef = doc.definitions[0];\n invariant(fragmentDef.kind === \"FragmentDefinition\", 83);\n return fragmentDef;\n}\n/**\n * Returns the first operation definition found in this document.\n * If no operation definition is found, the first fragment definition will be returned.\n * If no definitions are found, an error will be thrown.\n */\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === \"OperationDefinition\") {\n var operation = definition.operation;\n if (operation === \"query\" ||\n operation === \"mutation\" ||\n operation === \"subscription\") {\n return definition;\n }\n }\n if (definition.kind === \"FragmentDefinition\" && !fragmentDefinition) {\n // we do this because we want to allow multiple fragment definitions\n // to precede an operation definition.\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw newInvariantError(84);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map","import { newInvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === \"function\" ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar ApolloLink = /** @class */ (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n var ret;\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n ret = new ApolloLink(function (operation) {\n return test(operation) ?\n leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n ret = new ApolloLink(function (operation, forward) {\n return test(operation) ?\n leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n return Object.assign(ret, { left: leftLink, right: rightLink });\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n globalThis.__DEV__ !== false && invariant.warn(36, firstLink);\n return firstLink;\n }\n var nextLink = toLink(second);\n var ret;\n if (isTerminating(nextLink)) {\n ret = new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n ret = new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n return Object.assign(ret, { left: firstLink, right: nextLink });\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw newInvariantError(37);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n // Returning false indicates that observer.error does not need to be\n // called again, since it was already called (on the previous line).\n // Calling observer.error again would not cause any real problems,\n // since only the first call matters, but custom onError functions\n // might have other reasons for wanting to prevent the default\n // behavior by returning false.\n return false;\n }\n // Throw errors will be passed to observer.error.\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n//# sourceMappingURL=ApolloLink.js.map","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === \"function\") {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, \"setContext\", {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, \"getContext\", {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n//# sourceMappingURL=createOperation.js.map","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n // Best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== \"string\" ?\n getOperationName(transformedOperation.query) || undefined\n : \"\";\n }\n return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n \"query\",\n \"operationName\",\n \"variables\",\n \"extensions\",\n \"context\",\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw newInvariantError(44, key);\n }\n }\n return operation;\n}\n//# sourceMappingURL=validateOperation.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n//# sourceMappingURL=execute.js.map","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isNode, QueryDocumentKeys } from './ast.mjs';\nimport { Kind } from './kinds.mjs';\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport const BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexport function visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nexport function getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n","import { invariant } from \"../globals/index.js\";\nimport { visit, BREAK } from \"graphql\";\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === \"Variable\") {\n evaledValue =\n variables && variables[ifArgument.value.name.value];\n invariant(evaledValue !== void 0, 70, directive.name.value);\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === \"skip\" ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport var hasAnyDirectives = function (names, root) {\n return hasDirectives(names, root, false);\n};\nexport var hasAllDirectives = function (names, root) {\n return hasDirectives(names, root, true);\n};\nexport function hasDirectives(names, root, all) {\n var nameSet = new Set(names);\n var uniqueCount = nameSet.size;\n visit(root, {\n Directive: function (node) {\n if (nameSet.delete(node.name.value) && (!all || !nameSet.size)) {\n return BREAK;\n }\n },\n });\n // If we found all the names, nameSet will be empty. If we only care about\n // finding some of them, the < condition is sufficient.\n return all ? !nameSet.size : nameSet.size < uniqueCount;\n}\nexport function hasClientExports(document) {\n return document && hasDirectives([\"client\", \"export\"], document, true);\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === \"skip\" || value === \"include\";\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n invariant(directiveArguments && directiveArguments.length === 1, 71, directiveName);\n var ifArgument = directiveArguments[0];\n invariant(ifArgument.name && ifArgument.name.value === \"if\", 72, directiveName);\n var ifValue = ifArgument.value;\n // means it has to be a variable value if this is a valid @skip or @include directive\n invariant(ifValue &&\n (ifValue.kind === \"Variable\" || ifValue.kind === \"BooleanValue\"), 73, directiveName);\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n//# sourceMappingURL=directives.js.map","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = newInvariantError(40, label, e.message);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/nodeStream.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function nodeStreamIterator(stream) {\n var cleanup = null;\n var error = null;\n var done = false;\n var data = [];\n var waiting = [];\n function onData(chunk) {\n if (error)\n return;\n if (waiting.length) {\n var shiftedArr = waiting.shift();\n if (Array.isArray(shiftedArr) && shiftedArr[0]) {\n return shiftedArr[0]({ value: chunk, done: false });\n }\n }\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n cleanup = function () {\n cleanup = null;\n stream.removeListener(\"data\", onData);\n stream.removeListener(\"error\", onError);\n stream.removeListener(\"end\", onEnd);\n stream.removeListener(\"finish\", onEnd);\n stream.removeListener(\"close\", onEnd);\n };\n stream.on(\"data\", onData);\n stream.on(\"error\", onError);\n stream.on(\"end\", onEnd);\n stream.on(\"finish\", onEnd);\n stream.on(\"close\", onEnd);\n function getNext() {\n return new Promise(function (resolve, reject) {\n if (error)\n return reject(error);\n if (data.length)\n return resolve({ value: data.shift(), done: false });\n if (done)\n return resolve({ value: undefined, done: true });\n waiting.push([resolve, reject]);\n });\n }\n var iterator = {\n next: function () {\n return getNext();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=nodeStream.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/reader.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function readerIterator(reader) {\n var iterator = {\n next: function () {\n return reader.read();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=reader.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/index.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../utilities/index.js\";\nimport asyncIterator from \"./iterators/async.js\";\nimport nodeStreamIterator from \"./iterators/nodeStream.js\";\nimport promiseIterator from \"./iterators/promise.js\";\nimport readerIterator from \"./iterators/reader.js\";\nfunction isNodeResponse(value) {\n return !!value.body;\n}\nfunction isReadableStream(value) {\n return !!value.getReader;\n}\nfunction isAsyncIterableIterator(value) {\n return !!(canUseAsyncIteratorSymbol &&\n value[Symbol.asyncIterator]);\n}\nfunction isStreamableBlob(value) {\n return !!value.stream;\n}\nfunction isBlob(value) {\n return !!value.arrayBuffer;\n}\nfunction isNodeReadableStream(value) {\n return !!value.pipe;\n}\nexport function responseIterator(response) {\n var body = response;\n if (isNodeResponse(response))\n body = response.body;\n if (isAsyncIterableIterator(body))\n return asyncIterator(body);\n if (isReadableStream(body))\n return readerIterator(body.getReader());\n // this errors without casting to ReadableStream\n // because Blob.stream() returns a NodeJS ReadableStream\n if (isStreamableBlob(body)) {\n return readerIterator(body.stream().getReader());\n }\n if (isBlob(body))\n return promiseIterator(body.arrayBuffer());\n if (isNodeReadableStream(body))\n return nodeStreamIterator(body);\n throw new Error(\"Unknown body type for responseIterator. Please pass a streamable response.\");\n}\n//# sourceMappingURL=responseIterator.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/async.ts\n */\nexport default function asyncIterator(source) {\n var _a;\n var iterator = source[Symbol.asyncIterator]();\n return _a = {\n next: function () {\n return iterator.next();\n }\n },\n _a[Symbol.asyncIterator] = function () {\n return this;\n },\n _a;\n}\n//# sourceMappingURL=async.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/promise.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function promiseIterator(promise) {\n var resolved = false;\n var iterator = {\n next: function () {\n if (resolved)\n return Promise.resolve({\n value: undefined,\n done: true,\n });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise\n .then(function (value) {\n resolve({ value: value, done: false });\n })\n .catch(reject);\n });\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=promise.js.map","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = \"ServerError\";\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n//# sourceMappingURL=throwServerError.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\n// In almost any situation where you could succeed in getting the\n// TypeScript compiler to infer a tuple type for the sources array, you\n// could just use mergeDeep instead of mergeDeepArray, so instead of\n// trying to convert T[] to an intersection type we just infer the array\n// element type, which works perfectly when the sources array has a\n// consistent element type.\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = /** @class */ (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target,\n source,\n sourceKey], context, false));\n // A well-implemented reconciler may return targetValue to indicate\n // the merge changed nothing about the structure of the target.\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n // If there is no collision, the target can safely share memory with\n // the source, and the recursion can terminate here.\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n // If source (or target) is not an object, let source replace target.\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (!this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n//# sourceMappingURL=mergeDeep.js.map","import { isNonNullObject } from \"./objects.js\";\nimport { isNonEmptyArray } from \"./arrays.js\";\nimport { DeepMerger } from \"./mergeDeep.js\";\nexport function isExecutionPatchIncrementalResult(value) {\n return \"incremental\" in value;\n}\nexport function isExecutionPatchInitialResult(value) {\n return \"hasNext\" in value && \"data\" in value;\n}\nexport function isExecutionPatchResult(value) {\n return (isExecutionPatchIncrementalResult(value) ||\n isExecutionPatchInitialResult(value));\n}\n// This function detects an Apollo payload result before it is transformed\n// into a FetchResult via HttpLink; it cannot detect an ApolloPayloadResult\n// once it leaves the link chain.\nexport function isApolloPayloadResult(value) {\n return isNonNullObject(value) && \"payload\" in value;\n}\nexport function mergeIncrementalData(prevResult, result) {\n var mergedData = prevResult;\n var merger = new DeepMerger();\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (_a) {\n var data = _a.data, path = _a.path;\n for (var i = path.length - 1; i >= 0; --i) {\n var key = path[i];\n var isNumericKey = !isNaN(+key);\n var parent_1 = isNumericKey ? [] : {};\n parent_1[key] = data;\n data = parent_1;\n }\n mergedData = merger.merge(mergedData, data);\n });\n }\n return mergedData;\n}\n//# sourceMappingURL=incrementalResult.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { responseIterator } from \"./responseIterator.js\";\nimport { throwServerError } from \"../utils/index.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../../errors/index.js\";\nimport { isApolloPayloadResult } from \"../../utilities/common/incrementalResult.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function readMultipartBody(response, nextValue) {\n return __awaiter(this, void 0, void 0, function () {\n var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _a, value, done, chunk, searchFrom, bi, message, i, headers, contentType_1, body, result, next;\n var _b, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (TextDecoder === undefined) {\n throw new Error(\"TextDecoder must be defined in the environment: please import a polyfill.\");\n }\n decoder = new TextDecoder(\"utf-8\");\n contentType = (_d = response.headers) === null || _d === void 0 ? void 0 : _d.get(\"content-type\");\n delimiter = \"boundary=\";\n boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter)) ?\n contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['\"]/g, \"\").replace(/\\;(.*)/gm, \"\").trim()\n : \"-\";\n boundary = \"\\r\\n--\".concat(boundaryVal);\n buffer = \"\";\n iterator = responseIterator(response);\n running = true;\n _e.label = 1;\n case 1:\n if (!running) return [3 /*break*/, 3];\n return [4 /*yield*/, iterator.next()];\n case 2:\n _a = _e.sent(), value = _a.value, done = _a.done;\n chunk = typeof value === \"string\" ? value : decoder.decode(value);\n searchFrom = buffer.length - boundary.length + 1;\n running = !done;\n buffer += chunk;\n bi = buffer.indexOf(boundary, searchFrom);\n while (bi > -1) {\n message = void 0;\n _b = [\n buffer.slice(0, bi),\n buffer.slice(bi + boundary.length),\n ], message = _b[0], buffer = _b[1];\n i = message.indexOf(\"\\r\\n\\r\\n\");\n headers = parseHeaders(message.slice(0, i));\n contentType_1 = headers[\"content-type\"];\n if (contentType_1 &&\n contentType_1.toLowerCase().indexOf(\"application/json\") === -1) {\n throw new Error(\"Unsupported patch content type: application/json is required.\");\n }\n body = message.slice(i);\n if (body) {\n result = parseJsonBody(response, body);\n if (Object.keys(result).length > 1 ||\n \"data\" in result ||\n \"incremental\" in result ||\n \"errors\" in result ||\n \"payload\" in result) {\n if (isApolloPayloadResult(result)) {\n next = {};\n if (\"payload\" in result) {\n if (Object.keys(result).length === 1 && result.payload === null) {\n return [2 /*return*/];\n }\n next = __assign({}, result.payload);\n }\n if (\"errors\" in result) {\n next = __assign(__assign({}, next), { extensions: __assign(__assign({}, (\"extensions\" in next ? next.extensions : null)), (_c = {}, _c[PROTOCOL_ERRORS_SYMBOL] = result.errors, _c)) });\n }\n nextValue(next);\n }\n else {\n // for the last chunk with only `hasNext: false`\n // we don't need to call observer.next as there is no data/errors\n nextValue(result);\n }\n }\n else if (\n // If the chunk contains only a \"hasNext: false\", we can call\n // observer.complete() immediately.\n Object.keys(result).length === 1 &&\n \"hasNext\" in result &&\n !result.hasNext) {\n return [2 /*return*/];\n }\n }\n bi = buffer.indexOf(boundary);\n }\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nexport function parseHeaders(headerText) {\n var headersInit = {};\n headerText.split(\"\\n\").forEach(function (line) {\n var i = line.indexOf(\":\");\n if (i > -1) {\n // normalize headers to lowercase\n var name_1 = line.slice(0, i).trim().toLowerCase();\n var value = line.slice(i + 1).trim();\n headersInit[name_1] = value;\n }\n });\n return headersInit;\n}\nexport function parseJsonBody(response, bodyText) {\n if (response.status >= 300) {\n // Network error\n var getResult = function () {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n return bodyText;\n }\n };\n throwServerError(response, getResult(), \"Response not successful: Received status code \".concat(response.status));\n }\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = \"ServerParseError\";\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n}\nexport function handleError(err, observer) {\n // if it is a network error, BUT there is graphql result info fire\n // the next observer before calling error this gives apollo-client\n // (and react-apollo) the `graphqlErrors` and `networkErrors` to\n // pass to UI this should only happen if we *also* have data as\n // part of the response key per the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we don't call next, the UI can only show networkError\n // because AC didn't get any graphqlErrors this is graphql\n // execution result info (i.e errors and possibly data) this is\n // because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status\n // of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n}\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) {\n return response\n .text()\n .then(function (bodyText) { return parseJsonBody(response, bodyText); })\n .then(function (result) {\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, \"data\") &&\n !hasOwnProperty.call(result, \"errors\")) {\n // Data error\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations) ?\n operations.map(function (op) { return op.operationName; })\n : operations.operationName, \"'.\"));\n }\n return result;\n });\n };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === \"undefined\") {\n throw newInvariantError(38);\n }\n};\n//# sourceMappingURL=checkFetcher.js.map","/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nexport function printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n","import { printBlockString } from './blockString.mjs';\nimport { printString } from './printString.mjs';\nimport { visit } from './visitor.mjs';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? printBlockString(value) : printString(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n","import { print as origPrint } from \"graphql\";\nimport { AutoCleanedWeakCache, cacheSizes, } from \"../caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\nvar printCache;\nexport var print = Object.assign(function (ast) {\n var result = printCache.get(ast);\n if (!result) {\n result = origPrint(ast);\n printCache.set(ast, result);\n }\n return result;\n}, {\n reset: function () {\n printCache = new AutoCleanedWeakCache(cacheSizes.print || 2000 /* defaultCacheSizes.print */);\n },\n});\nprint.reset();\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"print\", function () { return (printCache ? printCache.size : 0); });\n}\n//# sourceMappingURL=print.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from \"../../utilities/index.js\";\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n preserveHeaderCase: false,\n};\nvar defaultHeaders = {\n // headers are case insensitive (https://stackoverflow.com/a/5259004)\n accept: \"*/*\",\n // The content-type header describes the type of the body of the request, and\n // so it typically only is sent with requests that actually have bodies. One\n // could imagine that Apollo Client would remove this header when constructing\n // a GET request (which has no body), but we historically have not done that.\n // This means that browsers will preflight all Apollo Client requests (even\n // GET requests). Apollo Server's CSRF prevention feature (introduced in\n // AS3.7) takes advantage of this fact and does not block requests with this\n // header. If you want to drop this header from GET requests, then you should\n // probably replace it with a `apollo-require-preflight` header, or servers\n // with CSRF prevention enabled might block your GET request. See\n // https://www.apollographql.com/docs/apollo-server/security/cors/#preventing-cross-site-request-forgery-csrf\n // for more details.\n \"content-type\": \"application/json\",\n};\nvar defaultOptions = {\n method: \"POST\",\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var defaultPrinter = function (ast, printer) { return printer(ast); };\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,\n defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n if (options.headers) {\n options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);\n }\n //The body depends on the http options\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n // not sending the query (i.e persisted queries)\n if (http.includeQuery)\n body.query = printer(query, print);\n return {\n options: options,\n body: body,\n };\n}\n// Remove potential duplicate header names, preserving last (by insertion order).\n// This is done to prevent unintentionally duplicating a header instead of\n// overwriting it (See #8447 and #8449).\nfunction removeDuplicateHeaders(headers, preserveHeaderCase) {\n // If we're not preserving the case, just remove duplicates w/ normalization.\n if (!preserveHeaderCase) {\n var normalizedHeaders_1 = {};\n Object.keys(Object(headers)).forEach(function (name) {\n normalizedHeaders_1[name.toLowerCase()] = headers[name];\n });\n return normalizedHeaders_1;\n }\n // If we are preserving the case, remove duplicates w/ normalization,\n // preserving the original name.\n // This allows for non-http-spec-compliant servers that expect intentionally\n // capitalized header names (See #6741).\n var headerData = {};\n Object.keys(Object(headers)).forEach(function (name) {\n headerData[name.toLowerCase()] = {\n originalName: name,\n value: headers[name],\n };\n });\n var normalizedHeaders = {};\n Object.keys(headerData).forEach(function (name) {\n normalizedHeaders[headerData[name].originalName] = headerData[name].value;\n });\n return normalizedHeaders;\n}\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n//# sourceMappingURL=fromError.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, Kind } from \"graphql\";\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { isField } from \"./storeUtils.js\";\nimport { createFragmentMap } from \"./fragments.js\";\nimport { isArray, isNonEmptyArray } from \"../common/arrays.js\";\nvar TYPENAME_FIELD = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: \"__typename\",\n },\n};\nfunction isEmpty(op, fragmentMap) {\n return (!op ||\n op.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FRAGMENT_SPREAD &&\n isEmpty(fragmentMap[selection.name.value], fragmentMap);\n }));\n}\nfunction nullIfDocIsEmpty(doc) {\n return (isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))) ?\n null\n : doc;\n}\nfunction getDirectiveMatcher(configs) {\n var names = new Map();\n var tests = new Map();\n configs.forEach(function (directive) {\n if (directive) {\n if (directive.name) {\n names.set(directive.name, directive);\n }\n else if (directive.test) {\n tests.set(directive.test, directive);\n }\n }\n });\n return function (directive) {\n var config = names.get(directive.name.value);\n if (!config && tests.size) {\n tests.forEach(function (testConfig, test) {\n if (test(directive)) {\n config = testConfig;\n }\n });\n }\n return config;\n };\n}\nfunction makeInUseGetterFunction(defaultKey) {\n var map = new Map();\n return function inUseGetterFunction(key) {\n if (key === void 0) { key = defaultKey; }\n var inUse = map.get(key);\n if (!inUse) {\n map.set(key, (inUse = {\n // Variable and fragment spread names used directly within this\n // operation or fragment definition, as identified by key. These sets\n // will be populated during the first traversal of the document in\n // removeDirectivesFromDocument below.\n variables: new Set(),\n fragmentSpreads: new Set(),\n }));\n }\n return inUse;\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n checkDocument(doc);\n // Passing empty strings to makeInUseGetterFunction means we handle anonymous\n // operations as if their names were \"\". Anonymous fragment definitions are\n // not supposed to be possible, but the same default naming strategy seems\n // appropriate for that case as well.\n var getInUseByOperationName = makeInUseGetterFunction(\"\");\n var getInUseByFragmentName = makeInUseGetterFunction(\"\");\n var getInUse = function (ancestors) {\n for (var p = 0, ancestor = void 0; p < ancestors.length && (ancestor = ancestors[p]); ++p) {\n if (isArray(ancestor))\n continue;\n if (ancestor.kind === Kind.OPERATION_DEFINITION) {\n // If an operation is anonymous, we use the empty string as its key.\n return getInUseByOperationName(ancestor.name && ancestor.name.value);\n }\n if (ancestor.kind === Kind.FRAGMENT_DEFINITION) {\n return getInUseByFragmentName(ancestor.name.value);\n }\n }\n globalThis.__DEV__ !== false && invariant.error(86);\n return null;\n };\n var operationCount = 0;\n for (var i = doc.definitions.length - 1; i >= 0; --i) {\n if (doc.definitions[i].kind === Kind.OPERATION_DEFINITION) {\n ++operationCount;\n }\n }\n var directiveMatcher = getDirectiveMatcher(directives);\n var shouldRemoveField = function (nodeDirectives) {\n return isNonEmptyArray(nodeDirectives) &&\n nodeDirectives\n .map(directiveMatcher)\n .some(function (config) { return config && config.remove; });\n };\n var originalFragmentDefsByPath = new Map();\n // Any time the first traversal of the document below makes a change like\n // removing a fragment (by returning null), this variable should be set to\n // true. Once it becomes true, it should never be set to false again. If this\n // variable remains false throughout the traversal, then we can return the\n // original doc immediately without any modifications.\n var firstVisitMadeChanges = false;\n var fieldOrInlineFragmentVisitor = {\n enter: function (node) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n };\n var docWithoutDirectiveSubtrees = visit(doc, {\n // These two AST node types share the same implementation, defined above.\n Field: fieldOrInlineFragmentVisitor,\n InlineFragment: fieldOrInlineFragmentVisitor,\n VariableDefinition: {\n enter: function () {\n // VariableDefinition nodes do not count as variables in use, though\n // they do contain Variable nodes that might be visited below. To avoid\n // counting variable declarations as usages, we skip visiting the\n // contents of this VariableDefinition node by returning false.\n return false;\n },\n },\n Variable: {\n enter: function (node, _key, _parent, _path, ancestors) {\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.variables.add(node.name.value);\n }\n },\n },\n FragmentSpread: {\n enter: function (node, _key, _parent, _path, ancestors) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.fragmentSpreads.add(node.name.value);\n }\n // We might like to remove this FragmentSpread by returning null here if\n // the corresponding FragmentDefinition node is also going to be removed\n // by the logic below, but we can't control the relative order of those\n // events, so we have to postpone the removal of dangling FragmentSpread\n // nodes until after the current visit of the document has finished.\n },\n },\n FragmentDefinition: {\n enter: function (node, _key, _parent, path) {\n originalFragmentDefsByPath.set(JSON.stringify(path), node);\n },\n leave: function (node, _key, _parent, path) {\n var originalNode = originalFragmentDefsByPath.get(JSON.stringify(path));\n if (node === originalNode) {\n // If the FragmentNode received by this leave function is identical to\n // the one received by the corresponding enter function (above), then\n // the visitor must not have made any changes within this\n // FragmentDefinition node. This fragment definition may still be\n // removed if there are no ...spread references to it, but it won't be\n // removed just because it has only a __typename field.\n return node;\n }\n if (\n // This logic applies only if the document contains one or more\n // operations, since removing all fragments from a document containing\n // only fragments makes the document useless.\n operationCount > 0 &&\n node.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FIELD &&\n selection.name.value === \"__typename\";\n })) {\n // This is a somewhat opinionated choice: if a FragmentDefinition ends\n // up having no fields other than __typename, we remove the whole\n // fragment definition, and later prune ...spread references to it.\n getInUseByFragmentName(node.name.value).removed = true;\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n Directive: {\n leave: function (node) {\n // If a matching directive is found, remove the directive itself. Note\n // that this does not remove the target (field, argument, etc) of the\n // directive, but only the directive itself.\n if (directiveMatcher(node)) {\n firstVisitMadeChanges = true;\n return null;\n }\n },\n },\n });\n if (!firstVisitMadeChanges) {\n // If our first pass did not change anything about the document, then there\n // is no cleanup we need to do, and we can return the original doc.\n return doc;\n }\n // Utility for making sure inUse.transitiveVars is recursively populated.\n // Because this logic assumes inUse.fragmentSpreads has been completely\n // populated and inUse.removed has been set if appropriate,\n // populateTransitiveVars must be called after that information has been\n // collected by the first traversal of the document.\n var populateTransitiveVars = function (inUse) {\n if (!inUse.transitiveVars) {\n inUse.transitiveVars = new Set(inUse.variables);\n if (!inUse.removed) {\n inUse.fragmentSpreads.forEach(function (childFragmentName) {\n populateTransitiveVars(getInUseByFragmentName(childFragmentName)).transitiveVars.forEach(function (varName) {\n inUse.transitiveVars.add(varName);\n });\n });\n }\n }\n return inUse;\n };\n // Since we've been keeping track of fragment spreads used by particular\n // operations and fragment definitions, we now need to compute the set of all\n // spreads used (transitively) by any operations in the document.\n var allFragmentNamesUsed = new Set();\n docWithoutDirectiveSubtrees.definitions.forEach(function (def) {\n if (def.kind === Kind.OPERATION_DEFINITION) {\n populateTransitiveVars(getInUseByOperationName(def.name && def.name.value)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n }\n else if (def.kind === Kind.FRAGMENT_DEFINITION &&\n // If there are no operations in the document, then all fragment\n // definitions count as usages of their own fragment names. This heuristic\n // prevents accidentally removing all fragment definitions from the\n // document just because it contains no operations that use the fragments.\n operationCount === 0 &&\n !getInUseByFragmentName(def.name.value).removed) {\n allFragmentNamesUsed.add(def.name.value);\n }\n });\n // Now that we have added all fragment spreads used by operations to the\n // allFragmentNamesUsed set, we can complete the set by transitively adding\n // all fragment spreads used by those fragments, and so on.\n allFragmentNamesUsed.forEach(function (fragmentName) {\n // Once all the childFragmentName strings added here have been seen already,\n // the top-level allFragmentNamesUsed.forEach loop will terminate.\n populateTransitiveVars(getInUseByFragmentName(fragmentName)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n });\n var fragmentWillBeRemoved = function (fragmentName) {\n return !!(\n // A fragment definition will be removed if there are no spreads that refer\n // to it, or the fragment was explicitly removed because it had no fields\n // other than __typename.\n (!allFragmentNamesUsed.has(fragmentName) ||\n getInUseByFragmentName(fragmentName).removed));\n };\n var enterVisitor = {\n enter: function (node) {\n if (fragmentWillBeRemoved(node.name.value)) {\n return null;\n }\n },\n };\n return nullIfDocIsEmpty(visit(docWithoutDirectiveSubtrees, {\n // If the fragment is going to be removed, then leaving any dangling\n // FragmentSpread nodes with the same name would be a mistake.\n FragmentSpread: enterVisitor,\n // This is where the fragment definition is actually removed.\n FragmentDefinition: enterVisitor,\n OperationDefinition: {\n leave: function (node) {\n // Upon leaving each operation in the depth-first AST traversal, prune\n // any variables that are declared by the operation but unused within.\n if (node.variableDefinitions) {\n var usedVariableNames_1 = populateTransitiveVars(\n // If an operation is anonymous, we use the empty string as its key.\n getInUseByOperationName(node.name && node.name.value)).transitiveVars;\n // According to the GraphQL spec, all variables declared by an\n // operation must either be used by that operation or used by some\n // fragment included transitively into that operation:\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n //\n // To stay on the right side of this validation rule, if/when we\n // remove the last $var references from an operation or its fragments,\n // we must also remove the corresponding $var declaration from the\n // enclosing operation. This pruning applies only to operations and\n // not fragment definitions, at the moment. Fragments may be able to\n // declare variables eventually, but today they can only consume them.\n if (usedVariableNames_1.size < node.variableDefinitions.length) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions.filter(function (varDef) {\n return usedVariableNames_1.has(varDef.variable.name.value);\n }) });\n }\n }\n },\n },\n }));\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (parent &&\n parent.kind ===\n Kind.OPERATION_DEFINITION) {\n return;\n }\n // No changes if no selections.\n var selections = node.selections;\n if (!selections) {\n return;\n }\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === \"__typename\" ||\n selection.name.value.lastIndexOf(\"__\", 0) === 0));\n });\n if (skip) {\n return;\n }\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === \"export\"; })) {\n return;\n }\n // Create and return a new SelectionSet with a __typename Field.\n return __assign(__assign({}, node), { selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false) });\n },\n },\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n },\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === \"connection\";\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === \"key\"; })) {\n globalThis.__DEV__ !== false && invariant.warn(87);\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === Kind.VARIABLE &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { \n // Remove matching top level variables definitions.\n variableDefinitions: node.variableDefinitions ?\n node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n })\n : [] });\n },\n },\n Field: {\n enter: function (node) {\n // If `remove` is set to true for an argument, and an argument match\n // is found for a field, remove the field as well.\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n // Remove all matching arguments.\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\n// If the incoming document is a query, return it as is. Otherwise, build a\n// new document containing a query operation based on the selection set\n// of the previous main operation.\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === \"query\") {\n // Already a query, so return the existing document.\n return document;\n }\n // Build a new query using the selection set of the main operation.\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: \"query\" });\n },\n },\n });\n return modifiedDoc;\n}\n// Remove fields / selection sets that include an @client directive.\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === \"client\"; },\n remove: true,\n },\n ], document);\n return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { handleError, readMultipartBody, parseAndCheckHttpResponse, } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig, } from \"./selectHttpOptionsAndBody.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError, filterOperationVariables } from \"../utils/index.js\";\nimport { maybe, getMainDefinition, removeClientSetsFromDocument, } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () { return fetch; });\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? \"/graphql\" : _a, \n // use default global fetch if nothing passed in\n preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, preserveHeaderCase = linkOptions.preserveHeaderCase, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (globalThis.__DEV__ !== false) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch is\n // defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`. If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name_1;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n if (hasDirectives([\"client\"], operation.query)) {\n var transformedQuery = removeClientSetsFromDocument(operation.query);\n if (!transformedQuery) {\n return fromError(new Error(\"HttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or set the `transformOptions.removeClientFields` option to `true`.\"));\n }\n operation.query = transformedQuery;\n }\n //uses fallback, link, and then context to build options\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n body.variables = filterOperationVariables(body.variables, operation.query);\n }\n var controller;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n // If requested, set method to GET if there are no mutations.\n var definitionIsMutation = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"mutation\";\n };\n var definitionIsSubscription = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"subscription\";\n };\n var isSubscription = definitionIsSubscription(getMainDefinition(operation.query));\n // does not match custom directives beginning with @defer\n var hasDefer = hasDirectives([\"defer\"], operation.query);\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = \"GET\";\n }\n if (hasDefer || isSubscription) {\n options.headers = options.headers || {};\n var acceptHeader = \"multipart/mixed;\";\n // Omit defer-specific headers if the user attempts to defer a selection\n // set on a subscription and log a warning.\n if (isSubscription && hasDefer) {\n globalThis.__DEV__ !== false && invariant.warn(39);\n }\n if (isSubscription) {\n acceptHeader +=\n \"boundary=graphql;subscriptionSpec=1.0,application/json\";\n }\n else if (hasDefer) {\n acceptHeader += \"deferSpec=20220824,application/json\";\n }\n options.headers.accept = acceptHeader;\n }\n if (options.method === \"GET\") {\n var _c = rewriteURIForGET(chosenURI, body), newURI = _c.newURI, parseError = _c.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, \"Payload\");\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n // Prefer linkOptions.fetch (preferredFetch) if provided, and otherwise\n // fall back to the *current* global window.fetch function (see issue\n // #7832), or (if all else fails) the backupFetch function we saved when\n // this module was first evaluated. This last option protects against the\n // removal of window.fetch, which is unlikely but not impossible.\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n var observerNext = observer.next.bind(observer);\n currentFetch(chosenURI, options)\n .then(function (response) {\n var _a;\n operation.setContext({ response: response });\n var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-type\");\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observerNext);\n }\n else {\n return parseAndCheckHttpResponse(operation)(response).then(observerNext);\n }\n })\n .then(function () {\n controller = undefined;\n observer.complete();\n })\n .catch(function (err) {\n controller = undefined;\n handleError(err, observer);\n });\n return function () {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller)\n controller.abort();\n };\n });\n });\n};\n//# sourceMappingURL=createHttpLink.js.map","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === \"function\") {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || \"/graphql\";\n }\n};\n//# sourceMappingURL=selectURI.js.map","import { __assign } from \"tslib\";\nimport { visit } from \"graphql\";\nexport function filterOperationVariables(variables, query) {\n var result = __assign({}, variables);\n var unusedNames = new Set(Object.keys(variables));\n visit(query, {\n Variable: function (node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent &&\n parent.kind !== \"VariableDefinition\") {\n unusedNames.delete(node.name.value);\n }\n },\n });\n unusedNames.forEach(function (name) {\n delete result[name];\n });\n return result;\n}\n//# sourceMappingURL=filterOperationVariables.js.map","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\n// For GET operations, returns the given URI rewritten with parameters, or a\n// parse error.\nexport function rewriteURIForGET(chosenURI, body) {\n // Implement the standard HTTP GET serialization, plus 'extensions'. Note\n // the extra level of JSON serialization!\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if (\"query\" in body) {\n addQueryParam(\"query\", body.query);\n }\n if (body.operationName) {\n addQueryParam(\"operationName\", body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, \"Variables map\");\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam(\"variables\", serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, \"Extensions map\");\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam(\"extensions\", serializedExtensions);\n }\n // Reconstruct the URI with added query params.\n // XXX This assumes that the URI is well-formed and that it doesn't\n // already contain any of these query params. We could instead use the\n // URL API and take a polyfill (whatwg-url@6) for older browsers that\n // don't support URLSearchParams. Note that some browsers (and\n // versions of whatwg-url) support URL but not URLSearchParams!\n var fragment = \"\", preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf(\"#\");\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var newURI = preFragment + queryParamsPrefix + queryParams.join(\"&\") + fragment;\n return { newURI: newURI };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = /** @class */ (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n//# sourceMappingURL=HttpLink.js.map","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup() {\n return this.lookupArray(arguments);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek() {\n return this.peekArray(arguments);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = node.mapFor(array[i], false);\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n remove() {\n return this.removeArray(arguments);\n }\n removeArray(array) {\n let data;\n if (array.length) {\n const head = array[0];\n const map = this.mapFor(head, false);\n const child = map && map.get(head);\n if (child) {\n data = child.removeArray(slice.call(array, 1));\n if (!child.data && !child.weak && !(child.strong && child.strong.size)) {\n map.delete(head);\n }\n }\n }\n else {\n data = this.data;\n delete this.data;\n }\n return data;\n }\n getChildTrie(key) {\n const map = this.mapFor(key, true);\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n mapFor(key, create) {\n return this.weakness && isObjRef(key)\n ? this.weak || (create ? this.weak = new WeakMap : void 0)\n : this.strong || (create ? this.strong = new Map : void 0);\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst { forEach, slice } = Array.prototype;\nconst { hasOwnProperty } = Object.prototype;\nexport class Trie {\n constructor(weakness = true, makeData = defaultMakeData) {\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup(...array) {\n return this.lookupArray(array);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\")\n ? node.data\n : node.data = this.makeData(slice.call(array));\n }\n peek(...array) {\n return this.peekArray(array);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = this.weakness && isObjRef(array[i]) ? node.weak : node.strong;\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n getChildTrie(key) {\n const map = this.weakness && isObjRef(key)\n ? this.weak || (this.weak = new WeakMap())\n : this.strong || (this.strong = new Map());\n let child = map.get(key);\n if (!child)\n map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null)\n break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext = null;\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE = {};\nlet idCounter = 1;\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n constructor() {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n this.id = [\n \"slot\",\n idCounter++,\n Date.now(),\n Math.random().toString(36).slice(2),\n ].join(\":\");\n }\n hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE)\n break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n getValue() {\n if (this.hasValue()) {\n return currentContext.slots[this.id];\n }\n }\n withValue(value, callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n const slots = {\n __proto__: null,\n [this.id]: value,\n };\n const parent = currentContext;\n currentContext = { parent, slots };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = parent;\n }\n }\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(callback) {\n const context = currentContext;\n return function () {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments);\n }\n finally {\n currentContext = saved;\n }\n };\n }\n // Immediately run a callback function without any captured context.\n static noContext(callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = saved;\n }\n }\n else {\n return callback.apply(thisArg, args);\n }\n }\n};\nfunction maybe(fn) {\n try {\n return fn();\n }\n catch (ignored) { }\n}\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable property of the globalThis object. This obfuscation does\n// nothing to prevent access to the Slot class, but at least it ensures the\n// implementation (i.e. currentContext) cannot be tampered with, and all copies\n// of the @wry/context package (hopefully just one) will share the same Slot\n// implementation. Since the first copy of the @wry/context package to be\n// imported wins, this technique imposes a steep cost for any future breaking\n// changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host = \n// Prefer globalThis when available.\n// https://github.com/benjamn/wryware/issues/347\nmaybe(() => globalThis) ||\n // Fall back to global, which works in Node.js and may be converted by some\n // bundlers to the appropriate identifier (window, self, ...) depending on the\n // bundling target. https://github.com/endojs/endo/issues/576#issuecomment-1178515224\n maybe(() => global) ||\n // Otherwise, use a dummy host that's local to this module. We used to fall\n // back to using the Array constructor as a namespace, but that was flagged in\n // https://github.com/benjamn/wryware/issues/347, and can be avoided.\n Object.create(null);\n// Whichever globalHost we're using, make TypeScript happy about the additional\n// globalKey property.\nconst globalHost = host;\nexport const Slot = globalHost[globalKey] ||\n // Earlier versions of this package stored the globalKey property on the Array\n // constructor, so we check there as well, to prevent Slot class duplication.\n Array[globalKey] ||\n (function (Slot) {\n try {\n Object.defineProperty(globalHost, globalKey, {\n value: Slot,\n enumerable: false,\n writable: false,\n // When it was possible for globalHost to be the Array constructor (a\n // legacy Slot dedup strategy), it was important for the property to be\n // configurable:true so it could be deleted. That does not seem to be as\n // important when globalHost is the global object, but I don't want to\n // cause similar problems again, and configurable:true seems safest.\n // https://github.com/endojs/endo/issues/576#issuecomment-1178274008\n configurable: true\n });\n }\n finally {\n return Slot;\n }\n })(makeSlotClass());\n//# sourceMappingURL=slot.js.map","import { Slot } from \"./slot.js\";\nexport { Slot };\nexport const { bind, noContext } = Slot;\n// Like global.setTimeout, except the callback runs with captured context.\nexport { setTimeoutWithContext as setTimeout };\nfunction setTimeoutWithContext(callback, delay) {\n return setTimeout(bind(callback), delay);\n}\n// Turn any generator function into an async function (using yield instead\n// of await), with context automatically preserved across yields.\nexport function asyncFromGen(genFn) {\n return function () {\n const gen = genFn.apply(this, arguments);\n const boundNext = bind(gen.next);\n const boundThrow = bind(gen.throw);\n return new Promise((resolve, reject) => {\n function invoke(method, argument) {\n try {\n var result = method.call(gen, argument);\n }\n catch (error) {\n return reject(error);\n }\n const next = result.done ? resolve : invokeNext;\n if (isPromiseLike(result.value)) {\n result.value.then(next, result.done ? reject : invokeThrow);\n }\n else {\n next(result.value);\n }\n }\n const invokeNext = (value) => invoke(boundNext, value);\n const invokeThrow = (error) => invoke(boundThrow, error);\n invokeNext();\n });\n };\n}\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// If you use the fibers npm package to implement coroutines in Node.js,\n// you should call this function at least once to ensure context management\n// remains coherent across any yields.\nconst wrappedFibers = [];\nexport function wrapYieldingFiberMethods(Fiber) {\n // There can be only one implementation of Fiber per process, so this array\n // should never grow longer than one element.\n if (wrappedFibers.indexOf(Fiber) < 0) {\n const wrap = (obj, method) => {\n const fn = obj[method];\n obj[method] = function () {\n return noContext(fn, arguments, this);\n };\n };\n // These methods can yield, according to\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\n wrap(Fiber, \"yield\");\n wrap(Fiber.prototype, \"run\");\n wrap(Fiber.prototype, \"throwInto\");\n wrappedFibers.push(Fiber);\n }\n return Fiber;\n}\n//# sourceMappingURL=index.js.map","import { Slot } from \"@wry/context\";\nexport const parentEntrySlot = new Slot();\nexport function nonReactive(fn) {\n return parentEntrySlot.withValue(void 0, fn);\n}\nexport { Slot };\nexport { bind as bindContext, noContext, setTimeout, asyncFromGen, } from \"@wry/context\";\n//# sourceMappingURL=context.js.map","export const { hasOwnProperty, } = Object.prototype;\nexport const arrayFromSet = Array.from ||\n function (set) {\n const array = [];\n set.forEach(item => array.push(item));\n return array;\n };\nexport function maybeUnsubscribe(entryOrDep) {\n const { unsubscribe } = entryOrDep;\n if (typeof unsubscribe === \"function\") {\n entryOrDep.unsubscribe = void 0;\n unsubscribe();\n }\n}\n//# sourceMappingURL=helpers.js.map","import { parentEntrySlot } from \"./context.js\";\nimport { maybeUnsubscribe, arrayFromSet } from \"./helpers.js\";\nconst emptySetPool = [];\nconst POOL_TARGET_SIZE = 100;\n// Since this package might be used browsers, we should avoid using the\n// Node built-in assert module.\nfunction assert(condition, optionalMessage) {\n if (!condition) {\n throw new Error(optionalMessage || \"assertion failure\");\n }\n}\nfunction valueIs(a, b) {\n const len = a.length;\n return (\n // Unknown values are not equal to each other.\n len > 0 &&\n // Both values must be ordinary (or both exceptional) to be equal.\n len === b.length &&\n // The underlying value or exception must be the same.\n a[len - 1] === b[len - 1]);\n}\nfunction valueGet(value) {\n switch (value.length) {\n case 0: throw new Error(\"unknown value\");\n case 1: return value[0];\n case 2: throw value[1];\n }\n}\nfunction valueCopy(value) {\n return value.slice(0);\n}\nexport class Entry {\n constructor(fn) {\n this.fn = fn;\n this.parents = new Set();\n this.childValues = new Map();\n // When this Entry has children that are dirty, this property becomes\n // a Set containing other Entry objects, borrowed from emptySetPool.\n // When the set becomes empty, it gets recycled back to emptySetPool.\n this.dirtyChildren = null;\n this.dirty = true;\n this.recomputing = false;\n this.value = [];\n this.deps = null;\n ++Entry.count;\n }\n peek() {\n if (this.value.length === 1 && !mightBeDirty(this)) {\n rememberParent(this);\n return this.value[0];\n }\n }\n // This is the most important method of the Entry API, because it\n // determines whether the cached this.value can be returned immediately,\n // or must be recomputed. The overall performance of the caching system\n // depends on the truth of the following observations: (1) this.dirty is\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\n // (3) valueGet(this.value) is usually returned without recomputation.\n recompute(args) {\n assert(!this.recomputing, \"already recomputing\");\n rememberParent(this);\n return mightBeDirty(this)\n ? reallyRecompute(this, args)\n : valueGet(this.value);\n }\n setDirty() {\n if (this.dirty)\n return;\n this.dirty = true;\n reportDirty(this);\n // We can go ahead and unsubscribe here, since any further dirty\n // notifications we receive will be redundant, and unsubscribing may\n // free up some resources, e.g. file watchers.\n maybeUnsubscribe(this);\n }\n dispose() {\n this.setDirty();\n // Sever any dependency relationships with our own children, so those\n // children don't retain this parent Entry in their child.parents sets,\n // thereby preventing it from being fully garbage collected.\n forgetChildren(this);\n // Because this entry has been kicked out of the cache (in index.js),\n // we've lost the ability to find out if/when this entry becomes dirty,\n // whether that happens through a subscription, because of a direct call\n // to entry.setDirty(), or because one of its children becomes dirty.\n // Because of this loss of future information, we have to assume the\n // worst (that this entry might have become dirty very soon), so we must\n // immediately mark this entry's parents as dirty. Normally we could\n // just call entry.setDirty() rather than calling parent.setDirty() for\n // each parent, but that would leave this entry in parent.childValues\n // and parent.dirtyChildren, which would prevent the child from being\n // truly forgotten.\n eachParent(this, (parent, child) => {\n parent.setDirty();\n forgetChild(parent, this);\n });\n }\n forget() {\n // The code that creates Entry objects in index.ts will replace this method\n // with one that actually removes the Entry from the cache, which will also\n // trigger the entry.dispose method.\n this.dispose();\n }\n dependOn(dep) {\n dep.add(this);\n if (!this.deps) {\n this.deps = emptySetPool.pop() || new Set();\n }\n this.deps.add(dep);\n }\n forgetDeps() {\n if (this.deps) {\n arrayFromSet(this.deps).forEach(dep => dep.delete(this));\n this.deps.clear();\n emptySetPool.push(this.deps);\n this.deps = null;\n }\n }\n}\nEntry.count = 0;\nfunction rememberParent(child) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n child.parents.add(parent);\n if (!parent.childValues.has(child)) {\n parent.childValues.set(child, []);\n }\n if (mightBeDirty(child)) {\n reportDirtyChild(parent, child);\n }\n else {\n reportCleanChild(parent, child);\n }\n return parent;\n }\n}\nfunction reallyRecompute(entry, args) {\n forgetChildren(entry);\n // Set entry as the parent entry while calling recomputeNewValue(entry).\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\n if (maybeSubscribe(entry, args)) {\n // If we successfully recomputed entry.value and did not fail to\n // (re)subscribe, then this Entry is no longer explicitly dirty.\n setClean(entry);\n }\n return valueGet(entry.value);\n}\nfunction recomputeNewValue(entry, args) {\n entry.recomputing = true;\n const { normalizeResult } = entry;\n let oldValueCopy;\n if (normalizeResult && entry.value.length === 1) {\n oldValueCopy = valueCopy(entry.value);\n }\n // Make entry.value an empty array, representing an unknown value.\n entry.value.length = 0;\n try {\n // If entry.fn succeeds, entry.value will become a normal Value.\n entry.value[0] = entry.fn.apply(null, args);\n // If we have a viable oldValueCopy to compare with the (successfully\n // recomputed) new entry.value, and they are not already === identical, give\n // normalizeResult a chance to pick/choose/reuse parts of oldValueCopy[0]\n // and/or entry.value[0] to determine the final cached entry.value.\n if (normalizeResult && oldValueCopy && !valueIs(oldValueCopy, entry.value)) {\n try {\n entry.value[0] = normalizeResult(entry.value[0], oldValueCopy[0]);\n }\n catch (_a) {\n // If normalizeResult throws, just use the newer value, rather than\n // saving the exception as entry.value[1].\n }\n }\n }\n catch (e) {\n // If entry.fn throws, entry.value will hold that exception.\n entry.value[1] = e;\n }\n // Either way, this line is always reached.\n entry.recomputing = false;\n}\nfunction mightBeDirty(entry) {\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\n}\nfunction setClean(entry) {\n entry.dirty = false;\n if (mightBeDirty(entry)) {\n // This Entry may still have dirty children, in which case we can't\n // let our parents know we're clean just yet.\n return;\n }\n reportClean(entry);\n}\nfunction reportDirty(child) {\n eachParent(child, reportDirtyChild);\n}\nfunction reportClean(child) {\n eachParent(child, reportCleanChild);\n}\nfunction eachParent(child, callback) {\n const parentCount = child.parents.size;\n if (parentCount) {\n const parents = arrayFromSet(child.parents);\n for (let i = 0; i < parentCount; ++i) {\n callback(parents[i], child);\n }\n }\n}\n// Let a parent Entry know that one of its children may be dirty.\nfunction reportDirtyChild(parent, child) {\n // Must have called rememberParent(child) before calling\n // reportDirtyChild(parent, child).\n assert(parent.childValues.has(child));\n assert(mightBeDirty(child));\n const parentWasClean = !mightBeDirty(parent);\n if (!parent.dirtyChildren) {\n parent.dirtyChildren = emptySetPool.pop() || new Set;\n }\n else if (parent.dirtyChildren.has(child)) {\n // If we already know this child is dirty, then we must have already\n // informed our own parents that we are dirty, so we can terminate\n // the recursion early.\n return;\n }\n parent.dirtyChildren.add(child);\n // If parent was clean before, it just became (possibly) dirty (according to\n // mightBeDirty), since we just added child to parent.dirtyChildren.\n if (parentWasClean) {\n reportDirty(parent);\n }\n}\n// Let a parent Entry know that one of its children is no longer dirty.\nfunction reportCleanChild(parent, child) {\n // Must have called rememberChild(child) before calling\n // reportCleanChild(parent, child).\n assert(parent.childValues.has(child));\n assert(!mightBeDirty(child));\n const childValue = parent.childValues.get(child);\n if (childValue.length === 0) {\n parent.childValues.set(child, valueCopy(child.value));\n }\n else if (!valueIs(childValue, child.value)) {\n parent.setDirty();\n }\n removeDirtyChild(parent, child);\n if (mightBeDirty(parent)) {\n return;\n }\n reportClean(parent);\n}\nfunction removeDirtyChild(parent, child) {\n const dc = parent.dirtyChildren;\n if (dc) {\n dc.delete(child);\n if (dc.size === 0) {\n if (emptySetPool.length < POOL_TARGET_SIZE) {\n emptySetPool.push(dc);\n }\n parent.dirtyChildren = null;\n }\n }\n}\n// Removes all children from this entry and returns an array of the\n// removed children.\nfunction forgetChildren(parent) {\n if (parent.childValues.size > 0) {\n parent.childValues.forEach((_value, child) => {\n forgetChild(parent, child);\n });\n }\n // Remove this parent Entry from any sets to which it was added by the\n // addToSet method.\n parent.forgetDeps();\n // After we forget all our children, this.dirtyChildren must be empty\n // and therefore must have been reset to null.\n assert(parent.dirtyChildren === null);\n}\nfunction forgetChild(parent, child) {\n child.parents.delete(parent);\n parent.childValues.delete(child);\n removeDirtyChild(parent, child);\n}\nfunction maybeSubscribe(entry, args) {\n if (typeof entry.subscribe === \"function\") {\n try {\n maybeUnsubscribe(entry); // Prevent double subscriptions.\n entry.unsubscribe = entry.subscribe.apply(null, args);\n }\n catch (e) {\n // If this Entry has a subscribe function and it threw an exception\n // (or an unsubscribe function it previously returned now throws),\n // return false to indicate that we were not able to subscribe (or\n // unsubscribe), and this Entry should remain dirty.\n entry.setDirty();\n return false;\n }\n }\n // Returning true indicates either that there was no entry.subscribe\n // function or that it succeeded.\n return true;\n}\n//# sourceMappingURL=entry.js.map","import { parentEntrySlot } from \"./context.js\";\nimport { hasOwnProperty, maybeUnsubscribe, arrayFromSet, } from \"./helpers.js\";\nconst EntryMethods = {\n setDirty: true,\n dispose: true,\n forget: true, // Fully remove parent Entry from LRU cache and computation graph\n};\nexport function dep(options) {\n const depsByKey = new Map();\n const subscribe = options && options.subscribe;\n function depend(key) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n let dep = depsByKey.get(key);\n if (!dep) {\n depsByKey.set(key, dep = new Set);\n }\n parent.dependOn(dep);\n if (typeof subscribe === \"function\") {\n maybeUnsubscribe(dep);\n dep.unsubscribe = subscribe(key);\n }\n }\n }\n depend.dirty = function dirty(key, entryMethodName) {\n const dep = depsByKey.get(key);\n if (dep) {\n const m = (entryMethodName &&\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\n // We have to use arrayFromSet(dep).forEach instead of dep.forEach,\n // because modifying a Set while iterating over it can cause elements in\n // the Set to be removed from the Set before they've been iterated over.\n arrayFromSet(dep).forEach(entry => entry[m]());\n depsByKey.delete(key);\n maybeUnsubscribe(dep);\n }\n };\n return depend;\n}\n//# sourceMappingURL=dep.js.map","import { Trie } from \"@wry/trie\";\nimport { StrongCache } from \"@wry/caches\";\nimport { Entry } from \"./entry.js\";\nimport { parentEntrySlot } from \"./context.js\";\n// These helper functions are important for making optimism work with\n// asynchronous code. In order to register parent-child dependencies,\n// optimism needs to know about any currently active parent computations.\n// In ordinary synchronous code, the parent context is implicit in the\n// execution stack, but asynchronous code requires some extra guidance in\n// order to propagate context from one async task segment to the next.\nexport { bindContext, noContext, nonReactive, setTimeout, asyncFromGen, Slot, } from \"./context.js\";\n// A lighter-weight dependency, similar to OptimisticWrapperFunction, except\n// with only one argument, no makeCacheKey, no wrapped function to recompute,\n// and no result value. Useful for representing dependency leaves in the graph\n// of computation. Subscriptions are supported.\nexport { dep } from \"./dep.js\";\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\n// a unique object for any shallow-identical list of arguments. If you need\n// to implement a custom makeCacheKey function, you may find it helpful to\n// delegate the final work to defaultMakeCacheKey, which is why we export it\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\n// does not support WeakMap, or you have the ability to return a string key.\n// In those cases, just write your own custom makeCacheKey functions.\nlet defaultKeyTrie;\nexport function defaultMakeCacheKey(...args) {\n const trie = defaultKeyTrie || (defaultKeyTrie = new Trie(typeof WeakMap === \"function\"));\n return trie.lookupArray(args);\n}\n// If you're paranoid about memory leaks, or you want to avoid using WeakMap\n// under the hood, but you still need the behavior of defaultMakeCacheKey,\n// import this constructor to create your own tries.\nexport { Trie as KeyTrie };\n;\nconst caches = new Set();\nexport function wrap(originalFunction, { max = Math.pow(2, 16), keyArgs, makeCacheKey = defaultMakeCacheKey, normalizeResult, subscribe, cache: cacheOption = StrongCache, } = Object.create(null)) {\n const cache = typeof cacheOption === \"function\"\n ? new cacheOption(max, entry => entry.dispose())\n : cacheOption;\n const optimistic = function () {\n const key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\n if (key === void 0) {\n return originalFunction.apply(null, arguments);\n }\n let entry = cache.get(key);\n if (!entry) {\n cache.set(key, entry = new Entry(originalFunction));\n entry.normalizeResult = normalizeResult;\n entry.subscribe = subscribe;\n // Give the Entry the ability to trigger cache.delete(key), even though\n // the Entry itself does not know about key or cache.\n entry.forget = () => cache.delete(key);\n }\n const value = entry.recompute(Array.prototype.slice.call(arguments));\n // Move this entry to the front of the least-recently used queue,\n // since we just finished computing its value.\n cache.set(key, entry);\n caches.add(cache);\n // Clean up any excess entries in the cache, but only if there is no\n // active parent entry, meaning we're not in the middle of a larger\n // computation that might be flummoxed by the cleaning.\n if (!parentEntrySlot.hasValue()) {\n caches.forEach(cache => cache.clean());\n caches.clear();\n }\n return value;\n };\n Object.defineProperty(optimistic, \"size\", {\n get: () => cache.size,\n configurable: false,\n enumerable: false,\n });\n Object.freeze(optimistic.options = {\n max,\n keyArgs,\n makeCacheKey,\n normalizeResult,\n subscribe,\n cache,\n });\n function dirtyKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n entry.setDirty();\n }\n }\n optimistic.dirtyKey = dirtyKey;\n optimistic.dirty = function dirty() {\n dirtyKey(makeCacheKey.apply(null, arguments));\n };\n function peekKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n return entry.peek();\n }\n }\n optimistic.peekKey = peekKey;\n optimistic.peek = function peek() {\n return peekKey(makeCacheKey.apply(null, arguments));\n };\n function forgetKey(key) {\n return key ? cache.delete(key) : false;\n }\n optimistic.forgetKey = forgetKey;\n optimistic.forget = function forget() {\n return forgetKey(makeCacheKey.apply(null, arguments));\n };\n optimistic.makeCacheKey = makeCacheKey;\n optimistic.getKey = keyArgs ? function getKey() {\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\n } : makeCacheKey;\n return Object.freeze(optimistic);\n}\n//# sourceMappingURL=index.js.map","import { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet } from \"../common/canUse.js\";\nimport { checkDocument } from \"./getFromAST.js\";\nimport { invariant } from \"../globals/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { wrap } from \"optimism\";\nimport { cacheSizes } from \"../caching/index.js\";\nfunction identity(document) {\n return document;\n}\nvar DocumentTransform = /** @class */ (function () {\n function DocumentTransform(transform, options) {\n if (options === void 0) { options = Object.create(null); }\n this.resultCache = canUseWeakSet ? new WeakSet() : new Set();\n this.transform = transform;\n if (options.getCacheKey) {\n // Override default `getCacheKey` function, which returns [document].\n this.getCacheKey = options.getCacheKey;\n }\n this.cached = options.cache !== false;\n this.resetCache();\n }\n // This default implementation of getCacheKey can be overridden by providing\n // options.getCacheKey to the DocumentTransform constructor. In general, a\n // getCacheKey function may either return an array of keys (often including\n // the document) to be used as a cache key, or undefined to indicate the\n // transform for this document should not be cached.\n DocumentTransform.prototype.getCacheKey = function (document) {\n return [document];\n };\n DocumentTransform.identity = function () {\n // No need to cache this transform since it just returns the document\n // unchanged. This should save a bit of memory that would otherwise be\n // needed to populate the `documentCache` of this transform.\n return new DocumentTransform(identity, { cache: false });\n };\n DocumentTransform.split = function (predicate, left, right) {\n if (right === void 0) { right = DocumentTransform.identity(); }\n return Object.assign(new DocumentTransform(function (document) {\n var documentTransform = predicate(document) ? left : right;\n return documentTransform.transformDocument(document);\n }, \n // Reasonably assume both `left` and `right` transforms handle their own caching\n { cache: false }), { left: left, right: right });\n };\n /**\n * Resets the internal cache of this transform, if it has one.\n */\n DocumentTransform.prototype.resetCache = function () {\n var _this = this;\n if (this.cached) {\n var stableCacheKeys_1 = new Trie(canUseWeakMap);\n this.performWork = wrap(DocumentTransform.prototype.performWork.bind(this), {\n makeCacheKey: function (document) {\n var cacheKeys = _this.getCacheKey(document);\n if (cacheKeys) {\n invariant(Array.isArray(cacheKeys), 69);\n return stableCacheKeys_1.lookupArray(cacheKeys);\n }\n },\n max: cacheSizes[\"documentTransform.cache\"],\n cache: (WeakCache),\n });\n }\n };\n DocumentTransform.prototype.performWork = function (document) {\n checkDocument(document);\n return this.transform(document);\n };\n DocumentTransform.prototype.transformDocument = function (document) {\n // If a user passes an already transformed result back to this function,\n // immediately return it.\n if (this.resultCache.has(document)) {\n return document;\n }\n var transformedDocument = this.performWork(document);\n this.resultCache.add(transformedDocument);\n return transformedDocument;\n };\n DocumentTransform.prototype.concat = function (otherTransform) {\n var _this = this;\n return Object.assign(new DocumentTransform(function (document) {\n return otherTransform.transformDocument(_this.transformDocument(document));\n }, \n // Reasonably assume both transforms handle their own caching\n { cache: false }), {\n left: this,\n right: otherTransform,\n });\n };\n return DocumentTransform;\n}());\nexport { DocumentTransform };\n//# sourceMappingURL=DocumentTransform.js.map","import { Observable } from \"./Observable.js\";\n// Like Observable.prototype.map, except that the mapping function can\n// optionally return a Promise (or be async).\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var promiseQueue = {\n // Normally we would initialize promiseQueue to Promise.resolve(), but\n // in this case, for backwards compatibility, we need to be careful to\n // invoke the first callback synchronously.\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, key) {\n return function (arg) {\n if (examiner) {\n var both = function () {\n // If the observer is closed, we don't want to continue calling the\n // mapping function - it's result will be swallowed anyways.\n return observer.closed ?\n /* will be swallowed */ 0\n : examiner(arg);\n };\n promiseQueue = promiseQueue.then(both, both).then(function (result) { return observer.next(result); }, function (error) { return observer.error(error); });\n }\n else {\n observer[key](arg);\n }\n };\n }\n var handler = {\n next: makeCallback(mapFn, \"next\"),\n error: makeCallback(catchFn, \"error\"),\n complete: function () {\n // no need to reassign `promiseQueue`, after `observer.complete`,\n // the observer will be closed and short-circuit everything anyways\n /*promiseQueue = */ promiseQueue.then(function () { return observer.complete(); });\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n//# sourceMappingURL=asyncMap.js.map","import { isNonEmptyArray } from \"./arrays.js\";\nimport { isExecutionPatchIncrementalResult } from \"./incrementalResult.js\";\nexport function graphQLResultHasError(result) {\n var errors = getGraphQLErrorsFromResult(result);\n return isNonEmptyArray(errors);\n}\nexport function getGraphQLErrorsFromResult(result) {\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (incrementalResult) {\n if (incrementalResult.errors) {\n graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);\n }\n });\n }\n return graphQLErrors;\n}\n//# sourceMappingURL=errorHandling.js.map","export function iterateObserversSafely(observers, method, argument) {\n // In case observers is modified during iteration, we need to commit to the\n // original elements, which also provides an opportunity to filter them down\n // to just the observers with the given method.\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n//# sourceMappingURL=iteration.js.map","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\n// Generic implementations of Observable.prototype methods like map and\n// filter need to know how to create a new Observable from an Observable\n// subclass (like Concast or ObservableQuery). Those methods assume\n// (perhaps unwisely?) that they can call the subtype's constructor with a\n// Subscriber function, even though the subclass constructor might expect\n// different parameters. Defining this static Symbol.species property on\n// the subclass is a hint to generic Observable code to use the default\n// constructor instead of trying to do `new Subclass(observer => ...)`.\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n // Object.defineProperty is necessary because the Symbol.species\n // property is a getter by default in modern JS environments, so we\n // can't assign to it with a normal assignment expression.\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n // The \"@@species\" string is used as a fake Symbol.species value in some\n // polyfill systems (including the SymbolSpecies variable used by\n // zen-observable), so we should set it as well, to be safe.\n set(\"@@species\");\n return subclass;\n}\n//# sourceMappingURL=subclassing.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// A Concast observable concatenates the given sources into a single\n// non-overlapping sequence of Ts, automatically unwrapping any promises,\n// and broadcasts the T elements of that sequence to any number of\n// subscribers, all without creating a bunch of intermediary Observable\n// wrapper objects.\n//\n// Even though any number of observers can subscribe to the Concast, each\n// source observable is guaranteed to receive at most one subscribe call,\n// and the results are multicast to all observers.\n//\n// In addition to broadcasting every next/error message to this.observers,\n// the Concast stores the most recent message using this.latest, so any\n// new observers can immediately receive the latest message, even if it\n// was originally delivered in the past. This behavior means we can assume\n// every active observer in this.observers has received the same most\n// recent message.\n//\n// With the exception of this.latest replay, a Concast is a \"hot\"\n// observable in the sense that it does not replay past results from the\n// beginning of time for each new observer.\n//\n// Could we have used some existing RxJS class instead? Concast is\n// similar to a BehaviorSubject, because it is multicast and redelivers\n// the latest next/error message to new subscribers. Unlike Subject,\n// Concast does not expose an Observer interface (this.handlers is\n// intentionally private), since Concast gets its inputs from the\n// concatenated sources. If we ever switch to RxJS, there may be some\n// value in reusing their code, but for now we use zen-observable, which\n// does not contain any Subject implementations.\nvar Concast = /** @class */ (function (_super) {\n __extends(Concast, _super);\n // Not only can the individual elements of the iterable be promises, but\n // also the iterable itself can be wrapped in a promise.\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n // Active observers receiving broadcast messages. Thanks to this.latest,\n // we can assume all observers in this Set have received the same most\n // recent message, though possibly at different times in the past.\n _this.observers = new Set();\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n // Bound handler functions that can be reused for every internal\n // subscription.\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n _this.notify(\"next\", result);\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n // Delay unsubscribing from the underlying subscription slightly,\n // so that immediately subscribing another observer can keep the\n // subscription active.\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n _this.notify(\"error\", error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n var _a = _this, sub = _a.sub, _b = _a.sources, sources = _b === void 0 ? [] : _b;\n if (sub !== null) {\n // If complete is called before concast.start, this.sources may be\n // undefined, so we use a default value of [] for sources. That works\n // here because it falls into the if (!value) {...} block, which\n // appropriately terminates the Concast, even if this.sources might\n // eventually have been initialized to a non-empty array.\n var value = sources.shift();\n if (!value) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n if (_this.latest && _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n _this.notify(\"complete\");\n // We do not store this.latest = [\"complete\"], because doing so\n // discards useful information about the previous next (or\n // error) message. Instead, if new observers subscribe after\n // this Concast has completed, they will receive the final\n // 'next' message (unless there was an error) immediately\n // followed by a 'complete' message (see addObserver).\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return (_this.sub = obs.subscribe(_this.handlers)); }, _this.handlers.error);\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.nextResultListeners = new Set();\n // A public way to abort observation and broadcast.\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.error(reason);\n };\n // Suppress rejection warnings for this.promise, since it's perfectly\n // acceptable to pay no attention to this.promise if you're consuming\n // the results through the normal observable API.\n _this.promise.catch(function (_) { });\n // If someone accidentally tries to create a Concast using a subscriber\n // function, recover by creating an Observable from that subscriber and\n // using it as the source.\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n // In practice, sources is most often simply an Array of observables.\n // TODO Consider using sources[Symbol.iterator]() to take advantage\n // of the laziness of non-Array iterables.\n this.sources = Array.from(sources);\n // Calling this.handlers.complete() kicks off consumption of the first\n // source observable. It's tempting to do this step lazily in\n // addObserver, but this.promise can be accessed without calling\n // addObserver, so consumption needs to begin eagerly.\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n // If the subscription is already closed, and the last message was\n // a 'next' message, simulate delivery of the final 'complete'\n // message again.\n if (this.sub === null && nextOrError === \"next\" && observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n // Immediately deliver the most recent message, so we can always\n // be sure all observers have the latest information.\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n }\n };\n Concast.prototype.removeObserver = function (observer) {\n if (this.observers.delete(observer) && this.observers.size < 1) {\n // In case there are still any listeners in this.nextResultListeners, and\n // no error or completion has been broadcast yet, make sure those\n // observers have a chance to run and then remove themselves from\n // this.observers.\n this.handlers.complete();\n }\n };\n Concast.prototype.notify = function (method, arg) {\n var nextResultListeners = this.nextResultListeners;\n if (nextResultListeners.size) {\n // Replacing this.nextResultListeners first ensures it does not grow while\n // we are iterating over it, potentially leading to infinite loops.\n this.nextResultListeners = new Set();\n nextResultListeners.forEach(function (listener) { return listener(method, arg); });\n }\n };\n // We need a way to run callbacks just *before* the next result (or error or\n // completion) is delivered by this Concast, so we can be sure any code that\n // runs as a result of delivering that result/error observes the effects of\n // running the callback(s). It was tempting to reuse the Observer type instead\n // of introducing NextResultListener, but that messes with the sizing and\n // maintenance of this.observers, and ends up being more code overall.\n Concast.prototype.beforeNext = function (callback) {\n var called = false;\n this.nextResultListeners.add(function (method, arg) {\n if (!called) {\n called = true;\n callback(method, arg);\n }\n });\n };\n return Concast;\n}(Observable));\nexport { Concast };\n// Necessary because the Concast constructor has a different signature\n// than the Observable constructor.\nfixObservableSubclass(Concast);\n//# sourceMappingURL=Concast.js.map","var toString = Object.prototype.toString;\n/**\n * Deeply clones a value to create a new instance.\n */\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map();\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map();\n if (seen.has(val))\n return seen.get(val);\n // High fidelity polyfills of Object.create and Object.getPrototypeOf are\n // possible in all JS environments, so we will assume they exist/work.\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n//# sourceMappingURL=cloneDeep.js.map","import { __rest } from \"tslib\";\nimport equal from \"@wry/equality\";\nimport { createFragmentMap, getFragmentDefinitions, getFragmentFromSelection, getMainDefinition, isField, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\n// Returns true if aResult and bResult are deeply equal according to the fields\n// selected by the given query, ignoring any fields marked as @nonreactive.\nexport function equalByQuery(query, _a, _b, variables) {\n var aData = _a.data, aRest = __rest(_a, [\"data\"]);\n var bData = _b.data, bRest = __rest(_b, [\"data\"]);\n return (equal(aRest, bRest) &&\n equalBySelectionSet(getMainDefinition(query).selectionSet, aData, bData, {\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n variables: variables,\n }));\n}\nfunction equalBySelectionSet(selectionSet, aResult, bResult, context) {\n if (aResult === bResult) {\n return true;\n }\n var seenSelections = new Set();\n // Returning true from this Array.prototype.every callback function skips the\n // current field/subtree. Returning false aborts the entire traversal\n // immediately, causing equalBySelectionSet to return false.\n return selectionSet.selections.every(function (selection) {\n // Avoid re-processing the same selection at the same level of recursion, in\n // case the same field gets included via multiple indirect fragment spreads.\n if (seenSelections.has(selection))\n return true;\n seenSelections.add(selection);\n // Ignore @skip(if: true) and @include(if: false) fields.\n if (!shouldInclude(selection, context.variables))\n return true;\n // If the field or (named) fragment spread has a @nonreactive directive on\n // it, we don't care if it's different, so we pretend it's the same.\n if (selectionHasNonreactiveDirective(selection))\n return true;\n if (isField(selection)) {\n var resultKey = resultKeyNameFromField(selection);\n var aResultChild = aResult && aResult[resultKey];\n var bResultChild = bResult && bResult[resultKey];\n var childSelectionSet = selection.selectionSet;\n if (!childSelectionSet) {\n // These are scalar values, so we can compare them with deep equal\n // without redoing the main recursive work.\n return equal(aResultChild, bResultChild);\n }\n var aChildIsArray = Array.isArray(aResultChild);\n var bChildIsArray = Array.isArray(bResultChild);\n if (aChildIsArray !== bChildIsArray)\n return false;\n if (aChildIsArray && bChildIsArray) {\n var length_1 = aResultChild.length;\n if (bResultChild.length !== length_1) {\n return false;\n }\n for (var i = 0; i < length_1; ++i) {\n if (!equalBySelectionSet(childSelectionSet, aResultChild[i], bResultChild[i], context)) {\n return false;\n }\n }\n return true;\n }\n return equalBySelectionSet(childSelectionSet, aResultChild, bResultChild, context);\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment) {\n // The fragment might === selection if it's an inline fragment, but\n // could be !== if it's a named fragment ...spread.\n if (selectionHasNonreactiveDirective(fragment))\n return true;\n return equalBySelectionSet(fragment.selectionSet, \n // Notice that we reuse the same aResult and bResult values here,\n // since the fragment ...spread does not specify a field name, but\n // consists of multiple fields (within the fragment's selection set)\n // that should be applied to the current result value(s).\n aResult, bResult, context);\n }\n }\n });\n}\nfunction selectionHasNonreactiveDirective(selection) {\n return (!!selection.directives && selection.directives.some(directiveIsNonreactive));\n}\nfunction directiveIsNonreactive(dir) {\n return dir.name.value === \"nonreactive\";\n}\n//# sourceMappingURL=equalByQuery.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, fixObservableSubclass, getQueryDefinition, } from \"../utilities/index.js\";\nimport { ApolloError, isApolloError } from \"../errors/index.js\";\nimport { equalByQuery } from \"./equalByQuery.js\";\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = /** @class */ (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !_this.observers.size;\n _this.observers.add(observer);\n // Deliver most recent error or result.\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n }\n else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n _this.reobserve().catch(function () { });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n // related classes\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n // active state\n _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);\n _this.isTornDown = false;\n _this.subscribeToMore = _this.subscribeToMore.bind(_this);\n var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? \"cache-first\" : _d;\n var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, \n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n _f = options.initialFetchPolicy, \n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n initialFetchPolicy = _f === void 0 ? fetchPolicy === \"standby\" ? defaultFetchPolicy : (fetchPolicy) : _f;\n _this.options = __assign(__assign({}, options), { \n // Remember the initial options.fetchPolicy so we can revert back to this\n // policy when variables change. This information can also be specified\n // (or overridden) by providing options.initialFetchPolicy explicitly.\n initialFetchPolicy: initialFetchPolicy, \n // This ensures this.options.fetchPolicy always has a string value, in\n // case options.fetchPolicy was not provided.\n fetchPolicy: fetchPolicy });\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n // The `query` computed property will always reflect the document transformed\n // by the last run query. `this.options.query` will always reflect the raw\n // untransformed query to ensure document transforms with runtime conditionals\n // are run on the original document.\n get: function () {\n return this.lastQuery || this.options.query;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n /**\n * An object containing the variables that were provided for the query.\n */\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n var observer = {\n next: function (result) {\n resolve(result);\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n /** @internal */\n ObservableQuery.prototype.resetDiff = function () {\n this.queryInfo.resetDiff();\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n // Use the last result as long as the variables match this.variables.\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (\n // These fetch policies should never deliver data from the cache, unless\n // redelivering a previously delivered result.\n skipCacheDataFor(fetchPolicy) ||\n // If this.options.query has @client(always: true) fields, we cannot\n // trust diff.result, since it was read from the cache without running\n // local resolvers (and it's too late to run resolvers now, since we must\n // return a result synchronously).\n this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) {\n // Fall through.\n }\n else if (this.waitForOwnResult) {\n // This would usually be a part of `QueryInfo.getDiff()`.\n // which we skip in the waitForOwnResult case since we are not\n // interested in the diff.\n this.queryInfo[\"updateWatch\"]();\n }\n else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n // Similar to setting result.partial to false, but taking advantage of the\n // falsiness of missing fields.\n delete result.partial;\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next result\n // we receive will have NetworkStatus.ready and !loading.\n if (diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === \"cache-first\" || fetchPolicy === \"cache-only\")) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n }\n else {\n result.partial = true;\n }\n if (globalThis.__DEV__ !== false &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {\n if (!this.last) {\n return true;\n }\n var resultIsDifferent = this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective ?\n !equalByQuery(this.query, this.last.result, newResult, this.variables)\n : !equal(this.last.result, newResult);\n return (resultIsDifferent || (variables && !equal(this.last.variables, variables)));\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n // Always disable polling for refetches.\n pollInterval: 0,\n };\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === \"cache-and-network\") {\n reobserveOptions.fetchPolicy = fetchPolicy;\n }\n else if (fetchPolicy === \"no-cache\") {\n reobserveOptions.fetchPolicy = \"no-cache\";\n }\n else {\n reobserveOptions.fetchPolicy = \"network-only\";\n }\n if (globalThis.__DEV__ !== false && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n globalThis.__DEV__ !== false && invariant.warn(\n 20,\n variables,\n ((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || queryDef\n );\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n /**\n * A function that helps you fetch the next set of results for a [paginated list field](https://www.apollographql.com/docs/react/pagination/core-api/).\n */\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : (__assign(__assign(__assign(__assign({}, this.options), { query: this.options.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) })))), { \n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\" });\n combinedOptions.query = this.transformDocument(combinedOptions.query);\n var qid = this.queryManager.generateQueryId();\n // If a temporary query is passed to `fetchMore`, we don't want to store\n // it as the last query result since it may be an optimized query for\n // pagination. We will however run the transforms on the original document\n // as well as the document passed in `fetchMoreOptions` to ensure the cache\n // uses the most up-to-date document which may rely on runtime conditionals.\n this.lastQuery =\n fetchMoreOptions.query ?\n this.transformDocument(this.options.query)\n : combinedOptions.query;\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n var updateQuery = fetchMoreOptions === null || fetchMoreOptions === void 0 ? void 0 : fetchMoreOptions.updateQuery;\n var isCached = this.options.fetchPolicy !== \"no-cache\";\n if (!isCached) {\n invariant(updateQuery, 21);\n }\n return this.queryManager\n .fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore)\n .then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n if (isCached) {\n // Performing this cache update inside a cache.batch transaction ensures\n // any affected cache.watch watchers are notified at most once about any\n // updates. Most watchers will be using the QueryInfo class, which\n // responds to notifications by calling reobserveCacheFirst to deliver\n // fetchMore cache results back to this ObservableQuery.\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false,\n }, function (previous) {\n return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n });\n });\n }\n else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n onWatchUpdated: function (watch) {\n // Record the DocumentNode associated with any watched query whose\n // data were updated by the cache writes above.\n updatedQuerySet.add(watch.query);\n },\n });\n }\n else {\n // There is a possibility `lastResult` may not be set when\n // `fetchMore` is called which would cause this to crash. This should\n // only happen if we haven't previously reported a result. We don't\n // quite know what the right behavior should be here since this block\n // of code runs after the fetch result has executed on the network.\n // We plan to let it crash in the meantime.\n //\n // If we get bug reports due to the `data` property access on\n // undefined, this should give us a real-world scenario that we can\n // use to test against and determine the right behavior. If we do end\n // up changing this behavior, this may require, for example, an\n // adjustment to the types on `updateQuery` since that function\n // expects that the first argument always contains previous result\n // data, but not `undefined`.\n var lastResult = _this.getLast(\"result\");\n var data = updateQuery(lastResult.data, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n });\n _this.reportResult(__assign(__assign({}, lastResult), { data: data }), _this.variables);\n }\n return fetchMoreResult;\n })\n .finally(function () {\n // In case the cache writes above did not generate a broadcast\n // notification (which would have been intercepted by onWatchUpdated),\n // likely because the written data were the same as what was already in\n // the cache, we still want fetchMore to deliver its final loading:false\n // result with the unchanged data.\n if (isCached && !updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n /**\n * A function that enables you to execute a [subscription](https://www.apollographql.com/docs/react/data/subscriptions/), usually to subscribe to specific fields that were included in the query.\n *\n * This function returns _another_ function that you can call to terminate the subscription.\n */\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n globalThis.__DEV__ !== false && invariant.error(22, err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.silentSetOptions = function (newOptions) {\n var mergedOptions = compact(this.options, newOptions || {});\n assign(this.options, mergedOptions);\n };\n /**\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. Most users should prefer `refetch` instead of\n * `setVariables` in order to to be properly notified of results even when\n * they come from the cache.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size ? this.result() : Promise.resolve();\n }\n this.options.variables = variables;\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables,\n }, NetworkStatus.setVariables);\n };\n /**\n * A function that enables you to update the query's cached result without executing a followup GraphQL operation.\n *\n * See [using updateQuery and updateFragment](https://www.apollographql.com/docs/react/caching/cache-interaction/#using-updatequery-and-updatefragment) for additional information.\n */\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n /**\n * A function that instructs the query to begin re-executing at a specified interval (in milliseconds).\n */\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n /**\n * A function that instructs the query to stop polling after a previous call to `startPolling`.\n */\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n // Update options.fetchPolicy according to options.nextFetchPolicy.\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason, \n // It's possible to use this method to apply options.nextFetchPolicy to\n // options.fetchPolicy even if options !== this.options, though that happens\n // most often when the options are temporary, used for only one request and\n // then thrown away, so nextFetchPolicy may not end up mattering.\n options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (fetchPolicy === \"standby\") {\n // Do nothing, leaving options.fetchPolicy unchanged.\n }\n else if (typeof options.nextFetchPolicy === \"function\") {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would\n // seem to imply. Instead, when the cache reports an update after the\n // initial network request, it may be desirable for subsequent network\n // requests to be triggered only if the cache result is incomplete. To\n // that end, the options.nextFetchPolicy option provides an easy way to\n // update options.fetchPolicy after the initial network request, without\n // having to call observableQuery.setOptions.\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy,\n });\n }\n else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n }\n else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus, query) {\n // TODO Make sure we update the networkStatus (and infer fetchVariables)\n // before actually committing to the fetch.\n this.queryManager.setObservableQuery(this);\n return this.queryManager[\"fetchConcastWithInfo\"](this.queryId, options, newNetworkStatus, query);\n };\n // Turns polling on or off based on this.options.pollInterval.\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval || !this.hasObservers()) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo && pollingInfo.interval === pollInterval) {\n return;\n }\n invariant(pollInterval, 23);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n var _a, _b;\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus) &&\n !((_b = (_a = _this.options).skipPollAttempt) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n _this.reobserve({\n // Most fetchPolicy options don't make sense to use in a polling context, as\n // users wouldn't want to be polling the cache directly. However, network-only and\n // no-cache are both useful for when the user wants to control whether or not the\n // polled results are written to the cache.\n fetchPolicy: _this.options.initialFetchPolicy === \"no-cache\" ?\n \"no-cache\"\n : \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) { variables = this.variables; }\n var error = this.getLastError();\n // Preserve this.last.error unless the variables have changed.\n if (error && this.last && !equal(variables, this.last.variables)) {\n error = void 0;\n }\n return (this.last = __assign({ result: this.queryManager.assumeImmutableResults ?\n newResult\n : cloneDeep(newResult), variables: variables }, (error ? { error: error } : null)));\n };\n ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast = \n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\" or \"no-cache\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n // Save the old variables, since Object.assign may modify them below.\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = compact(this.options, newOptions || {});\n var options = useDisposableConcast ?\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n mergedOptions\n : assign(this.options, mergedOptions);\n // Don't update options.query with the transformed query to avoid\n // overwriting this.options.query when we aren't using a disposable concast.\n // We want to ensure we can re-run the custom document transforms the next\n // time a request is made against the original query.\n var query = this.transformDocument(options.query);\n this.lastQuery = query;\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (newOptions &&\n newOptions.variables &&\n !equal(newOptions.variables, oldVariables) &&\n // Don't mess with the fetchPolicy if it's currently \"standby\".\n options.fetchPolicy !== \"standby\" &&\n // If we're changing the fetchPolicy anyway, don't try to change it here\n // using applyNextFetchPolicy. The explicit options.fetchPolicy wins.\n (options.fetchPolicy === oldFetchPolicy ||\n // A `nextFetchPolicy` function has even higher priority, though,\n // so in that case `applyNextFetchPolicy` must be called.\n typeof options.nextFetchPolicy === \"function\")) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n this.waitForOwnResult && (this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy));\n var finishWaitingForOwnResult = function () {\n if (_this.concast === concast) {\n _this.waitForOwnResult = false;\n }\n };\n var variables = options.variables && __assign({}, options.variables);\n var _a = this.fetch(options, newNetworkStatus, query), concast = _a.concast, fromLink = _a.fromLink;\n var observer = {\n next: function (result) {\n if (equal(_this.variables, variables)) {\n finishWaitingForOwnResult();\n _this.reportResult(result, variables);\n }\n },\n error: function (error) {\n if (equal(_this.variables, variables)) {\n // Coming from `getResultsFromLink`, `error` here should always be an `ApolloError`.\n // However, calling `concast.cancel` can inject another type of error, so we have to\n // wrap it again here.\n if (!isApolloError(error)) {\n error = new ApolloError({ networkError: error });\n }\n finishWaitingForOwnResult();\n _this.reportError(error, variables);\n }\n },\n };\n if (!useDisposableConcast && (fromLink || !this.concast)) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus)\n .promise;\n };\n ObservableQuery.prototype.resubscribeAfterError = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // If `lastError` is set in the current 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 the last value afterwards so that the\n // subscription has a chance to stay open.\n var last = this.last;\n this.resetLastResults();\n var subscription = this.subscribe.apply(this, args);\n this.last = last;\n return subscription;\n };\n // (Re)deliver the current result to this.observers without applying fetch\n // policies or making network requests.\n ObservableQuery.prototype.observe = function () {\n this.reportResult(\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.reportResult.\n this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n var isDifferent = this.isDifferentFromLastResult(result, variables);\n // Update the last result even when isDifferentFromLastResult returns false,\n // because the query may be using the @nonreactive directive, and we want to\n // save the the latest version of any nonreactive subtrees (in case\n // getCurrentResult is called), even though we skip broadcasting changes.\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n if (lastError || isDifferent) {\n iterateObserversSafely(this.observers, \"next\", result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, \"error\", (this.last.error = error));\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n ObservableQuery.prototype.transformDocument = function (document) {\n return this.queryManager.transform(document);\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n// Reobserve with fetchPolicy effectively set to \"cache-first\", triggering\n// delivery of any new data from the cache, possibly falling back to the network\n// if any cache data are missing. This allows _complete_ cache results to be\n// delivered without also kicking off unnecessary network requests when\n// this.options.fetchPolicy is \"cache-and-network\" or \"network-only\". When\n// this.options.fetchPolicy is any other policy (\"cache-first\", \"cache-only\",\n// \"standby\", or \"no-cache\"), we call this.reobserve() as usual.\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" || fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n // Use a temporary nextFetchPolicy function that replaces itself with the\n // previous nextFetchPolicy value and returns the original fetchPolicy.\n nextFetchPolicy: function (currentFetchPolicy, context) {\n // Replace this nextFetchPolicy function in the options object with the\n // original this.options.nextFetchPolicy value.\n this.nextFetchPolicy = nextFetchPolicy;\n // If the original nextFetchPolicy value was a function, give it a\n // chance to decide what happens here.\n if (typeof this.nextFetchPolicy === \"function\") {\n return this.nextFetchPolicy(currentFetchPolicy, context);\n }\n // Otherwise go back to the original this.options.fetchPolicy.\n return fetchPolicy;\n },\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n globalThis.__DEV__ !== false && invariant.error(24, error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (globalThis.__DEV__ !== false && missing) {\n globalThis.__DEV__ !== false && invariant.debug(25, missing);\n }\n}\nfunction skipCacheDataFor(fetchPolicy /* `undefined` would mean `\"cache-first\"` */) {\n return (fetchPolicy === \"network-only\" ||\n fetchPolicy === \"no-cache\" ||\n fetchPolicy === \"standby\");\n}\n//# sourceMappingURL=ObservableQuery.js.map","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { DeepMerger } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/index.js\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n // @ts-expect-error this is just too generic to be typed correctly\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, \n // The %1e15 allows the count to wrap around to 0 safely every\n // quadrillion evictions, so there's no risk of overflow. To be\n // clear, this is more of a pedantic principle than something\n // that matters in any conceivable practical scenario.\n (destructiveMethodCounts.get(cache) + 1) % 1e15);\n // @ts-expect-error this is just too generic to be typed correctly\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\n// A QueryInfo object represents a single query managed by the\n// QueryManager, which tracks all QueryInfo objects by queryId in its\n// this.queries Map. QueryInfo objects store the latest results and errors\n// for the given query, and are responsible for reporting those results to\n// the corresponding ObservableQuery, via the QueryInfo.notify method.\n// Results are reported asynchronously whenever setDiff marks the\n// QueryInfo object as dirty, though a call to the QueryManager's\n// broadcastQueries method may trigger the notification before it happens\n// automatically. This class used to be a simple interface type without\n// any field privacy or meaningful methods, which is why it still has so\n// many public fields. The effort to lock down and simplify the QueryInfo\n// interface is ongoing, and further improvements are welcome.\nvar QueryInfo = /** @class */ (function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = (this.cache = queryManager.cache);\n // Track how often cache.evict is called, since we want eviction to\n // override the feud-stopping logic in the markResult method, by\n // causing shouldWrite to return true. Wrapping the cache.evict method\n // is a bit of a hack, but it saves us from having to make eviction\n // counting an official part of the ApolloCache API.\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.dirty = false;\n };\n QueryInfo.prototype.resetDiff = function () {\n this.lastDiff = void 0;\n };\n QueryInfo.prototype.getDiff = function () {\n var options = this.getDiffOptions();\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff =\n diff ?\n {\n diff: diff,\n options: options || this.getDiffOptions(),\n }\n : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) { variables = this.variables; }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var _a;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n // If we are trying to deliver an incomplete cache result, we avoid\n // reporting it if the query has errored, otherwise we let the broadcast try\n // and repair the partial result by refetching the query. This check avoids\n // a situation where a query that errors and another succeeds with\n // overlapping data does not report the partial data result to the errored\n // query.\n //\n // See https://github.com/apollographql/apollo-client/issues/11400 for more\n // information on this issue.\n if (diff && !diff.complete && ((_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.getLastError())) {\n return;\n }\n this.updateLastDiff(diff);\n if (!this.dirty && !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add((this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n // If this diff came from an optimistic transaction, deliver the\n // current cache data to the ObservableQuery, but don't perform a\n // reobservation, since oq.reobserveCacheFirst might make a network\n // request, and we never want to trigger network requests in the\n // middle of optimistic updates.\n oq[\"observe\"]();\n }\n else {\n // Otherwise, make the ObservableQuery \"reobserve\" the latest data\n // using a temporary fetch policy of \"cache-first\", so complete cache\n // results have a chance to be delivered without triggering additional\n // network requests, even when options.fetchPolicy is \"network-only\"\n // or \"cache-and-network\". All other fetch policies are preserved by\n // this method, and are handled by calling oq.reobserve(). If this\n // reobservation is spurious, isDifferentFromLastResult still has a\n // chance to catch it before delivery to ObservableQuery subscribers.\n reobserveCacheFirst(oq);\n }\n }));\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) && this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" && fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n // Cancel the pending notify timeout\n this.reset();\n this.cancel();\n // Revert back to the no-op version of cancel inherited from\n // QueryInfo.prototype.\n this.cancel = QueryInfo.prototype.cancel;\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n // This method is a no-op by default, until/unless overridden by the\n // updateWatch method.\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n if (!this.lastWatch || !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch((this.lastWatch = watchOptions));\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n // If cache.evict has been called since the last time we wrote this\n // data into the cache, there's a chance writing this result into\n // the cache will repair what was evicted.\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, document, options, cacheWriteBehavior) {\n var _this = this;\n var merger = new DeepMerger();\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n // Cancel the pending notify timeout (if it exists) to prevent extraneous network\n // requests. To allow future notify timeouts, diff and dirty are reset as well.\n this.reset();\n if (\"incremental\" in result && isNonEmptyArray(result.incremental)) {\n var mergedData = mergeIncrementalData(this.getDiff().result, result);\n result.data = mergedData;\n // Detect the first chunk of a deferred query and merge it with existing\n // cache data. This ensures a `cache-first` fetch policy that returns\n // partial cache data or a `cache-and-network` fetch policy that already\n // has full data in the cache does not complain when trying to merge the\n // initial deferred server data with existing cache data.\n }\n else if (\"hasNext\" in result && result.hasNext) {\n var diff = this.getDiff();\n result.data = merger.merge(diff.result, result.data);\n }\n this.graphQLErrors = graphQLErrors;\n if (options.fetchPolicy === \"no-cache\") {\n this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n }\n else if (cacheWriteBehavior !== 0 /* CacheWriteBehavior.FORBID */) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n // Using a transaction here so we have a chance to read the result\n // back from the cache before the watch callback fires as a result\n // of writeQuery, so we can store the new diff quietly and ignore\n // it when we receive it redundantly from the watch callback.\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1 /* CacheWriteBehavior.OVERWRITE */,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n // If result is the same as the last result we received from\n // the network (and the variables match too), avoid writing\n // result into the cache again. The wisdom of skipping this\n // cache write is far from obvious, since any cache write\n // could be the one that puts the cache back into a desired\n // state, fixing corruption or missing data. However, if we\n // always write every network result into the cache, we enable\n // feuds between queries competing to update the same data in\n // incompatible ways, which can lead to an endless cycle of\n // cache broadcasts and useless network requests. As with any\n // feud, eventually one side must step back from the brink,\n // letting the other side(s) have the last word(s). There may\n // be other points where we could break this cycle, such as\n // silencing the broadcast for cache.writeQuery (not a good\n // idea, since it just delays the feud a bit) or somehow\n // avoiding the network request that just happened (also bad,\n // because the server could return useful new data). All\n // options considered, skipping this cache write seems to be\n // the least damaging place to break the cycle, because it\n // reflects the intuition that we recently wrote this exact\n // result into the cache, so the cache *should* already/still\n // contain this data. If some other query has clobbered that\n // data in the meantime, that's too bad, but there will be no\n // winners if every query blindly reverts to its own version\n // of the data. This approach also gives the network a chance\n // to return new data, which will be written into the cache as\n // usual, notifying only those queries that are directly\n // affected by the cache updates, as usual. In the future, an\n // even more sophisticated cache could perhaps prevent or\n // mitigate the clobbering somehow, but that would make this\n // particular cache write even less important, and thus\n // skipping it would be even safer than it is today.\n if (_this.lastDiff && _this.lastDiff.diff.complete) {\n // Reuse data from the last good (complete) diff that we\n // received, when possible.\n result.data = _this.lastDiff.diff.result;\n return;\n }\n // If the previous this.diff was incomplete, fall through to\n // re-reading the latest data with cache.diff, below.\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n // In case the QueryManager stops this QueryInfo before its\n // results are delivered, it's important to avoid restarting the\n // cache watch when markResult is called. We also avoid updating\n // the watch if we are writing a result that doesn't match the current\n // variables to avoid race conditions from broadcasting the wrong\n // result.\n if (!_this.stopped && equal(_this.variables, options.variables)) {\n // Any time we're about to update this.diff, we need to make\n // sure we've started watching the cache.\n _this.updateWatch(options.variables);\n }\n // If we're allowed to write to the cache, and we can read a\n // complete result from the cache, update result.data to be the\n // result from the cache, rather than the raw network result.\n // Set without setDiff to avoid triggering a notify call, since\n // we have other ways of notifying for this result.\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return (this.networkStatus = NetworkStatus.ready);\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" || errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { execute } from \"../link/core/index.js\";\nimport { hasDirectives, isExecutionPatchIncrementalResult, isExecutionPatchResult, removeDirectivesFromDocument, } from \"../utilities/index.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, getGraphQLErrorsFromResult, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, DocumentTransform, } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { ApolloError, isApolloError, graphQLResultHasProtocolErrors, } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { QueryInfo, shouldWriteResult, } from \"./QueryInfo.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../errors/index.js\";\nimport { print } from \"../utilities/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar IGNORE = Object.create(null);\nimport { Trie } from \"@wry/trie\";\nimport { AutoCleanedWeakCache, cacheSizes } from \"../utilities/index.js\";\nvar QueryManager = /** @class */ (function () {\n function QueryManager(options) {\n var _this = this;\n this.clientAwareness = {};\n // All the queries that the QueryManager is currently managing (not\n // including mutations and subscriptions).\n this.queries = new Map();\n // Maps from queryId strings to Promise rejection functions for\n // currently active queries and fetches.\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.fetchCancelFns = new Map();\n this.transformCache = new AutoCleanedWeakCache(cacheSizes[\"queryManager.getDocumentInfo\"] ||\n 2000 /* defaultCacheSizes[\"queryManager.getDocumentInfo\"] */);\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.inFlightLinkObservables = new Trie(false);\n var defaultDocumentTransform = new DocumentTransform(function (document) { return _this.cache.transformDocument(document); }, \n // Allow the apollo cache to manage its own transform caches\n { cache: false });\n this.cache = options.cache;\n this.link = options.link;\n this.defaultOptions = options.defaultOptions;\n this.queryDeduplication = options.queryDeduplication;\n this.clientAwareness = options.clientAwareness;\n this.localState = options.localState;\n this.ssrMode = options.ssrMode;\n this.assumeImmutableResults = options.assumeImmutableResults;\n var documentTransform = options.documentTransform;\n this.documentTransform =\n documentTransform ?\n defaultDocumentTransform\n .concat(documentTransform)\n // The custom document transform may add new fragment spreads or new\n // field selections, so we want to give the cache a chance to run\n // again. For example, the InMemoryCache adds __typename to field\n // selections and fragments from the fragment registry.\n .concat(defaultDocumentTransform)\n : defaultDocumentTransform;\n this.defaultContext = options.defaultContext || Object.create(null);\n if ((this.onBroadcast = options.onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n /**\n * Call this method to terminate any active query processes, making it safe\n * to dispose of this QueryManager instance.\n */\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(newInvariantError(26));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var mutationId, hasClientExports, mutationStoreValue, isOptimistic, self;\n var _c, _d;\n var mutation = _b.mutation, variables = _b.variables, optimisticResponse = _b.optimisticResponse, updateQueries = _b.updateQueries, _e = _b.refetchQueries, refetchQueries = _e === void 0 ? [] : _e, _f = _b.awaitRefetchQueries, awaitRefetchQueries = _f === void 0 ? false : _f, updateWithProxyFn = _b.update, onQueryUpdated = _b.onQueryUpdated, _g = _b.fetchPolicy, fetchPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.fetchPolicy) || \"network-only\" : _g, _h = _b.errorPolicy, errorPolicy = _h === void 0 ? ((_d = this.defaultOptions.mutate) === null || _d === void 0 ? void 0 : _d.errorPolicy) || \"none\" : _h, keepRootFields = _b.keepRootFields, context = _b.context;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n invariant(mutation, 27);\n invariant(fetchPolicy === \"network-only\" || fetchPolicy === \"no-cache\", 28);\n mutationId = this.generateMutationId();\n mutation = this.cache.transformForLink(this.transform(mutation));\n hasClientExports = this.getDocumentInfo(mutation).hasClientExports;\n variables = this.getVariables(mutation, variables);\n if (!hasClientExports) return [3 /*break*/, 2];\n return [4 /*yield*/, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = (_j.sent());\n _j.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n isOptimistic = optimisticResponse &&\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields,\n });\n this.broadcastQueries();\n self = this;\n return [2 /*return*/, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: isOptimistic ? optimisticResponse : void 0 }), variables, {}, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === \"none\") {\n throw new ApolloError({\n graphQLErrors: getGraphQLErrorsFromResult(result),\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === \"ignore\" && graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: isOptimistic ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields,\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n // Since mutations might receive multiple payloads from the\n // ApolloLink chain (e.g. when used with @defer),\n // we resolve with a SingleExecutionResult or after the final\n // ExecutionPatchResult has arrived and we have assembled the\n // multipart response into a single result.\n if (!(\"hasNext\" in storeResult) || storeResult.hasNext === false) {\n resolve(storeResult);\n }\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (isOptimistic) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : (new ApolloError({\n networkError: err,\n })));\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n if (!isExecutionPatchIncrementalResult(result)) {\n cacheWrites.push({\n result: result.data,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n if (isExecutionPatchIncrementalResult(result) &&\n isNonEmptyArray(result.incremental)) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n var mergedData = void 0;\n if (diff.result) {\n mergedData = mergeIncrementalData(diff.result, result);\n }\n if (typeof mergedData !== \"undefined\") {\n // cast the ExecutionPatchResult to FetchResult here since\n // ExecutionPatchResult never has `data` when returned from the server\n result.data = mergedData;\n cacheWrites.push({\n result: mergedData,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables,\n });\n }\n }\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n // Read the current query result from the store.\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n // Run our reducer using the current query result and the mutation result.\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: (document && getOperationName(document)) || void 0,\n queryVariables: variables,\n });\n // Write the modified result back into the store if we got a new result.\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: \"ROOT_QUERY\",\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 ||\n (mutation.refetchQueries || \"\").length > 0 ||\n mutation.update ||\n mutation.onQueryUpdated ||\n mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) { return cache.write(write); });\n }\n // If the mutation has some writes associated with it then we need to\n // apply those writes to the store by running this reducer again with\n // a write action.\n var update = mutation.update;\n // Determine whether result is a SingleExecutionResult,\n // or the final ExecutionPatchResult.\n var isFinalResult = !isExecutionPatchResult(result) ||\n (isExecutionPatchIncrementalResult(result) && !result.hasNext);\n if (update) {\n if (!skipCache) {\n // Re-read the ROOT_MUTATION data we just wrote into the cache\n // (the first cache.write call in the cacheWrites.forEach loop\n // above), so field read functions have a chance to run for\n // fields within mutation result objects.\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: _this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n if (diff.complete) {\n result = __assign(__assign({}, result), { data: diff.result });\n if (\"incremental\" in result) {\n delete result.incremental;\n }\n if (\"hasNext\" in result) {\n delete result.hasNext;\n }\n }\n }\n // If we've received the whole response,\n // either a SingleExecutionResult or the final ExecutionPatchResult,\n // call the update function.\n if (isFinalResult) {\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables,\n });\n }\n }\n // TODO Do this with cache.evict({ id: 'ROOT_MUTATION' }) but make it\n // shallow to allow rolling back optimistic evictions.\n if (!skipCache && !mutation.keepRootFields && isFinalResult) {\n cache.modify({\n id: \"ROOT_MUTATION\",\n fields: function (value, _a) {\n var fieldName = _a.fieldName, DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n },\n });\n }\n },\n include: mutation.refetchQueries,\n // Write the final mutation.result to the root layer of the cache.\n optimistic: false,\n // Remove the corresponding optimistic layer at the same time as we\n // write the final non-optimistic result.\n removeOptimistic: mutation.removeOptimistic,\n // Let the caller of client.mutate optionally determine the refetching\n // behavior for watched queries after the mutation.update function runs.\n // If no onQueryUpdated function was provided for this mutation, pass\n // null instead of undefined to disable the default refetching behavior.\n onQueryUpdated: mutation.onQueryUpdated || null,\n }).forEach(function (result) { return results_1.push(result); });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n // Returning a promise here makes the mutation await that promise, so we\n // include results in that promise's work if awaitRefetchQueries or an\n // onQueryUpdated function was specified.\n return Promise.all(results_1).then(function () { return result; });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\" ?\n optimisticResponse(mutation.variables, { IGNORE: IGNORE })\n : optimisticResponse;\n if (data === IGNORE) {\n return false;\n }\n this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n globalThis.__DEV__ !== false && invariant.error(error);\n }\n }, mutation.mutationId);\n return true;\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchConcastWithInfo(queryId, options, networkStatus).concast\n .promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n return this.documentTransform.transformDocument(document);\n };\n QueryManager.prototype.getDocumentInfo = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var cacheEntry = {\n // TODO These three calls (hasClientExports, shouldForceResolvers, and\n // usesNonreactiveDirective) are performing independent full traversals\n // of the transformed document. We should consider merging these\n // traversals into a single pass in the future, though the work is\n // cached after the first time.\n hasClientExports: hasClientExports(document),\n hasForcedResolvers: this.localState.shouldForceResolvers(document),\n hasNonreactiveDirective: hasDirectives([\"nonreactive\"], document),\n clientQuery: this.localState.clientQuery(document),\n serverQuery: removeDirectivesFromDocument([\n { name: \"client\", remove: true },\n { name: \"connection\" },\n { name: \"nonreactive\" },\n ], document),\n defaultVars: getDefaultValues(getOperationDefinition(document)),\n // Transform any mutation or subscription operations to query operations\n // so we can read/write them from/to the cache.\n asQuery: __assign(__assign({}, document), { definitions: document.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" &&\n def.operation !== \"query\") {\n return __assign(__assign({}, def), { operation: \"query\" });\n }\n return def;\n }) }),\n };\n transformCache.set(document, cacheEntry);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.getDocumentInfo(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n var query = this.transform(options.query);\n // assign variable default values if supplied\n // NOTE: We don't modify options.query here with the transformed query to\n // ensure observable.options.query is set to the raw untransformed query.\n options = __assign(__assign({}, options), { variables: this.getVariables(query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === \"undefined\") {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n observable[\"lastQuery\"] = query;\n this.queries.set(observable.queryId, queryInfo);\n // We give queryInfo the transformed query to ensure the first cache diff\n // uses the transformed query instead of the raw query\n queryInfo.init({\n document: query,\n observableQuery: observable,\n variables: observable.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) { queryId = this.generateQueryId(); }\n invariant(options.query, 29);\n invariant(options.query.kind === \"Document\", 30);\n invariant(!options.returnPartialData, 31);\n invariant(!options.pollInterval, 32);\n return this.fetchQuery(queryId, __assign(__assign({}, options), { query: this.transform(options.query) })).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) { options = {\n discardWatches: true,\n }; }\n // Before we have sent the reset action to the store, we can no longer\n // rely on the results returned by in-flight requests since these may\n // depend on values that previously existed in the data portion of the\n // store. So, we cancel the promises and observers that we have issued\n // so far and not yet resolved (in the case of queries).\n this.cancelPendingFetches(newInvariantError(33));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n // Set loading to true so listeners don't trigger unless they want\n // results with partial data.\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n // begin removing data from the store\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) { include = \"active\"; }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n }\n else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc), false);\n }\n else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery, document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" ||\n (include === \"active\" && !oq.hasObservers())) {\n return;\n }\n if (include === \"active\" ||\n (queryName && queryNamesAndDocs.has(queryName)) ||\n (document && queryNamesAndDocs.has(document))) {\n queries.set(queryId, oq);\n if (queryName)\n queryNamesAndDocs.set(queryName, true);\n if (document)\n queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n // We will be issuing a fresh network request for this query, so we\n // pre-allocate a new query ID here, using a special prefix to enable\n // cleaning up these temporary queries later, after fetching.\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables,\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), { fetchPolicy: \"network-only\" }),\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (globalThis.__DEV__ !== false && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n globalThis.__DEV__ !== false && invariant.warn(typeof nameOrDoc === \"string\" ? 34 : 35, nameOrDoc);\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby ||\n (fetchPolicy !== \"standby\" && fetchPolicy !== \"cache-only\")) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, _b = _a.errorPolicy, errorPolicy = _b === void 0 ? \"none\" : _b, variables = _a.variables, _c = _a.context, context = _c === void 0 ? {} : _c, _d = _a.extensions, extensions = _d === void 0 ? {} : _d;\n query = this.transform(query);\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables, extensions).map(function (result) {\n if (fetchPolicy !== \"no-cache\") {\n // the subscription interface should handle not sending us results we no longer subscribe to.\n // XXX I don't think we ever send in an object with errors, but we might in the future...\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: \"ROOT_SUBSCRIPTION\",\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n var hasErrors = graphQLResultHasError(result);\n var hasProtocolErrors = graphQLResultHasProtocolErrors(result);\n if (hasErrors || hasProtocolErrors) {\n var errors = {};\n if (hasErrors) {\n errors.graphQLErrors = result.errors;\n }\n if (hasProtocolErrors) {\n errors.protocolErrors = result.extensions[PROTOCOL_ERRORS_SYMBOL];\n }\n // `errorPolicy` is a mechanism for handling GraphQL errors, according\n // to our documentation, so we throw protocol errors regardless of the\n // set error policy.\n if (errorPolicy === \"none\" || hasProtocolErrors) {\n throw new ApolloError(errors);\n }\n }\n if (errorPolicy === \"ignore\") {\n delete result.errors;\n }\n return result;\n });\n };\n if (this.getDocumentInfo(query).hasClientExports) {\n var observablePromise_1 = this.localState\n .addExportedVariables(query, variables, context)\n .then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return (sub = observable.subscribe(observer)); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n // teardown all links\n // Both `QueryManager.fetchRequest` and `QueryManager.query` create separate promises\n // that each add their reject functions to fetchCancelFns.\n // A query created with `QueryManager.query()` could trigger a `QueryManager.fetchRequest`.\n // The same queryId could have two rejection fns for two promises\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, extensions, \n // Prefer context.queryDeduplication if specified.\n deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var _b = this.getDocumentInfo(query), serverQuery = _b.serverQuery, clientQuery = _b.clientQuery;\n if (serverQuery) {\n var _c = this, inFlightLinkObservables_1 = _c.inFlightLinkObservables, link = _c.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n extensions: extensions,\n };\n context = operation.context;\n if (deduplication) {\n var printedServerQuery_1 = print(serverQuery);\n var varJson_1 = canonicalStringify(variables);\n var entry = inFlightLinkObservables_1.lookup(printedServerQuery_1, varJson_1);\n observable = entry.observable;\n if (!observable) {\n var concast = new Concast([\n execute(link, operation),\n ]);\n observable = entry.observable = concast;\n concast.beforeNext(function () {\n inFlightLinkObservables_1.remove(printedServerQuery_1, varJson_1);\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation),\n ]);\n }\n }\n else {\n observable = new Concast([Observable.of({ data: {} })]);\n context = this.prepareContext(context);\n }\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = (queryInfo.lastRequestId = this.generateRequestId());\n // Performing transformForLink here gives this.cache a chance to fill in\n // missing fragment definitions (for example) before sending this document\n // through the link chain.\n var linkDocument = this.cache.transformForLink(options.query);\n return asyncMap(this.getObservableFromLink(linkDocument, options.context, options.variables), function (result) {\n var graphQLErrors = getGraphQLErrorsFromResult(result);\n var hasErrors = graphQLErrors.length > 0;\n var errorPolicy = options.errorPolicy;\n // If we interrupted this request by calling getResultsFromLink again\n // with the same QueryInfo object, we ignore the old results.\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && errorPolicy === \"none\") {\n // Throwing here effectively calls observer.error.\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: graphQLErrors,\n }));\n }\n // Use linkDocument rather than queryInfo.document so the\n // operation/fragments used to write the result are the same as the\n // ones used to obtain it from the link.\n queryInfo.markResult(result, linkDocument, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n // In the case we start multiple network requests simulatenously, we\n // want to ensure we properly set `data` if we're reporting on an old\n // result which will not be caught by the conditional above that ends up\n // throwing the markError result.\n if (hasErrors && errorPolicy === \"none\") {\n aqr.data = void 0;\n }\n if (hasErrors && errorPolicy !== \"ignore\") {\n aqr.errors = graphQLErrors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError) ? networkError : (new ApolloError({ networkError: networkError }));\n // Avoid storing errors from older interrupted queries.\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchConcastWithInfo = function (queryId, options, \n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus, query) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n if (query === void 0) { query = options.query; }\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? (defaults && defaults.fetchPolicy) || \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? (defaults && defaults.errorPolicy) || \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n // Since normalized is always a fresh copy of options, it's safe to\n // modify its properties here, rather than creating yet another new\n // WatchQueryOptions object.\n normalized.variables = variables;\n var sourcesWithInfo = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n if (\n // If we're in standby, postpone advancing options.fetchPolicy using\n // applyNextFetchPolicy.\n normalized.fetchPolicy !== \"standby\" &&\n // The \"standby\" policy currently returns [] from fetchQueryByPolicy, so\n // this is another way to detect when nothing was done/fetched.\n sourcesWithInfo.sources.length > 0 &&\n queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n return sourcesWithInfo;\n };\n // This cancel function needs to be set before the concast is created,\n // in case concast creation synchronously cancels the request.\n var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };\n this.fetchCancelFns.set(queryId, function (reason) {\n cleanupCancelFn();\n // This delay ensures the concast variable has been initialized.\n setTimeout(function () { return concast.cancel(reason); });\n });\n var concast, containsDataFromLink;\n // If the query has @export(as: ...) directives, then we need to\n // process those directives asynchronously. When there are no\n // @export directives (the common case), we deliberately avoid\n // wrapping the result of this.fetchQueryByPolicy in a Promise,\n // since the timing of result delivery is (unfortunately) important\n // for backwards compatibility. TODO This code could be simpler if\n // we deprecated and removed LocalState.\n if (this.getDocumentInfo(normalized.query).hasClientExports) {\n concast = new Concast(this.localState\n .addExportedVariables(normalized.query, normalized.variables, normalized.context)\n .then(fromVariables)\n .then(function (sourcesWithInfo) { return sourcesWithInfo.sources; }));\n // there is just no way we can synchronously get the *right* value here,\n // so we will assume `true`, which is the behaviour before the bug fix in\n // #10597. This means that bug is not fixed in that case, and is probably\n // un-fixable with reasonable effort for the edge case of @export as\n // directives.\n containsDataFromLink = true;\n }\n else {\n var sourcesWithInfo = fromVariables(normalized.variables);\n containsDataFromLink = sourcesWithInfo.fromLink;\n concast = new Concast(sourcesWithInfo.sources);\n }\n concast.promise.then(cleanupCancelFn, cleanupCancelFn);\n return {\n concast: concast,\n fromLink: containsDataFromLink,\n };\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff(),\n });\n });\n }\n var results = new Map();\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n // Since you can perform any combination of cache reads and/or writes in\n // the cache.batch update function, its optimistic option can be either\n // a boolean or a string, representing three distinct modes of\n // operation:\n //\n // * false: read/write only the root layer\n // * true: read/write the topmost layer\n // * string: read/write a fresh optimistic layer with that ID string\n //\n // When typeof optimistic === \"string\", a new optimistic layer will be\n // temporarily created within cache.batch with that string as its ID. If\n // we then pass that same string as the removeOptimistic option, we can\n // make cache.batch immediately remove the optimistic layer after\n // running the updateCache function, triggering only one broadcast.\n //\n // However, the refetchQueries method accepts only true or false for its\n // optimistic option (not string). We interpret true to mean a temporary\n // optimistic layer should be created, to allow efficiently rolling back\n // the effect of the updateCache function, which involves passing a\n // string instead of true as the optimistic option to cache.batch, when\n // refetchQueries receives optimistic: true.\n //\n // In other words, we are deliberately not supporting the use case of\n // writing to an *existing* optimistic layer (using the refetchQueries\n // updateCache function), since that would potentially interfere with\n // other optimistic updates in progress. Instead, you can read/write\n // only the root layer by passing optimistic: false to refetchQueries,\n // or you can read/write a brand new optimistic layer that will be\n // automatically removed by passing optimistic: true.\n optimistic: (optimistic && removeOptimistic) || false,\n // The removeOptimistic option can also be provided by itself, even if\n // optimistic === false, to remove some previously-added optimistic\n // layer safely and efficiently, like we do in markMutationResult.\n //\n // If an explicit removeOptimistic string is provided with optimistic:\n // true, the removeOptimistic string will determine the ID of the\n // temporary optimistic layer, in case that ever matters.\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo && watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n // Since we're about to handle this query now, remove it from\n // includedQueriesById, in case it was added earlier because of\n // options.include.\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n // The onQueryUpdated function requested the default refetching\n // behavior by returning true.\n result = oq.refetch();\n }\n // Record the result in the results Map, as long as onQueryUpdated\n // did not return false to skip/ignore this result.\n if (result !== false) {\n results.set(oq, result);\n }\n // Allow the default cache broadcast to happen, except when\n // onQueryUpdated returns false.\n return result;\n }\n if (onQueryUpdated !== null) {\n // If we don't have an onQueryUpdated function, and onQueryUpdated\n // was not disabled by passing null, make sure this query is\n // \"included\" like any other options.include-specified query.\n includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n }\n }\n },\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n var result;\n // If onQueryUpdated is provided, we want to use it for all included\n // queries, even the QueryOptions ones.\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset(); // Force info.getDiff() to read from cache.\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n // Otherwise, we fall back to refetching.\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n // In case no updateCache callback was provided (so cache.batch was not\n // called above, and thus did not already remove the optimistic layer),\n // remove it here. Since this is a no-op when the layer has already been\n // removed, we do it even if we called cache.batch above, since it's\n // possible this.cache is an instance of some ApolloCache subclass other\n // than InMemoryCache, and does not fully support the removeOptimistic\n // option for cache.batch.\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, \n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus) {\n var _this = this;\n var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: query,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (globalThis.__DEV__ !== false && !returnPartialData && !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) {\n return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true })));\n };\n if (data && _this.getDocumentInfo(query).hasForcedResolvers) {\n return _this.localState\n .runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n })\n .then(function (resolved) { return fromData(resolved.data || void 0); });\n }\n // Resolves https://github.com/apollographql/apollo-client/issues/10317.\n // If errorPolicy is 'none' and notifyOnNetworkStatusChange is true,\n // data was incorrectly returned from the cache on refetch:\n // if diff.missing exists, we should not return cache data.\n if (errorPolicy === \"none\" &&\n networkStatus === NetworkStatus.refetch &&\n Array.isArray(diff.missing)) {\n return fromData(void 0);\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 /* CacheWriteBehavior.FORBID */\n // Watched queries must opt into overwriting existing data on refetch,\n // by passing refetchWritePolicy: \"overwrite\" in their WatchQueryOptions.\n : (networkStatus === NetworkStatus.refetch &&\n refetchWritePolicy !== \"merge\") ?\n 1 /* CacheWriteBehavior.OVERWRITE */\n : 2 /* CacheWriteBehavior.MERGE */;\n var resultsFromLink = function () {\n return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n query: query,\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n });\n };\n var shouldNotify = notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return {\n fromLink: false,\n sources: [resultsFromCache(diff, queryInfo.markReady())],\n };\n }\n if (returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n }\n case \"cache-only\":\n return {\n fromLink: false,\n sources: [resultsFromCache(readCache(), queryInfo.markReady())],\n };\n case \"network-only\":\n if (shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(readCache()), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"no-cache\":\n if (shouldNotify) {\n return {\n fromLink: true,\n // Note that queryInfo.getDiff() for no-cache queries does not call\n // cache.diff, but instead returns a { complete: false } stub result\n // when there is no queryInfo.diff already defined.\n sources: [resultsFromCache(queryInfo.getDiff()), resultsFromLink()],\n };\n }\n return { fromLink: true, sources: [resultsFromLink()] };\n case \"standby\":\n return { fromLink: false, sources: [] };\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign(__assign({}, this.defaultContext), newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","import { Kind } from './kinds.mjs';\nexport function isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nexport function isExecutableDefinitionNode(node) {\n return (\n node.kind === Kind.OPERATION_DEFINITION ||\n node.kind === Kind.FRAGMENT_DEFINITION\n );\n}\nexport function isSelectionNode(node) {\n return (\n node.kind === Kind.FIELD ||\n node.kind === Kind.FRAGMENT_SPREAD ||\n node.kind === Kind.INLINE_FRAGMENT\n );\n}\nexport function isValueNode(node) {\n return (\n node.kind === Kind.VARIABLE ||\n node.kind === Kind.INT ||\n node.kind === Kind.FLOAT ||\n node.kind === Kind.STRING ||\n node.kind === Kind.BOOLEAN ||\n node.kind === Kind.NULL ||\n node.kind === Kind.ENUM ||\n node.kind === Kind.LIST ||\n node.kind === Kind.OBJECT\n );\n}\nexport function isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === Kind.LIST\n ? node.values.some(isConstValueNode)\n : node.kind === Kind.OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== Kind.VARIABLE)\n );\n}\nexport function isTypeNode(node) {\n return (\n node.kind === Kind.NAMED_TYPE ||\n node.kind === Kind.LIST_TYPE ||\n node.kind === Kind.NON_NULL_TYPE\n );\n}\nexport function isTypeSystemDefinitionNode(node) {\n return (\n node.kind === Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === Kind.DIRECTIVE_DEFINITION\n );\n}\nexport function isTypeDefinitionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.ENUM_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === Kind.UNION_TYPE_EXTENSION ||\n node.kind === Kind.ENUM_TYPE_EXTENSION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\n","import { dep, Slot } from \"optimism\";\n// Contextual Slot that acquires its value when custom read functions are\n// called in Policies#readField.\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, (info = {\n vars: new Set(),\n dep: dep(),\n }));\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\n// Calling forgetCache(cache) serves to silence broadcasts and allows the\n// cache to be garbage collected. However, the varsByCache WeakMap\n// preserves the set of reactive variables that were previously associated\n// with this cache, which makes it possible to \"recall\" the cache at a\n// later time, by reattaching it to those variables. If the cache has been\n// garbage collected in the meantime, because it is no longer reachable,\n// you won't be able to call recallCache(cache), and the cache will\n// automatically disappear from the varsByCache WeakMap.\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n // Invalidate any fields with custom read functions that\n // consumed this variable, so query results involving those\n // fields will be recomputed the next time we read them.\n getCacheInfo(cache).dep.dirty(rv);\n // Broadcast changes to any caches that have previously read\n // from this variable.\n broadcast(cache);\n });\n // Finally, notify any listeners added via rv.onNextChange.\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) { return listener(value); });\n }\n }\n else {\n // When reading from the variable, obtain the current cache from\n // context via cacheSlot. This isn't entirely foolproof, but it's\n // the same system that powers varDep.\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = (rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n });\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n//# sourceMappingURL=reactiveVars.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, isSelectionNode } from \"graphql\";\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = /** @class */ (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.selectionsToResolveCache = new WeakMap();\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n // Run local client resolvers against the incoming query and remote data.\n // Locally resolved field values are merged with the incoming remote data,\n // and returned. Note that locally resolved fields will overwrite\n // remote data using the same field name.\n LocalState.prototype.runResolvers = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var document = _b.document, remoteResult = _b.remoteResult, context = _b.context, variables = _b.variables, _c = _b.onlyRunForcedResolvers, onlyRunForcedResolvers = _c === void 0 ? false : _c;\n return __generator(this, function (_d) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2 /*return*/, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n // Client queries contain everything in the incoming document (if a @client\n // directive is found).\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives([\"client\"], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n // Server queries are stripped of all @client based selection sets.\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache, \n // Getting an entry's cache key is useful for local state resolvers.\n getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n // To support `@client @export(as: \"someVar\")` syntax, we'll first resolve\n // @client @export fields locally, then pass the resolved values back to be\n // used alongside the original operation variables.\n LocalState.prototype.addExportedVariables = function (document_1) {\n return __awaiter(this, arguments, void 0, function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __generator(this, function (_a) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2 /*return*/, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === \"client\" && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === \"always\" &&\n arg.value.kind === \"BooleanValue\" &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n // Query the cache and return matching data.\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document_1, rootValue_1) {\n return __awaiter(this, arguments, void 0, function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n var mainDefinition, fragments, fragmentMap, selectionsToResolve, definitionOperation, defaultOperationType, _a, cache, client, execContext, isClientFieldDescendant;\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n selectionsToResolve = this.collectSelectionsToResolve(mainDefinition, fragmentMap);\n definitionOperation = mainDefinition.operation;\n defaultOperationType = definitionOperation ?\n definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : \"Query\";\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache, client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n selectionsToResolve: selectionsToResolve,\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n isClientFieldDescendant = false;\n return [2 /*return*/, this.resolveSelectionSet(mainDefinition.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!isClientFieldDescendant &&\n !execContext.selectionsToResolve.has(selection)) {\n // Skip selections without @client directives\n // (still processing if one of the ancestors or one of the child fields has @client directive)\n return [2 /*return*/];\n }\n if (!shouldInclude(selection, variables)) {\n // Skip this entirely.\n return [2 /*return*/];\n }\n if (isField(selection)) {\n return [2 /*return*/, this.resolveField(selection, isClientFieldDescendant, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== \"undefined\") {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n // This is a named fragment.\n fragment = fragmentMap[selection.name.value];\n invariant(fragment, 18, selection.name.value);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2 /*return*/, this.resolveSelectionSet(fragment.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2 /*return*/];\n });\n }); };\n return [2 /*return*/, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n if (!rootValue) {\n return [2 /*return*/, null];\n }\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n // Usually all local resolvers are run when passing through here, but\n // if we've specifically identified that we only want to run forced\n // resolvers (that is, resolvers for fields marked with\n // `@client(always: true)`), then we'll skip running non-forced resolvers.\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(\n // In case the resolve function accesses reactive variables,\n // set cacheSlot to the current cache instance.\n cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2 /*return*/, resultPromise.then(function (result) {\n var _a, _b;\n if (result === void 0) { result = defaultResult; }\n // If an @export directive is associated with the current field, store\n // the `as` export variable name and current result for later use.\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === \"export\" && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === \"as\" && arg.value.kind === \"StringValue\") {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n // Handle all scalar types here.\n if (!field.selectionSet) {\n return result;\n }\n // From here down, the field has a selection set, which means it's trying\n // to query a GraphQLObjectType.\n if (result == null) {\n // Basically any field in a GraphQL response can be null, or missing\n return result;\n }\n var isClientField = (_b = (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some(function (d) { return d.name.value === \"client\"; })) !== null && _b !== void 0 ? _b : false;\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant || isClientField, result, execContext);\n }\n // Returned value is an object, and the query has a sub-selection. Recurse.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant || isClientField, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, isClientFieldDescendant, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse.\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant, item, execContext);\n }\n // This is an object, run the selection set on it.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant, item, execContext);\n }\n }));\n };\n // Collect selection nodes on paths from document root down to all @client directives.\n // This function takes into account transitive fragment spreads.\n // Complexity equals to a single `visit` over the full document.\n LocalState.prototype.collectSelectionsToResolve = function (mainDefinition, fragmentMap) {\n var isSingleASTNode = function (node) { return !Array.isArray(node); };\n var selectionsToResolveCache = this.selectionsToResolveCache;\n function collectByDefinition(definitionNode) {\n if (!selectionsToResolveCache.has(definitionNode)) {\n var matches_1 = new Set();\n selectionsToResolveCache.set(definitionNode, matches_1);\n visit(definitionNode, {\n Directive: function (node, _, __, ___, ancestors) {\n if (node.name.value === \"client\") {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n }\n },\n FragmentSpread: function (spread, _, __, ___, ancestors) {\n var fragment = fragmentMap[spread.name.value];\n invariant(fragment, 19, spread.name.value);\n var fragmentSelections = collectByDefinition(fragment);\n if (fragmentSelections.size > 0) {\n // Fragment for this spread contains @client directive (either directly or transitively)\n // Collect selection nodes on paths from the root down to fields with the @client directive\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n matches_1.add(spread);\n fragmentSelections.forEach(function (selection) {\n matches_1.add(selection);\n });\n }\n },\n });\n }\n return selectionsToResolveCache.get(definitionNode);\n }\n return collectByDefinition(mainDefinition);\n };\n return LocalState;\n}());\nexport { LocalState };\n//# sourceMappingURL=LocalState.js.map","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\n// Though mergeOptions now resides in @apollo/client/utilities, it was\n// previously declared and exported from this module, and then reexported from\n// @apollo/client/core. Since we need to preserve that API anyway, the easiest\n// solution is to reexport mergeOptions where it was previously declared (here).\nimport { mergeOptions } from \"../utilities/index.js\";\nimport { getApolloClientMemoryInternals } from \"../utilities/caching/getMemoryInternals.js\";\nexport { mergeOptions };\n/**\n * This is the primary Apollo Client class. It is used to send GraphQL documents (i.e. queries\n * and mutations) to a GraphQL spec-compliant server over an `ApolloLink` instance,\n * receive results from the server and cache the results in a store. It also delivers updates\n * to GraphQL queries through `Observable` instances.\n */\nvar ApolloClient = /** @class */ (function () {\n /**\n * Constructs an instance of `ApolloClient`.\n *\n * @example\n * ```js\n * import { ApolloClient, InMemoryCache } from '@apollo/client';\n *\n * const cache = new InMemoryCache();\n *\n * const client = new ApolloClient({\n * // Provide required constructor fields\n * cache: cache,\n * uri: 'http://localhost:4000/',\n *\n * // Provide some optional constructor fields\n * name: 'react-web-client',\n * version: '1.3',\n * queryDeduplication: false,\n * defaultOptions: {\n * watchQuery: {\n * fetchPolicy: 'cache-and-network',\n * },\n * },\n * });\n * ```\n */\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n if (!options.cache) {\n throw newInvariantError(15);\n }\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, documentTransform = options.documentTransform, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, \n // Expose the client instance as window.__APOLLO_CLIENT__ and call\n // onBroadcast in queryManager.broadcastQueries to enable browser\n // devtools, but disable them by default in production.\n connectToDevTools = options.connectToDevTools, _c = options.queryDeduplication, queryDeduplication = _c === void 0 ? true : _c, defaultOptions = options.defaultOptions, defaultContext = options.defaultContext, _d = options.assumeImmutableResults, assumeImmutableResults = _d === void 0 ? cache.assumeImmutableResults : _d, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version, devtools = options.devtools;\n var link = options.link;\n if (!link) {\n link =\n uri ? new HttpLink({ uri: uri, credentials: credentials, headers: headers }) : ApolloLink.empty();\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n this.devtoolsConfig = __assign(__assign({}, devtools), { enabled: (devtools === null || devtools === void 0 ? void 0 : devtools.enabled) || connectToDevTools });\n if (this.devtoolsConfig.enabled === undefined) {\n this.devtoolsConfig.enabled = globalThis.__DEV__ !== false;\n }\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.watchFragment = this.watchFragment.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n defaultContext: defaultContext,\n documentTransform: documentTransform,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: this.devtoolsConfig.enabled ?\n function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n }\n : void 0,\n });\n if (this.devtoolsConfig.enabled)\n this.connectToDevTools();\n }\n ApolloClient.prototype.connectToDevTools = function () {\n if (typeof window === \"undefined\") {\n return;\n }\n var windowWithDevTools = window;\n var devtoolsSymbol = Symbol.for(\"apollo.devtools\");\n (windowWithDevTools[devtoolsSymbol] =\n windowWithDevTools[devtoolsSymbol] || []).push(this);\n windowWithDevTools.__APOLLO_CLIENT__ = this;\n /**\n * Suggest installing the devtools for developers who don't have them\n */\n if (!hasSuggestedDevtools && globalThis.__DEV__ !== false) {\n hasSuggestedDevtools = true;\n if (window.document &&\n window.top === window.self &&\n /^(https?|file):$/.test(window.location.protocol)) {\n setTimeout(function () {\n if (!window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url =\n \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url =\n \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n globalThis.__DEV__ !== false && invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: %s\", url);\n }\n }\n }, 10000);\n }\n }\n };\n Object.defineProperty(ApolloClient.prototype, \"documentTransform\", {\n /**\n * The `DocumentTransform` used to modify GraphQL documents before a request\n * is made. If a custom `DocumentTransform` is not provided, this will be the\n * default document transform.\n */\n get: function () {\n return this.queryManager.documentTransform;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Call this method to terminate any active client processes, making it safe\n * to dispose of this `ApolloClient` instance.\n */\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n /**\n * This watches the cache store of the query according to the options specified and\n * returns an `ObservableQuery`. We can subscribe to this `ObservableQuery` and\n * receive updated results through an observer when the cache store changes.\n *\n * Note that this method is not an implementation of GraphQL subscriptions. Rather,\n * it uses Apollo's store in order to reactively deliver updates to your query results.\n *\n * For example, suppose you call watchQuery on a GraphQL query that fetches a person's\n * first and last name and this person has a particular object identifier, provided by\n * dataIdFromObject. Later, a different query fetches that same person's\n * first and last name and the first name has now changed. Then, any observers associated\n * with the results of the first query will be updated with a new result object.\n *\n * Note that if the cache does not change, the subscriber will *not* be notified.\n *\n * See [here](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.3mb0cbcmc) for\n * a description of store reactivity.\n */\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n // XXX Overwriting options is probably not the best way to do this long term...\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === \"network-only\" ||\n options.fetchPolicy === \"cache-and-network\")) {\n options = __assign(__assign({}, options), { fetchPolicy: \"cache-first\" });\n }\n return this.queryManager.watchQuery(options);\n };\n /**\n * This resolves a single query according to the options specified and\n * returns a `Promise` which is either resolved with the resulting data\n * or rejected with an error.\n *\n * @param options - An object of type `QueryOptions` that allows us to\n * describe how this query should be treated e.g. whether it should hit the\n * server at all or just resolve from the cache, etc.\n */\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n invariant(options.fetchPolicy !== \"cache-and-network\", 16);\n if (this.disableNetworkFetches && options.fetchPolicy === \"network-only\") {\n options = __assign(__assign({}, options), { fetchPolicy: \"cache-first\" });\n }\n return this.queryManager.query(options);\n };\n /**\n * This resolves a single mutation according to the options specified and returns a\n * Promise which is either resolved with the resulting data or rejected with an\n * error. In some cases both `data` and `errors` might be undefined, for example\n * when `errorPolicy` is set to `'ignore'`.\n *\n * It takes options as an object with the following keys and values:\n */\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n /**\n * This subscribes to a graphql subscription according to the options specified and returns an\n * `Observable` which either emits received data or an error.\n */\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL query without making a network request. This method will start at\n * the root query. To start at a specific id returned by `dataIdFromObject`\n * use `readFragment`.\n *\n * @param optimistic - Set to `true` to allow `readQuery` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n /**\n * Watches the cache store of the fragment according to the options specified\n * and returns an `Observable`. We can subscribe to this\n * `Observable` and receive updated results through an\n * observer when the cache store changes.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @since 3.10.0\n * @param options - An object of type `WatchFragmentOptions` that allows\n * the cache to identify the fragment and optionally specify whether to react\n * to optimistic updates.\n */\n ApolloClient.prototype.watchFragment = function (options) {\n return this.cache.watchFragment(options);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL fragment without making a network request. This method will read a\n * GraphQL fragment from any arbitrary id that is currently cached, unlike\n * `readQuery` which will only read from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @param optimistic - Set to `true` to allow `readFragment` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n /**\n * Writes some data in the shape of the provided GraphQL query directly to\n * the store. This method will start at the root query. To start at a\n * specific id returned by `dataIdFromObject` then use `writeFragment`.\n */\n ApolloClient.prototype.writeQuery = function (options) {\n var ref = this.cache.writeQuery(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n /**\n * Writes some data in the shape of the provided GraphQL fragment directly to\n * the store. This method will write to a GraphQL fragment from any arbitrary\n * id that is currently cached, unlike `writeQuery` which will only write\n * from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are writing. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n */\n ApolloClient.prototype.writeFragment = function (options) {\n var ref = this.cache.writeFragment(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n /**\n * Resets your entire store by clearing out your cache and then re-executing\n * all of your active queries. This makes it so that you may guarantee that\n * there is no data left in your store from a time before you called this\n * method.\n *\n * `resetStore()` is useful when your user just logged out. You’ve removed the\n * user session, and you now want to make sure that any references to data you\n * might have fetched while the user session was active is gone.\n *\n * It is important to remember that `resetStore()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () {\n return _this.queryManager.clearStore({\n discardWatches: false,\n });\n })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n /**\n * Remove all data from the store. Unlike `resetStore`, `clearStore` will\n * not refetch any active queries.\n */\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () {\n return _this.queryManager.clearStore({\n discardWatches: true,\n });\n })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * reset. `onResetStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * cleared. `onClearStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n /**\n * Refetches all of your active queries.\n *\n * `reFetchObservableQueries()` is useful if you want to bring the client back to proper state in case of a network outage\n *\n * It is important to remember that `reFetchObservableQueries()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n * Takes optional parameter `includeStandby` which will include queries in standby-mode when refetching.\n */\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n /**\n * Refetches specified active queries. Similar to \"reFetchObservableQueries()\" but with a specific list of queries.\n *\n * `refetchQueries()` is useful for use cases to imperatively refresh a selection of queries.\n *\n * It is important to remember that `refetchQueries()` *will* refetch specified active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n // In case you need the raw results immediately, without awaiting\n // Promise.all(results):\n result.queries = queries;\n result.results = results;\n // If you decide to ignore the result Promise because you're using\n // result.queries and result.results instead, you shouldn't have to worry\n // about preventing uncaught rejections for the Promise.all result.\n result.catch(function (error) {\n globalThis.__DEV__ !== false && invariant.debug(17, error);\n });\n return result;\n };\n /**\n * Get all currently active `ObservableQuery` objects, in a `Map` keyed by\n * query ID strings.\n *\n * An \"active\" query is one that has observers and a `fetchPolicy` other than\n * \"standby\" or \"cache-only\".\n *\n * You can include all `ObservableQuery` objects (including the inactive ones)\n * by passing \"all\" instead of \"active\", or you can include just a subset of\n * active queries by passing an array of query names or DocumentNode objects.\n */\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) { include = \"active\"; }\n return this.queryManager.getObservableQueries(include);\n };\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n /**\n * Add additional local resolvers.\n */\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n /**\n * Set (override existing) local resolvers.\n */\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n /**\n * Get all registered local resolvers.\n */\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n /**\n * Set a custom local state fragment matcher.\n */\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n /**\n * Define a new ApolloLink (or link chain) that Apollo Client will use.\n */\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n Object.defineProperty(ApolloClient.prototype, \"defaultContext\", {\n get: function () {\n return this.queryManager.defaultContext;\n },\n enumerable: false,\n configurable: true\n });\n return ApolloClient;\n}());\nexport { ApolloClient };\nif (globalThis.__DEV__ !== false) {\n ApolloClient.prototype.getMemoryInternals = getApolloClientMemoryInternals;\n}\n//# sourceMappingURL=ApolloClient.js.map","import { __assign, __rest } from \"tslib\";\nimport { wrap } from \"optimism\";\nimport { Observable, cacheSizes, getFragmentQueryDocument, mergeDeepArray, } from \"../../utilities/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { getApolloCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nimport { equalByQuery } from \"../../core/equalByQuery.js\";\nvar ApolloCache = /** @class */ (function () {\n function ApolloCache() {\n this.assumeImmutableResults = false;\n // Make sure we compute the same (===) fragment query document every\n // time we receive the same fragment in readFragment.\n this.getFragmentDoc = wrap(getFragmentQueryDocument, {\n max: cacheSizes[\"cache.fragmentQueryDocuments\"] ||\n 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n cache: WeakCache,\n });\n }\n // Transactional API\n // The batch method is intended to replace/subsume both performTransaction\n // and recordOptimisticTransaction, but performTransaction came first, so we\n // provide a default batch implementation that's just another way of calling\n // performTransaction. Subclasses of ApolloCache (such as InMemoryCache) can\n // override the batch method to do more interesting things with its options.\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic\n : options.optimistic === false ? null\n : void 0;\n var updateResult;\n this.performTransaction(function () { return (updateResult = options.update(_this)); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n // Optional API\n // Called once per input document, allowing the cache to make static changes\n // to the query, such as adding __typename fields.\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n // Called before each ApolloLink request, allowing the cache to make dynamic\n // changes to the query, such as filling in missing fragment definitions.\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n // DataProxy API\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || \"ROOT_QUERY\", optimistic: optimistic }));\n };\n /** {@inheritDoc @apollo/client!ApolloClient#watchFragment:member(1)} */\n ApolloCache.prototype.watchFragment = function (options) {\n var _this = this;\n var fragment = options.fragment, fragmentName = options.fragmentName, from = options.from, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, otherOptions = __rest(options, [\"fragment\", \"fragmentName\", \"from\", \"optimistic\"]);\n var query = this.getFragmentDoc(fragment, fragmentName);\n var diffOptions = __assign(__assign({}, otherOptions), { returnPartialData: true, id: \n // While our TypeScript types do not allow for `undefined` as a valid\n // `from`, its possible `useFragment` gives us an `undefined` since it\n // calls` cache.identify` and provides that value to `from`. We are\n // adding this fix here however to ensure those using plain JavaScript\n // and using `cache.identify` themselves will avoid seeing the obscure\n // warning.\n typeof from === \"undefined\" || typeof from === \"string\" ?\n from\n : this.identify(from), query: query, optimistic: optimistic });\n var latestDiff;\n return new Observable(function (observer) {\n return _this.watch(__assign(__assign({}, diffOptions), { immediate: true, callback: function (diff) {\n if (\n // Always ensure we deliver the first result\n latestDiff &&\n equalByQuery(query, { data: latestDiff === null || latestDiff === void 0 ? void 0 : latestDiff.result }, { data: diff.result })) {\n return;\n }\n var result = {\n data: diff.result,\n complete: !!diff.complete,\n };\n if (diff.missing) {\n result.missing = mergeDeepArray(diff.missing.map(function (error) { return error.missing; }));\n }\n latestDiff = diff;\n observer.next(result);\n } }));\n });\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || \"ROOT_QUERY\",\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\nif (globalThis.__DEV__ !== false) {\n ApolloCache.prototype.getMemoryInternals = getApolloCacheMemoryInternals;\n}\n//# sourceMappingURL=cache.js.map","import { __extends } from \"tslib\";\nvar MissingFieldError = /** @class */ (function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n // 'Error' breaks prototype chain here\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n }\n else {\n _this.missing = _this.path;\n }\n // We're not using `Object.setPrototypeOf` here as it isn't fully supported\n // on Android (see issue #3236).\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error));\nexport { MissingFieldError };\n//# sourceMappingURL=common.js.map","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, isArray, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport { isArray };\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n !isNullish(id) ? { id: id }\n : !isNullish(_id) ? { _id: _id }\n : void 0;\n }\n // If there is no object.id, fall back to object._id.\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat(typeof id === \"number\" || typeof id === \"string\" ?\n id\n : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n // Thanks to the shouldCanonizeResults helper, this should be the only line\n // you have to change to reenable canonization by default in the future.\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference) ?\n store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result) ?\n result.every(function (item) {\n return selectionSetMatchesResult(selectionSet, item, variables);\n })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return (hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables)));\n }\n // If the selection has been skipped with @skip(true) or\n // @include(false), it should not count against the matching. If\n // the selection is not a field, it must be a fragment (inline or\n // named). We will determine if selectionSetMatchesResult for that\n // fragment when we get to it, so for now we return true.\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) && !isReference(value) && !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger();\n}\nexport function extractFragmentContext(document, fragments) {\n // FragmentMap consisting only of fragments defined directly in document, not\n // including other fragments registered in the FragmentRegistry.\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n },\n };\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = /** @class */ (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n // Maps root entity IDs to the number of times they have been retained, minus\n // the number of times they have been released. Retained entities keep other\n // entities they reference (even indirectly) from being garbage collected.\n this.rootIds = Object.create(null);\n // Lazily tracks { __ref: } strings contained by this.data[dataId].\n this.refs = Object.create(null);\n // Bound function that can be passed around to provide easy access to fields\n // of Reference objects as well as ordinary objects.\n this.getFieldValue = function (objectOrReference, storeFieldName) {\n return maybeDeepFreeze(isReference(objectOrReference) ?\n _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]);\n };\n // Returns true for non-normalized StoreObjects and non-dangling\n // References, indicating that readField(name, objOrRef) has a chance of\n // working. Useful for filtering out dangling references from lists.\n this.canRead = function (objOrRef) {\n return isReference(objOrRef) ?\n _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n // Bound function that converts an id or an object with a __typename and\n // primary key fields to a Reference object. If called with a Reference object,\n // that same Reference object is returned. Pass true for mergeIntoStore to persist\n // an object into the store.\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n // Although the EntityStore class is abstract, it contains concrete\n // implementations of the various NormalizedCache interface methods that\n // are inherited by the Root and Layer subclasses.\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n // The has method (above) calls lookup with dependOnExistence = true, so\n // that it can later be invalidated when we add or remove a StoreObject for\n // this dataId. Any consumer who cares about the contents of the StoreObject\n // should not rely on this dependency, since the contents could change\n // without the object being added or removed.\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n // Convert unexpected references to ID strings.\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\" ? this.lookup((dataId = older)) : older;\n var incoming = typeof newer === \"string\" ? this.lookup((dataId = newer)) : newer;\n // If newer was a string ID, but that ID was not defined in this store,\n // then there are no fields to be merged, so we're done.\n if (!incoming)\n return;\n invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n // Even if merged === existing, existing may have come from a lower\n // layer, so we always need to set this.data[dataId] on this level.\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n // If we added a new StoreObject where there was previously none, dirty\n // anything that depended on the existence of this dataId, such as the\n // EntityStore#has method.\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n // Now invalidate dependents who called getFieldValue for any fields\n // that are changing as a result of this merge.\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing ||\n existing[storeFieldName] !== merged[storeFieldName]) {\n // Always dirty the full storeFieldName, which may include\n // serialized arguments following the fieldName prefix.\n fieldsToDirty_1[storeFieldName] = 1;\n // Also dirty fieldNameFromStoreName(storeFieldName) if it's\n // different from storeFieldName and this field does not have\n // keyArgs configured, because that means the cache can't make\n // any assumptions about how field values with the same field\n // name but different arguments might be interrelated, so it\n // must err on the side of invalidating all field values that\n // share the same short fieldName, regardless of arguments.\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n // If merged[storeFieldName] has become undefined, and this is the\n // Root layer, actually delete the property from the merged object,\n // which is guaranteed to have been created fresh in this method.\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n // Since we return default root __typename strings\n // automatically from store.get, we don't need to dirty the\n // ROOT_QUERY.__typename field if merged.__typename is equal\n // to the default string (usually \"Query\").\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) {\n return _this.group.dirty(dataId, fieldName);\n });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) {\n return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ?\n {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n }\n : fieldNameOrOptions, { store: _this });\n },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\" ? fields : (fields[storeFieldName] || fields[fieldName]);\n if (modify) {\n var newValue = modify === delModifier ? DELETE : (modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) })));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n if (globalThis.__DEV__ !== false) {\n var checkReference = function (ref) {\n if (_this.lookup(ref.__ref) === undefined) {\n globalThis.__DEV__ !== false && invariant.warn(2, ref);\n return true;\n }\n };\n if (isReference(newValue)) {\n checkReference(newValue);\n }\n else if (Array.isArray(newValue)) {\n // Warn about writing \"mixed\" arrays of Reference and non-Reference objects\n var seenReference = false;\n var someNonReference = void 0;\n for (var _i = 0, newValue_1 = newValue; _i < newValue_1.length; _i++) {\n var value = newValue_1[_i];\n if (isReference(value)) {\n seenReference = true;\n if (checkReference(value))\n break;\n }\n else {\n // Do not warn on primitive values, since those could never be represented\n // by a reference. This is a valid (albeit uncommon) use case.\n if (typeof value === \"object\" && !!value) {\n var id = _this.policies.identify(value)[0];\n // check if object could even be referenced, otherwise we are not interested in it for this warning\n if (id) {\n someNonReference = value;\n }\n }\n }\n if (seenReference && someNonReference !== undefined) {\n globalThis.__DEV__ !== false && invariant.warn(3, someNonReference);\n break;\n }\n }\n }\n }\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n // If called with only one argument, removes the entire entity\n // identified by dataId. If called with a fieldName as well, removes all\n // fields of that entity whose names match fieldName according to the\n // fieldNameFromStoreName helper function. If called with a fieldName\n // and variables, removes all fields of that entity whose names match fieldName\n // and whose arguments when cached exactly match the variables passed.\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args ?\n this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n // Always invalidate the field to trigger rereading of watched\n // queries, even if no cache data was modified by the eviction,\n // because queries may depend on computed fields with custom read\n // functions, whose values are not stored in the EntityStore.\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return (this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1);\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n // Return a Set of all the ID strings that have been retained by\n // this layer/root *and* any layers/roots beneath it.\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n // Official singleton IDs like ROOT_QUERY and ROOT_MUTATION are\n // always considered roots for garbage collection, regardless of\n // their retainment counts in this.rootIds.\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n // The goal of garbage collection is to remove IDs from the Root layer of the\n // store that are no longer reachable starting from any IDs that have been\n // explicitly retained (see retain and release, above). Returns an array of\n // dataId strings that were removed from the store.\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n // Because we are iterating over an ECMAScript Set, the IDs we add here\n // will be visited in later iterations of the forEach loop only if they\n // were not previously contained by the Set.\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n // By removing IDs from the snapshot object here, we protect them from\n // getting removed from the root store layer below.\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = (this.refs[dataId] = Object.create(null));\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n // Within the store, only arrays and objects can contain child entity\n // references, so we can prune the traversal using this predicate:\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n // In rare cases, a { __ref } Reference object may have other fields.\n // This often indicates a mismerging of References with StoreObjects,\n // but garbage collection should not be fooled by a stray __ref\n // property in a StoreObject (ignoring all the other fields just\n // because the StoreObject looks like a Reference). To avoid this\n // premature termination of findChildRefIds recursion, we fall through\n // to the code below, which will handle any other properties of obj.\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n // No need to add primitive values to the workSet, since they cannot\n // contain reference objects.\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\n// A single CacheGroup represents a set of one or more EntityStore objects,\n// typically the Root store in a CacheGroup by itself, and all active Layer\n// stores in a group together. A single EntityStore object belongs to only\n// one CacheGroup, store.group. The CacheGroup is responsible for tracking\n// dependencies, so store.group is helpful for generating unique keys for\n// cached results that need to be invalidated when/if those dependencies\n// change. If we used the EntityStore objects themselves as cache keys (that\n// is, store rather than store.group), the cache would become unnecessarily\n// fragmented by all the different Layer objects. Instead, the CacheGroup\n// approach allows all optimistic Layer objects in the same linked list to\n// belong to one CacheGroup, with the non-optimistic Root object belonging\n// to another CacheGroup, allowing resultCaching dependencies to be tracked\n// separately for optimistic and non-optimistic entity data.\nvar CacheGroup = /** @class */ (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n // Fields with arguments that contribute extra identifying\n // information to the fieldName (thus forming the storeFieldName)\n // depend not only on the full storeFieldName but also on the\n // short fieldName, so the field can be invalidated using either\n // level of specificity.\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), \n // When storeFieldName === \"__exists\", that means the entity identified\n // by dataId has either disappeared from the cache or was newly added,\n // so the result caching system would do well to \"forget everything it\n // knows\" about that object. To achieve that kind of invalidation, we\n // not only dirty the associated result cache entry, but also remove it\n // completely from the dependency graph. For the optimism implementation\n // details, see https://github.com/benjamn/optimism/pull/195.\n storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n // Since field names cannot have '#' characters in them, this method\n // of joining the field name and the ID should be unambiguous, and much\n // cheaper than JSON.stringify([dataId, fieldName]).\n return storeFieldName + \"#\" + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n // We use this pseudo-field __exists elsewhere in the EntityStore code to\n // represent changes in the existence of the entity object identified by\n // entityId. This dependency gets reliably dirtied whenever an object with\n // this ID is deleted (or newly created) within this group, so any result\n // cache entries (for example, StoreReader#executeSelectionSet results) that\n // depend on __exists for this entityId will get dirtied as well, leading to\n // the eventual recomputation (instead of reuse) of those result objects the\n // next time someone reads them from the cache.\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n // Refer to this class as EntityStore.Root outside this namespace.\n var Root = /** @class */ (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n // Adding an optimistic Layer on top of the Root actually adds the Layer\n // on top of the Stump, so the Stump always comes between the Root and\n // any Layer objects that we've added.\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n // Never remove the root layer.\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\n// Not exported, since all Layer instances are created by the addLayer method\n// of the EntityStore.Root class.\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n // Remove all instances of the given id, not just the first one.\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n // Dirty every ID we're removing. Technically we might be able to avoid\n // dirtying fields that have values in higher layers, but we don't have\n // easy access to higher layers here, and we're about to recreate those\n // layers anyway (see parent.addLayer below).\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n // The StoreObject identified by dataId was defined in this layer\n // but will be undefined in the parent layer, so we can delete the\n // whole entity using this.delete(dataId). Since we're about to\n // throw this layer away, the only goal of this deletion is to dirty\n // the removed fields.\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n // This layer had an entry for dataId but it was undefined, which\n // means the entity was deleted in this layer, and it's about to\n // become undeleted when we remove this layer, so we need to dirty\n // all fields that are about to be reexposed.\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n // If ownStoreObject is not exactly the same as parentStoreObject,\n // dirty any fields whose values will change as a result of this\n // removal.\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n // No changes are necessary if the parent chain remains identical.\n if (parent === this.parent)\n return this;\n // Recreate this layer on top of the new parent.\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, \n // @ts-expect-error\n arguments);\n };\n return Layer;\n}(EntityStore));\n// Represents a Layer permanently installed just above the Root, which allows\n// reading optimistically (and registering optimistic dependencies) even when\n// no optimistic layers are currently active. The stump.group CacheGroup object\n// is shared by any/all Layer objects added on top of the Stump.\nvar Stump = /** @class */ (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n // Never remove the Stump layer.\n return this;\n };\n Stump.prototype.merge = function (older, newer) {\n // We never want to write any data into the Stump, so we forward any merge\n // calls to the Root instead. Another option here would be to throw an\n // exception, but the toReference(object, true) function can sometimes\n // trigger Stump writes (which used to be Root writes, before the Stump\n // concept was introduced).\n return this.parent.merge(older, newer);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n // Wherever there is a key collision, prefer the incoming value, unless\n // it is deeply equal to the existing value. It's worth checking deep\n // equality here (even though blindly returning incoming would be\n // logically correct) because preserving the referential identity of\n // existing data can prevent needless rereading and rerendering.\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n // When result caching is disabled, store.depend will be null.\n return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map","import { __assign } from \"tslib\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value) ?\n value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\n// When programmers talk about the \"canonical form\" of an object, they\n// usually have the following meaning in mind, which I've copied from\n// https://en.wiktionary.org/wiki/canonical_form:\n//\n// 1. A standard or normal presentation of a mathematical entity [or\n// object]. A canonical form is an element of a set of representatives\n// of equivalence classes of forms such that there is a function or\n// procedure which projects every element of each equivalence class\n// onto that one element, the canonical form of that equivalence\n// class. The canonical form is expected to be simpler than the rest of\n// the forms in some way.\n//\n// That's a long-winded way of saying any two objects that have the same\n// canonical form may be considered equivalent, even if they are !==,\n// which usually means the objects are structurally equivalent (deeply\n// equal), but don't necessarily use the same memory.\n//\n// Like a literary or musical canon, this ObjectCanon class represents a\n// collection of unique canonical items (JavaScript objects), with the\n// important property that canon.admit(a) === canon.admit(b) if a and b\n// are deeply equal to each other. In terms of the definition above, the\n// canon.admit method is the \"function or procedure which projects every\"\n// object \"onto that one element, the canonical form.\"\n//\n// In the worst case, the canonicalization process may involve looking at\n// every property in the provided object tree, so it takes the same order\n// of time as deep equality checking. Fortunately, already-canonicalized\n// objects are returned immediately from canon.admit, so the presence of\n// canonical subtrees tends to speed up canonicalization.\n//\n// Since consumers of canonical objects can check for deep equality in\n// constant time, canonicalizing cache results can massively improve the\n// performance of application code that skips re-rendering unchanged\n// results, such as \"pure\" UI components in a framework like React.\n//\n// Of course, since canonical objects may be shared widely between\n// unrelated consumers, it's important to think of them as immutable, even\n// though they are not actually frozen with Object.freeze in production,\n// due to the extra performance overhead that comes with frozen objects.\n//\n// Custom scalar objects whose internal class name is neither Array nor\n// Object can be included safely in the admitted tree, but they will not\n// be replaced with a canonical version (to put it another way, they are\n// assumed to be canonical already).\n//\n// If we ignore custom objects, no detection of cycles or repeated object\n// references is currently required by the StoreReader class, since\n// GraphQL result objects are JSON-serializable trees (and thus contain\n// neither cycles nor repeated subtrees), so we can avoid the complexity\n// of keeping track of objects we've already seen during the recursion of\n// the admit method.\n//\n// In the future, we may consider adding additional cases to the switch\n// statement to handle other common object types, such as \"[object Date]\"\n// objects, as needed.\nvar ObjectCanon = /** @class */ (function () {\n function ObjectCanon() {\n // Set of all canonical objects this ObjectCanon has admitted, allowing\n // canon.admit to return previously-canonicalized objects immediately.\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n // Efficient storage/lookup structure for canonical objects.\n this.pool = new Trie(canUseWeakMap);\n // Make the ObjectCanon assume this value has already been\n // canonicalized.\n this.passes = new WeakMap();\n // Arrays that contain the same elements in a different order can share\n // the same SortedKeysInfo object, to save memory.\n this.keysByJSON = new Map();\n // This has to come last because it depends on keysByJSON.\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n // Arrays are looked up in the Trie using their recursively\n // canonicalized elements, and the known version of the array is\n // preserved as node.array.\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add((node.array = array));\n // Since canonical arrays may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n // Objects are looked up in the Trie by their prototype (which\n // is *not* recursively canonicalized), followed by a JSON\n // representation of their (sorted) keys, followed by the\n // sequence of recursively canonicalized values corresponding to\n // those keys. To keep the final results unambiguous with other\n // sequences (such as arrays that just happen to contain [proto,\n // keys.json, value1, value2, ...]), the known version of the\n // object is stored as node.object.\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = (node.object = Object.create(proto_1));\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n // Since canonical objects may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n // It's worthwhile to cache the sorting of arrays of strings, since the\n // same initial unsorted arrays tend to be encountered many times.\n // Fortunately, we can reuse the Trie machinery to look up the sorted\n // arrays in linear time (which is faster than sorting large arrays).\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, (node.keys = { sorted: keys, json: json }));\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\n//# sourceMappingURL=object-canon.js.map","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind } from \"graphql\";\nimport { wrap } from \"optimism\";\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, canonicalStringify, cacheSizes, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching, } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults, } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { ObjectCanon } from \"./object-canon.js\";\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n // We split out this property so we can pass different values\n // independently without modifying options.context itself.\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = /** @class */ (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon();\n // memoized functions in this class will be \"garbage-collected\"\n // by recreating the whole `StoreReader` in\n // `InMemoryCache.resetResultsCache`\n // (triggered from `InMemoryCache.gc` with `resetResultCache: true`)\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n // Negate this boolean option so we can find out if we've already read\n // this result using the other boolean value.\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { \n // If we previously read this result without canonizing it, we can\n // reuse that result simply by canonizing it now.\n result: _this.canon.admit(other.result) });\n }\n // If we previously read this result with canonization enabled, we can\n // return that canonized result as-is.\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n // Finally, if we didn't find any useful previous results, run the real\n // execSelectionSetImpl method with the given options.\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSelectionSet\"] ||\n 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n keyArgs: execSelectionSetKeyArgs,\n // Note that the parameters of makeCacheKey are determined by the\n // array returned by keyArgs.\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n },\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.executeSubSelectedArray\"] ||\n 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n },\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon();\n };\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n */\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? \"ROOT_QUERY\" : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),\n });\n var missing;\n if (execResult.missing) {\n // For backwards compatibility we still report an array of\n // MissingFieldError objects, even though there will only ever be at most\n // one of them, now that all missing field error messages are grouped\n // together in the execResult.missing tree.\n missing = [\n new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables),\n ];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, \n // If result is canonical, then it could only have been previously\n // cached by the canonizing version of executeSelectionSet, so we can\n // avoid checking both possibilities here.\n this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n // Uncached version of executeSelectionSet.\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n // Ensure we always include a default value for the __typename\n // field, if we have one, and this.config.addTypename is true. Note\n // that this field can be overridden by other merged objects.\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = result.missing,\n _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n // Omit fields with directives @skip(if: ) or\n // @include(if: ).\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference) ?\n objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n if (fieldValue.length > 0) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n }\n else if (!selection.selectionSet) {\n // If the field does not have a selection set, then we handle it\n // as a scalar value. To keep this.canon from canonicalizing\n // this value, we use this.canon.pass to wrap fieldValue in a\n // Pass object that this.canon.admit will later unwrap as-is.\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n // In this case, because we know the field has a selection set,\n // it must be trying to query a GraphQLObjectType, which is why\n // fieldValue must be != null.\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(9, selection.name.value);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults ?\n this.canon.admit(finalResult)\n // Since this.canon is normally responsible for freezing results (only in\n // development), freeze them manually if canonization is disabled.\n : maybeDeepFreeze(finalResult);\n // Store this result with its selection set so that we can quickly\n // recognize it again in the StoreReader#isFresh method.\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n // Uncached version of executeSubSelectedArray.\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n // null value in array\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (globalThis.__DEV__ !== false) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n invariant(\n !isReference(value),\n 10,\n getTypenameFromStoreObject(store, value),\n field.name.value\n );\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n//# sourceMappingURL=readFromStore.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\n// Mapping from JSON-encoded KeySpecifier strings to associated information.\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n // It's safe to encode KeySpecifier arrays with JSON.stringify, since they're\n // just arrays of strings or nested KeySpecifier arrays, and the order of the\n // array elements is important (and suitably preserved by JSON.stringify).\n var cacheKey = JSON.stringify(spec);\n return (specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null)));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) {\n return context.readField(key, from);\n };\n var keyObject = (context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, \n // Using context.readField to extract paths from context.storeObject\n // allows the extraction to see through Reference objects and respect\n // custom read functions.\n extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n // If context.storeObject fails to provide a value for the requested\n // path, fall back to the raw result object, if it has a top-level key\n // matching the first key in the path (schemaKeyPath[0]). This allows\n // key fields included in the written data to be saved in the cache\n // even if they are not selected explicitly in context.selectionSet.\n // Not being mentioned by context.selectionSet is convenient here,\n // since it means these extra fields cannot be affected by field\n // aliasing, which is why we can use extractKey instead of\n // context.readField for this extraction.\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n invariant(extracted !== void 0, 4, schemaKeyPath.join(\".\"), object);\n return extracted;\n }));\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n }));\n}\n// The keyArgs extraction process is roughly analogous to keyFields extraction,\n// but there are no aliases involved, missing fields are tolerated (by merely\n// omitting them from the key), and drawing from field.directives or variables\n// is allowed (in addition to drawing from the field's arguments object).\n// Concretely, these differences mean passing a different key path extractor\n// function to collectSpecifierPaths, reusing the shared extractKeyPath helper\n// wherever possible.\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return (info.keyArgsFn ||\n (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n // If the directive appears multiple times, only the first\n // occurrence's arguments will be used. TODO Allow repetition?\n // TODO Cache this work somehow, a la aliasMap?\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n // Fortunately argumentsObjectFromField works for DirectiveNode!\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n // For directives without arguments (d defined, but directiveArgs ===\n // null), the presence or absence of the directive still counts as\n // part of the field key, so we return null in those cases. If no\n // directive with this name was found for this field (d undefined and\n // thus directiveArgs undefined), we return undefined, which causes\n // this value to be omitted from the key object returned by\n // collectSpecifierPaths.\n return (directiveArgs &&\n extractKeyPath(directiveArgs, \n // If keyPath.length === 1, this code calls extractKeyPath with an\n // empty path, which works because it uses directiveArgs as the\n // extracted value.\n keyPath.slice(1)));\n }\n // If the key started with @ but there was no corresponding directive,\n // we want to omit this value from the key object, not fall through to\n // treating @whatever as a normal argument name.\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n // If the key started with $ but there was no corresponding variable, we\n // want to omit this value from the key object, not fall through to\n // treating $whatever as a normal argument name.\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n // If no arguments were passed to this field, and it didn't have any other\n // field key contributions from directives or variables, hide the empty\n // :{} suffix from the field key. However, a field passed no arguments can\n // still end up with a non-empty :{...} suffix if its key configuration\n // refers to directives or variables.\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n }));\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n // For each path specified by specifier, invoke the extractor, and repeatedly\n // merge the results together, with appropriate ancestor context.\n var merger = new DeepMerger();\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n // This path is not expected to contain array indexes, so the toMerge\n // reconstruction will not contain arrays. TODO Fix this?\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = (info.paths = []);\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n // For each key in path, extract the corresponding child property from obj,\n // flattening arrays if encountered (uncommon for keyFields and keyArgs, but\n // possible). The final result of path.reduce is normalized so unexpected leaf\n // objects have their keys safely sorted. That final result is difficult to\n // type as anything other than any. You're welcome to try to improve the\n // return type, but keep in mind extractKeyPath is not a public function\n // (exported only for testing), so the effort may not be worthwhile unless the\n // limited set of actual callers (see above) pass arguments that TypeScript\n // can statically type. If we know only that path is some array of strings\n // (and not, say, a specific tuple of statically known strings), any (or\n // possibly unknown) is the honest answer.\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj) ?\n obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n // Usually the extracted value will be a scalar value, since most primary\n // key fields are scalar, but just in case we get an object or an array, we\n // need to do some normalization of the order of (nested) keys.\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) {\n return extractKeyPath(value, path);\n });\n }\n return value;\n}\n//# sourceMappingURL=key-extractor.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier, } from \"./key-extractor.js\";\nfunction argsFromFieldSpecifier(spec) {\n return (spec.args !== void 0 ? spec.args\n : spec.field ? argumentsObjectFromField(spec.field, spec.variables)\n : null);\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\n// These merge functions can be selected by specifying merge:true or\n// merge:false in a field policy.\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = /** @class */ (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n // Map from subtype names to sets of supertype names. Note that this\n // representation inverts the structure of possibleTypes (whose keys are\n // supertypes and whose values are arrays of subtypes) because it tends\n // to be much more efficient to search upwards than downwards.\n this.supertypeMap = new Map();\n // Any fuzzy subtypes specified by possibleTypes will be converted to\n // RegExp objects and recorded here. Every key of this map can also be\n // found in supertypeMap. In many cases this Map will be empty, which\n // means no fuzzy subtype checking will happen in fragmentMatches.\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = (partialContext &&\n (partialContext.typename || ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename))) ||\n object.__typename;\n // It should be possible to write root Query fields with writeFragment,\n // using { __typename: \"Query\", ... } as the data, but it does not make\n // sense to allow the same identification behavior for the Mutation and\n // Subscription types, since application code should never be writing\n // directly to (or reading directly from) those root objects.\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n // Default context.storeObject to object if not otherwise provided.\n var storeObject = (partialContext && partialContext.storeObject) || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: (partialContext && partialContext.readField) ||\n function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = (policy && policy.keyFn) || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(__assign(__assign({}, object), storeObject), context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n // Though {query,mutation,subscription}Type configurations are rare,\n // it's important to call setRootTypename as early as possible,\n // since these configurations should apply consistently for the\n // entire lifetime of the cache. Also, since only one __typename can\n // qualify as one of these root types, these three properties cannot\n // be inherited, unlike the rest of the incoming properties. That\n // restriction is convenient, because the purpose of this.toBeAdded\n // is to delay the processing of type/field policies until the first\n // time they're used, allowing policies to be added in any order as\n // long as all relevant policies (including policies for supertypes)\n // have been added by the time a given policy is used for the first\n // time. In other words, since inheritance doesn't matter for these\n // properties, there's also no need to delay their processing using\n // the this.toBeAdded queue.\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge\n // Pass merge:true as a shorthand for a merge implementation\n // that returns options.mergeObjects(existing, incoming).\n : merge === true ? mergeTrueFn\n // Pass merge:false to make incoming always replace existing\n // without any warnings about data clobbering.\n : merge === false ? mergeFalseFn\n : existing.merge;\n }\n // Type policies can define merge functions, as an alternative to\n // using field policies to merge child objects.\n setMerge(existing, incoming.merge);\n existing.keyFn =\n // Pass false to disable normalization for this typename.\n keyFields === false ? nullKeyFieldsFn\n // Pass an array of strings to use those fields to compute a\n // composite ID for objects of this typename.\n : isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields)\n // Pass a function to take full control over identification.\n : typeof keyFields === \"function\" ? keyFields\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n // Pass false to disable argument-based differentiation of\n // field identities.\n keyArgs === false ? simpleKeyArgsFn\n // Pass an array of strings to use named arguments to\n // compute a composite identity for the field.\n : isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs)\n // Pass a function to take full control over field identity.\n : typeof keyArgs === \"function\" ? keyArgs\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n // If we have both a read and a merge function, assume\n // keyArgs:false, because read and merge together can take\n // responsibility for interpreting arguments in and out. This\n // default assumption can always be overridden by specifying\n // keyArgs explicitly in the FieldPolicy.\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n invariant(!old || old === which, 5, which);\n // First, delete any old __typename associated with this rootId from\n // rootIdsByTypename.\n if (old)\n delete this.rootIdsByTypename[old];\n // Now make this the only __typename that maps to this rootId.\n this.rootIdsByTypename[typename] = rootId;\n // Finally, update the __typename associated with this rootId.\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n // Make sure all types have an entry in this.supertypeMap, even if\n // their supertype set is empty, so we can return false immediately\n // from policies.fragmentMatches for unknown supertypes.\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n // TODO Don't interpret just any invalid typename as a RegExp.\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = (this.typePolicies[typename] = Object.create(null));\n policy_1.fields = Object.create(null);\n // When the TypePolicy for typename is first accessed, instead of\n // starting with an empty policy object, inherit any properties or\n // fields from the type policies of the supertypes of typename.\n //\n // Any properties or fields defined explicitly within the TypePolicy\n // for typename will take precedence, and if there are multiple\n // supertypes, the properties of policies whose types were added\n // later via addPossibleTypes will take precedence over those of\n // earlier supertypes. TODO Perhaps we should warn about these\n // conflicts in development, and recommend defining the property\n // explicitly in the subtype policy?\n //\n // Field policy inheritance is atomic/shallow: you can't inherit a\n // field policy and then override just its read function, since read\n // and merge functions often need to cooperate, so changing only one\n // of them would be a recipe for inconsistency.\n //\n // Once the TypePolicy for typename has been accessed, its properties can\n // still be updated directly using addTypePolicies, but future changes to\n // inherited supertype policies will not be reflected in this subtype\n // policy, because this code runs at most once per typename.\n var supertypes_1 = this.supertypeMap.get(typename);\n if (!supertypes_1 && this.fuzzySubtypes.size) {\n // To make the inheritance logic work for unknown typename strings that\n // may have fuzzy supertypes, we give this typename an empty supertype\n // set and then populate it with any fuzzy supertypes that match.\n supertypes_1 = this.getSupertypeSet(typename, true);\n // This only works for typenames that are directly matched by a fuzzy\n // supertype. What if there is an intermediate chain of supertypes?\n // While possible, that situation can only be solved effectively by\n // specifying the intermediate relationships via possibleTypes, manually\n // and in a non-fuzzy way.\n this.fuzzySubtypes.forEach(function (regExp, fuzzy) {\n if (regExp.test(typename)) {\n // The fuzzy parameter is just the original string version of regExp\n // (not a valid __typename string), but we can look up the\n // associated supertype(s) in this.supertypeMap.\n var fuzzySupertypes = _this.supertypeMap.get(fuzzy);\n if (fuzzySupertypes) {\n fuzzySupertypes.forEach(function (supertype) {\n return supertypes_1.add(supertype);\n });\n }\n }\n });\n }\n if (supertypes_1 && supertypes_1.size) {\n supertypes_1.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n // Merge the pending policies into this.typePolicies, in the order they\n // were originally passed to addTypePolicy.\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return (fieldPolicies[fieldName] ||\n (createIfMissing && (fieldPolicies[fieldName] = Object.create(null))));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, (supertypeSet = new Set()));\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n // If the fragment has a type condition but the object we're matching\n // against does not have a __typename, the fragment cannot match.\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n // Common case: fragment type condition and __typename are the same.\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes && this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n // We need to check fuzzy subtypes only if we encountered fuzzy\n // subtype strings in addPossibleTypes, and only while writing to\n // the cache, since that's when selectionSetMatchesResult gives a\n // strong signal of fragment matching. The StoreReader class calls\n // policies.fragmentMatches without passing a result object, so\n // needToCheckFuzzySubtypes is always false while reading.\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n // It's important to keep evaluating workQueue.length each time through\n // the loop, because the queue can grow while we're iterating over it.\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n globalThis.__DEV__ !== false && invariant.warn(6, typename, supertype);\n }\n // Record positive results for faster future lookup.\n // Unfortunately, we cannot safely cache negative results,\n // because new possibleTypes data could always be added to the\n // Policies class.\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n // Start checking fuzzy subtypes only after exhausting all\n // non-fuzzy subtypes (after the final iteration of the loop).\n i === workQueue_1.length - 1 &&\n // We could wait to compare fragment.selectionSet to result\n // after we verify the supertype, but this check is often less\n // expensive than that search, and we will have to do the\n // comparison anyway whenever we find a potential match.\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n // We don't always need to check fuzzy subtypes (if no result\n // was provided, or !this.fuzzySubtypes.size), but, when we do,\n // we only want to check them once.\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n // If we find any fuzzy subtypes that match typename, extend the\n // workQueue to search through the supertypes of those fuzzy\n // subtypes. Otherwise the for-loop will terminate and we'll\n // return false below.\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n // If the custom keyFn returns a falsy value, fall back to\n // fieldName instead.\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName =\n fieldSpec.field ?\n storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n // Returning false from a keyArgs function is like configuring\n // keyArgs: false, but more dynamic.\n if (storeFieldName === false) {\n return fieldName;\n }\n // Make sure custom field names start with the actual field.name.value\n // of the field, so we can always figure out which properties of a\n // StoreObject correspond to which original field names.\n return fieldName === fieldNameFromStoreName(storeFieldName) ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference) ?\n objectOrReference.__ref\n : objectOrReference, storeFieldName));\n // Call read(existing, readOptions) with cacheSlot holding this.cache.\n return cacheSlot.withValue(this.cache, read, [\n existing,\n readOptions,\n ]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n // Instead of going to the trouble of creating a full\n // FieldFunctionOptions object and calling mergeTrueFn, we can\n // simply call mergeObjects, as mergeTrueFn would.\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n // Likewise for mergeFalseFn, whose implementation is even simpler.\n return incoming;\n }\n // If cache.writeQuery or cache.writeFragment was called with\n // options.overwrite set to true, we still call merge functions, but\n // the existing data is always undefined, so the merge function will\n // not attempt to combine the incoming data with the existing data.\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, \n // Unlike options.readField for read functions, we do not fall\n // back to the current object if no foreignObjOrRef is provided,\n // because it's not clear what the current object should be for\n // merge functions: the (possibly undefined) existing object, or\n // the incoming object? If you think your merge function needs\n // to read sibling fields in order to produce a new value for\n // the current field, you might want to rethink your strategy,\n // because that's a recipe for making merge behavior sensitive\n // to the order in which fields are written into the cache.\n // However, readField(name, ref) is useful for merge functions\n // that need to deduplicate child objects and references.\n void 0, {\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n // Default to objectOrReference only when no second argument was\n // passed for the from parameter, not when undefined is explicitly\n // passed as the second argument.\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n // Default to objectOrReference only when fieldNameOrOptions.from is\n // actually omitted, rather than just undefined.\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (globalThis.__DEV__ !== false && options.from === void 0) {\n globalThis.__DEV__ !== false && invariant.warn(7, stringifyForDisplay(Array.from(readFieldArgs)));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw newInvariantError(8);\n }\n // These dynamic checks are necessary because the parameters of a\n // custom merge function can easily have the any type, so the type\n // system cannot always enforce the StoreObject | Reference parameter\n // types of options.mergeObjects.\n if (isNonNullObject(existing) && isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) && storeValueIsStoreObject(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // existing.__ref, preferring/overwriting any fields contributed by the\n // newer incoming StoreObject.\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) && isReference(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // incoming.__ref, taking fields from the older existing object only if\n // those fields are not already present in the newer StoreObject\n // identified by incoming.__ref.\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n//# sourceMappingURL=policies.js.map","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { Kind } from \"graphql\";\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, canonicalStringify, } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext, } from \"./helpers.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n// Since there are only four possible combinations of context.clientOnly and\n// context.deferred values, we should need at most four \"flavors\" of any given\n// WriteContext. To avoid creating multiple copies of the same context, we cache\n// the contexts in the context.flavors Map (shared by all flavors) according to\n// their clientOnly and deferred values (always in that order).\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, (flavored =\n context.clientOnly === clientOnly && context.deferred === deferred ?\n context\n : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred })));\n }\n return flavored;\n}\nvar StoreWriter = /** @class */ (function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n }, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map(), clientOnly: false, deferred: false, flavors: new Map() });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map() },\n context: context,\n });\n if (!isReference(ref)) {\n throw newInvariantError(11, result);\n }\n // So far, the store has not been modified, so now it's time to process\n // context.incomingById and merge those incoming fields into context.store.\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n // Assume References returned by applyMerges have already been merged\n // into the store. See makeMergeObjectsFunction in policies.ts for an\n // example of how this can happen.\n return;\n }\n // Otherwise, applyMerges returned a StoreObject, whose fields we should\n // merge into the store (see store.merge statement below).\n storeObject = applied;\n }\n if (globalThis.__DEV__ !== false && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] ===\n true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n // If a merge function was defined for this field, trust that it\n // did the right thing about (not) clobbering data. If the field\n // has no selection set, it's a scalar field, so it doesn't need\n // a merge function (even if it's an object, like JSON data).\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n // Any IDs written explicitly to the cache will be retained as\n // reachable root IDs for garbage collection purposes. Although this\n // logic includes root IDs like ROOT_QUERY and ROOT_MUTATION, their\n // retainment counts are effectively ignored because cache.gc() always\n // includes them in its root ID set.\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, \n // This object allows processSelectionSet to report useful information\n // to its callers without explicitly returning that information.\n mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n // This variable will be repeatedly updated using context.merge to\n // accumulate all fields that need to be written into the store.\n var incoming = Object.create(null);\n // If typename was not passed in, infer it. Note that typename is\n // always passed in for tricky-to-infer cases such as \"Query\" for\n // ROOT_QUERY.\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n // This readField function will be passed as context.readField in the\n // KeyFieldsContext object created within policies.identify (called below).\n // In addition to reading from the existing context.store (thanks to the\n // policies.readField(options, context) line at the very bottom), this\n // version of readField can read from Reference objects that are currently\n // pending in context.incomingById, which is important whenever keyFields\n // need to be extracted from a child object that processSelectionSet has\n // turned into a Reference.\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, \n // This WriteContext will be the default context value for fields returned\n // by the flattenFields method, but some fields may be assigned a modified\n // context, depending on the presence of @client and other directives.\n context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, \n // Reset context.clientOnly and context.deferred to their default\n // values before processing nested selection sets.\n field.selectionSet ?\n getContextFlavor(context, false, false)\n : context, childTree);\n // To determine if this field holds a child object with a merge function\n // defined in its type policy (see PR #7070), we need to figure out the\n // child object's __typename.\n var childTypename = void 0;\n // The field's value can be an object that has a __typename only if the\n // field has a selection set. Otherwise incomingValue is scalar.\n if (field.selectionSet &&\n (isReference(incomingValue) || storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n // TODO Check compatibility against any existing childTree.field?\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (globalThis.__DEV__ !== false &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n // If the field has a read function, it may be a synthetic field or\n // provide a default value, so its absence from the written data should\n // not be cause for alarm.\n !policies.getReadFunction(typename, field.name.value)) {\n globalThis.__DEV__ !== false && invariant.error(12, resultKeyNameFromField(field), result);\n }\n });\n // Identify the result object, even if dataId was already provided,\n // since we always need keyObject below.\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n // If dataId was not provided, fall back to the id just generated by\n // policies.identify.\n dataId = dataId || id;\n // Write any key fields that were used during identification, even if\n // they were not mentioned in the original query.\n if (keyObject) {\n // TODO Reverse the order of the arguments?\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n // If dataId was provided, tolerate failure of policies.identify.\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n // Avoid processing the same entity object using the same selection\n // set more than once. We use an array instead of a Set since most\n // entity IDs will be written using only one selection set, so the\n // size of this array is likely to be very small, meaning indexOf is\n // likely to be faster than Set.prototype.has.\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n // If we're about to write a result object into the store, but we\n // happen to know that the exact same (===) result object would be\n // returned if we were to reread the result with the same inputs,\n // then we can skip the rest of the processSelectionSet work for\n // this object, and immediately return a Reference to it.\n if (this.reader &&\n this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n // Save a reference to mergeTree only if it is not empty, because\n // empty MergeTrees may be recycled by maybeRecycleChildMergeTree and\n // reused for entirely different parts of the result tree.\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n // In development, we need to clone scalar values so that they can be\n // safely frozen with maybeDeepFreeze in readFromStore.ts. In production,\n // it's cheaper to store the scalar values directly in the cache.\n return globalThis.__DEV__ !== false ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n // Implements https://spec.graphql.org/draft/#sec-Field-Collection, but with\n // some additions for tracking @client and @defer directives.\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false); // No need for WeakMap, since limitingTrie does not escape.\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, \n // Because we take inheritedClientOnly and inheritedDeferred into\n // consideration here (in addition to selectionSet), it's possible for\n // the same selection set to be flattened more than once, if it appears\n // in the query with different @client and/or @directive configurations.\n inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (\n // Since the presence of @client or @defer on this field can only\n // cause clientOnly or deferred to become true, we can skip the\n // forEach loop if both clientOnly and deferred are already true.\n !(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n // The @defer directive takes an optional args.if boolean\n // argument, similar to @include(if: boolean). Note that\n // @defer(if: false) does not make context.deferred false, but\n // instead behaves as if there was no @defer directive.\n if (!args || args.if !== false) {\n deferred = true;\n }\n // TODO In the future, we may want to record args.label using\n // context.deferred, if a label is specified.\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n // If this field has been visited along another recursive path\n // before, the final context should have clientOnly or deferred set\n // to true only if *all* paths have the directive (hence the &&).\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(13, selection.name.value);\n }\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = \n // Items in the same position in different arrays are not\n // necessarily related to each other, so when incoming is an array\n // we process its elements as if there was no existing data.\n (!isArray(incoming) &&\n // Likewise, existing must be either a Reference or a StoreObject\n // in order for its fields to be safe to merge with the fields of\n // the incoming object.\n (isReference(existing) || storeValueIsStoreObject(existing))) ?\n existing\n : void 0;\n // This narrowing is implied by mergeTree.map.size > 0 and\n // !isReference(incoming), though TypeScript understandably cannot\n // hope to infer this type.\n var i_1 = incoming;\n // The options.storage objects provided to read and merge functions\n // are derived from the identity of the parent object plus a\n // sequence of storeFieldName strings/numbers identifying the nested\n // field name path of each field value to be merged.\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n // It's possible that applying merge functions to this subtree will\n // not change the incoming data, so this variable tracks the fields\n // that did change, so we can create a new incoming object when (and\n // only when) at least one incoming field has changed. We use a Map\n // to preserve the type of numeric keys.\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return (isArray(from) ?\n typeof name === \"number\" ?\n from[name]\n : void 0\n : context.store.getFieldValue(from, String(name)));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n // If we have no incoming data, leave any existing data untouched.\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map();\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n // Shallow clone i so we can add changed fields to it.\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map() });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map()\n : left.map.size ? left.map\n : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\n// Note that this function is unused in production, and thus should be\n// pruned by any well-configured minifier.\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n // It's always safe to replace a reference, since it refers to data\n // safely stored elsewhere.\n if (isReference(existing))\n return;\n // If the values are structurally equivalent, we do not need to worry\n // about incoming replacing existing.\n if (equal(existing, incoming))\n return;\n // If we're replacing every key of the existing object, then the\n // existing data would be overwritten even if the objects were\n // normalized, so warning would not be helpful here.\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n // Avoid warning more than once for the same type and field name.\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n // Arrays do not have __typename fields, and always need a custom merge\n // function, even if their elements are normalized entities.\n if (!isArray(existing) && !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" && !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n globalThis.__DEV__ !== false && invariant.warn(14, fieldName, parentType, childTypenames.length ?\n \"either ensure all objects of type \" +\n childTypenames.join(\" and \") +\n \" have an ID or a custom merge function, or \"\n : \"\", typeDotName, __assign({}, existing), __assign({}, incoming));\n}\n//# sourceMappingURL=writeToStore.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\n// Make builtins like Map and Set safe to use with non-extensible objects.\nimport \"./fixPolyfills.js\";\nimport { wrap } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, DocumentTransform, canonicalStringify, print, cacheSizes, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { getInMemoryCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nvar InMemoryCache = /** @class */ (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.addTypenameTransform = new DocumentTransform(addTypenameToDocument);\n // Override the default value, since InMemoryCache result objects are frozen\n // in development and expected to remain logically immutable in production.\n _this.assumeImmutableResults = true;\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n // Passing { resultCaching: false } in the InMemoryCache constructor options\n // will completely disable dependency tracking, which will improve memory\n // usage but worsen the performance of repeated reads.\n var rootStore = (this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n }));\n // When no optimistic writes are currently active, cache.optimisticData ===\n // cache.data, so there are no additional layers on top of the actual data.\n // When an optimistic update happens, this.optimisticData will become a\n // linked list of EntityStore Layer objects that terminates with the\n // original this.data cache object.\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n // The StoreWriter is mostly stateless and so doesn't really need to be\n // reset, but it does need to have its writer.storeReader reference updated,\n // so it's simpler to update this.storeWriter as well.\n this.storeWriter = new StoreWriter(this, (this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities ? void 0 : (previousReader && previousReader.canon),\n fragments: fragments,\n })), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize ||\n cacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] ||\n 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n makeCacheKey: function (c) {\n // Return a cache key (thus enabling result caching) only if we're\n // currently using a data store that can track cache dependencies.\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, id = c.id, variables = c.variables;\n return store.makeCacheKey(c.query, \n // Different watches can have the same query, optimistic\n // status, rootId, and variables, but if their callbacks are\n // different, the (identical) result needs to be delivered to\n // each distinct callback. The easiest way to achieve that\n // separation is to include c.callback in the cache key for\n // maybeBroadcastWatch calls. See issue #5733.\n c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));\n }\n },\n });\n // Since we have thrown away all the cached functions that depend on the\n // CacheGroup dependencies maintained by EntityStore, we should also reset\n // all CacheGroup dependency information.\n new Set([this.data.group, this.optimisticData.group]).forEach(function (group) {\n return group.resetCaching();\n });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n // Since calling this.init() discards/replaces the entire StoreReader, along\n // with the result caches it maintains, this.data.replace(data) won't have\n // to bother deleting the old data.\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n _a = options.returnPartialData, \n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n returnPartialData = _a === void 0 ? false : _a;\n try {\n return (this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null);\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n // Swallow MissingFieldError and return null, so callers do not need to\n // worry about catching \"normal\" exceptions resulting from incomplete\n // cache data. Unexpected errors will be re-thrown. If you need more\n // information about which fields were missing, use cache.diff instead,\n // and examine diffResult.missing.\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n // To my knowledge, TypeScript does not currently provide a way to\n // enforce that an optional property?:type must *not* be undefined\n // when present. That ability would be useful here, because we want\n // options.id to default to ROOT_QUERY only when no options.id was\n // provided. If the caller attempts to pass options.id with a\n // falsy/undefined value (perhaps because cache.identify failed), we\n // should not assume the goal was to modify the ROOT_QUERY object.\n // We could throw, but it seems natural to return false to indicate\n // that nothing was modified.\n return false;\n }\n var store = ((options.optimistic) // Defaults to false.\n ) ?\n this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n // In case we previously called forgetCache(this) because\n // this.watches became empty (see below), reattach this cache to any\n // reactive variables on which it previously depended. It might seem\n // paradoxical that we're able to recall something we supposedly\n // forgot, but the point of calling forgetCache(this) is to silence\n // useless broadcasts while this.watches is empty, and to allow the\n // cache to be garbage collected. If, however, we manage to call\n // recallCache(this) here, this cache object must not have been\n // garbage collected yet, and should resume receiving updates from\n // reactive variables, now that it has a watcher to notify.\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n // Once we remove the last watch from this.watches, cache.broadcastWatches\n // no longer does anything, so we preemptively tell the reactive variable\n // system to exclude this cache from future broadcasts.\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n // Remove this watch from the LRU cache managed by the\n // maybeBroadcastWatch OptimisticWrapperFunction, to prevent memory\n // leaks involving the closure of watch.callback.\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n var _a;\n canonicalStringify.reset();\n print.reset();\n this.addTypenameTransform.resetCache();\n (_a = this.config.fragments) === null || _a === void 0 ? void 0 : _a.resetCaches();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n // Call this method to ensure the given root ID remains in the cache after\n // garbage collection, along with its transitive child entities. Note that\n // the cache automatically retains all directly written entities. By default,\n // the retainment persists after optimistic updates are removed. Pass true\n // for the optimistic argument if you would prefer for the retainment to be\n // discarded when the top-most optimistic layer is removed. Returns the\n // resulting (non-negative) retainment count.\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n // Call this method to undo the effect of the retain method, above. Once the\n // retainment count falls to zero, the given ID will no longer be preserved\n // during garbage collection, though it may still be preserved by other safe\n // entities that refer to it. Returns the resulting (non-negative) retainment\n // count, in case that's useful.\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n // Returns the canonical ID for a given StoreObject, obeying typePolicies\n // and keyFields (and dataIdFromObject, if you still use that). At minimum,\n // the object must contain a __typename and any primary key fields required\n // to identify entities of that type. If you pass a query result object, be\n // sure that none of the primary key fields have been renamed by aliasing.\n // If you pass a Reference object, its __ref ID string will be returned.\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n globalThis.__DEV__ !== false && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n // See comment in modify method about why we return false when\n // options.id exists but is falsy/undefined.\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n // It's unlikely that the eviction will end up invoking any other\n // cache update operations while it's running, but {in,de}crementing\n // this.txCount still seems like a good idea, for uniformity with\n // the other update methods.\n ++this.txCount;\n // Pass this.data as a limit on the depth of the eviction, so evictions\n // during optimistic updates (when this.data is temporarily set equal to\n // this.optimisticData) do not escape their optimistic Layer.\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n // Similar to what happens in the unsubscribe function returned by\n // cache.watch, applied to all current watches.\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n // Calling this.init() above unblocks all maybeBroadcastWatch caching, so\n // this.broadcastWatches() triggers a broadcast to every current watcher\n // (letting them know their data is now missing). This default behavior is\n // convenient because it means the watches do not have to be manually\n // reestablished after resetting the cache. To prevent this broadcast and\n // cancel all watches, pass true for options.discardWatches.\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return (updateResult = update(_this));\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n // If an options.onWatchUpdated callback is provided, we want to call it\n // with only the Cache.WatchOptions objects affected by options.update,\n // but there might be dirty watchers already waiting to be broadcast that\n // have nothing to do with the update. To prevent including those watchers\n // in the post-update broadcast, we perform this initial broadcast to\n // collect the dirty watchers, so we can re-dirty them later, after the\n // post-update broadcast, allowing them to receive their pending\n // broadcasts the next time broadcastWatches is called, just as they would\n // if we never called cache.batch.\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === \"string\") {\n // Note that there can be multiple layers with the same optimistic ID.\n // When removeOptimistic(id) is called for that id, all matching layers\n // will be removed, and the remaining layers will be reapplied.\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n // Ensure both this.data and this.optimisticData refer to the root\n // (non-optimistic) layer of the cache during the update. Note that\n // this.data could be a Layer if we are currently executing an optimistic\n // update function, but otherwise will always be an EntityStore.Root\n // instance.\n perform(this.data);\n }\n else {\n // Otherwise, leave this.data and this.optimisticData unchanged and run\n // the update with broadcast batching.\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n // Note: if this.txCount > 0, then alreadyDirty.size === 0, so this code\n // takes the else branch and calls this.broadcastWatches(options), which\n // does nothing when this.txCount > 0.\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n // Since onWatchUpdated did not return false, this diff is\n // about to be broadcast to watch.callback, so we don't need\n // to re-dirty it with the other alreadyDirty watches below.\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n // Silently re-dirty any watches that were already dirty before the update\n // was performed, and were not broadcast just now.\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n // If alreadyDirty is empty or we don't have an onWatchUpdated\n // function, we don't need to go to the trouble of wrapping\n // options.onWatchUpdated.\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || optimisticId !== null,\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n return this.addTypenameToDocument(this.addFragmentsToDocument(document));\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.addFragmentsToDocument = function (document) {\n var fragments = this.config.fragments;\n return fragments ? fragments.transform(document) : document;\n };\n InMemoryCache.prototype.addTypenameToDocument = function (document) {\n if (this.addTypename) {\n return this.addTypenameTransform.transformDocument(document);\n }\n return document;\n };\n // This method is wrapped by maybeBroadcastWatch, which is called by\n // broadcastWatches, so that we compute and broadcast results only when\n // the data that would be broadcast might have changed. It would be\n // simpler to check for changes after recomputing a result but before\n // broadcasting it, but this wrapping approach allows us to skip both\n // the recomputation and the broadcast, in most cases.\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n // Both WatchOptions and DiffOptions extend ReadOptions, and DiffOptions\n // currently requires no additional properties, so we can use c (a\n // WatchOptions object) as DiffOptions, without having to allocate a new\n // object, and without having to enumerate the relevant properties (query,\n // variables, etc.) explicitly. There will be some additional properties\n // (lastDiff, callback, etc.), but cache.diff ignores them.\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic && typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n // Returning false from the onWatchUpdated callback will prevent\n // calling c.callback(diff) for this watcher.\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback((c.lastDiff = diff), lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\nif (globalThis.__DEV__ !== false) {\n InMemoryCache.prototype.getMemoryInternals = getInMemoryCacheMemoryInternals;\n}\n//# sourceMappingURL=inMemoryCache.js.map","import React from 'react';\nimport client from './src/client';\nimport fetch from 'isomorphic-fetch';\nimport {ApolloClient, ApolloProvider, InMemoryCache} from '@apollo/client';\n\nexport const wrapRootElement = ({element}, options) => (\n \n {element}\n \n);\n","\"use strict\";\n\nexports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n if (pluginOptions === void 0) {\n pluginOptions = {};\n }\n if (process.env.NODE_ENV !== \"production\" || typeof gtag !== \"function\") {\n return null;\n }\n var pluginConfig = pluginOptions.pluginConfig || {};\n var pathIsExcluded = location && typeof window.excludeGtagPaths !== \"undefined\" && window.excludeGtagPaths.some(function (rx) {\n return rx.test(location.pathname);\n });\n if (pathIsExcluded) return null;\n\n // wrap inside a timeout to make sure react-helmet is done with its changes (https://github.com/gatsbyjs/gatsby/issues/11592)\n var sendPageView = function sendPageView() {\n var pagePath = location ? location.pathname + location.search + location.hash : undefined;\n window.gtag(\"event\", \"page_view\", {\n page_path: pagePath\n });\n };\n var _pluginConfig$delayOn = pluginConfig.delayOnRouteUpdate,\n delayOnRouteUpdate = _pluginConfig$delayOn === void 0 ? 0 : _pluginConfig$delayOn;\n if (\"requestAnimationFrame\" in window) {\n requestAnimationFrame(function () {\n requestAnimationFrame(function () {\n return setTimeout(sendPageView, delayOnRouteUpdate);\n });\n });\n } else {\n // Delay by 32ms to simulate 2 requestOnAnimationFrame calls\n setTimeout(sendPageView, 32 + delayOnRouteUpdate);\n }\n return null;\n};","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\";\n\n// when we don't have localisation in our manifest, we tree shake everything away\nexport const onRouteUpdate = function onRouteUpdate({\n location\n}, pluginOptions) {\n if (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n const {\n localize\n } = pluginOptions;\n const manifestFilename = getManifestForPathname(location.pathname, localize, true);\n const manifestEl = document.head.querySelector(`link[rel=\"manifest\"]`);\n if (manifestEl) {\n manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n }\n }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _gatsby = require(\"gatsby\");\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n const defaultFilename = `manifest.webmanifest`;\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n const localizedManifest = localizedManifests.find(app => {\n let startUrl = app.start_url;\n if (shouldPrependPathPrefix) {\n startUrl = (0, _gatsby.withPrefix)(startUrl);\n }\n return pathname.startsWith(startUrl);\n });\n if (!localizedManifest) {\n return defaultFilename;\n }\n return `manifest_${localizedManifest.lang}.webmanifest`;\n};\nexports.default = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `