{
  "version": 3,
  "sources": ["../../src/storeObservation/getPossibleTypesAndDataIdFromNode.ts"],
  "sourcesContent": ["import { KeyFieldsFunction } from \"@apollo/client/cache/inmemory/policies\";\nimport { GraphQLSchema, isInterfaceType, isUnionType } from \"graphql\";\nimport invariant from \"invariant\";\n\nexport function getPossibleTypesAndDataIdFromNode(schema: GraphQLSchema): {\n  possibleTypes: Record<string, string[]>;\n  dataIdFromNode: KeyFieldsFunction;\n} {\n  const possibleTypes: Record<string, string[]> = {};\n  const typeMap = schema.getTypeMap();\n  for (const typeName in typeMap) {\n    const type = typeMap[typeName];\n    if (isInterfaceType(type)) {\n      const implementations = schema.getImplementations(type);\n      possibleTypes[typeName] = [\n        ...implementations.objects,\n        ...implementations.interfaces,\n      ].map((x) => x.name);\n    } else if (isUnionType(type)) {\n      possibleTypes[typeName] = schema\n        .getPossibleTypes(type)\n        .map((x) => x.name);\n    }\n  }\n  invariant(\n    possibleTypes.Node,\n    \"Node interface and implementations thereof must be defined\",\n  );\n  return {\n    possibleTypes,\n    dataIdFromNode: (object) => {\n      if (\n        object.id &&\n        object.__typename &&\n        possibleTypes.Node.includes(object.__typename)\n      ) {\n        return object.id as string;\n      }\n    },\n  };\n}\n"],
  "mappings": ";AACA,SAAwB,iBAAiB,mBAAmB;AAC5D,OAAO,eAAe;AAEf,SAAS,kCAAkC,QAGhD;AACA,QAAM,gBAA0C,CAAC;AACjD,QAAM,UAAU,OAAO,WAAW;AAClC,aAAW,YAAY,SAAS;AAC9B,UAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAI,gBAAgB,IAAI,GAAG;AACzB,YAAM,kBAAkB,OAAO,mBAAmB,IAAI;AACtD,oBAAc,QAAQ,IAAI;AAAA,QACxB,GAAG,gBAAgB;AAAA,QACnB,GAAG,gBAAgB;AAAA,MACrB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,IACrB,WAAW,YAAY,IAAI,GAAG;AAC5B,oBAAc,QAAQ,IAAI,OACvB,iBAAiB,IAAI,EACrB,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,IACtB;AAAA,EACF;AACA;AAAA,IACE,cAAc;AAAA,IACd;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,gBAAgB,CAAC,WAAW;AAC1B,UACE,OAAO,MACP,OAAO,cACP,cAAc,KAAK,SAAS,OAAO,UAAU,GAC7C;AACA,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACF;",
  "names": []
}
