{"version":3,"file":"getOrCreateCacheForArtifact.mjs","names":[],"sources":["../../src/core/getOrCreateCacheForArtifact.ts"],"sourcesContent":["import type { ItemCleanupPair } from '@isograph/isograph-disposable-types/dist';\nimport type { ParentCache } from '@isograph/isograph-react-disposable-state/dist';\nimport {\n  type NetworkResponseObject,\n  getOrCreateItemInSuspenseCache,\n} from './cache';\nimport type { FetchOptions } from './check';\nimport type {\n  IsographEntrypoint,\n  NormalizationAst,\n  NormalizationAstLoader,\n} from './entrypoint';\nimport type {\n  ExtractParameters,\n  FragmentReference,\n  UnknownTReadFromStore,\n} from './FragmentReference';\nimport {\n  type IsographEnvironment,\n  getOrLoadReaderWithRefetchQueries,\n  ROOT_ID,\n} from './IsographEnvironment';\nimport { maybeMakeNetworkRequest } from './makeNetworkRequest';\nimport { stableCopy } from './util';\n\nexport function getOrCreateCacheForArtifact<\n  TReadFromStore extends UnknownTReadFromStore,\n  TClientFieldValue,\n  TNormalizationAst extends NormalizationAst | NormalizationAstLoader,\n  TRawResponseType extends NetworkResponseObject,\n>(\n  environment: IsographEnvironment,\n  entrypoint: IsographEntrypoint<\n    TReadFromStore,\n    TClientFieldValue,\n    TNormalizationAst,\n    TRawResponseType\n  >,\n  variables: ExtractParameters<TReadFromStore>,\n  fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>,\n): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {\n  let cacheKey = '';\n  switch (entrypoint.networkRequestInfo.operation.kind) {\n    case 'Operation':\n      cacheKey =\n        entrypoint.networkRequestInfo.operation.text +\n        JSON.stringify(stableCopy(variables));\n      break;\n    case 'PersistedOperation':\n      cacheKey =\n        entrypoint.networkRequestInfo.operation.operationId +\n        JSON.stringify(stableCopy(variables));\n      break;\n  }\n  const factory = () => {\n    const { fieldName, readerArtifactKind, readerWithRefetchQueries } =\n      getOrLoadReaderWithRefetchQueries(\n        environment,\n        entrypoint.readerWithRefetchQueries,\n      );\n    const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(\n      environment,\n      entrypoint,\n      variables,\n      readerWithRefetchQueries,\n      fetchOptions ?? null,\n    );\n\n    const itemCleanupPair: ItemCleanupPair<\n      FragmentReference<TReadFromStore, TClientFieldValue>\n    > = [\n      {\n        kind: 'FragmentReference',\n        readerWithRefetchQueries,\n        fieldName,\n        readerArtifactKind,\n        root: { __link: ROOT_ID, __typename: entrypoint.concreteType },\n        variables,\n        networkRequest: networkRequest,\n      },\n      disposeNetworkRequest,\n    ];\n    return itemCleanupPair;\n  };\n  return getOrCreateItemInSuspenseCache(environment, cacheKey, factory);\n}\n"],"mappings":";;;;;;AAyBA,SAAgB,4BAMd,aACA,YAMA,WACA,cACmE;CACnE,IAAI,WAAW;AACf,SAAQ,WAAW,mBAAmB,UAAU,MAAhD;EACE,KAAK;AACH,cACE,WAAW,mBAAmB,UAAU,OACxC,KAAK,UAAU,WAAW,UAAU,CAAC;AACvC;EACF,KAAK;AACH,cACE,WAAW,mBAAmB,UAAU,cACxC,KAAK,UAAU,WAAW,UAAU,CAAC;AACvC;;CAEJ,MAAM,gBAAgB;EACpB,MAAM,EAAE,WAAW,oBAAoB,6BACrC,kCACE,aACA,WAAW,yBACZ;EACH,MAAM,CAAC,gBAAgB,yBAAyB,wBAC9C,aACA,YACA,WACA,0BACA,gBAAgB,KACjB;AAgBD,SAZI,CACF;GACE,MAAM;GACN;GACA;GACA;GACA,MAAM;IAAE,QAAQ;IAAS,YAAY,WAAW;IAAc;GAC9D;GACgB;GACjB,EACD,sBACD;;AAGH,QAAO,+BAA+B,aAAa,UAAU,QAAQ"}