Socket
Socket
Sign inDemoInstall

@urql/exchange-graphcache

Package Overview
Dependencies
14
Maintainers
3
Versions
290
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.0-beta.3 to 1.0.0-beta.4

dist/types/operations/invalidate.d.ts

1

dist/types/helpers/keys.d.ts
import { Variables, KeyGenerator } from '../types';
export declare const isOperation: (typeName: string) => boolean;
export declare const keyOfEntity: KeyGenerator;
export declare const keyOfField: (fieldName: string, args?: Variables | null | undefined) => string;
export declare const joinKeys: (parentKey: string, key: string) => string;
import { FieldNode } from 'graphql';
import { Fragments, Variables } from '../types';
import { Fragments, Variables, SelectionSet } from '../types';
import { Store } from '../store';

@@ -9,3 +9,11 @@ interface Context {

}
export declare const forEachFieldNode: (typename: string | void, entityKey: string, select: readonly import("graphql").SelectionNode[], ctx: Context, cb: (node: FieldNode) => void) => void;
export declare class SelectionIterator {
typename: void | string;
entityKey: string;
indexStack: number[];
context: Context;
selectionStack: SelectionSet[];
constructor(typename: void | string, entityKey: string, select: SelectionSet, ctx: Context);
next(): void | FieldNode;
}
export {};

@@ -28,5 +28,9 @@ import { DocumentNode } from 'graphql';

resolve(entity: Data | string, field: string, args?: Variables): DataField;
invalidateQuery(dataQuery: DocumentNode, variables: Variables): void;
hasField(key: string): boolean;
updateQuery(dataQuery: DocumentNode, updater: (data: Data | null) => null | Data): void;
updateQuery(ctx: {
query: DocumentNode;
variables?: Variables;
}, updater: (data: Data | null) => null | Data): void;
writeFragment(dataFragment: DocumentNode, data: Data): void;
}

@@ -42,2 +42,6 @@ import warning from "warning";

var isInlineFragment = function(node) {
return node.kind === Kind.INLINE_FRAGMENT;
};
var evaluateValueNode = function(node, vars) {

@@ -55,11 +59,15 @@ switch (node.kind) {

case Kind.LIST:
return node.values.map(function _ref(v) {
return evaluateValueNode(v, vars);
});
var values = new Array(node.values.length);
for (var i = 0, l = node.values.length; i < l; i++) {
values[i] = evaluateValueNode(node.values[i], vars);
}
return values;
case Kind.OBJECT:
return node.fields.reduce(function _ref2(obj, field) {
obj[getName(field)] = evaluateValueNode(field.value, vars);
return obj;
}, Object.create(null));
var fields = Object.create(null);
for (var i$1 = 0, l$1 = node.fields.length; i$1 < l$1; i$1++) {
var field = node.fields[i$1];
fields[getName(field)] = evaluateValueNode(field.value, vars);
}
return fields;

@@ -79,6 +87,8 @@ case Kind.VARIABLE:

}
return node.arguments.reduce(function(args, arg) {
var args = Object.create(null);
for (var i = 0, l = node.arguments.length; i < l; i++) {
var arg = node.arguments[i];
args[getName(arg)] = evaluateValueNode(arg.value, vars);
return args;
}, Object.create(null));
}
return args;
};

@@ -151,2 +161,27 @@

var shouldInclude = function(node, vars) {
if (void 0 === node.directives) {
return !0;
}
var directives = node.directives;
for (var i = 0, l = directives.length; i < l; i++) {
var directive = directives[i];
var name = getName(directive);
var isInclude = "include" === name;
if (!isInclude && "skip" !== name) {
continue;
}
var arg = directive.arguments ? directive.arguments[0] : null;
if (!arg || "if" !== getName(arg)) {
continue;
}
var value = evaluateValueNode(arg.value, vars);
if ("boolean" != typeof value && null !== value) {
continue;
}
return isInclude ? !!value : !value;
}
return !0;
};
var keyOfEntity = function(data) {

@@ -157,5 +192,3 @@ var typeName = data.__typename;

return null;
} else if (function(typeName) {
return "Query" === typeName || "Mutation" === typeName || "Subscription" === typeName;
}(typeName)) {
} else if ("Query" === typeName || "Mutation" === typeName || "Subscription" === typeName) {
return typeName;

@@ -208,38 +241,37 @@ } else if (null == id) {

var forEachFieldNode = function(typename, entityKey, select, ctx, cb) {
select.forEach(function(node) {
if (!function(node, vars) {
if (void 0 === node.directives) {
return !0;
}
return !node.directives.some(function(directive) {
var name = getName(directive);
var isInclude = "include" === name;
if (!isInclude && "skip" !== name) {
return !1;
var SelectionIterator = function SelectionIterator(typename, entityKey, select, ctx) {
this.typename = typename;
this.entityKey = entityKey;
this.context = ctx;
this.indexStack = [ 0 ];
this.selectionStack = [ select ];
};
SelectionIterator.prototype.next = function next() {
while (0 !== this.indexStack.length) {
var index = this.indexStack[this.indexStack.length - 1]++;
var select = this.selectionStack[this.selectionStack.length - 1];
if (index >= select.length) {
this.indexStack.pop();
this.selectionStack.pop();
continue;
} else {
var node = select[index];
if (!shouldInclude(node, this.context.variables)) {
continue;
} else if (!isFieldNode(node)) {
var fragmentNode = !isInlineFragment(node) ? this.context.fragments[getName(node)] : node;
if (void 0 !== fragmentNode && isFragmentMatching(fragmentNode, this.typename, this.entityKey, this.context)) {
this.indexStack.push(0);
this.selectionStack.push(getSelectionSet(fragmentNode));
}
var arg = directive.arguments ? directive.arguments[0] : null;
if (!arg || "if" !== getName(arg)) {
return !1;
}
var value = evaluateValueNode(arg.value, vars);
if ("boolean" != typeof value && null !== value) {
return !1;
}
return isInclude ? !value : !!value;
});
}(node, ctx.variables)) {
return;
} else if (!isFieldNode(node)) {
var fragmentNode = function(node) {
return node.kind === Kind.INLINE_FRAGMENT;
}(node) ? node : ctx.fragments[getName(node)];
if (void 0 !== fragmentNode && isFragmentMatching(fragmentNode, typename, entityKey, ctx)) {
var fragmentSelect = getSelectionSet(fragmentNode);
forEachFieldNode(typename, entityKey, fragmentSelect, ctx, cb);
continue;
} else if ("__typename" === getName(node)) {
continue;
} else {
return node;
}
} else if ("__typename" !== getName(node)) {
cb(node);
}
});
}
return;
};

@@ -290,3 +322,5 @@

var select = getSelectionSet(operation);
forEachFieldNode(operationName, operationName, select, ctx, function _ref(node) {
var iter = new SelectionIterator(operationName, operationName, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
if (void 0 !== node.selectionSet) {

@@ -304,3 +338,3 @@ var fieldName = getName(node);

}
});
}
}

@@ -346,3 +380,5 @@ clearStoreState();

store.writeField(isQuery ? entityKey : typename, entityKey, "__typename");
forEachFieldNode(typename, entityKey, select, ctx, function(node) {
var iter = new SelectionIterator(typename, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);

@@ -365,3 +401,3 @@ var fieldArgs = getFieldArguments(node, variables);

}
});
}
};

@@ -371,6 +407,10 @@

if (Array.isArray(data)) {
return data.map(function _ref2(item, index) {
var indexKey = joinKeys(parentFieldKey, "" + index);
return writeField(ctx, indexKey, select, item);
});
var newData = new Array(data.length);
for (var i = 0, l = data.length; i < l; i++) {
var item = data[i];
var indexKey = joinKeys(parentFieldKey, "" + i);
var links = writeField(ctx, indexKey, select, item);
newData[i] = links;
}
return newData;
} else if (null === data) {

@@ -387,3 +427,5 @@ return null;

var writeRoot = function(ctx, typename, select, data) {
forEachFieldNode(typename, typename, select, ctx, function(node) {
var iter = new SelectionIterator(typename, typename, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);

@@ -402,3 +444,3 @@ var fieldAlias = getFieldAlias(node);

}
});
}
};

@@ -408,5 +450,7 @@

if (Array.isArray(data)) {
return data.map(function _ref3(item) {
return writeRootField(ctx, item, select);
});
var newData = new Array(data.length);
for (var i = 0, l = data.length; i < l; i++) {
newData[i] = writeRootField(ctx, data[i], select);
}
return newData;
} else if (null === data) {

@@ -430,2 +474,50 @@ return;

var invalidateSelection = function(ctx, entityKey, select) {
var store = ctx.store;
var variables = ctx.variables;
var isQuery = "Query" === entityKey;
var typename;
if (!isQuery) {
addDependency(entityKey);
if ("string" != typeof (typename = store.getField(entityKey, "__typename"))) {
return;
} else {
store.removeRecord(joinKeys(entityKey, keyOfField("__typename")));
}
} else {
typename = entityKey;
}
var iter = new SelectionIterator(typename, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);
var fieldArgs = getFieldArguments(node, variables);
var fieldKey = joinKeys(entityKey, keyOfField(fieldName, fieldArgs));
if (isQuery) {
addDependency(fieldKey);
}
if (void 0 === node.selectionSet) {
store.removeRecord(fieldKey);
} else {
var fieldSelect = getSelectionSet(node);
var link = store.getLink(fieldKey);
store.removeLink(fieldKey);
if (void 0 === link) {
if (void 0 !== store.getRecord(fieldKey)) {
store.removeRecord(fieldKey);
}
} else if (Array.isArray(link)) {
for (var i = 0, l = link.length; i < l; i++) {
var childLink = link[i];
if (null !== childLink) {
invalidateSelection(ctx, childLink, fieldSelect);
}
}
} else if (null !== link) {
invalidateSelection(ctx, link, fieldSelect);
}
}
}
};
var currentDependencies = {

@@ -439,7 +531,2 @@ current: null

var refValue = function(ref) {
"production" !== process.env.NODE_ENV && browser(null !== ref.current, "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.");
return ref.current;
};
var initStoreState = function(optimisticKey) {

@@ -456,16 +543,18 @@ currentDependencies.current = new Set();

var getCurrentDependencies = function() {
return refValue(currentDependencies);
return function(ref) {
"production" !== process.env.NODE_ENV && browser(null !== ref.current, "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.");
return ref.current;
}(currentDependencies);
};
var addDependency = function(dependency) {
refValue(currentDependencies).add(dependency);
currentDependencies.current.add(dependency);
};
var mapSet = function(map, key, value) {
var optimisticKey = refValue(currentOptimisticKey);
return setOptimistic(map, key, value, optimisticKey);
return setOptimistic(map, key, value, currentOptimisticKey.current || 0);
};
var mapRemove = function(map, key) {
var optimisticKey = refValue(currentOptimisticKey);
var optimisticKey = currentOptimisticKey.current || 0;
return optimisticKey ? setOptimistic(map, key, void 0, optimisticKey) : remove(map, key);

@@ -557,2 +646,19 @@ };

Store.prototype.invalidateQuery = function invalidateQuery(dataQuery, variables) {
!function(store, request) {
initStoreState(0);
var operation = getMainOperation(request.query);
var ctx = {
variables: normalizeVariables(operation, request.variables),
fragments: getFragments(request.query),
store: store
};
invalidateSelection(ctx, "Query", getSelectionSet(operation));
clearStoreState();
}(this, {
query: dataQuery,
variables: variables
});
};
Store.prototype.hasField = function hasField(key) {

@@ -562,11 +668,7 @@ return void 0 !== this.getRecord(key) || void 0 !== this.getLink(key);

Store.prototype.updateQuery = function updateQuery(dataQuery, updater) {
var ref = startQuery(this, {
query: dataQuery
});
Store.prototype.updateQuery = function updateQuery(ctx, updater) {
var ref = startQuery(this, ctx);
var output = updater("EMPTY" === ref.completeness ? null : ref.data);
if (null !== output) {
startWrite(this, {
query: dataQuery
}, output);
startWrite(this, ctx, output);
}

@@ -611,3 +713,3 @@ };

var variables = ctx.variables;
var typename = store.getField(entityKey, "__typename");
var typename = isQuery ? "Query" : store.getField(entityKey, "__typename");
if ("string" != typeof typename) {

@@ -618,3 +720,5 @@ ctx.result.completeness = "EMPTY";

data.__typename = typename;
forEachFieldNode(typename, entityKey, select, ctx, function(node) {
var iter = new SelectionIterator(typename, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);

@@ -658,3 +762,3 @@ var fieldArgs = getFieldArguments(node, variables);

}
});
}
return data;

@@ -692,10 +796,12 @@ };

if (Array.isArray(link)) {
return link.map(function _ref2(childLink, index) {
return resolveLink(ctx, childLink, select, void 0 !== prevData ? prevData[index] : void 0);
});
var newLink = new Array(link.length);
for (var i = 0, l = link.length; i < l; i++) {
newLink[i] = resolveLink(ctx, link[i], select, void 0 !== prevData ? prevData[i] : void 0);
}
return newLink;
} else if (null === link) {
return null;
} else {
var data = void 0 === prevData ? Object.create(null) : prevData;
return readSelection(ctx, link, select, data);
var data$1 = void 0 === prevData ? Object.create(null) : prevData;
return readSelection(ctx, link, select, data$1);
}

@@ -702,0 +808,0 @@ };

@@ -1,2 +0,2 @@

import"warning";import{Kind as e}from"graphql";import{asMutable as t,make as n,clearOptimistic as r,get as i,setOptimistic as o,remove as u}from"pessimism";import a from"fast-json-stable-stringify";import{formatDocument as s}from"urql";import{pipe as c,map as l,tap as f,share as v,filter as p,merge as d}from"wonka";var y=function(e){return e.name.value},m=function(e){switch(e.operation){case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription"}},h=function(e){return void 0!==e.alias?e.alias.value:y(e)},k=function(e){return void 0!==e.selectionSet?e.selectionSet.selections:[]},b=function(t){return t.kind===e.FIELD},g=function(t,n){switch(t.kind){case e.NULL:return null;case e.INT:return parseInt(t.value,10);case e.FLOAT:return parseFloat(t.value);case e.LIST:return t.values.map(function(e){return g(e,n)});case e.OBJECT:return t.fields.reduce(function(e,t){return e[y(t)]=g(t.value,n),e},Object.create(null));case e.VARIABLE:var r=n[y(t)];return void 0!==r?r:null;default:return t.value}},O=function(e,t){return void 0===e.arguments||0===e.arguments.length?null:e.arguments.reduce(function(e,n){return e[y(n)]=g(n.value,t),e},Object.create(null))},_=function(e,t){if(void 0===e.variableDefinitions)return{};var n=t||{};return e.variableDefinitions.reduce(function(e,t){var r=y(t.variable),i=n[r];if(void 0===i){if(void 0===t.defaultValue)return e;i=g(t.defaultValue,n)}return e[r]=i,e},Object.create(null))},w=function(t){return t.kind===e.FRAGMENT_DEFINITION};function E(t){return t.kind===e.OPERATION_DEFINITION}var L=function(e){return e.definitions.find(E)};function F(e,t){return e[y(t)]=t,e}var S=function(e){return e.definitions.filter(w).reduce(F,{})},q=function(e){var t=e.__typename,n=void 0===e.id?e._id:e.id;return null==t?null:function(e){return"Query"===e||"Mutation"===e||"Subscription"===e}(t)?t:null==n?null:t+":"+n},M=function(e,t){return t?e+"("+a(t)+")":e},A=function(e,t){return e+"."+t};function j(){return(j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var T=function(t,n,r,i,o){r.forEach(function(r){if(function(e,t){return void 0===e.directives||!e.directives.some(function(e){var n=y(e),r="include"===n;if(!r&&"skip"!==n)return!1;var i=e.arguments?e.arguments[0]:null;if(!i||"if"!==y(i))return!1;var o=g(i.value,t);return!("boolean"!=typeof o&&null!==o||(r?o:!o))})}(r,i.variables))if(b(r))"__typename"!==y(r)&&o(r);else{var u=function(t){return t.kind===e.INLINE_FRAGMENT}(r)?r:i.fragments[y(r)];if(void 0!==u&&function(e,t,n,r){return!(!t||t!==(void 0!==(i=e.typeCondition)?y(i):null)&&k(e).some(function(e){if(!b(e))return!1;var t=y(e),i=O(e,r.variables),o=M(t,i);return!r.store.hasField(A(n,o))}));var i}(u,t,n,i)){var a=k(u);T(t,n,a,i,o)}}})},I=function(e,t,n){G(0);var r=R(e,t,n);return z(),r},R=function(e,t,n){var r=L(t.query),i={dependencies:J()},o={variables:_(r,t.variables),fragments:S(t.query),result:i,store:e},u=k(r),a=m(r);return"Query"===a?x(o,a,u,n):U(o,a,u,n),i},N=function(e,t,n){G(n);var r=L(t.query),i={dependencies:J()},o={variables:_(r,t.variables),fragments:S(t.query),result:i,store:e},u=m(r);if("Mutation"===u){var a=k(r);T(u,u,a,o,function(e){if(void 0!==e.selectionSet){var t=y(e),n=o.store.optimisticMutations[t];if(void 0!==n){var r=O(e,o.variables),i=k(e),u=n(r||{},o.store,o);Y(u)||V(o,u,i)}}})}return z(),i},P=function(e,t,n){var r=S(t),i=r[Object.keys(r)[0]];if(void 0!==i){var o=k(i),u=j({},n,{__typename:i.typeCondition.name.value}),a=e.keyOfEntity(u);if(a){var s={variables:{},fragments:r,result:{dependencies:J()},store:e};x(s,a,o,u)}}},x=function(e,t,n,r){var i=e.store,o=e.variables,u="Query"===t,a=r.__typename;u||K(t),i.writeField(u?t:a,t,"__typename"),T(a,t,n,e,function(n){var a=y(n),s=O(n,o),c=A(t,M(a,s)),l=r[h(n)];if(u&&K(c),void 0===n.selectionSet)i.writeRecord(l,c);else if(Y(l))i.writeRecord(l,c);else{var f=Q(e,c,n.selectionSet.selections,l);i.writeLink(f,c),i.removeRecord(c)}})},Q=function(e,t,n,r){if(Array.isArray(r))return r.map(function(r,i){var o=A(t,""+i);return Q(e,o,n,r)});if(null===r)return null;var i=e.store.keyOfEntity(r),o=null!==i?i:t;return x(e,o,n,r),o},U=function(e,t,n,r){T(t,t,n,e,function(n){var i=y(n),o=h(n),u=O(n,e.variables),a=r[o];if(void 0===n.selectionSet||null===a||Y(a)||V(e,a,n.selectionSet.selections),"Mutation"===t||"Subscription"===t){var s=e.store.updates[t][i];void 0!==s&&s(r,u||{},e.store,e)}})},V=function(e,t,n){if(Array.isArray(t))return t.map(function(t){return V(e,t,n)});if(null!==t){var r=e.store.keyOfEntity(t);null!==r?x(e,r,n,t):U(e,t.__typename,n,t)}},Y=function(e){return Array.isArray(e)?e.some(Y):"object"!=typeof e||null!==e&&"string"!=typeof e.__typename},D={current:null},C={current:null},B=function(e){return e.current},G=function(e){D.current=new Set,C.current=e},z=function(){D.current=null,C.current=null},J=function(){return B(D)},K=function(e){B(D).add(e)},H=function(e,t,n){var r=B(C);return o(e,t,n,r)},W=function(e,t){var n=B(C);return n?o(e,t,void 0,n):u(e,t)},X=function(e,r,i,o){this.records=t(n()),this.links=t(n()),this.resolvers=e||{},this.updates={Mutation:r&&r.Mutation||{},Subscription:r&&r.Subscription||{}},this.optimisticMutations=i||{},this.keys=o||{}};X.prototype.keyOfEntity=function(e){var t=e.__typename;return void 0!==t&&void 0!==this.keys[t]?this.keys[t](e):q(e)},X.prototype.clearOptimistic=function(e){this.records=r(this.records,e),this.links=r(this.links,e)},X.prototype.getRecord=function(e){return i(this.records,e)},X.prototype.removeRecord=function(e){return this.records=W(this.records,e)},X.prototype.writeRecord=function(e,t){return this.records=H(this.records,t,e)},X.prototype.getField=function(e,t,n){var r=A(e,M(t,n));return this.getRecord(r)},X.prototype.writeField=function(e,t,n,r){var i=A(t,M(n,r));return this.records=H(this.records,i,e)},X.prototype.getLink=function(e){return i(this.links,e)},X.prototype.removeLink=function(e){return this.links=W(this.links,e)},X.prototype.writeLink=function(e,t){return this.links=H(this.links,t,e)},X.prototype.resolveValueOrLink=function(e){var t=this.getRecord(e);return void 0!==t?t:this.getLink(e)||null},X.prototype.resolve=function(e,t,n){if("string"==typeof e)return K(e),this.resolveValueOrLink(A(e,M(t,n)));var r=this.keyOfEntity(e);return null===r?null:(K(r),this.resolveValueOrLink(A(r,M(t,n))))},X.prototype.hasField=function(e){return void 0!==this.getRecord(e)||void 0!==this.getLink(e)},X.prototype.updateQuery=function(e,t){var n=$(this,{query:e}),r=t("EMPTY"===n.completeness?null:n.data);null!==r&&R(this,{query:e},r)},X.prototype.writeFragment=function(e,t){P(this,e,t)};var Z=function(e,t){G(0);var n=$(e,t);return z(),n},$=function(e,t){var n=L(t.query),r=Object.create(null),i={completeness:"FULL",dependencies:J(),data:r},o={variables:_(n,t.variables),fragments:S(t.query),result:i,store:e};return i.data=ee(o,"Query",k(n),r),i},ee=function(e,t,n,r){var i="Query"===t;i||K(t);var o=e.store,u=e.variables,a=o.getField(t,"__typename");return"string"!=typeof a?(e.result.completeness="EMPTY",null):(r.__typename=a,T(a,t,n,e,function(n){var s=y(n),c=O(n,u),l=h(n),f=A(t,M(s,c)),v=o.getRecord(f);i&&K(f);var p=o.resolvers[a];if(void 0!==p&&p.hasOwnProperty(s)){var d=p[s](r,c||{},o,e);if(void 0===n.selectionSet)r[l]=void 0!==d?d:null;else{var m=k(n);r[l]=te(e,d,f,m,r[l])}}else if(void 0===n.selectionSet)void 0===v?(e.result.completeness="EMPTY",r[l]=null):r[l]=v;else{var b=k(n),g=o.getLink(f);void 0===g?"object"==typeof v&&null!==v?r[l]=v:(e.result.completeness="EMPTY",r[l]=null):r[l]=ne(e,g,b,r[l])}}),r)},te=function(e,t,n,r,i){if(Array.isArray(t))return t.map(function(t,o){var u=void 0!==i?i[o]:void 0,a=A(n,""+o);return te(e,t,a,r,u)});if(null===t)return null;if(re(t)){var o=void 0===i?Object.create(null):i,u=("string"==typeof t?t:e.store.keyOfEntity(t))||n,a=ee(e,u,r,o);if(null!==a&&"object"==typeof t)for(n in t)"__typename"!==n&&t.hasOwnProperty(n)&&(a[n]=t[n]);return a}return e.result.completeness="EMPTY",null},ne=function(e,t,n,r){if(Array.isArray(t))return t.map(function(t,i){return ne(e,t,n,void 0!==r?r[i]:void 0)});if(null===t)return null;var i=void 0===r?Object.create(null):r;return ee(e,t,n,i)},re=function(e){return"string"==typeof e||"object"==typeof e&&null!==e&&"string"==typeof e.__typename},ie=function(e){return function(t){return{data:t.data,error:t.error,extensions:t.extensions,operation:j({},t.operation,{context:j({},t.operation.context,{meta:j({},t.operation.context.meta,{cacheOutcome:e})})})}}},oe=function(e){return j({},e,{query:s(e.query)})},ue=function(e){return e.context.requestPolicy},ae=function(e){return"query"===e.operationName},se=function(e){var t=ue(e);return ae(e)&&"network-only"!==t},ce=function(e,t){return j({},e,{context:j({},e.context,{requestPolicy:t})})};function le(e){return se(e)}function fe(e){return"FULL"!==e.completeness}function ve(e){return e.operation}function pe(e){return"FULL"===e.completeness}function de(e){return!se(e)}var ye=function(e){return function(t){var n=t.forward,r=t.client;e||(e={});var i=new X(e.resolvers,e.updates,e.optimistic,e.keys),o=new Set,u=new Map,a=Object.create(null),s=function(e,t){var n=new Set;function i(e){return n.add(e)}t.forEach(function(e){var t=a[e];void 0!==t&&(a[e]=[],t.forEach(i))}),n.forEach(function(t){if(t!==e.key){var n=u.get(t);u.delete(t),r.reexecuteOperation(n)}})},y=function(e){if(u=ue(r=e),function(e){return"mutation"===e.operationName}(r)&&"network-only"!==u){var t=e.key,n=N(i,e,t).dependencies;0!==n.size&&(o.add(t),s(e,n))}var r,u},m=function(e,t){t.forEach(function(t){(a[t]||(a[t]=[])).push(e.key),u.has(e.key)||u.set(e.key,"network-only"===e.context.requestPolicy?ce(e,"cache-and-network"):e)})},h=function(e){var t=ue(e),n=Z(i,e),r="cache-only"===t||"FULL"===n.completeness;return r&&m(e,n.dependencies),{operation:e,completeness:r?"FULL":"EMPTY",data:n.data}},k=function(e){var t,n=e.data,r=e.operation;null!=n&&(t=I(i,r,n).dependencies);var u=r.key;o.has(u)&&(o.delete(u),i.clearOptimistic(u)),void 0!==t&&(s(r,t),ae(r)&&m(r,t))};function b(e){var t=e.operation;if("cache-and-network"===ue(t)){var n=ce(t,"network-only");r.reexecuteOperation(n)}}return function(e){var t=c(e,l(oe),f(y),v),r=c(t,p(le),l(h),v),i=c(r,p(fe),l(ve)),o=c(r,p(pe),f(b),l(ie("hit"))),u=c(n(d([c(t,p(de)),i])),f(k),l(ie("miss")));return d([u,o])}}};export{X as Store,ye as cacheExchange,q as defaultKeyOfEntity,Z as query,I as write,P as writeFragment,N as writeOptimistic};
import"warning";import{Kind as e}from"graphql";import{asMutable as t,make as r,clearOptimistic as n,get as i,setOptimistic as o,remove as u}from"pessimism";import a from"fast-json-stable-stringify";import{formatDocument as s}from"urql";import{pipe as c,map as l,tap as f,share as v,filter as d,merge as p}from"wonka";var y=function(e){return e.name.value},h=function(e){switch(e.operation){case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription"}},m=function(e){return void 0!==e.alias?e.alias.value:y(e)},k=function(e){return void 0!==e.selectionSet?e.selectionSet.selections:[]},g=function(t){return t.kind===e.FIELD},b=function(t){return t.kind===e.INLINE_FRAGMENT},w=function(t,r){switch(t.kind){case e.NULL:return null;case e.INT:return parseInt(t.value,10);case e.FLOAT:return parseFloat(t.value);case e.LIST:for(var n=new Array(t.values.length),i=0,o=t.values.length;i<o;i++)n[i]=w(t.values[i],r);return n;case e.OBJECT:for(var u=Object.create(null),a=0,s=t.fields.length;a<s;a++){var c=t.fields[a];u[y(c)]=w(c.value,r)}return u;case e.VARIABLE:var l=r[y(t)];return void 0!==l?l:null;default:return t.value}},O=function(e,t){if(void 0===e.arguments||0===e.arguments.length)return null;for(var r=Object.create(null),n=0,i=e.arguments.length;n<i;n++){var o=e.arguments[n];r[y(o)]=w(o.value,t)}return r},_=function(e,t){if(void 0===e.variableDefinitions)return{};var r=t||{};return e.variableDefinitions.reduce(function(e,t){var n=y(t.variable),i=r[n];if(void 0===i){if(void 0===t.defaultValue)return e;i=w(t.defaultValue,r)}return e[n]=i,e},Object.create(null))},S=function(t){return t.kind===e.FRAGMENT_DEFINITION};function L(t){return t.kind===e.OPERATION_DEFINITION}var x=function(e){return e.definitions.find(L)};function E(e,t){return e[y(t)]=t,e}var A=function(e){return e.definitions.filter(S).reduce(E,{})},F=function(e,t){if(void 0===e.directives)return!0;for(var r=e.directives,n=0,i=r.length;n<i;n++){var o=r[n],u=y(o),a="include"===u;if(a||"skip"===u){var s=o.arguments?o.arguments[0]:null;if(s&&"if"===y(s)){var c=w(s.value,t);if("boolean"==typeof c||null===c)return a?!!c:!c}}}return!0},q=function(e){var t=e.__typename,r=void 0===e.id?e._id:e.id;return null==t?null:"Query"===t||"Mutation"===t||"Subscription"===t?t:null==r?null:t+":"+r},R=function(e,t){return t?e+"("+a(t)+")":e},M=function(e,t){return e+"."+t};function j(){return(j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var T=function(e,t,r,n){return!(!t||t!==(void 0!==(i=e.typeCondition)?y(i):null)&&k(e).some(function(e){if(!g(e))return!1;var t=y(e),i=O(e,n.variables),o=R(t,i);return!n.store.hasField(M(r,o))}));var i},I=function(e,t,r,n){this.typename=e,this.entityKey=t,this.context=n,this.indexStack=[0],this.selectionStack=[r]};I.prototype.next=function(){for(;0!==this.indexStack.length;){var e=this.indexStack[this.indexStack.length-1]++,t=this.selectionStack[this.selectionStack.length-1];if(e>=t.length)this.indexStack.pop(),this.selectionStack.pop();else{var r=t[e];if(F(r,this.context.variables)){if(g(r)){if("__typename"===y(r))continue;return r}var n=b(r)?r:this.context.fragments[y(r)];void 0!==n&&T(n,this.typename,this.entityKey,this.context)&&(this.indexStack.push(0),this.selectionStack.push(k(n)))}}}};var N=function(e,t,r){J(0);var n=P(e,t,r);return H(),n},P=function(e,t,r){var n=x(t.query),i={dependencies:W()},o={variables:_(n,t.variables),fragments:A(t.query),result:i,store:e},u=k(n),a=h(n);return"Query"===a?V(o,a,u,r):D(o,a,u,r),i},Q=function(e,t,r){J(r);var n=x(t.query),i={dependencies:W()},o={variables:_(n,t.variables),fragments:A(t.query),result:i,store:e},u=h(n);if("Mutation"===u)for(var a,s=k(n),c=new I(u,u,s,o);void 0!==(a=c.next());)if(void 0!==a.selectionSet){var l=y(a),f=o.store.optimisticMutations[l];if(void 0!==f){var v=O(a,o.variables),d=k(a),p=f(v||{},o.store,o);K(p)||C(o,p,d)}}return H(),i},U=function(e,t,r){var n=A(t),i=n[Object.keys(n)[0]];if(void 0!==i){var o=k(i),u=j({},r,{__typename:i.typeCondition.name.value}),a=e.keyOfEntity(u);if(a){var s={variables:{},fragments:n,result:{dependencies:W()},store:e};V(s,a,o,u)}}},V=function(e,t,r,n){var i=e.store,o=e.variables,u="Query"===t,a=n.__typename;u||X(t),i.writeField(u?t:a,t,"__typename");for(var s,c=new I(a,t,r,e);void 0!==(s=c.next());){var l=y(s),f=O(s,o),v=M(t,R(l,f)),d=n[m(s)];if(u&&X(v),void 0===s.selectionSet)i.writeRecord(d,v);else if(K(d))i.writeRecord(d,v);else{var p=Y(e,v,s.selectionSet.selections,d);i.writeLink(p,v),i.removeRecord(v)}}},Y=function(e,t,r,n){if(Array.isArray(n)){for(var i=new Array(n.length),o=0,u=n.length;o<u;o++){var a=n[o],s=M(t,""+o),c=Y(e,s,r,a);i[o]=c}return i}if(null===n)return null;var l=e.store.keyOfEntity(n),f=null!==l?l:t;return V(e,f,r,n),f},D=function(e,t,r,n){for(var i,o=new I(t,t,r,e);void 0!==(i=o.next());){var u=y(i),a=m(i),s=O(i,e.variables),c=n[a];if(void 0===i.selectionSet||null===c||K(c)||C(e,c,i.selectionSet.selections),"Mutation"===t||"Subscription"===t){var l=e.store.updates[t][u];void 0!==l&&l(n,s||{},e.store,e)}}},C=function(e,t,r){if(Array.isArray(t)){for(var n=new Array(t.length),i=0,o=t.length;i<o;i++)n[i]=C(e,t[i],r);return n}if(null!==t){var u=e.store.keyOfEntity(t);null!==u?V(e,u,r,t):D(e,t.__typename,r,t)}},K=function(e){return Array.isArray(e)?e.some(K):"object"!=typeof e||null!==e&&"string"!=typeof e.__typename},B=function(e,t,r){var n,i=e.store,o=e.variables,u="Query"===t;if(u)n=t;else{if(X(t),"string"!=typeof(n=i.getField(t,"__typename")))return;i.removeRecord(M(t,R("__typename")))}for(var a,s=new I(n,t,r,e);void 0!==(a=s.next());){var c=y(a),l=O(a,o),f=M(t,R(c,l));if(u&&X(f),void 0===a.selectionSet)i.removeRecord(f);else{var v=k(a),d=i.getLink(f);if(i.removeLink(f),void 0===d)void 0!==i.getRecord(f)&&i.removeRecord(f);else if(Array.isArray(d))for(var p=0,h=d.length;p<h;p++){var m=d[p];null!==m&&B(e,m,v)}else null!==d&&B(e,d,v)}}},G={current:null},z={current:null},J=function(e){G.current=new Set,z.current=e},H=function(){G.current=null,z.current=null},W=function(){return G.current},X=function(e){G.current.add(e)},Z=function(e,t,r){return o(e,t,r,z.current||0)},$=function(e,t){var r=z.current||0;return r?o(e,t,void 0,r):u(e,t)},ee=function(e,n,i,o){this.records=t(r()),this.links=t(r()),this.resolvers=e||{},this.updates={Mutation:n&&n.Mutation||{},Subscription:n&&n.Subscription||{}},this.optimisticMutations=i||{},this.keys=o||{}};ee.prototype.keyOfEntity=function(e){var t=e.__typename;return void 0!==t&&void 0!==this.keys[t]?this.keys[t](e):q(e)},ee.prototype.clearOptimistic=function(e){this.records=n(this.records,e),this.links=n(this.links,e)},ee.prototype.getRecord=function(e){return i(this.records,e)},ee.prototype.removeRecord=function(e){return this.records=$(this.records,e)},ee.prototype.writeRecord=function(e,t){return this.records=Z(this.records,t,e)},ee.prototype.getField=function(e,t,r){var n=M(e,R(t,r));return this.getRecord(n)},ee.prototype.writeField=function(e,t,r,n){var i=M(t,R(r,n));return this.records=Z(this.records,i,e)},ee.prototype.getLink=function(e){return i(this.links,e)},ee.prototype.removeLink=function(e){return this.links=$(this.links,e)},ee.prototype.writeLink=function(e,t){return this.links=Z(this.links,t,e)},ee.prototype.resolveValueOrLink=function(e){var t=this.getRecord(e);return void 0!==t?t:this.getLink(e)||null},ee.prototype.resolve=function(e,t,r){if("string"==typeof e)return X(e),this.resolveValueOrLink(M(e,R(t,r)));var n=this.keyOfEntity(e);return null===n?null:(X(n),this.resolveValueOrLink(M(n,R(t,r))))},ee.prototype.invalidateQuery=function(e,t){!function(e,t){J(0);var r=x(t.query),n={variables:_(r,t.variables),fragments:A(t.query),store:e};B(n,"Query",k(r)),H()}(this,{query:e,variables:t})},ee.prototype.hasField=function(e){return void 0!==this.getRecord(e)||void 0!==this.getLink(e)},ee.prototype.updateQuery=function(e,t){var r=re(this,e),n=t("EMPTY"===r.completeness?null:r.data);null!==n&&P(this,e,n)},ee.prototype.writeFragment=function(e,t){U(this,e,t)};var te=function(e,t){J(0);var r=re(e,t);return H(),r},re=function(e,t){var r=x(t.query),n=Object.create(null),i={completeness:"FULL",dependencies:W(),data:n},o={variables:_(r,t.variables),fragments:A(t.query),result:i,store:e};return i.data=ne(o,"Query",k(r),n),i},ne=function(e,t,r,n){var i="Query"===t;i||X(t);var o=e.store,u=e.variables,a=i?"Query":o.getField(t,"__typename");if("string"!=typeof a)return e.result.completeness="EMPTY",null;n.__typename=a;for(var s,c=new I(a,t,r,e);void 0!==(s=c.next());){var l=y(s),f=O(s,u),v=m(s),d=M(t,R(l,f)),p=o.getRecord(d);i&&X(d);var h=o.resolvers[a];if(void 0!==h&&h.hasOwnProperty(l)){var g=h[l](n,f||{},o,e);if(void 0===s.selectionSet)n[v]=void 0!==g?g:null;else{var b=k(s);n[v]=ie(e,g,d,b,n[v])}}else if(void 0===s.selectionSet)void 0===p?(e.result.completeness="EMPTY",n[v]=null):n[v]=p;else{var w=k(s),_=o.getLink(d);void 0===_?"object"==typeof p&&null!==p?n[v]=p:(e.result.completeness="EMPTY",n[v]=null):n[v]=oe(e,_,w,n[v])}}return n},ie=function(e,t,r,n,i){if(Array.isArray(t))return t.map(function(t,o){var u=void 0!==i?i[o]:void 0,a=M(r,""+o);return ie(e,t,a,n,u)});if(null===t)return null;if(ue(t)){var o=void 0===i?Object.create(null):i,u=("string"==typeof t?t:e.store.keyOfEntity(t))||r,a=ne(e,u,n,o);if(null!==a&&"object"==typeof t)for(r in t)"__typename"!==r&&t.hasOwnProperty(r)&&(a[r]=t[r]);return a}return e.result.completeness="EMPTY",null},oe=function(e,t,r,n){if(Array.isArray(t)){for(var i=new Array(t.length),o=0,u=t.length;o<u;o++)i[o]=oe(e,t[o],r,void 0!==n?n[o]:void 0);return i}if(null===t)return null;var a=void 0===n?Object.create(null):n;return ne(e,t,r,a)},ue=function(e){return"string"==typeof e||"object"==typeof e&&null!==e&&"string"==typeof e.__typename},ae=function(e){return function(t){return{data:t.data,error:t.error,extensions:t.extensions,operation:j({},t.operation,{context:j({},t.operation.context,{meta:j({},t.operation.context.meta,{cacheOutcome:e})})})}}},se=function(e){return j({},e,{query:s(e.query)})},ce=function(e){return e.context.requestPolicy},le=function(e){return"query"===e.operationName},fe=function(e){var t=ce(e);return le(e)&&"network-only"!==t},ve=function(e,t){return j({},e,{context:j({},e.context,{requestPolicy:t})})};function de(e){return fe(e)}function pe(e){return"FULL"!==e.completeness}function ye(e){return e.operation}function he(e){return"FULL"===e.completeness}function me(e){return!fe(e)}var ke=function(e){return function(t){var r=t.forward,n=t.client;e||(e={});var i=new ee(e.resolvers,e.updates,e.optimistic,e.keys),o=new Set,u=new Map,a=Object.create(null),s=function(e,t){var r=new Set;function i(e){return r.add(e)}t.forEach(function(e){var t=a[e];void 0!==t&&(a[e]=[],t.forEach(i))}),r.forEach(function(t){if(t!==e.key){var r=u.get(t);u.delete(t),n.reexecuteOperation(r)}})},y=function(e){if(u=ce(n=e),function(e){return"mutation"===e.operationName}(n)&&"network-only"!==u){var t=e.key,r=Q(i,e,t).dependencies;0!==r.size&&(o.add(t),s(e,r))}var n,u},h=function(e,t){t.forEach(function(t){(a[t]||(a[t]=[])).push(e.key),u.has(e.key)||u.set(e.key,"network-only"===e.context.requestPolicy?ve(e,"cache-and-network"):e)})},m=function(e){var t=ce(e),r=te(i,e),n="cache-only"===t||"FULL"===r.completeness;return n&&h(e,r.dependencies),{operation:e,completeness:n?"FULL":"EMPTY",data:r.data}},k=function(e){var t,r=e.data,n=e.operation;null!=r&&(t=N(i,n,r).dependencies);var u=n.key;o.has(u)&&(o.delete(u),i.clearOptimistic(u)),void 0!==t&&(s(n,t),le(n)&&h(n,t))};function g(e){var t=e.operation;if("cache-and-network"===ce(t)){var r=ve(t,"network-only");n.reexecuteOperation(r)}}return function(e){var t=c(e,l(se),f(y),v),n=c(t,d(de),l(m),v),i=c(n,d(pe),l(ye)),o=c(n,d(he),f(g),l(ae("hit"))),u=c(r(p([c(t,d(me)),i])),f(k),l(ae("miss")));return p([u,o])}}};export{ee as Store,ke as cacheExchange,q as defaultKeyOfEntity,te as query,N as write,U as writeFragment,Q as writeOptimistic};
//# sourceMappingURL=urql-exchange-graphcache.es.min.js.map

@@ -48,2 +48,6 @@ "use strict";

var isInlineFragment = function(node) {
return node.kind === graphql.Kind.INLINE_FRAGMENT;
};
var evaluateValueNode = function(node, vars) {

@@ -61,11 +65,15 @@ switch (node.kind) {

case graphql.Kind.LIST:
return node.values.map(function _ref(v) {
return evaluateValueNode(v, vars);
});
var values = new Array(node.values.length);
for (var i = 0, l = node.values.length; i < l; i++) {
values[i] = evaluateValueNode(node.values[i], vars);
}
return values;
case graphql.Kind.OBJECT:
return node.fields.reduce(function _ref2(obj, field) {
obj[getName(field)] = evaluateValueNode(field.value, vars);
return obj;
}, Object.create(null));
var fields = Object.create(null);
for (var i$1 = 0, l$1 = node.fields.length; i$1 < l$1; i$1++) {
var field = node.fields[i$1];
fields[getName(field)] = evaluateValueNode(field.value, vars);
}
return fields;

@@ -85,6 +93,8 @@ case graphql.Kind.VARIABLE:

}
return node.arguments.reduce(function(args, arg) {
var args = Object.create(null);
for (var i = 0, l = node.arguments.length; i < l; i++) {
var arg = node.arguments[i];
args[getName(arg)] = evaluateValueNode(arg.value, vars);
return args;
}, Object.create(null));
}
return args;
};

@@ -157,2 +167,27 @@

var shouldInclude = function(node, vars) {
if (void 0 === node.directives) {
return !0;
}
var directives = node.directives;
for (var i = 0, l = directives.length; i < l; i++) {
var directive = directives[i];
var name = getName(directive);
var isInclude = "include" === name;
if (!isInclude && "skip" !== name) {
continue;
}
var arg = directive.arguments ? directive.arguments[0] : null;
if (!arg || "if" !== getName(arg)) {
continue;
}
var value = evaluateValueNode(arg.value, vars);
if ("boolean" != typeof value && null !== value) {
continue;
}
return isInclude ? !!value : !value;
}
return !0;
};
var keyOfEntity = function(data) {

@@ -163,5 +198,3 @@ var typeName = data.__typename;

return null;
} else if (function(typeName) {
return "Query" === typeName || "Mutation" === typeName || "Subscription" === typeName;
}(typeName)) {
} else if ("Query" === typeName || "Mutation" === typeName || "Subscription" === typeName) {
return typeName;

@@ -214,38 +247,37 @@ } else if (null == id) {

var forEachFieldNode = function(typename, entityKey, select, ctx, cb) {
select.forEach(function(node) {
if (!function(node, vars) {
if (void 0 === node.directives) {
return !0;
}
return !node.directives.some(function(directive) {
var name = getName(directive);
var isInclude = "include" === name;
if (!isInclude && "skip" !== name) {
return !1;
var SelectionIterator = function SelectionIterator(typename, entityKey, select, ctx) {
this.typename = typename;
this.entityKey = entityKey;
this.context = ctx;
this.indexStack = [ 0 ];
this.selectionStack = [ select ];
};
SelectionIterator.prototype.next = function next() {
while (0 !== this.indexStack.length) {
var index = this.indexStack[this.indexStack.length - 1]++;
var select = this.selectionStack[this.selectionStack.length - 1];
if (index >= select.length) {
this.indexStack.pop();
this.selectionStack.pop();
continue;
} else {
var node = select[index];
if (!shouldInclude(node, this.context.variables)) {
continue;
} else if (!isFieldNode(node)) {
var fragmentNode = !isInlineFragment(node) ? this.context.fragments[getName(node)] : node;
if (void 0 !== fragmentNode && isFragmentMatching(fragmentNode, this.typename, this.entityKey, this.context)) {
this.indexStack.push(0);
this.selectionStack.push(getSelectionSet(fragmentNode));
}
var arg = directive.arguments ? directive.arguments[0] : null;
if (!arg || "if" !== getName(arg)) {
return !1;
}
var value = evaluateValueNode(arg.value, vars);
if ("boolean" != typeof value && null !== value) {
return !1;
}
return isInclude ? !value : !!value;
});
}(node, ctx.variables)) {
return;
} else if (!isFieldNode(node)) {
var fragmentNode = function(node) {
return node.kind === graphql.Kind.INLINE_FRAGMENT;
}(node) ? node : ctx.fragments[getName(node)];
if (void 0 !== fragmentNode && isFragmentMatching(fragmentNode, typename, entityKey, ctx)) {
var fragmentSelect = getSelectionSet(fragmentNode);
forEachFieldNode(typename, entityKey, fragmentSelect, ctx, cb);
continue;
} else if ("__typename" === getName(node)) {
continue;
} else {
return node;
}
} else if ("__typename" !== getName(node)) {
cb(node);
}
});
}
return;
};

@@ -296,3 +328,5 @@

var select = getSelectionSet(operation);
forEachFieldNode(operationName, operationName, select, ctx, function _ref(node) {
var iter = new SelectionIterator(operationName, operationName, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
if (void 0 !== node.selectionSet) {

@@ -310,3 +344,3 @@ var fieldName = getName(node);

}
});
}
}

@@ -352,3 +386,5 @@ clearStoreState();

store.writeField(isQuery ? entityKey : typename, entityKey, "__typename");
forEachFieldNode(typename, entityKey, select, ctx, function(node) {
var iter = new SelectionIterator(typename, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);

@@ -371,3 +407,3 @@ var fieldArgs = getFieldArguments(node, variables);

}
});
}
};

@@ -377,6 +413,10 @@

if (Array.isArray(data)) {
return data.map(function _ref2(item, index) {
var indexKey = joinKeys(parentFieldKey, "" + index);
return writeField(ctx, indexKey, select, item);
});
var newData = new Array(data.length);
for (var i = 0, l = data.length; i < l; i++) {
var item = data[i];
var indexKey = joinKeys(parentFieldKey, "" + i);
var links = writeField(ctx, indexKey, select, item);
newData[i] = links;
}
return newData;
} else if (null === data) {

@@ -393,3 +433,5 @@ return null;

var writeRoot = function(ctx, typename, select, data) {
forEachFieldNode(typename, typename, select, ctx, function(node) {
var iter = new SelectionIterator(typename, typename, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);

@@ -408,3 +450,3 @@ var fieldAlias = getFieldAlias(node);

}
});
}
};

@@ -414,5 +456,7 @@

if (Array.isArray(data)) {
return data.map(function _ref3(item) {
return writeRootField(ctx, item, select);
});
var newData = new Array(data.length);
for (var i = 0, l = data.length; i < l; i++) {
newData[i] = writeRootField(ctx, data[i], select);
}
return newData;
} else if (null === data) {

@@ -436,2 +480,50 @@ return;

var invalidateSelection = function(ctx, entityKey, select) {
var store = ctx.store;
var variables = ctx.variables;
var isQuery = "Query" === entityKey;
var typename;
if (!isQuery) {
addDependency(entityKey);
if ("string" != typeof (typename = store.getField(entityKey, "__typename"))) {
return;
} else {
store.removeRecord(joinKeys(entityKey, keyOfField("__typename")));
}
} else {
typename = entityKey;
}
var iter = new SelectionIterator(typename, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);
var fieldArgs = getFieldArguments(node, variables);
var fieldKey = joinKeys(entityKey, keyOfField(fieldName, fieldArgs));
if (isQuery) {
addDependency(fieldKey);
}
if (void 0 === node.selectionSet) {
store.removeRecord(fieldKey);
} else {
var fieldSelect = getSelectionSet(node);
var link = store.getLink(fieldKey);
store.removeLink(fieldKey);
if (void 0 === link) {
if (void 0 !== store.getRecord(fieldKey)) {
store.removeRecord(fieldKey);
}
} else if (Array.isArray(link)) {
for (var i = 0, l = link.length; i < l; i++) {
var childLink = link[i];
if (null !== childLink) {
invalidateSelection(ctx, childLink, fieldSelect);
}
}
} else if (null !== link) {
invalidateSelection(ctx, link, fieldSelect);
}
}
}
};
var currentDependencies = {

@@ -445,7 +537,2 @@ current: null

var refValue = function(ref) {
"production" !== process.env.NODE_ENV && browser(null !== ref.current, "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.");
return ref.current;
};
var initStoreState = function(optimisticKey) {

@@ -462,16 +549,18 @@ currentDependencies.current = new Set();

var getCurrentDependencies = function() {
return refValue(currentDependencies);
return function(ref) {
"production" !== process.env.NODE_ENV && browser(null !== ref.current, "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.");
return ref.current;
}(currentDependencies);
};
var addDependency = function(dependency) {
refValue(currentDependencies).add(dependency);
currentDependencies.current.add(dependency);
};
var mapSet = function(map, key, value) {
var optimisticKey = refValue(currentOptimisticKey);
return Pessimism.setOptimistic(map, key, value, optimisticKey);
return Pessimism.setOptimistic(map, key, value, currentOptimisticKey.current || 0);
};
var mapRemove = function(map, key) {
var optimisticKey = refValue(currentOptimisticKey);
var optimisticKey = currentOptimisticKey.current || 0;
return optimisticKey ? Pessimism.setOptimistic(map, key, void 0, optimisticKey) : Pessimism.remove(map, key);

@@ -563,2 +652,19 @@ };

Store.prototype.invalidateQuery = function invalidateQuery(dataQuery, variables) {
!function(store, request) {
initStoreState(0);
var operation = getMainOperation(request.query);
var ctx = {
variables: normalizeVariables(operation, request.variables),
fragments: getFragments(request.query),
store: store
};
invalidateSelection(ctx, "Query", getSelectionSet(operation));
clearStoreState();
}(this, {
query: dataQuery,
variables: variables
});
};
Store.prototype.hasField = function hasField(key) {

@@ -568,11 +674,7 @@ return void 0 !== this.getRecord(key) || void 0 !== this.getLink(key);

Store.prototype.updateQuery = function updateQuery(dataQuery, updater) {
var ref = startQuery(this, {
query: dataQuery
});
Store.prototype.updateQuery = function updateQuery(ctx, updater) {
var ref = startQuery(this, ctx);
var output = updater("EMPTY" === ref.completeness ? null : ref.data);
if (null !== output) {
startWrite(this, {
query: dataQuery
}, output);
startWrite(this, ctx, output);
}

@@ -617,3 +719,3 @@ };

var variables = ctx.variables;
var typename = store.getField(entityKey, "__typename");
var typename = isQuery ? "Query" : store.getField(entityKey, "__typename");
if ("string" != typeof typename) {

@@ -624,3 +726,5 @@ ctx.result.completeness = "EMPTY";

data.__typename = typename;
forEachFieldNode(typename, entityKey, select, ctx, function(node) {
var iter = new SelectionIterator(typename, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldName = getName(node);

@@ -664,3 +768,3 @@ var fieldArgs = getFieldArguments(node, variables);

}
});
}
return data;

@@ -698,10 +802,12 @@ };

if (Array.isArray(link)) {
return link.map(function _ref2(childLink, index) {
return resolveLink(ctx, childLink, select, void 0 !== prevData ? prevData[index] : void 0);
});
var newLink = new Array(link.length);
for (var i = 0, l = link.length; i < l; i++) {
newLink[i] = resolveLink(ctx, link[i], select, void 0 !== prevData ? prevData[i] : void 0);
}
return newLink;
} else if (null === link) {
return null;
} else {
var data = void 0 === prevData ? Object.create(null) : prevData;
return readSelection(ctx, link, select, data);
var data$1 = void 0 === prevData ? Object.create(null) : prevData;
return readSelection(ctx, link, select, data$1);
}

@@ -708,0 +814,0 @@ };

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("warning");var e,t=require("graphql"),r=require("pessimism"),n=(e=require("fast-json-stable-stringify"))&&"object"==typeof e&&"default"in e?e.default:e,i=require("urql"),o=require("wonka"),u=function(e){return e.name.value},a=function(e){switch(e.operation){case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription"}},s=function(e){return void 0!==e.alias?e.alias.value:u(e)},c=function(e){return void 0!==e.selectionSet?e.selectionSet.selections:[]},l=function(e){return e.kind===t.Kind.FIELD},f=function(e,r){switch(e.kind){case t.Kind.NULL:return null;case t.Kind.INT:return parseInt(e.value,10);case t.Kind.FLOAT:return parseFloat(e.value);case t.Kind.LIST:return e.values.map(function(e){return f(e,r)});case t.Kind.OBJECT:return e.fields.reduce(function(e,t){return e[u(t)]=f(t.value,r),e},Object.create(null));case t.Kind.VARIABLE:var n=r[u(e)];return void 0!==n?n:null;default:return e.value}},p=function(e,t){return void 0===e.arguments||0===e.arguments.length?null:e.arguments.reduce(function(e,r){return e[u(r)]=f(r.value,t),e},Object.create(null))},v=function(e,t){if(void 0===e.variableDefinitions)return{};var r=t||{};return e.variableDefinitions.reduce(function(e,t){var n=u(t.variable),i=r[n];if(void 0===i){if(void 0===t.defaultValue)return e;i=f(t.defaultValue,r)}return e[n]=i,e},Object.create(null))},d=function(e){return e.kind===t.Kind.FRAGMENT_DEFINITION};function y(e){return e.kind===t.Kind.OPERATION_DEFINITION}var m=function(e){return e.definitions.find(y)};function h(e,t){return e[u(t)]=t,e}var k=function(e){return e.definitions.filter(d).reduce(h,{})},b=function(e){var t=e.__typename,r=void 0===e.id?e._id:e.id;return null==t?null:function(e){return"Query"===e||"Mutation"===e||"Subscription"===e}(t)?t:null==r?null:t+":"+r},g=function(e,t){return t?e+"("+n(t)+")":e},O=function(e,t){return e+"."+t};function w(){return(w=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var _=function(e,r,n,i,o){n.forEach(function(n){if(function(e,t){return void 0===e.directives||!e.directives.some(function(e){var r=u(e),n="include"===r;if(!n&&"skip"!==r)return!1;var i=e.arguments?e.arguments[0]:null;if(!i||"if"!==u(i))return!1;var o=f(i.value,t);return!("boolean"!=typeof o&&null!==o||(n?o:!o))})}(n,i.variables))if(l(n))"__typename"!==u(n)&&o(n);else{var a=function(e){return e.kind===t.Kind.INLINE_FRAGMENT}(n)?n:i.fragments[u(n)];if(void 0!==a&&function(e,t,r,n){return!(!t||t!==(void 0!==(i=e.typeCondition)?u(i):null)&&c(e).some(function(e){if(!l(e))return!1;var t=u(e),i=p(e,n.variables),o=g(t,i);return!n.store.hasField(O(r,o))}));var i}(a,e,r,i)){var s=c(a);_(e,r,s,i,o)}}})},E=function(e,t,r){R(0);var n=L(e,t,r);return N(),n},L=function(e,t,r){var n=m(t.query),i={dependencies:K()},o={variables:v(n,t.variables),fragments:k(t.query),result:i,store:e},u=c(n),s=a(n);return"Query"===s?F(o,s,u,r):S(o,s,u,r),i},q=function(e,t,r){R(r);var n=m(t.query),i={dependencies:K()},o={variables:v(n,t.variables),fragments:k(t.query),result:i,store:e},s=a(n);if("Mutation"===s){var l=c(n);_(s,s,l,o,function(e){if(void 0!==e.selectionSet){var t=u(e),r=o.store.optimisticMutations[t];if(void 0!==r){var n=p(e,o.variables),i=c(e),a=r(n||{},o.store,o);A(a)||j(o,a,i)}}})}return N(),i},x=function(e,t,r){var n=k(t),i=n[Object.keys(n)[0]];if(void 0!==i){var o=c(i),u=w({},r,{__typename:i.typeCondition.name.value}),a=e.keyOfEntity(u);if(a){var s={variables:{},fragments:n,result:{dependencies:K()},store:e};F(s,a,o,u)}}},F=function(e,t,r,n){var i=e.store,o=e.variables,a="Query"===t,c=n.__typename;a||Q(t),i.writeField(a?t:c,t,"__typename"),_(c,t,r,e,function(r){var c=u(r),l=p(r,o),f=O(t,g(c,l)),v=n[s(r)];if(a&&Q(f),void 0===r.selectionSet)i.writeRecord(v,f);else if(A(v))i.writeRecord(v,f);else{var d=M(e,f,r.selectionSet.selections,v);i.writeLink(d,f),i.removeRecord(f)}})},M=function(e,t,r,n){if(Array.isArray(n))return n.map(function(n,i){var o=O(t,""+i);return M(e,o,r,n)});if(null===n)return null;var i=e.store.keyOfEntity(n),o=null!==i?i:t;return F(e,o,r,n),o},S=function(e,t,r,n){_(t,t,r,e,function(r){var i=u(r),o=s(r),a=p(r,e.variables),c=n[o];if(void 0===r.selectionSet||null===c||A(c)||j(e,c,r.selectionSet.selections),"Mutation"===t||"Subscription"===t){var l=e.store.updates[t][i];void 0!==l&&l(n,a||{},e.store,e)}})},j=function(e,t,r){if(Array.isArray(t))return t.map(function(t){return j(e,t,r)});if(null!==t){var n=e.store.keyOfEntity(t);null!==n?F(e,n,r,t):S(e,t.__typename,r,t)}},A=function(e){return Array.isArray(e)?e.some(A):"object"!=typeof e||null!==e&&"string"!=typeof e.__typename},T={current:null},I={current:null},P=function(e){return e.current},R=function(e){T.current=new Set,I.current=e},N=function(){T.current=null,I.current=null},K=function(){return P(T)},Q=function(e){P(T).add(e)},D=function(e,t,n){var i=P(I);return r.setOptimistic(e,t,n,i)},U=function(e,t){var n=P(I);return n?r.setOptimistic(e,t,void 0,n):r.remove(e,t)},V=function(e,t,n,i){this.records=r.asMutable(r.make()),this.links=r.asMutable(r.make()),this.resolvers=e||{},this.updates={Mutation:t&&t.Mutation||{},Subscription:t&&t.Subscription||{}},this.optimisticMutations=n||{},this.keys=i||{}};V.prototype.keyOfEntity=function(e){var t=e.__typename;return void 0!==t&&void 0!==this.keys[t]?this.keys[t](e):b(e)},V.prototype.clearOptimistic=function(e){this.records=r.clearOptimistic(this.records,e),this.links=r.clearOptimistic(this.links,e)},V.prototype.getRecord=function(e){return r.get(this.records,e)},V.prototype.removeRecord=function(e){return this.records=U(this.records,e)},V.prototype.writeRecord=function(e,t){return this.records=D(this.records,t,e)},V.prototype.getField=function(e,t,r){var n=O(e,g(t,r));return this.getRecord(n)},V.prototype.writeField=function(e,t,r,n){var i=O(t,g(r,n));return this.records=D(this.records,i,e)},V.prototype.getLink=function(e){return r.get(this.links,e)},V.prototype.removeLink=function(e){return this.links=U(this.links,e)},V.prototype.writeLink=function(e,t){return this.links=D(this.links,t,e)},V.prototype.resolveValueOrLink=function(e){var t=this.getRecord(e);return void 0!==t?t:this.getLink(e)||null},V.prototype.resolve=function(e,t,r){if("string"==typeof e)return Q(e),this.resolveValueOrLink(O(e,g(t,r)));var n=this.keyOfEntity(e);return null===n?null:(Q(n),this.resolveValueOrLink(O(n,g(t,r))))},V.prototype.hasField=function(e){return void 0!==this.getRecord(e)||void 0!==this.getLink(e)},V.prototype.updateQuery=function(e,t){var r=C(this,{query:e}),n=t("EMPTY"===r.completeness?null:r.data);null!==n&&L(this,{query:e},n)},V.prototype.writeFragment=function(e,t){x(this,e,t)};var Y=function(e,t){R(0);var r=C(e,t);return N(),r},C=function(e,t){var r=m(t.query),n=Object.create(null),i={completeness:"FULL",dependencies:K(),data:n},o={variables:v(r,t.variables),fragments:k(t.query),result:i,store:e};return i.data=B(o,"Query",c(r),n),i},B=function(e,t,r,n){var i="Query"===t;i||Q(t);var o=e.store,a=e.variables,l=o.getField(t,"__typename");return"string"!=typeof l?(e.result.completeness="EMPTY",null):(n.__typename=l,_(l,t,r,e,function(r){var f=u(r),v=p(r,a),d=s(r),y=O(t,g(f,v)),m=o.getRecord(y);i&&Q(y);var h=o.resolvers[l];if(void 0!==h&&h.hasOwnProperty(f)){var k=h[f](n,v||{},o,e);if(void 0===r.selectionSet)n[d]=void 0!==k?k:null;else{var b=c(r);n[d]=G(e,k,y,b,n[d])}}else if(void 0===r.selectionSet)void 0===m?(e.result.completeness="EMPTY",n[d]=null):n[d]=m;else{var w=c(r),_=o.getLink(y);void 0===_?"object"==typeof m&&null!==m?n[d]=m:(e.result.completeness="EMPTY",n[d]=null):n[d]=z(e,_,w,n[d])}}),n)},G=function(e,t,r,n,i){if(Array.isArray(t))return t.map(function(t,o){var u=void 0!==i?i[o]:void 0,a=O(r,""+o);return G(e,t,a,n,u)});if(null===t)return null;if(J(t)){var o=void 0===i?Object.create(null):i,u=("string"==typeof t?t:e.store.keyOfEntity(t))||r,a=B(e,u,n,o);if(null!==a&&"object"==typeof t)for(r in t)"__typename"!==r&&t.hasOwnProperty(r)&&(a[r]=t[r]);return a}return e.result.completeness="EMPTY",null},z=function(e,t,r,n){if(Array.isArray(t))return t.map(function(t,i){return z(e,t,r,void 0!==n?n[i]:void 0)});if(null===t)return null;var i=void 0===n?Object.create(null):n;return B(e,t,r,i)},J=function(e){return"string"==typeof e||"object"==typeof e&&null!==e&&"string"==typeof e.__typename},H=function(e){return function(t){return{data:t.data,error:t.error,extensions:t.extensions,operation:w({},t.operation,{context:w({},t.operation.context,{meta:w({},t.operation.context.meta,{cacheOutcome:e})})})}}},W=function(e){return w({},e,{query:i.formatDocument(e.query)})},X=function(e){return e.context.requestPolicy},Z=function(e){return"query"===e.operationName},$=function(e){var t=X(e);return Z(e)&&"network-only"!==t},ee=function(e,t){return w({},e,{context:w({},e.context,{requestPolicy:t})})};function te(e){return $(e)}function re(e){return"FULL"!==e.completeness}function ne(e){return e.operation}function ie(e){return"FULL"===e.completeness}function oe(e){return!$(e)}exports.Store=V,exports.cacheExchange=function(e){return function(t){var r=t.forward,n=t.client;e||(e={});var i=new V(e.resolvers,e.updates,e.optimistic,e.keys),u=new Set,a=new Map,s=Object.create(null),c=function(e,t){var r=new Set;function i(e){return r.add(e)}t.forEach(function(e){var t=s[e];void 0!==t&&(s[e]=[],t.forEach(i))}),r.forEach(function(t){if(t!==e.key){var r=a.get(t);a.delete(t),n.reexecuteOperation(r)}})},l=function(e){if(o=X(n=e),function(e){return"mutation"===e.operationName}(n)&&"network-only"!==o){var t=e.key,r=q(i,e,t).dependencies;0!==r.size&&(u.add(t),c(e,r))}var n,o},f=function(e,t){t.forEach(function(t){(s[t]||(s[t]=[])).push(e.key),a.has(e.key)||a.set(e.key,"network-only"===e.context.requestPolicy?ee(e,"cache-and-network"):e)})},p=function(e){var t=X(e),r=Y(i,e),n="cache-only"===t||"FULL"===r.completeness;return n&&f(e,r.dependencies),{operation:e,completeness:n?"FULL":"EMPTY",data:r.data}},v=function(e){var t,r=e.data,n=e.operation;null!=r&&(t=E(i,n,r).dependencies);var o=n.key;u.has(o)&&(u.delete(o),i.clearOptimistic(o)),void 0!==t&&(c(n,t),Z(n)&&f(n,t))};function d(e){var t=e.operation;if("cache-and-network"===X(t)){var r=ee(t,"network-only");n.reexecuteOperation(r)}}return function(e){var t=o.pipe(e,o.map(W),o.tap(l),o.share),n=o.pipe(t,o.filter(te),o.map(p),o.share),i=o.pipe(n,o.filter(re),o.map(ne)),u=o.pipe(n,o.filter(ie),o.tap(d),o.map(H("hit"))),a=o.pipe(r(o.merge([o.pipe(t,o.filter(oe)),i])),o.tap(v),o.map(H("miss")));return o.merge([a,u])}}},exports.defaultKeyOfEntity=b,exports.query=Y,exports.write=E,exports.writeFragment=x,exports.writeOptimistic=q;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("warning");var e,t=require("graphql"),r=require("pessimism"),n=(e=require("fast-json-stable-stringify"))&&"object"==typeof e&&"default"in e?e.default:e,i=require("urql"),o=require("wonka"),u=function(e){return e.name.value},a=function(e){switch(e.operation){case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription"}},s=function(e){return void 0!==e.alias?e.alias.value:u(e)},c=function(e){return void 0!==e.selectionSet?e.selectionSet.selections:[]},l=function(e){return e.kind===t.Kind.FIELD},f=function(e){return e.kind===t.Kind.INLINE_FRAGMENT},v=function(e,r){switch(e.kind){case t.Kind.NULL:return null;case t.Kind.INT:return parseInt(e.value,10);case t.Kind.FLOAT:return parseFloat(e.value);case t.Kind.LIST:for(var n=new Array(e.values.length),i=0,o=e.values.length;i<o;i++)n[i]=v(e.values[i],r);return n;case t.Kind.OBJECT:for(var a=Object.create(null),s=0,c=e.fields.length;s<c;s++){var l=e.fields[s];a[u(l)]=v(l.value,r)}return a;case t.Kind.VARIABLE:var f=r[u(e)];return void 0!==f?f:null;default:return e.value}},p=function(e,t){if(void 0===e.arguments||0===e.arguments.length)return null;for(var r=Object.create(null),n=0,i=e.arguments.length;n<i;n++){var o=e.arguments[n];r[u(o)]=v(o.value,t)}return r},d=function(e,t){if(void 0===e.variableDefinitions)return{};var r=t||{};return e.variableDefinitions.reduce(function(e,t){var n=u(t.variable),i=r[n];if(void 0===i){if(void 0===t.defaultValue)return e;i=v(t.defaultValue,r)}return e[n]=i,e},Object.create(null))},y=function(e){return e.kind===t.Kind.FRAGMENT_DEFINITION};function h(e){return e.kind===t.Kind.OPERATION_DEFINITION}var m=function(e){return e.definitions.find(h)};function g(e,t){return e[u(t)]=t,e}var k=function(e){return e.definitions.filter(y).reduce(g,{})},b=function(e,t){if(void 0===e.directives)return!0;for(var r=e.directives,n=0,i=r.length;n<i;n++){var o=r[n],a=u(o),s="include"===a;if(s||"skip"===a){var c=o.arguments?o.arguments[0]:null;if(c&&"if"===u(c)){var l=v(c.value,t);if("boolean"==typeof l||null===l)return s?!!l:!l}}}return!0},O=function(e){var t=e.__typename,r=void 0===e.id?e._id:e.id;return null==t?null:"Query"===t||"Mutation"===t||"Subscription"===t?t:null==r?null:t+":"+r},w=function(e,t){return t?e+"("+n(t)+")":e},x=function(e,t){return e+"."+t};function _(){return(_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var S=function(e,t,r,n){return!(!t||t!==(void 0!==(i=e.typeCondition)?u(i):null)&&c(e).some(function(e){if(!l(e))return!1;var t=u(e),i=p(e,n.variables),o=w(t,i);return!n.store.hasField(x(r,o))}));var i},L=function(e,t,r,n){this.typename=e,this.entityKey=t,this.context=n,this.indexStack=[0],this.selectionStack=[r]};L.prototype.next=function(){for(;0!==this.indexStack.length;){var e=this.indexStack[this.indexStack.length-1]++,t=this.selectionStack[this.selectionStack.length-1];if(e>=t.length)this.indexStack.pop(),this.selectionStack.pop();else{var r=t[e];if(b(r,this.context.variables)){if(l(r)){if("__typename"===u(r))continue;return r}var n=f(r)?r:this.context.fragments[u(r)];void 0!==n&&S(n,this.typename,this.entityKey,this.context)&&(this.indexStack.push(0),this.selectionStack.push(c(n)))}}}};var E=function(e,t,r){Q(0);var n=q(e,t,r);return D(),n},q=function(e,t,r){var n=m(t.query),i={dependencies:U()},o={variables:d(n,t.variables),fragments:k(t.query),result:i,store:e},u=c(n),s=a(n);return"Query"===s?M(o,s,u,r):j(o,s,u,r),i},A=function(e,t,r){Q(r);var n=m(t.query),i={dependencies:U()},o={variables:d(n,t.variables),fragments:k(t.query),result:i,store:e},s=a(n);if("Mutation"===s)for(var l,f=c(n),v=new L(s,s,f,o);void 0!==(l=v.next());)if(void 0!==l.selectionSet){var y=u(l),h=o.store.optimisticMutations[y];if(void 0!==h){var g=p(l,o.variables),b=c(l),O=h(g||{},o.store,o);I(O)||T(o,O,b)}}return D(),i},F=function(e,t,r){var n=k(t),i=n[Object.keys(n)[0]];if(void 0!==i){var o=c(i),u=_({},r,{__typename:i.typeCondition.name.value}),a=e.keyOfEntity(u);if(a){var s={variables:{},fragments:n,result:{dependencies:U()},store:e};M(s,a,o,u)}}},M=function(e,t,r,n){var i=e.store,o=e.variables,a="Query"===t,c=n.__typename;a||V(t),i.writeField(a?t:c,t,"__typename");for(var l,f=new L(c,t,r,e);void 0!==(l=f.next());){var v=u(l),d=p(l,o),y=x(t,w(v,d)),h=n[s(l)];if(a&&V(y),void 0===l.selectionSet)i.writeRecord(h,y);else if(I(h))i.writeRecord(h,y);else{var m=R(e,y,l.selectionSet.selections,h);i.writeLink(m,y),i.removeRecord(y)}}},R=function(e,t,r,n){if(Array.isArray(n)){for(var i=new Array(n.length),o=0,u=n.length;o<u;o++){var a=n[o],s=x(t,""+o),c=R(e,s,r,a);i[o]=c}return i}if(null===n)return null;var l=e.store.keyOfEntity(n),f=null!==l?l:t;return M(e,f,r,n),f},j=function(e,t,r,n){for(var i,o=new L(t,t,r,e);void 0!==(i=o.next());){var a=u(i),c=s(i),l=p(i,e.variables),f=n[c];if(void 0===i.selectionSet||null===f||I(f)||T(e,f,i.selectionSet.selections),"Mutation"===t||"Subscription"===t){var v=e.store.updates[t][a];void 0!==v&&v(n,l||{},e.store,e)}}},T=function(e,t,r){if(Array.isArray(t)){for(var n=new Array(t.length),i=0,o=t.length;i<o;i++)n[i]=T(e,t[i],r);return n}if(null!==t){var u=e.store.keyOfEntity(t);null!==u?M(e,u,r,t):j(e,t.__typename,r,t)}},I=function(e){return Array.isArray(e)?e.some(I):"object"!=typeof e||null!==e&&"string"!=typeof e.__typename},P=function(e,t,r){var n,i=e.store,o=e.variables,a="Query"===t;if(a)n=t;else{if(V(t),"string"!=typeof(n=i.getField(t,"__typename")))return;i.removeRecord(x(t,w("__typename")))}for(var s,l=new L(n,t,r,e);void 0!==(s=l.next());){var f=u(s),v=p(s,o),d=x(t,w(f,v));if(a&&V(d),void 0===s.selectionSet)i.removeRecord(d);else{var y=c(s),h=i.getLink(d);if(i.removeLink(d),void 0===h)void 0!==i.getRecord(d)&&i.removeRecord(d);else if(Array.isArray(h))for(var m=0,g=h.length;m<g;m++){var k=h[m];null!==k&&P(e,k,y)}else null!==h&&P(e,h,y)}}},K={current:null},N={current:null},Q=function(e){K.current=new Set,N.current=e},D=function(){K.current=null,N.current=null},U=function(){return K.current},V=function(e){K.current.add(e)},Y=function(e,t,n){return r.setOptimistic(e,t,n,N.current||0)},C=function(e,t){var n=N.current||0;return n?r.setOptimistic(e,t,void 0,n):r.remove(e,t)},B=function(e,t,n,i){this.records=r.asMutable(r.make()),this.links=r.asMutable(r.make()),this.resolvers=e||{},this.updates={Mutation:t&&t.Mutation||{},Subscription:t&&t.Subscription||{}},this.optimisticMutations=n||{},this.keys=i||{}};B.prototype.keyOfEntity=function(e){var t=e.__typename;return void 0!==t&&void 0!==this.keys[t]?this.keys[t](e):O(e)},B.prototype.clearOptimistic=function(e){this.records=r.clearOptimistic(this.records,e),this.links=r.clearOptimistic(this.links,e)},B.prototype.getRecord=function(e){return r.get(this.records,e)},B.prototype.removeRecord=function(e){return this.records=C(this.records,e)},B.prototype.writeRecord=function(e,t){return this.records=Y(this.records,t,e)},B.prototype.getField=function(e,t,r){var n=x(e,w(t,r));return this.getRecord(n)},B.prototype.writeField=function(e,t,r,n){var i=x(t,w(r,n));return this.records=Y(this.records,i,e)},B.prototype.getLink=function(e){return r.get(this.links,e)},B.prototype.removeLink=function(e){return this.links=C(this.links,e)},B.prototype.writeLink=function(e,t){return this.links=Y(this.links,t,e)},B.prototype.resolveValueOrLink=function(e){var t=this.getRecord(e);return void 0!==t?t:this.getLink(e)||null},B.prototype.resolve=function(e,t,r){if("string"==typeof e)return V(e),this.resolveValueOrLink(x(e,w(t,r)));var n=this.keyOfEntity(e);return null===n?null:(V(n),this.resolveValueOrLink(x(n,w(t,r))))},B.prototype.invalidateQuery=function(e,t){!function(e,t){Q(0);var r=m(t.query),n={variables:d(r,t.variables),fragments:k(t.query),store:e};P(n,"Query",c(r)),D()}(this,{query:e,variables:t})},B.prototype.hasField=function(e){return void 0!==this.getRecord(e)||void 0!==this.getLink(e)},B.prototype.updateQuery=function(e,t){var r=z(this,e),n=t("EMPTY"===r.completeness?null:r.data);null!==n&&q(this,e,n)},B.prototype.writeFragment=function(e,t){F(this,e,t)};var G=function(e,t){Q(0);var r=z(e,t);return D(),r},z=function(e,t){var r=m(t.query),n=Object.create(null),i={completeness:"FULL",dependencies:U(),data:n},o={variables:d(r,t.variables),fragments:k(t.query),result:i,store:e};return i.data=J(o,"Query",c(r),n),i},J=function(e,t,r,n){var i="Query"===t;i||V(t);var o=e.store,a=e.variables,l=i?"Query":o.getField(t,"__typename");if("string"!=typeof l)return e.result.completeness="EMPTY",null;n.__typename=l;for(var f,v=new L(l,t,r,e);void 0!==(f=v.next());){var d=u(f),y=p(f,a),h=s(f),m=x(t,w(d,y)),g=o.getRecord(m);i&&V(m);var k=o.resolvers[l];if(void 0!==k&&k.hasOwnProperty(d)){var b=k[d](n,y||{},o,e);if(void 0===f.selectionSet)n[h]=void 0!==b?b:null;else{var O=c(f);n[h]=H(e,b,m,O,n[h])}}else if(void 0===f.selectionSet)void 0===g?(e.result.completeness="EMPTY",n[h]=null):n[h]=g;else{var _=c(f),S=o.getLink(m);void 0===S?"object"==typeof g&&null!==g?n[h]=g:(e.result.completeness="EMPTY",n[h]=null):n[h]=W(e,S,_,n[h])}}return n},H=function(e,t,r,n,i){if(Array.isArray(t))return t.map(function(t,o){var u=void 0!==i?i[o]:void 0,a=x(r,""+o);return H(e,t,a,n,u)});if(null===t)return null;if(X(t)){var o=void 0===i?Object.create(null):i,u=("string"==typeof t?t:e.store.keyOfEntity(t))||r,a=J(e,u,n,o);if(null!==a&&"object"==typeof t)for(r in t)"__typename"!==r&&t.hasOwnProperty(r)&&(a[r]=t[r]);return a}return e.result.completeness="EMPTY",null},W=function(e,t,r,n){if(Array.isArray(t)){for(var i=new Array(t.length),o=0,u=t.length;o<u;o++)i[o]=W(e,t[o],r,void 0!==n?n[o]:void 0);return i}if(null===t)return null;var a=void 0===n?Object.create(null):n;return J(e,t,r,a)},X=function(e){return"string"==typeof e||"object"==typeof e&&null!==e&&"string"==typeof e.__typename},Z=function(e){return function(t){return{data:t.data,error:t.error,extensions:t.extensions,operation:_({},t.operation,{context:_({},t.operation.context,{meta:_({},t.operation.context.meta,{cacheOutcome:e})})})}}},$=function(e){return _({},e,{query:i.formatDocument(e.query)})},ee=function(e){return e.context.requestPolicy},te=function(e){return"query"===e.operationName},re=function(e){var t=ee(e);return te(e)&&"network-only"!==t},ne=function(e,t){return _({},e,{context:_({},e.context,{requestPolicy:t})})};function ie(e){return re(e)}function oe(e){return"FULL"!==e.completeness}function ue(e){return e.operation}function ae(e){return"FULL"===e.completeness}function se(e){return!re(e)}exports.Store=B,exports.cacheExchange=function(e){return function(t){var r=t.forward,n=t.client;e||(e={});var i=new B(e.resolvers,e.updates,e.optimistic,e.keys),u=new Set,a=new Map,s=Object.create(null),c=function(e,t){var r=new Set;function i(e){return r.add(e)}t.forEach(function(e){var t=s[e];void 0!==t&&(s[e]=[],t.forEach(i))}),r.forEach(function(t){if(t!==e.key){var r=a.get(t);a.delete(t),n.reexecuteOperation(r)}})},l=function(e){if(o=ee(n=e),function(e){return"mutation"===e.operationName}(n)&&"network-only"!==o){var t=e.key,r=A(i,e,t).dependencies;0!==r.size&&(u.add(t),c(e,r))}var n,o},f=function(e,t){t.forEach(function(t){(s[t]||(s[t]=[])).push(e.key),a.has(e.key)||a.set(e.key,"network-only"===e.context.requestPolicy?ne(e,"cache-and-network"):e)})},v=function(e){var t=ee(e),r=G(i,e),n="cache-only"===t||"FULL"===r.completeness;return n&&f(e,r.dependencies),{operation:e,completeness:n?"FULL":"EMPTY",data:r.data}},p=function(e){var t,r=e.data,n=e.operation;null!=r&&(t=E(i,n,r).dependencies);var o=n.key;u.has(o)&&(u.delete(o),i.clearOptimistic(o)),void 0!==t&&(c(n,t),te(n)&&f(n,t))};function d(e){var t=e.operation;if("cache-and-network"===ee(t)){var r=ne(t,"network-only");n.reexecuteOperation(r)}}return function(e){var t=o.pipe(e,o.map($),o.tap(l),o.share),n=o.pipe(t,o.filter(ie),o.map(v),o.share),i=o.pipe(n,o.filter(oe),o.map(ue)),u=o.pipe(n,o.filter(ae),o.tap(d),o.map(Z("hit"))),a=o.pipe(r(o.merge([o.pipe(t,o.filter(se)),i])),o.tap(p),o.map(Z("miss")));return o.merge([a,u])}}},exports.defaultKeyOfEntity=O,exports.query=G,exports.write=E,exports.writeFragment=F,exports.writeOptimistic=A;
//# sourceMappingURL=urql-exchange-graphcache.min.js.map
{
"name": "@urql/exchange-graphcache",
"version": "1.0.0-beta.3",
"version": "1.0.0-beta.4",
"description": "A normalized and configurable cache exchange for urql",
"repository": "https://github.com/kitten/urql-exchange-graphcache",
"repository": "https://github.com/FormidableLabs/urql-exchange-graphcache",
"keywords": [
"normalized cache",
"cache",
"urql",
"graphql",
"exchange"
],
"bugs": {

@@ -72,3 +79,3 @@ "url": "https://github.com/FormidableLabs/urql-exchange-graphcache/issues"

"fast-json-stable-stringify": "^2.0.0",
"pessimism": "^1.1.0",
"pessimism": "^1.1.1",
"tiny-invariant": "^1.0.6",

@@ -75,0 +82,0 @@ "warning": "^4.0.3",

@@ -53,9 +53,5 @@ <h2 align="center">@urql/exchange-graphcache</h2>

```js
import {
createClient,
dedupExchange,
fetchExchange,
} from 'urql';
import { createClient, dedupExchange, fetchExchange } from 'urql';
import { cacheExchange } from '@urql/exchange-graphcache;
import { cacheExchange } from '@urql/exchange-graphcache';

@@ -67,3 +63,5 @@ const client = createClient({

// Replace the default cacheExchange with the new one
cacheExchange({ /* config */ }),
cacheExchange({
/* config */
}),
fetchExchange,

@@ -70,0 +68,0 @@ ],

@@ -55,27 +55,24 @@ import invariant from 'invariant';

// Finds any @include or @skip directive that forces the node to be skipped
const isSkipped = node.directives.some(directive => {
const { directives } = node;
for (let i = 0, l = directives.length; i < l; i++) {
const directive = directives[i];
const name = getName(directive);
// Ignore other directives
const isInclude = name === 'include';
if (!isInclude && name !== 'skip') {
return false;
}
if (!isInclude && name !== 'skip') continue;
// Get the first argument and expect it to be named "if"
const arg = directive.arguments ? directive.arguments[0] : null;
if (!arg || getName(arg) !== 'if') {
return false;
}
if (!arg || getName(arg) !== 'if') continue;
const value = evaluateValueNode(arg.value, vars);
if (typeof value !== 'boolean' && value !== null) {
return false;
}
if (typeof value !== 'boolean' && value !== null) continue;
// Return whether this directive forces us to skip
// `@include(if: false)` or `@skip(if: true)`
return isInclude ? !value : !!value;
});
return isInclude ? !!value : !value;
}
return !isSkipped;
return true;
};

@@ -16,8 +16,14 @@ import { FieldNode, ValueNode, OperationDefinitionNode, Kind } from 'graphql';

case Kind.LIST:
return node.values.map(v => evaluateValueNode(v, vars));
const values = new Array(node.values.length);
for (let i = 0, l = node.values.length; i < l; i++)
values[i] = evaluateValueNode(node.values[i], vars);
return values;
case Kind.OBJECT:
return node.fields.reduce((obj, field) => {
obj[getName(field)] = evaluateValueNode(field.value, vars);
return obj;
}, Object.create(null));
const fields = Object.create(null);
for (let i = 0, l = node.fields.length; i < l; i++) {
const field = node.fields[i];
fields[getName(field)] = evaluateValueNode(field.value, vars);
}
return fields;
case Kind.VARIABLE:

@@ -40,6 +46,9 @@ const varValue = vars[getName(node)];

return node.arguments.reduce((args, arg) => {
const args = Object.create(null);
for (let i = 0, l = node.arguments.length; i < l; i++) {
const arg = node.arguments[i];
args[getName(arg)] = evaluateValueNode(arg.value, vars);
return args;
}, Object.create(null));
}
return args;
};

@@ -46,0 +55,0 @@

import stringify from 'fast-json-stable-stringify';
import { Variables, KeyGenerator, Data } from '../types';
export const isOperation = (typeName: string) =>
typeName === 'Query' ||
typeName === 'Mutation' ||
typeName === 'Subscription';
export const keyOfEntity: KeyGenerator = (data: Data): null | string => {

@@ -15,3 +10,7 @@ const { __typename: typeName } = data;

return null;
} else if (isOperation(typeName)) {
} else if (
typeName === 'Query' ||
typeName === 'Mutation' ||
typeName === 'Subscription'
) {
return typeName;

@@ -18,0 +17,0 @@ } else if (id === null || id === undefined) {

@@ -32,3 +32,3 @@ import warning from 'warning';

import { forEachFieldNode } from './shared';
import { SelectionIterator } from './shared';
import { joinKeys, keyOfField } from '../helpers';

@@ -90,3 +90,3 @@

// Get the __typename field for a given entity to check that it exists
const typename = store.getField(entityKey, '__typename');
const typename = isQuery ? 'Query' : store.getField(entityKey, '__typename');
if (typeof typename !== 'string') {

@@ -99,3 +99,6 @@ ctx.result.completeness = 'EMPTY';

forEachFieldNode(typename, entityKey, select, ctx, node => {
const iter = new SelectionIterator(typename, entityKey, select, ctx);
let node;
while ((node = iter.next()) !== undefined) {
// Derive the needed data from our node.

@@ -167,3 +170,3 @@ const fieldName = getName(node);

}
});
}

@@ -229,7 +232,9 @@ return data;

if (Array.isArray(link)) {
// @ts-ignore: Link cannot be expressed as a recursive type
return link.map((childLink, index) => {
const data = prevData !== undefined ? prevData[index] : undefined;
return resolveLink(ctx, childLink, select, data);
});
const newLink = new Array(link.length);
for (let i = 0, l = link.length; i < l; i++) {
const data = prevData !== undefined ? prevData[i] : undefined;
newLink[i] = resolveLink(ctx, link[i], select, data);
}
return newLink;
} else if (link === null) {

@@ -236,0 +241,0 @@ return null;

@@ -44,29 +44,63 @@ import { FieldNode, InlineFragmentNode, FragmentDefinitionNode } from 'graphql';

export const forEachFieldNode = (
typename: void | string,
entityKey: string,
select: SelectionSet,
ctx: Context,
cb: (node: FieldNode) => void
) => {
select.forEach(node => {
if (!shouldInclude(node, ctx.variables)) {
// Directives instruct this node to be skipped
return;
} else if (!isFieldNode(node)) {
// A fragment is either referred to by FragmentSpread or inline
const fragmentNode = isInlineFragment(node)
? node
: ctx.fragments[getName(node)];
if (
fragmentNode !== undefined &&
isFragmentMatching(fragmentNode, typename, entityKey, ctx)
) {
const fragmentSelect = getSelectionSet(fragmentNode);
forEachFieldNode(typename, entityKey, fragmentSelect, ctx, cb);
export class SelectionIterator {
typename: void | string;
entityKey: string;
indexStack: number[];
context: Context;
selectionStack: SelectionSet[];
constructor(
typename: void | string,
entityKey: string,
select: SelectionSet,
ctx: Context
) {
this.typename = typename;
this.entityKey = entityKey;
this.context = ctx;
this.indexStack = [0];
this.selectionStack = [select];
}
next(): void | FieldNode {
while (this.indexStack.length !== 0) {
const index = this.indexStack[this.indexStack.length - 1]++;
const select = this.selectionStack[this.selectionStack.length - 1];
if (index >= select.length) {
this.indexStack.pop();
this.selectionStack.pop();
continue;
} else {
const node = select[index];
if (!shouldInclude(node, this.context.variables)) {
continue;
} else if (!isFieldNode(node)) {
// A fragment is either referred to by FragmentSpread or inline
const fragmentNode = !isInlineFragment(node)
? this.context.fragments[getName(node)]
: node;
if (
fragmentNode !== undefined &&
isFragmentMatching(
fragmentNode,
this.typename,
this.entityKey,
this.context
)
) {
this.indexStack.push(0);
this.selectionStack.push(getSelectionSet(fragmentNode));
}
continue;
} else if (getName(node) === '__typename') {
continue;
} else {
return node;
}
}
} else if (getName(node) !== '__typename') {
cb(node);
}
});
};
return undefined;
}
}

@@ -35,3 +35,3 @@ import warning from 'warning';

import { forEachFieldNode } from './shared';
import { SelectionIterator } from './shared';
import { joinKeys, keyOfField } from '../helpers';

@@ -112,3 +112,11 @@

const select = getSelectionSet(operation);
forEachFieldNode(operationName, operationName, select, ctx, node => {
const iter = new SelectionIterator(
operationName,
operationName,
select,
ctx
);
let node;
while ((node = iter.next()) !== undefined) {
if (node.selectionSet !== undefined) {

@@ -126,3 +134,3 @@ const fieldName = getName(node);

}
});
}
}

@@ -187,3 +195,6 @@

forEachFieldNode(typename, entityKey, select, ctx, node => {
const iter = new SelectionIterator(typename, entityKey, select, ctx);
let node;
while ((node = iter.next()) !== undefined) {
const fieldName = getName(node);

@@ -216,3 +227,3 @@ const fieldArgs = getFieldArguments(node, variables);

}
});
}
};

@@ -227,10 +238,14 @@

if (Array.isArray(data)) {
return data.map((item, index) => {
const newData = new Array(data.length);
for (let i = 0, l = data.length; i < l; i++) {
const item = data[i];
// Append the current index to the parentFieldKey fallback
const indexKey = joinKeys(parentFieldKey, `${index}`);
const indexKey = joinKeys(parentFieldKey, `${i}`);
// Recursively write array data
const links = writeField(ctx, indexKey, select, item);
// Link cannot be expressed as a recursive type
return links as string | null;
});
newData[i] = links as string | null;
}
return newData;
} else if (data === null) {

@@ -269,3 +284,6 @@ return null;

) => {
forEachFieldNode(typename, typename, select, ctx, node => {
const iter = new SelectionIterator(typename, typename, select, ctx);
let node;
while ((node = iter.next()) !== undefined) {
const fieldName = getName(node);

@@ -293,3 +311,3 @@ const fieldAlias = getFieldAlias(node);

}
});
}
};

@@ -304,3 +322,6 @@

if (Array.isArray(data)) {
return data.map(item => writeRootField(ctx, item, select));
const newData = new Array(data.length);
for (let i = 0, l = data.length; i < l; i++)
newData[i] = writeRootField(ctx, data[i], select);
return newData;
} else if (data === null) {

@@ -307,0 +328,0 @@ return;

@@ -14,2 +14,12 @@ import gql from 'graphql-tag';

const Appointment = gql`
query appointment($id: String) {
appointment(id: $id) {
__typename
id
info
}
}
`;
const Todos = gql`

@@ -103,3 +113,3 @@ query {

it('should resolve witha key as first argument', () => {
it('should resolve with a key as first argument', () => {
const authorResult = store.resolve('Author:0', 'name');

@@ -126,2 +136,50 @@ expect(authorResult).toBe('Jovi');

it('should be able to invalidate data (one relation key)', () => {
let { data } = query(store, { query: Todos });
expect((data as any).todos).toHaveLength(3);
expect(store.getRecord('Todo:0.text')).toBe('Go to the shops');
initStoreState(0);
store.invalidateQuery(Todos);
clearStoreState();
({ data } = query(store, { query: Todos }));
expect((data as any).todos).toEqual(null);
expect(store.getRecord('Todo:0.text')).toBe(undefined);
});
it('should be able to invalidate data with arguments', () => {
initStoreState(0);
write(
store,
{
query: Appointment,
variables: { id: '1' },
},
{
__typename: 'Query',
appointment: {
__typename: 'Appointment',
id: '1',
info: 'urql meeting',
},
}
);
clearStoreState();
let { data } = query(store, {
query: Appointment,
variables: { id: '1' },
});
expect((data as any).appointment.info).toBe('urql meeting');
expect(store.getRecord('Appointment:1.info')).toBe('urql meeting');
initStoreState(0);
store.invalidateQuery(Appointment, { id: '1' });
clearStoreState();
({ data } = query(store, {
query: Appointment,
variables: { id: '1' },
}));
expect((data as any).appointment).toEqual(null);
expect(store.getRecord('Appointment:1.info')).toBe(undefined);
});
it('should be able to update a fragment', () => {

@@ -166,3 +224,3 @@ initStoreState(0);

initStoreState(0);
store.updateQuery(Todos, data => ({
store.updateQuery({ query: Todos }, data => ({
...data,

@@ -205,2 +263,45 @@ todos: [

it('should be able to update a query with variables', () => {
initStoreState(0);
write(
store,
{
query: Appointment,
variables: { id: '1' },
},
{
__typename: 'Query',
appointment: {
__typename: 'Appointment',
id: '1',
info: 'urql meeting',
},
}
);
clearStoreState();
initStoreState(0);
store.updateQuery({ query: Appointment, variables: { id: '1' } }, data => ({
...data,
appointment: {
...data.appointment,
info: 'urql meeting revisited',
},
}));
clearStoreState();
const { data: result } = query(store, {
query: Appointment,
variables: { id: '1' },
});
expect(result).toEqual({
__typename: 'Query',
appointment: {
id: '1',
info: 'urql meeting revisited',
__typename: 'Appointment',
},
});
clearStoreState();
});
it('should be able to optimistically mutate', () => {

@@ -207,0 +308,0 @@ const { dependencies } = writeOptimistic(

@@ -20,2 +20,3 @@ import invariant from 'invariant';

import { writeFragment, startWrite } from './operations/write';
import { invalidate } from './operations/invalidate';

@@ -57,7 +58,7 @@ interface Ref<T> {

export const addDependency = (dependency: string) => {
refValue(currentDependencies).add(dependency);
(currentDependencies.current as Set<string>).add(dependency);
};
const mapSet = <T>(map: Pessimism.Map<T>, key: string, value: T) => {
const optimisticKey = refValue(currentOptimisticKey);
const optimisticKey = currentOptimisticKey.current || 0;
return Pessimism.setOptimistic(map, key, value, optimisticKey);

@@ -68,3 +69,3 @@ };

const mapRemove = <T>(map: Pessimism.Map<T>, key: string) => {
const optimisticKey = refValue(currentOptimisticKey);
const optimisticKey = currentOptimisticKey.current || 0;
return optimisticKey

@@ -184,2 +185,6 @@ ? Pessimism.setOptimistic(map, key, undefined, optimisticKey)

invalidateQuery(dataQuery: DocumentNode, variables: Variables) {
invalidate(this, { query: dataQuery, variables });
}
hasField(key: string): boolean {

@@ -190,10 +195,10 @@ return this.getRecord(key) !== undefined || this.getLink(key) !== undefined;

updateQuery(
dataQuery: DocumentNode,
ctx: { query: DocumentNode; variables?: Variables },
updater: (data: Data | null) => null | Data
): void {
const { data, completeness } = startQuery(this, { query: dataQuery });
const { data, completeness } = startQuery(this, ctx);
const input = completeness === 'EMPTY' ? null : data;
const output = updater(input);
if (output !== null) {
startWrite(this, { query: dataQuery }, output);
startWrite(this, ctx, output);
}

@@ -200,0 +205,0 @@ }

@@ -181,3 +181,3 @@ import gql from 'graphql-tag';

toggleTodo: function toggleTodo(result, _, cache) {
cache.updateQuery(Todos, data => {
cache.updateQuery({ query: Todos }, data => {
if (

@@ -184,0 +184,0 @@ data &&

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc