@urql/exchange-graphcache
Version:
A normalized and configurable cache exchange for urql
1,765 lines (1,657 loc) • 58.3 kB
JavaScript
import { stringifyVariables as e, formatDocument as r, createRequest as t, makeOperation as a, stringifyDocument as i } from "@urql/core";
import { Kind as n, valueFromASTUntyped as o } from "@0no-co/graphql.web";
import { share as s, map as l, filter as v, merge as d, mergeMap as p, empty as c, fromArray as u, makeSubject as f, onPush as y } from "wonka";
var h = "\nhttps://bit.ly/2XbVrpR#";
var m = new Set;
var g = [];
var popDebugNode = () => g.pop();
var pushDebugNode = (e, r) => {
var t = "";
if (r.kind === n.INLINE_FRAGMENT) {
t = e ? `Inline Fragment on "${e}"` : "Inline Fragment";
} else if (r.kind === n.OPERATION_DEFINITION) {
t = `${r.name ? `"${r.name.value}"` : "Unnamed"} ${r.operation}`;
} else if (r.kind === n.FRAGMENT_DEFINITION) {
t = `"${r.name.value}" Fragment`;
}
if (t) {
g.push(t);
}
};
var getDebugOutput = () => g.length ? "\n(Caused At: " + g.join(", ") + ")" : "";
function invariant(e, r, t) {
if (!e) {
var a = r || "Minfied Error #" + t + "\n";
if ("production" !== process.env.NODE_ENV) {
a += getDebugOutput();
}
var i = new Error(a + h + t);
i.name = "Graphcache Error";
throw i;
}
}
function warn(e, r, t) {
if (!m.has(e)) {
if (t) {
t("warn", e + getDebugOutput() + h + r);
} else {
console.warn(e + getDebugOutput() + h + r);
}
m.add(e);
}
}
var _ = {};
var getDirectives = e => e._directives || _;
var getName = e => e.name.value;
var getFragmentTypeName = e => e.typeCondition.name.value;
var getFieldAlias = e => e.alias ? e.alias.value : e.name.value;
var N = [];
var getSelectionSet = e => e.selectionSet ? e.selectionSet.selections : N;
var getTypeCondition = e => e.typeCondition ? e.typeCondition.name.value : null;
var getFieldArguments = (e, r) => {
var t = null;
if (e.arguments) {
for (var a = 0, i = e.arguments.length; a < i; a++) {
var n = e.arguments[a];
var s = o(n.value, r);
if (null != s) {
if (!t) {
t = {};
}
t[getName(n)] = s;
}
}
}
return t;
};
var filterVariables = (e, r) => {
if (!r || !e.variableDefinitions) {
return;
}
var t = {};
for (var a = 0, i = e.variableDefinitions.length; a < i; a++) {
var n = getName(e.variableDefinitions[a].variable);
t[n] = r[n];
}
return t;
};
var normalizeVariables = (e, r) => {
var t = {};
if (!r) {
return t;
}
if (e.variableDefinitions) {
for (var a = 0, i = e.variableDefinitions.length; a < i; a++) {
var n = e.variableDefinitions[a];
var s = getName(n.variable);
t[s] = void 0 === r[s] && n.defaultValue ? o(n.defaultValue, r) : r[s];
}
}
for (var l in r) {
if (!(l in t)) {
t[l] = r[l];
}
}
return t;
};
function getMainOperation(e) {
for (var r = 0; r < e.definitions.length; r++) {
if (e.definitions[r].kind === n.OPERATION_DEFINITION) {
return e.definitions[r];
}
}
invariant(!1, "production" !== process.env.NODE_ENV ? "Invalid GraphQL document: All GraphQL documents must contain an OperationDefinitionnode for a query, subscription, or mutation." : "", 1);
}
var getFragments = e => {
var r = {};
for (var t = 0; t < e.definitions.length; t++) {
var a = e.definitions[t];
if (a.kind === n.FRAGMENT_DEFINITION) {
r[getName(a)] = a;
}
}
return r;
};
var shouldInclude = (e, r) => {
var t = getDirectives(e);
if (t.include || t.skip) {
for (var a in t) {
var i = t[a];
if (i && ("include" === a || "skip" === a) && i.arguments && i.arguments[0] && "if" === getName(i.arguments[0])) {
var n = o(i.arguments[0].value, r);
return "include" === a ? !!n : !n;
}
}
}
return !0;
};
var isDeferred = (e, r) => {
var {defer: t} = getDirectives(e);
if (t) {
for (var a of t.arguments || []) {
if ("if" === getName(a)) {
return !!o(a.value, r);
}
}
return !0;
}
return !1;
};
var isOptional = e => {
var {optional: r, required: t} = getDirectives(e);
if (t) {
return !1;
}
if (r) {
return !0;
}
return;
};
var k = "__";
var isFieldNullable = (e, r, t, a) => {
var i = getField(e, r, t, a);
return !!i && "NON_NULL" !== i.type.kind;
};
var isListNullable = (e, r, t, a) => {
var i = getField(e, r, t, a);
if (!i) {
return !1;
}
var n = "NON_NULL" === i.type.kind ? i.type.ofType : i.type;
return "LIST" === n.kind && "NON_NULL" !== n.ofType.kind;
};
var isFieldAvailableOnType = (e, r, t, a) => 0 === t.indexOf(k) || 0 === r.indexOf(k) || !!getField(e, r, t, a);
var isInterfaceOfType = (e, r, t) => {
if (!t) {
return !1;
}
var a = getTypeCondition(r);
if (!a || t === a) {
return !0;
} else if (e.types.has(a) && "OBJECT" === e.types.get(a).kind) {
return a === t;
}
!function expectAbstractType(e, r) {
invariant(e.types.has(r) && ("INTERFACE" === e.types.get(r).kind || "UNION" === e.types.get(r).kind), "production" !== process.env.NODE_ENV ? "Invalid Abstract type: The type `" + r + "` is not an Interface or Union type in the defined schema, but a fragment in the GraphQL document is using it as a type condition." : "", 5);
}(e, a);
expectObjectType(e, t);
return e.isSubType(a, t);
};
var getField = (e, r, t, a) => {
if (0 === t.indexOf(k) || 0 === r.indexOf(k)) {
return;
}
expectObjectType(e, r);
var i = e.types.get(r).fields()[t];
if ("production" !== process.env.NODE_ENV) {
if (!i) {
warn("Invalid field: The field `" + t + "` does not exist on `" + r + "`, but the GraphQL document expects it to exist.\nTraversal will continue, however this may lead to undefined behavior!", 4, a);
}
}
return i;
};
function expectObjectType(e, r) {
invariant(e.types.has(r) && "OBJECT" === e.types.get(r).kind, "production" !== process.env.NODE_ENV ? "Invalid Object type: The type `" + r + "` is not an object in the defined schema, but the GraphQL document is traversing it." : "", 3);
}
function warnAboutResolver(e, r) {
"production" !== process.env.NODE_ENV && warn(`Invalid resolver: \`${e}\` is not in the defined schema, but the \`resolvers\` option is referencing it.`, 23, r);
}
function warnAboutAbstractResolver(e, r, t) {
"production" !== process.env.NODE_ENV && warn(`Invalid resolver: \`${e}\` does not match to a concrete type in the schema, but the \`resolvers\` option is referencing it. Implement the resolver for the types that ${"UNION" === r ? "make up the union" : "implement the interface"} instead.`, 26, t);
}
var keyOfField = (r, t) => t ? `${r}(${e(t)})` : r;
var joinKeys = (e, r) => `${e}.${r}`;
var fieldInfoOfKey = e => {
var r = e.indexOf("(");
if (r > -1) {
return {
fieldKey: e,
fieldName: e.slice(0, r),
arguments: JSON.parse(e.slice(r + 1, -1))
};
} else {
return {
fieldKey: e,
fieldName: e,
arguments: null
};
}
};
var deserializeKeyInfo = e => {
var r = e.indexOf(".");
return {
entityKey: e.slice(0, r).replace(/%2e/g, "."),
fieldKey: e.slice(r + 1)
};
};
var E = null;
var O = null;
var w = null;
var b = null;
var D = null;
var x = null;
var V = !1;
var I = !1;
function makeData(e, r) {
var t;
if (e) {
if (E.has(e)) {
return e;
}
t = O.get(e);
}
if (null == t) {
t = r ? [] : {};
}
if (e) {
O.set(e, t);
}
E.add(t);
return t;
}
var ownsData = e => !!e && E.has(e);
var initDataState = (e, r, t, a, i) => {
E = new WeakSet;
O = new WeakMap;
D = e;
w = r;
x = new Set;
I = !!a;
V = !!i;
if ("production" !== process.env.NODE_ENV) {
g.length = 0;
}
if (!t) {
b = null;
} else if ("read" === D) {
b = t;
} else if (a || r.hydrating || r.optimisticOrder.length > 1) {
if (!a && !r.commutativeKeys.has(t)) {
reserveLayer(r, t);
} else if (a) {
if (-1 !== r.optimisticOrder.indexOf(t) && !r.commutativeKeys.has(t)) {
r.optimisticOrder.splice(r.optimisticOrder.indexOf(t), 1);
}
r.commutativeKeys.delete(t);
}
b = t;
createLayer(r, t);
} else {
b = null;
deleteLayer(r, t);
}
};
var clearDataState = () => {
if ("production" !== process.env.NODE_ENV) {
getCurrentDependencies();
}
var e = w;
var r = b;
I = !1;
b = null;
if (!e.hydrating && r && e.optimisticOrder.indexOf(r) > -1) {
var t = e.optimisticOrder.length;
while (--t >= 0 && e.dirtyKeys.has(e.optimisticOrder[t]) && e.commutativeKeys.has(e.optimisticOrder[t])) {
squashLayer(e.optimisticOrder[t]);
}
}
E = null;
O = null;
D = null;
w = null;
x = null;
if ("production" !== process.env.NODE_ENV) {
g.length = 0;
}
if ("test" !== process.env.NODE_ENV) {
if (!e.defer && (e.storage || !e.optimisticOrder.length)) {
e.defer = !0;
setTimeout((() => {
initDataState("read", e, null);
gc();
persistData();
clearDataState();
e.defer = !1;
}));
}
}
};
var noopDataState = (e, r, t) => {
if (r && !t) {
e.deferredKeys.delete(r);
}
initDataState("write", e, r, t);
clearDataState();
};
var getCurrentDependencies = () => {
invariant(null !== x, "production" !== process.env.NODE_ENV ? "Invalid Cache call: The cache may only be accessed or mutated duringoperations like write or query, or as part of its resolvers, updaters, or optimistic configs." : "", 2);
return x;
};
var q = new Set;
var setNode = (e, r, t, a) => {
if ("production" !== process.env.NODE_ENV) {
invariant("read" !== D, "production" !== process.env.NODE_ENV ? "Invalid Cache write: You may not write to the cache during cache reads. Accesses to `cache.writeFragment`, `cache.updateQuery`, and `cache.link` may not be made inside `resolvers` for instance." : "", 27);
}
var i = b ? e.optimistic.get(b) : e.base;
var n = i.get(r);
if (void 0 === n) {
i.set(r, n = Object.create(null));
}
if (void 0 === a && !b) {
delete n[t];
} else {
n[t] = a;
}
};
var getNode = (e, r, t) => {
var a;
var i = !I && "read" === D && b && w.commutativeKeys.has(b);
for (var n = 0, o = w.optimisticOrder.length; n < o; n++) {
var s = w.optimisticOrder[n];
var l = e.optimistic.get(s);
i = i && s !== b;
if (l && (!i || !w.commutativeKeys.has(s)) && (!I || "write" === D || w.commutativeKeys.has(s)) && void 0 !== (a = l.get(r)) && t in a) {
return a[t];
}
}
return void 0 !== (a = e.base.get(r)) ? a[t] : void 0;
};
function getRefCount(e) {
return w.refCount.get(e) || 0;
}
var updateRCForLink = (e, r) => {
if (Array.isArray(e)) {
for (var t = 0, a = e.length; t < a; t++) {
updateRCForLink(e[t], r);
}
} else if ("string" == typeof e) {
((e, r) => {
var t = getRefCount(e);
var a = t + r > 0 ? t + r : 0;
w.refCount.set(e, a);
if (!a) {
w.gc.add(e);
} else if (!t && a) {
w.gc.delete(e);
}
})(e, r);
}
};
var extractNodeFields = (e, r, t) => {
if (void 0 !== t) {
for (var a in t) {
if (!r.has(a)) {
e.push(fieldInfoOfKey(a));
r.add(a);
}
}
}
};
var extractNodeMapFields = (e, r, t, a) => {
extractNodeFields(e, r, a.base.get(t));
for (var i = 0, n = w.optimisticOrder.length; i < n; i++) {
var o = a.optimistic.get(w.optimisticOrder[i]);
if (void 0 !== o) {
extractNodeFields(e, r, o.get(t));
}
}
};
var gc = () => {
if (w.optimisticOrder.length) {
return;
}
for (var e of w.gc.keys()) {
w.gc.delete(e);
if (getRefCount(e) > 0) {
continue;
}
var r = w.records.base.get(e);
w.refCount.delete(e);
w.records.base.delete(e);
var t = r && r.__typename;
if (t) {
var a = w.types.get(t);
if (a) {
a.delete(e);
}
}
var i = w.links.base.get(e);
if (i) {
w.links.base.delete(e);
for (var n in i) {
updateRCForLink(i[n], -1);
}
}
}
};
var updateDependencies = (e, r) => {
if (e !== w.queryRootKey) {
x.add(e);
} else if (void 0 !== r && "__typename" !== r) {
x.add(joinKeys(e, r));
}
};
var updatePersist = (e, r) => {
if (!I && w.storage) {
w.persist.add(((e, r) => `${e.replace(/\./g, "%2e")}.${r}`)(e, r));
}
};
var readRecord = (e, r) => {
if ("read" === D) {
updateDependencies(e, r);
}
return getNode(w.records, e, r);
};
var readLink = (e, r) => {
if ("read" === D) {
updateDependencies(e, r);
}
return getNode(w.links, e, r);
};
var writeConcreteType = (e, r) => {
var t = w.abstractToConcreteMap.get(e);
if (!t) {
var a = new Set;
a.add(r);
w.abstractToConcreteMap.set(e, a);
} else {
t.add(r);
}
};
var writeRecord = (e, r, t) => {
if (!isEqualLinkOrScalar(getNode(w.records, e, r), t)) {
updateDependencies(e, r);
updatePersist(e, r);
}
setNode(w.records, e, r, t);
};
var hasField = (e, r) => void 0 !== readRecord(e, r) || void 0 !== readLink(e, r);
var writeLink = (e, r, t) => {
var a = b ? w.links.optimistic.get(b) : w.links.base;
if (!b) {
var i = a && a.get(e);
updateRCForLink(i && i[r], -1);
updateRCForLink(t, 1);
}
if (!isEqualLinkOrScalar(getNode(w.links, e, r), t)) {
updateDependencies(e, r);
updatePersist(e, r);
}
setNode(w.links, e, r, t);
};
var reserveLayer = (e, r, t) => {
var a = e.optimisticOrder.indexOf(r);
if (a > -1) {
e.optimisticOrder.splice(a, 1);
}
if (t) {
e.deferredKeys.add(r);
for (a = a > -1 ? a : 0; a < e.optimisticOrder.length && !e.deferredKeys.has(e.optimisticOrder[a]) && (!e.dirtyKeys.has(e.optimisticOrder[a]) || !e.commutativeKeys.has(e.optimisticOrder[a])); a++) {}
} else {
e.deferredKeys.delete(r);
if (a > -1 && !e.commutativeKeys.has(r)) {
clearLayer(e, r);
}
a = 0;
}
e.optimisticOrder.splice(a, 0, r);
e.commutativeKeys.add(r);
};
var createLayer = (e, r) => {
if (-1 === e.optimisticOrder.indexOf(r)) {
e.optimisticOrder.unshift(r);
}
if (!e.dirtyKeys.has(r)) {
e.dirtyKeys.add(r);
e.links.optimistic.set(r, new Map);
e.records.optimistic.set(r, new Map);
}
};
var clearLayer = (e, r) => {
if (e.dirtyKeys.has(r)) {
e.dirtyKeys.delete(r);
e.records.optimistic.delete(r);
e.links.optimistic.delete(r);
e.deferredKeys.delete(r);
}
};
var deleteLayer = (e, r) => {
var t = e.optimisticOrder.indexOf(r);
if (t > -1) {
e.optimisticOrder.splice(t, 1);
e.commutativeKeys.delete(r);
}
clearLayer(e, r);
};
var squashLayer = e => {
var r = x;
x = new Set;
D = "write";
var t = w.links.optimistic.get(e);
if (t) {
for (var a of t.entries()) {
var i = a[0];
var n = a[1];
for (var o in n) {
writeLink(i, o, n[o]);
}
}
}
var s = w.records.optimistic.get(e);
if (s) {
for (var l of s.entries()) {
var v = l[0];
var d = l[1];
for (var p in d) {
writeRecord(v, p, d[p]);
}
}
}
x = r;
deleteLayer(w, e);
};
var inspectFields = e => {
var {links: r, records: t} = w;
var a = [];
var i = new Set;
updateDependencies(e);
extractNodeMapFields(a, i, e, r);
extractNodeMapFields(a, i, e, t);
return a;
};
var persistData = () => {
if (w.storage) {
I = !0;
D = "read";
var r = {};
for (var t of w.persist.keys()) {
var {entityKey: a, fieldKey: i} = deserializeKeyInfo(t);
var n = void 0;
if (void 0 !== (n = readLink(a, i))) {
r[t] = `:${e(n)}`;
} else if (void 0 !== (n = readRecord(a, i))) {
r[t] = e(n);
} else {
r[t] = void 0;
}
}
I = !1;
w.storage.writeData(r);
w.persist.clear();
}
};
function isEqualLinkOrScalar(e, r) {
if (typeof e != typeof r) {
return !1;
}
if (e !== r) {
return !1;
}
if (Array.isArray(e) && Array.isArray(r)) {
if (e.length !== r.length) {
return !1;
}
return !e.some(((e, t) => e !== r[t]));
}
return !0;
}
var T = null;
var S = !1;
var A = void 0;
var getFieldError = e => e.__internal.path.length > 0 && e.__internal.errorMap ? e.__internal.errorMap[e.__internal.path.join(".")] : void 0;
var makeContext = (e, r, t, a, i, n) => {
var o = {
store: e,
variables: r,
fragments: t,
parent: {
__typename: a
},
parentTypeName: a,
parentKey: i,
parentFieldKey: "",
fieldName: "",
error: void 0,
partial: !1,
hasNext: !1,
optimistic: I,
__internal: {
path: [],
errorMap: void 0
}
};
if (n && n.graphQLErrors) {
for (var s = 0; s < n.graphQLErrors.length; s++) {
var l = n.graphQLErrors[s];
if (l.path && l.path.length) {
if (!o.__internal.errorMap) {
o.__internal.errorMap = Object.create(null);
}
o.__internal.errorMap[l.path.join(".")] = l;
}
}
}
return o;
};
var updateContext = (e, r, t, a, i, n) => {
T = e;
e.parent = r;
e.parentTypeName = t;
e.parentKey = a;
e.parentFieldKey = i;
e.fieldName = n;
e.error = getFieldError(e);
};
var isFragmentHeuristicallyMatching = (e, r, t, a, i) => {
if (!r) {
return !1;
}
var o = getTypeCondition(e);
if (!o || r === o) {
return !0;
}
"production" !== process.env.NODE_ENV && warn("Heuristic Fragment Matching: A fragment is trying to match against the `" + r + "` type, but the type condition is `" + o + "`. Since GraphQL allows for interfaces `" + o + "` may be an interface.\nA schema needs to be defined for this match to be deterministic, otherwise the fragment will be matched heuristically!", 16, i);
return !getSelectionSet(e).some((e => {
if (e.kind !== n.FIELD) {
return !1;
}
var r = keyOfField(getName(e), getFieldArguments(e, a));
return !hasField(t, r);
}));
};
class SelectionIterator {
constructor(e, r, t, a, i, n) {
this.typename = e;
this.entityKey = r;
this.ctx = n;
this.stack = [ {
selectionSet: i,
index: 0,
defer: t,
optional: a
} ];
}
next() {
while (this.stack.length > 0) {
var e = this.stack[this.stack.length - 1];
while (e.index < e.selectionSet.length) {
var r = e.selectionSet[e.index++];
if (!shouldInclude(r, this.ctx.variables)) {} else if (r.kind !== n.FIELD) {
var t = r.kind !== n.INLINE_FRAGMENT ? this.ctx.fragments[getName(r)] : r;
if (t) {
var a = !t.typeCondition || (this.ctx.store.schema ? isInterfaceOfType(this.ctx.store.schema, t, this.typename) : this.ctx.store.possibleTypeMap ? isSuperType(this.ctx.store.possibleTypeMap, t.typeCondition.name.value, this.typename) : "read" === D && isFragmentMatching(t.typeCondition.name.value, this.typename) || isFragmentHeuristicallyMatching(t, this.typename, this.entityKey, this.ctx.variables, this.ctx.store.logger));
if (a || "write" === D && !this.ctx.store.schema) {
if ("production" !== process.env.NODE_ENV) {
pushDebugNode(this.typename, t);
}
var i = isOptional(r);
if (a && t.typeCondition && this.typename !== t.typeCondition.name.value) {
writeConcreteType(t.typeCondition.name.value, this.typename);
}
this.stack.push(e = {
selectionSet: getSelectionSet(t),
index: 0,
defer: e.defer || isDeferred(r, this.ctx.variables),
optional: void 0 !== i ? i : e.optional
});
}
}
} else if ("write" === D || !r._generated) {
S = e.defer;
A = e.optional;
return r;
}
}
this.stack.pop();
if ("production" !== process.env.NODE_ENV) {
popDebugNode();
}
}
return;
}
}
var isSuperType = (e, r, t) => {
if (!t) {
return !1;
}
if (r === t) {
return !0;
}
var a = e.get(r);
return a && a.has(t);
};
var isFragmentMatching = (e, r) => {
if (!r) {
return !1;
}
if (e === r) {
return !0;
}
var t = !(e => w.types.has(e))(e);
if (!t) {
return !1;
}
var a = (e => w.abstractToConcreteMap.get(e) || q)(e);
return a.size && a.has(r);
};
var ensureData = e => null == e ? null : e;
var ensureLink = (e, r) => {
if (!r) {
return r || null;
} else if (Array.isArray(r)) {
var t = new Array(r.length);
for (var a = 0, i = t.length; a < i; a++) {
t[a] = ensureLink(e, r[a]);
}
return t;
}
var n = e.keyOfEntity(r);
if ("production" !== process.env.NODE_ENV) {
if (!n && r && "object" == typeof r) {
warn("Can't generate a key for link(...) item.\nYou have to pass an `id` or `_id` field or create a custom `keys` config for `" + r.__typename + "`.", 12, e.logger);
}
}
return n;
};
var _query = (e, t, a, i) => {
var n = r(t.query);
var o = getMainOperation(n);
var s = e.rootFields[o.operation];
var l = getSelectionSet(o);
var v = makeContext(e, normalizeVariables(o, t.variables), getFragments(n), s, s, i);
if ("production" !== process.env.NODE_ENV) {
pushDebugNode(s, o);
}
var d = s !== v.store.rootFields.query ? readRoot(v, s, l, a || makeData()) : readSelection(v, s, l, a || makeData());
if ("production" !== process.env.NODE_ENV) {
popDebugNode();
getCurrentDependencies();
}
return {
dependencies: x,
partial: v.partial || !d,
hasNext: v.hasNext,
data: d || null
};
};
var readRoot = (e, r, t, a) => {
if ("string" != typeof (e.store.rootNames[r] ? r : a.__typename)) {
return a;
}
var i = new SelectionIterator(r, r, !1, void 0, t, e);
var n;
var o = V;
var s = makeData(a);
while (n = i.next()) {
var l = getFieldAlias(n);
var v = a[l];
e.__internal.path.push(l);
var d = void 0;
if (n.selectionSet && null !== v) {
d = readRootField(e, getSelectionSet(n), ensureData(v));
} else {
d = v;
}
o = o || d !== v;
if (void 0 !== d) {
s[l] = d;
}
e.__internal.path.pop();
}
return o ? s : a;
};
var readRootField = (e, r, t) => {
if (Array.isArray(t)) {
var a = new Array(t.length);
var i = V;
for (var n = 0, o = t.length; n < o; n++) {
e.__internal.path.push(n);
a[n] = readRootField(e, r, t[n]);
i = i || a[n] !== t[n];
e.__internal.path.pop();
}
return i ? a : t;
} else if (null === t) {
return null;
}
var s = e.store.keyOfEntity(t);
if (null !== s) {
return readSelection(e, s, r, t) || null;
} else {
return readRoot(e, t.__typename, r, t);
}
};
function getFieldResolver(e, r, t, a) {
var i = a.store.resolvers[r];
var n = i && i[t];
var o;
for (var s in e) {
var l = e[s];
if (l && "include" !== s && "skip" !== s && a.store.directives[s]) {
o = a.store.directives[s](getFieldArguments(l, a.variables));
if ("production" === process.env.NODE_ENV) {
return o;
}
break;
}
}
if ("production" !== process.env.NODE_ENV) {
if (n && o) {
warn(`A resolver and directive is being used at "${r}.${t}" simultaneously. Only the directive will apply.`, 28, a.store.logger);
}
}
return o || n;
}
var readSelection = (e, r, t, a, i) => {
var {store: n} = e;
var o = r === n.rootFields.query;
var s = i && n.keyOfEntity(i) || r;
if ("production" !== process.env.NODE_ENV) {
if (!o && e.store.rootNames[s]) {
warn("Invalid root traversal: A selection was being read on `" + s + "` which is an uncached root type.\nThe `" + e.store.rootFields.mutation + "` and `" + e.store.rootFields.subscription + "` types are special Operation Root Types and cannot be read back from the cache.", 25, n.logger);
}
}
var l = !o ? readRecord(s, "__typename") || i && i.__typename : r;
if ("string" != typeof l) {
return;
} else if (i && l !== i.__typename) {
"production" !== process.env.NODE_ENV && warn("Invalid resolver data: The resolver at `" + s + "` returned an invalid typename that could not be reconciled with the cache.", 8, n.logger);
return;
}
var v = new SelectionIterator(l, s, !1, void 0, t, e);
var d = !1;
var p = !1;
var c = V;
var u;
var f = e.partial;
var y = makeData(a);
while (void 0 !== (u = v.next())) {
var h = getName(u);
var m = getFieldArguments(u, e.variables);
var g = getFieldAlias(u);
var _ = getDirectives(u);
var N = getFieldResolver(_, l, h, e);
var k = keyOfField(h, m);
var E = joinKeys(s, k);
var O = readRecord(s, k);
var w = i ? i[h] : void 0;
if ("production" !== process.env.NODE_ENV && n.schema && l) {
isFieldAvailableOnType(n.schema, l, h, e.store.logger);
}
e.__internal.path.push(g);
var b = void 0;
if ("__typename" === h) {
b = l;
} else if (void 0 !== w && void 0 === u.selectionSet) {
b = w;
} else if ("read" === D && N) {
var x = y;
if (void 0 === u.selectionSet && void 0 !== O) {
x = {
...y,
[g]: O,
[h]: O
};
}
updateContext(e, x, l, s, k, h);
b = N(x, m || {}, n, e);
if (u.selectionSet) {
b = resolveResolverResult(e, l, h, E, getSelectionSet(u), void 0 !== y[g] ? y[g] : a[g], b, ownsData(a));
}
if (n.schema && null === b && !isFieldNullable(n.schema, l, h, e.store.logger)) {
return;
}
} else if (!u.selectionSet) {
b = O;
} else if (void 0 !== w) {
b = resolveResolverResult(e, l, h, E, getSelectionSet(u), void 0 !== y[g] ? y[g] : a[g], w, ownsData(a));
} else {
var I = readLink(s, k);
if (void 0 !== I) {
b = resolveLink(e, I, l, h, getSelectionSet(u), void 0 !== y[g] ? y[g] : a[g], ownsData(a));
} else if ("object" == typeof O && null !== O) {
b = O;
}
}
if (!S && void 0 === b && (_.optional || A && !_.required || getFieldError(e) || !_.required && n.schema && isFieldNullable(n.schema, l, h, e.store.logger))) {
e.partial = !0;
b = null;
} else if (null === b && (_.required || !1 === A)) {
if (e.store.logger && "production" !== process.env.NODE_ENV && "read" === D) {
e.store.logger("debug", `Got value "null" for required field "${h}"${m ? ` with args ${JSON.stringify(m)}` : ""} on entity "${s}"`);
}
b = void 0;
} else {
d = d || "__typename" !== h;
}
e.__internal.path.pop();
c = c || b !== a[g];
if (void 0 !== b) {
y[g] = b;
} else if (S) {
p = !0;
} else {
if (e.store.logger && "production" !== process.env.NODE_ENV && "read" === D) {
e.store.logger("debug", `No value for field "${h}"${m ? ` with args ${JSON.stringify(m)}` : ""} on entity "${s}"`);
}
e.partial = f;
return;
}
}
e.partial = e.partial || f;
e.hasNext = e.hasNext || p;
return o && e.partial && !d ? void 0 : c ? y : a;
};
var resolveResolverResult = (e, r, t, a, i, n, o, s) => {
if (Array.isArray(o)) {
var {store: l} = e;
var v = l.schema ? isListNullable(l.schema, r, t, e.store.logger) : !1;
var d = e.partial;
var p = makeData(n, !0);
var c = V || !Array.isArray(n) || o.length !== n.length;
for (var u = 0, f = o.length; u < f; u++) {
e.__internal.path.push(u);
var y = resolveResolverResult(e, r, t, joinKeys(a, `${u}`), i, null != n ? n[u] : void 0, o[u], s);
e.__internal.path.pop();
if (void 0 === y && !v) {
e.partial = d;
return;
} else {
e.partial = e.partial || void 0 === y && v;
p[u] = null != y ? y : null;
c = c || p[u] !== n[u];
}
}
return c ? p : n;
} else if (null == o) {
return o;
} else if (s && null === n) {
return null;
} else if (isDataOrKey(o)) {
var h = n || makeData(n);
return "string" == typeof o ? readSelection(e, o, i, h) : readSelection(e, a, i, h, o);
} else {
"production" !== process.env.NODE_ENV && warn("Invalid resolver value: The field at `" + a + "` is a scalar (number, boolean, etc), but the GraphQL query expects a selection set for this field.", 9, e.store.logger);
return;
}
};
var resolveLink = (e, r, t, a, i, n, o) => {
if (Array.isArray(r)) {
var {store: s} = e;
var l = s.schema ? isListNullable(s.schema, t, a, e.store.logger) : !1;
var v = makeData(n, !0);
var d = e.partial;
var p = V || !Array.isArray(n) || r.length !== n.length;
for (var c = 0, u = r.length; c < u; c++) {
e.__internal.path.push(c);
var f = resolveLink(e, r[c], t, a, i, null != n ? n[c] : void 0, o);
e.__internal.path.pop();
if (void 0 === f && !l) {
e.partial = d;
return;
} else {
e.partial = e.partial || void 0 === f && l;
v[c] = f || null;
p = p || v[c] !== n[c];
}
}
return p ? v : n;
} else if (null === r || null === n && o) {
return null;
}
return readSelection(e, r, i, n || makeData(n));
};
var isDataOrKey = e => "string" == typeof e || "object" == typeof e && "string" == typeof e.__typename;
var invalidateEntity = (e, r, t) => {
var a = r ? [ {
fieldKey: keyOfField(r, t)
} ] : inspectFields(e);
for (var i = 0, n = a.length; i < n; i++) {
var {fieldKey: o} = a[i];
if (void 0 !== readLink(e, o)) {
writeLink(e, o, void 0);
} else {
writeRecord(e, o, void 0);
}
}
};
var invalidateType = (e, r) => {
var t = (e => w.types.get(e) || q)(e);
for (var a of t) {
if (r.includes(a)) {
continue;
}
invalidateEntity(a);
}
};
var _write = (e, t, a, i) => {
if ("production" !== process.env.NODE_ENV) {
getCurrentDependencies();
}
var n = r(t.query);
var o = getMainOperation(n);
var s = {
data: a || makeData(),
dependencies: x
};
var l = e.rootFields[o.operation];
var v = makeContext(e, normalizeVariables(o, t.variables), getFragments(n), l, l, i);
if ("production" !== process.env.NODE_ENV) {
pushDebugNode(l, o);
}
writeSelection(v, l, getSelectionSet(o), s.data);
if ("production" !== process.env.NODE_ENV) {
popDebugNode();
}
return s;
};
var writeSelection = (e, r, t, a) => {
var i = e.store.rootNames[r] || "query";
var n = !!e.store.rootNames[r];
var o = n ? r : a.__typename;
if (!o && r && e.optimistic) {
o = readRecord(r, "__typename");
}
if (!o) {
"production" !== process.env.NODE_ENV && warn("Couldn't find __typename when writing.\nIf you're writing to the cache manually have to pass a `__typename` property on each entity in your data.", 14, e.store.logger);
return;
} else if (!n && r) {
writeRecord(r, "__typename", o);
((e, r) => {
var t = w.types.get(e);
if (!t) {
var a = new Set;
a.add(r);
w.types.set(e, a);
} else {
t.add(r);
}
})(o, r);
}
var s = e.store.updates[o];
var l = new SelectionIterator(o, r || o, !1, void 0, t, e);
var v;
while (v = l.next()) {
var d = getName(v);
var p = getFieldArguments(v, e.variables);
var c = keyOfField(d, p);
var u = getFieldAlias(v);
var f = a[e.optimistic ? d : u];
if ("__typename" === d || void 0 === f && (S || e.optimistic && "query" === i)) {
continue;
}
if ("production" !== process.env.NODE_ENV) {
if (e.store.schema && o && "__typename" !== d) {
isFieldAvailableOnType(e.store.schema, o, d, e.store.logger);
}
}
e.__internal.path.push(u);
var y = void 0;
if (e.optimistic && "mutation" === i) {
if (!(y = e.store.optimisticMutations[d])) {
continue;
}
} else if (e.optimistic && "function" == typeof f) {
y = f;
}
if (y) {
updateContext(e, a, o, r || o, c, d);
f = ensureData(y(p || {}, e.store, e));
}
if (void 0 === f) {
if ("production" !== process.env.NODE_ENV) {
if (!r || !hasField(r, c) || e.optimistic && !readRecord(r, "__typename")) {
"production" !== process.env.NODE_ENV && warn("Invalid undefined: The field at `" + c + "` is `undefined`, but the GraphQL query expects a " + (void 0 === v.selectionSet ? "scalar (number, boolean, etc)" : "selection set") + " for this field.", 13, e.store.logger);
}
}
continue;
}
if (v.selectionSet) {
if (r && "query" === i) {
var h = joinKeys(r, c);
var m = writeField(e, getSelectionSet(v), ensureData(f), h, e.optimistic ? readLink(r || o, c) : void 0);
writeLink(r || o, c, m);
} else {
writeField(e, getSelectionSet(v), ensureData(f));
}
} else if (r && "query" === i) {
writeRecord(r || o, c, null !== f || !getFieldError(e) ? f : void 0);
}
var g = s && s[d];
if (g) {
updateContext(e, a, o, r || o, c, d);
a[d] = f;
g(a, p || {}, e.store, e);
} else if (o === e.store.rootFields.mutation && !e.optimistic) {
if (f && Array.isArray(f)) {
var _ = f.map((r => e.store.keyOfEntity(r) || ""));
for (var N = 0, k = f.length; N < k; N++) {
var E = _[N];
if (E && f[N].__typename) {
var O = readRecord(E, "__typename");
var b = getRefCount(E);
if (O && !b) {
invalidateType(f[N].__typename, _);
}
}
}
} else if (f && "object" == typeof f) {
var D = e.store.keyOfEntity(f);
if (D) {
var x = readRecord(D, "__typename");
var V = getRefCount(D);
if ((!x || !V) && f.__typename) {
invalidateType(f.__typename, [ D ]);
}
}
}
}
e.__internal.path.pop();
}
};
var M = /^__|PageInfo|(Connection|Edge)$/;
var writeField = (e, r, t, a, i) => {
if (Array.isArray(t)) {
var n = new Array(t.length);
for (var o = 0, s = t.length; o < s; o++) {
e.__internal.path.push(o);
var l = a ? joinKeys(a, `${o}`) : void 0;
var v = writeField(e, r, t[o], l, null != i ? i[o] : void 0);
n[o] = v;
e.__internal.path.pop();
}
return n;
} else if (null === t) {
return getFieldError(e) ? void 0 : null;
}
var d = e.store.keyOfEntity(t) || ("string" == typeof i ? i : null);
var p = t.__typename;
if ("production" !== process.env.NODE_ENV) {
if (a && !e.store.keys[t.__typename] && null === d && "string" == typeof p && !M.test(p)) {
warn("Invalid key: The GraphQL query at the field at `" + a + "` has a selection set, but no key could be generated for the data at this field.\nYou have to request `id` or `_id` fields for all selection sets or create a custom `keys` config for `" + p + "`.\nEntities without keys will be embedded directly on the parent entity. If this is intentional, create a `keys` config for `" + p + "` that always returns null.", 15, e.store.logger);
}
}
var c = d || a;
writeSelection(e, c, r, t);
return c || null;
};
class Store {
constructor(e) {
if (!e) {
e = {};
}
this.logger = e.logger;
this.resolvers = e.resolvers || {};
this.directives = e.directives || {};
this.optimisticMutations = e.optimistic || {};
this.keys = e.keys || {};
this.globalIDs = Array.isArray(e.globalIDs) ? new Set(e.globalIDs) : !!e.globalIDs;
var r = "Query";
var t = "Mutation";
var a = "Subscription";
if (e.schema) {
var i = (({__schema: e}) => {
var r = new Map;
var buildNameMap = e => {
var r;
return () => {
if (!r) {
r = {};
for (var t = 0; t < e.length; t++) {
r[e[t].name] = e[t];
}
}
return r;
};
};
var buildType = e => {
switch (e.kind) {
case "OBJECT":
case "INTERFACE":
return {
name: e.name,
kind: e.kind,
interfaces: buildNameMap(e.interfaces || []),
fields: buildNameMap(e.fields.map((e => ({
name: e.name,
type: e.type,
args: buildNameMap(e.args)
}))))
};
case "UNION":
return {
name: e.name,
kind: e.kind,
types: buildNameMap(e.possibleTypes || [])
};
}
};
var t = {
query: e.queryType ? e.queryType.name : null,
mutation: e.mutationType ? e.mutationType.name : null,
subscription: e.subscriptionType ? e.subscriptionType.name : null,
types: void 0,
isSubType(e, t) {
var a = r.get(e);
var i = r.get(t);
if (!a || !i) {
return !1;
} else if ("UNION" === a.kind) {
return !!a.types()[t];
} else if ("OBJECT" !== a.kind && "OBJECT" === i.kind) {
return !!i.interfaces()[e];
} else {
return e === t;
}
}
};
if (e.types) {
t.types = r;
for (var a = 0; a < e.types.length; a++) {
var i = e.types[a];
if (i && i.name) {
var n = buildType(i);
if (n) {
r.set(i.name, n);
}
}
}
}
return t;
})(e.schema);
r = i.query || r;
t = i.mutation || t;
a = i.subscription || a;
if (i.types) {
this.schema = i;
}
}
if (!this.schema && e.possibleTypes) {
this.possibleTypeMap = new Map;
for (var n of Object.entries(e.possibleTypes)) {
var [o, s] = n;
this.possibleTypeMap.set(o, new Set(s));
}
}
this.updates = e.updates || {};
this.rootFields = {
query: r,
mutation: t,
subscription: a
};
this.rootNames = {
[r]: "query",
[t]: "mutation",
[a]: "subscription"
};
this.data = (l = r, {
hydrating: !1,
defer: !1,
gc: new Set,
types: new Map,
persist: new Set,
queryRootKey: l,
refCount: new Map,
links: {
optimistic: new Map,
base: new Map
},
abstractToConcreteMap: new Map,
records: {
optimistic: new Map,
base: new Map
},
deferredKeys: new Set,
commutativeKeys: new Set,
dirtyKeys: new Set,
optimisticOrder: [],
storage: null
});
var l;
if (this.schema && "production" !== process.env.NODE_ENV) {
!function expectValidKeyingConfig(e, r, t) {
if ("production" !== process.env.NODE_ENV) {
for (var a in r) {
if ("production" !== process.env.NODE_ENV) {
if (!e.types.has(a)) {
warn("Invalid Object type: The type `" + a + "` is not an object in the defined schema, but the `keys` option is referencing it.", 20, t);
}
}
}
}
}(this.schema, this.keys, this.logger);
!function expectValidUpdatesConfig(e, r, t) {
if ("production" === process.env.NODE_ENV) {
return;
}
for (var a in r) {
if (!r[a]) {
continue;
} else if (!e.types.has(a)) {
var i = "";
if ("Mutation" === a && e.mutation && "Mutation" !== e.mutation) {
i += "\nMaybe your config should reference `" + e.mutation + "`?";
} else if ("Subscription" === a && e.subscription && "Subscription" !== e.subscription) {
i += "\nMaybe your config should reference `" + e.subscription + "`?";
}
return "production" !== process.env.NODE_ENV ? warn("Invalid updates type: The type `" + a + "` is not an object in the defined schema, but the `updates` config is referencing it." + i, 21, t) : void 0;
}
var n = e.types.get(a).fields();
for (var o in r[a]) {
if ("production" !== process.env.NODE_ENV) {
if (!n[o]) {
warn("Invalid updates field: `" + o + "` on `" + a + "` is not in the defined schema, but the `updates` config is referencing it.", 22, t);
}
}
}
}
}(this.schema, this.updates, this.logger);
!function expectValidResolversConfig(e, r, t) {
if ("production" === process.env.NODE_ENV) {
return;
}
for (var a in r) {
if ("Query" === a) {
if (e.query) {
var i = e.types.get(e.query).fields();
for (var n in r.Query || {}) {
if (!i[n]) {
warnAboutResolver("Query." + n, t);
}
}
} else {
warnAboutResolver("Query", t);
}
} else if (!e.types.has(a)) {
warnAboutResolver(a, t);
} else if ("INTERFACE" === e.types.get(a).kind || "UNION" === e.types.get(a).kind) {
warnAboutAbstractResolver(a, e.types.get(a).kind, t);
} else {
var o = e.types.get(a).fields();
for (var s in r[a] || {}) {
if (!o[s]) {
warnAboutResolver(a + "." + s, t);
}
}
}
}
}(this.schema, this.resolvers, this.logger);
!function expectValidOptimisticMutationsConfig(e, r, t) {
if ("production" === process.env.NODE_ENV) {
return;
}
if (e.mutation) {
var a = e.types.get(e.mutation).fields();
for (var i in r) {
if ("production" !== process.env.NODE_ENV) {
if (!a[i]) {
warn(`Invalid optimistic mutation field: \`${i}\` is not a mutation field in the defined schema, but the \`optimistic\` option is referencing it.`, 24, t);
}
}
}
}
}(this.schema, this.optimisticMutations, this.logger);
}
}
keyOfField(e, r) {
return keyOfField(e, r);
}
keyOfEntity(e) {
if (T && e === T.parent) {
return T.parentKey;
} else if (null == e || "string" == typeof e) {
return e || null;
} else if (!e.__typename) {
return null;
} else if (this.rootNames[e.__typename]) {
return e.__typename;
}
var r = null;
if (this.keys[e.__typename]) {
r = this.keys[e.__typename](e) || null;
} else if (null != e.id) {
r = `${e.id}`;
} else if (null != e._id) {
r = `${e._id}`;
}
var t = e.__typename;
return !0 === this.globalIDs || this.globalIDs && this.globalIDs.has(t) || !r ? r : `${t}:${r}`;
}
resolve(e, r, t) {
var a = this.keyOfEntity(e);
if (a) {
var i = keyOfField(r, t);
var n = readRecord(a, i);
if (void 0 !== n) {
return n;
}
var o = readLink(a, i);
if (void 0 !== o) {
o = ensureLink(this, o);
}
return o;
}
}
invalidate(e, r, t) {
var a = this.keyOfEntity(e);
if (e && "string" == typeof e && !r && !t && !this.resolve(e, "__typename")) {
invalidateType(e, []);
} else {
invariant(a, "production" !== process.env.NODE_ENV ? "Can't generate a key for invalidate(...).\nYou have to pass an id or _id field or create a custom `keys` field for `" + ("object" == typeof e ? e.__typename : e + "`.") : "", 19);
invalidateEntity(a, r, t);
}
}
inspectFields(e) {
var r = this.keyOfEntity(e);
return r ? inspectFields(r) : [];
}
updateQuery(e, r) {
var a = t(e.query, e.variables);
var i = r(this.readQuery(a));
if (null !== i) {
_write(this, a, i, void 0);
}
}
readQuery(e) {
var r = t(e.query, e.variables);
return _query(this, r, void 0, void 0).data;
}
readFragment(e, t, a, i) {
return ((e, r, t, a, i) => {
var n = getFragments(r);
var o;
if (i) {
if (!(o = n[i])) {
"production" !== process.env.NODE_ENV && warn("readFragment(...) was called with a fragment name that does not exist.\nYou provided " + i + " but could only find " + Object.keys(n).join(", ") + ".", 6, e.logger);
return null;
}
} else if (!(o = n[Object.keys(n)[0]])) {
"production" !== process.env.NODE_ENV && warn("readFragment(...) was called with an empty fragment.\nYou have to call it with at least one fragment in your GraphQL document.", 6, e.logger);
return null;
}
var s = getFragmentTypeName(o);
if ("string" != typeof t && !t.__typename) {
t.__typename = s;
}
var l = e.keyOfEntity(t);
if (!l) {
"production" !== process.env.NODE_ENV && warn("Can't generate a key for readFragment(...).\nYou have to pass an `id` or `_id` field or create a custom `keys` config for `" + s + "`.", 7, e.logger);
return null;
}
if ("production" !== process.env.NODE_ENV) {
pushDebugNode(s, o);
}
var v = makeContext(e, a || {}, n, s, l, void 0);
var d = readSelection(v, l, getSelectionSet(o), makeData()) || null;
if ("production" !== process.env.NODE_ENV) {
popDebugNode();
}
return d;
})(this, r(e), t, a, i);
}
writeFragment(e, t, a, i) {
((e, r, t, a, i) => {
var n = getFragments(r);
var o;
if (i) {
if (!(o = n[i])) {
"production" !== process.env.NODE_ENV && warn("writeFragment(...) was called with a fragment name that does not exist.\nYou provided " + i + " but could only find " + Object.keys(n).join(", ") + ".", 11, e.logger);
return null;
}
} else if (!(o = n[Object.keys(n)[0]])) {
"production" !== process.env.NODE_ENV && warn("writeFragment(...) was called with an empty fragment.\nYou have to call it with at least one fragment in your GraphQL document.", 11, e.logger);
return null;
}
var s = getFragmentTypeName(o);
var l = {
__typename: s,
...t
};
var v = e.keyOfEntity(l);
if (!v) {
return "production" !== process.env.NODE_ENV ? warn("Can't generate a key for writeFragment(...) data.\nYou have to pass an `id` or `_id` field or create a custom `keys` config for `" + s + "`.", 12, e.logger) : void 0;
}
if ("production" !== process.env.NODE_ENV) {
pushDebugNode(s, o);
}
var d = makeContext(e, a || {}, n, s, v, void 0);
writeSelection(d, v, getSelectionSet(o), l);
if ("production" !== process.env.NODE_ENV) {
popDebugNode();
}
})(this, r(e), t, a, i);
}
link(e, r, ...t) {
var a = 2 === t.length ? t[0] : null;
var i = 2 === t.length ? t[1] : t[0];
var n = this.keyOfEntity(e);
if (n) {
writeLink(n, keyOfField(r, a), ensureLink(this, i));
}
}
}
var addMetadata = (e, r) => a(e.kind, e, {
...e.context,
meta: {
...e.context.meta,
...r
}
});
var toRequestPolicy = (e, r) => a(e.kind, e, {
...e.context,
requestPolicy: r
});
var cacheExchange = e => ({forward: t, client: i, dispatchDebug: n}) => {
var o = new Store(e);
if (e && e.storage) {
o.data.hydrating = !0;
e.storage.readData().then((r => {
((e, r, t) => {
initDataState("write", e, null);
for (var a in t) {
var i = t[a];
if (void 0 !== i) {
var {entityKey: n, fieldKey: o} = deserializeKeyInfo(a);
if (":" === i[0]) {
if (void 0 === readLink(n, o)) {
writeLink(n, o, JSON.parse(i.slice(1)));
}
} else if (void 0 === readRecord(n, o)) {
writeRecord(n, o, JSON.parse(i));
}
}
}
e.storage = r;
e.hydrating = !1;
clearDataState();
})(o.data, e.storage, r);
if (e.storage.onCacheHydrated) {
e.storage.onCacheHydrated();
}
}));
}
var f = new Map;
var y = [];
var h = new Map;
var m = new Map;
var g = new Set;
var _ = new Set;
var N = new Map;
var k = new Set;
var E = new Set;
var isBlockedByOptimisticUpdate = e => {
for (var r of e.values()) {
if (g.has(r)) {
return !0;
}
}
return !1;
};
var collectPendingOperations = (e, r) => {
if (r) {
for (var t of r.values()) {
var a = N.get(t);
if (a) {
for (var i of a.values()) {
e.add(i);
}
}
}
}
};
var executePendingOperations = (e, r, t) => {
for (var a of r.values()) {
if (a !== e.key) {
var n = h.get(a);
if (n) {
if ("query" === e.kind) {
E.add(a);
}
var o = "cache-first";
if (_.has(a)) {
_.delete(a);
o = "cache-and-network";
}
i.reexecuteOperation(toRequestPolicy(n, o));
}
}
}
if (!t) {
var s = k;
k = E;
if ("query" === e.kind) {
k.add(e.key);
}
(E = s).clear();
}
};
var prepareForwardedOperation = e => {
var t = !1;
if ("query" === e.kind) {
reserveLayer(o.data, e.key);
h.set(e.key, e);
} else if ("teardown" === e.kind) {
h.delete(e.key);
m.delete(e.key);
k.delete(e.key);
noopDataState(o.data, e.key);
return e;
} else if ("mutation" === e.kind && "network-only" !== e.context.requestPolicy) {
h.set(e.key, e);
initDataState("write", o.data, e.key, !0, !1);
var {dependencies: i} = _write(o, e, void 0, void 0);
clearDataState();
if (i.size) {
for (var n of i.values()) {
g.add(n);
}
f.set(e.key, i);
var s = new Set;
collectPendingOperations(s, i);
executePendingOperations(e, s, !0);
t = !0;
}
}
return a(e.kind, {
key: e.key,
query: r(