Socket
Socket
Sign inDemoInstall

@urql/exchange-graphcache

Package Overview
Dependencies
Maintainers
3
Versions
294
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@urql/exchange-graphcache - npm Package Compare versions

Comparing version 1.0.0-beta.4 to 1.0.0-rc.0

2

dist/types/operations/index.d.ts

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

export { query } from './query';
export { query, readOperation } from './query';
export { write, writeOptimistic, writeFragment } from './write';

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

import { Data, Completeness, OperationRequest } from '../types';
import { Fragments, Variables, Data, Completeness, OperationRequest } from '../types';
import { Store } from '../store';

@@ -8,4 +8,13 @@ export interface QueryResult {

}
interface Context {
result: QueryResult;
store: Store;
variables: Variables;
fragments: Fragments;
}
/** Reads a request entirely from the store */
export declare const query: (store: Store, request: OperationRequest) => QueryResult;
export declare const startQuery: (store: Store, request: OperationRequest) => QueryResult;
export declare const readOperation: (store: Store, request: OperationRequest, data: Data) => QueryResult;
export declare const readRoot: (ctx: Context, entityKey: string, select: readonly import("graphql").SelectionNode[], originalData: Data) => Data;
export {};
import { FieldNode } from 'graphql';
import { Fragments, Variables, SelectionSet } from '../types';
import { Fragments, Variables, SelectionSet, Scalar } from '../types';
import { Store } from '../store';

@@ -18,2 +18,3 @@ interface Context {

}
export declare const isScalar: (x: any) => x is string | number | boolean | import("../types").ScalarObject | Scalar[] | null;
export {};

@@ -273,2 +273,9 @@ import warning from "warning";

var isScalar = function(x) {
if (Array.isArray(x)) {
return x.some(isScalar);
}
return "object" != typeof x || null !== x && "string" != typeof x.__typename;
};
var write = function(store, request, data) {

@@ -386,3 +393,4 @@ initStoreState(0);

} else if (!isScalar(fieldValue)) {
var link = writeField(ctx, fieldKey, node.selectionSet.selections, fieldValue);
var fieldSelect = getSelectionSet(node);
var link = writeField(ctx, fieldKey, fieldSelect, fieldValue);
store.writeLink(link, fieldKey);

@@ -426,3 +434,4 @@ store.removeRecord(fieldKey);

if (void 0 !== node.selectionSet && null !== fieldValue && !isScalar(fieldValue)) {
writeRootField(ctx, fieldValue, node.selectionSet.selections);
var fieldSelect = getSelectionSet(node);
writeRootField(ctx, fieldValue, fieldSelect);
}

@@ -456,9 +465,2 @@ if ("Mutation" === typename || "Subscription" === typename) {

var isScalar = function(x) {
if (Array.isArray(x)) {
return x.some(isScalar);
}
return "object" != typeof x || null !== x && "string" != typeof x.__typename;
};
var invalidateSelection = function(ctx, entityKey, select) {

@@ -691,2 +693,60 @@ var store = ctx.store;

var readOperation = function(store, request, data) {
initStoreState(0);
var operation = getMainOperation(request.query);
var result = {
completeness: "FULL",
dependencies: getCurrentDependencies(),
data: null
};
var ctx = {
variables: normalizeVariables(operation, request.variables),
fragments: getFragments(request.query),
result: result,
store: store
};
result.data = readRoot(ctx, getOperationName(operation), getSelectionSet(operation), data);
clearStoreState();
return result;
};
var readRoot = function(ctx, entityKey, select, originalData) {
if ("string" != typeof originalData.__typename) {
return originalData;
}
var data = Object.create(null);
data.__typename = originalData.__typename;
var iter = new SelectionIterator(entityKey, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldAlias = getFieldAlias(node);
var fieldValue = originalData[fieldAlias];
if (void 0 !== node.selectionSet && null !== fieldValue && !isScalar(fieldValue)) {
data[fieldAlias] = readRootField(ctx, getSelectionSet(node), fieldValue);
} else {
data[fieldAlias] = fieldValue;
}
}
return data;
};
var readRootField = function(ctx, select, originalData) {
if (Array.isArray(originalData)) {
var newData = new Array(originalData.length);
for (var i = 0, l = originalData.length; i < l; i++) {
newData[i] = readRootField(ctx, select, originalData[i]);
}
return newData;
} else if (null === originalData) {
return null;
}
var entityKey = ctx.store.keyOfEntity(originalData);
if (null !== entityKey) {
var data = Object.create(null);
return readSelection(ctx, entityKey, select, data);
} else {
return readRoot(ctx, originalData.__typename, select, originalData);
}
};
var readSelection = function(ctx, entityKey, select, data) {

@@ -718,2 +778,5 @@ var isQuery = "Query" === entityKey;

if (void 0 !== resolvers && resolvers.hasOwnProperty(fieldName)) {
if (void 0 !== fieldValue) {
data[fieldAlias] = fieldValue;
}
var resolverValue = resolvers[fieldName](data, fieldArgs || {}, store, ctx);

@@ -926,9 +989,8 @@ if (void 0 === node.selectionSet) {

};
var updateCacheWithResult = function(ref) {
var data = ref.data;
var operation = ref.operation;
var dependencies;
if (null != data) {
dependencies = write(store, operation, data).dependencies;
}
var updateCacheWithResult = function(result) {
var operation = result.operation;
var error = result.error;
var extensions = result.extensions;
var isQuery = isQueryOperation(operation);
var data = result.data;
var key = operation.key;

@@ -939,8 +1001,25 @@ if (optimisticKeys.has(key)) {

}
if (void 0 !== dependencies) {
processDependencies(operation, dependencies);
if (isQueryOperation(operation)) {
updateDependencies(operation, dependencies);
var writeDependencies, queryDependencies;
if (null != data) {
writeDependencies = write(store, operation, data).dependencies;
if (isQuery) {
var queryResult = query(store, operation);
data = queryResult.data;
queryDependencies = queryResult.dependencies;
} else {
data = readOperation(store, operation, data).data;
}
}
if (void 0 !== writeDependencies) {
processDependencies(result.operation, writeDependencies);
}
if (isQuery && void 0 !== queryDependencies) {
updateDependencies(result.operation, queryDependencies);
}
return {
data: data,
error: error,
extensions: extensions,
operation: operation
};
};

@@ -959,3 +1038,3 @@ function _ref6(ref) {

var cacheResult$ = pipe(cache$, filter(_ref5), tap(_ref6), map(addCacheOutcome("hit")));
var result$ = pipe(forward(merge([ pipe(sharedOps$, filter(_ref7)), cacheOps$ ])), tap(updateCacheWithResult), map(addCacheOutcome("miss")));
var result$ = pipe(forward(merge([ pipe(sharedOps$, filter(_ref7)), cacheOps$ ])), map(updateCacheWithResult), map(addCacheOutcome("miss")));
return merge([ result$, cacheResult$ ]);

@@ -966,3 +1045,3 @@ };

export { Store, cacheExchange, keyOfEntity as defaultKeyOfEntity, query, write, writeFragment, writeOptimistic };
export { Store, cacheExchange, keyOfEntity as defaultKeyOfEntity, query, readOperation, write, writeFragment, writeOptimistic };
//# sourceMappingURL=urql-exchange-graphcache.es.js.map

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

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};
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 l,map as c,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},_=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]=_(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 l=t.fields[a];u[y(l)]=_(l.value,r)}return u;case e.VARIABLE:var c=r[y(t)];return void 0!==c?c:null;default:return t.value}},w=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)]=_(o.value,t)}return r},O=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=_(t.defaultValue,r)}return e[n]=i,e},Object.create(null))},x=function(t){return t.kind===e.FRAGMENT_DEFINITION};function L(t){return t.kind===e.OPERATION_DEFINITION}var S=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(x).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 l=_(s.value,t);if("boolean"==typeof l||null===l)return a?!!l:!l}}}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},j=function(e,t){return e+"."+t};function M(){return(M=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=w(e,n.variables),o=R(t,i);return!n.store.hasField(j(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){return Array.isArray(e)?e.some(N):"object"!=typeof e||null!==e&&"string"!=typeof e.__typename},P=function(e,t,r){J(0);var n=Q(e,t,r);return H(),n},Q=function(e,t,r){var n=S(t.query),i={dependencies:W()},o={variables:O(n,t.variables),fragments:A(t.query),result:i,store:e},u=k(n),a=h(n);return"Query"===a?Y(o,a,u,r):C(o,a,u,r),i},U=function(e,t,r){J(r);var n=S(t.query),i={dependencies:W()},o={variables:O(n,t.variables),fragments:A(t.query),result:i,store:e},u=h(n);if("Mutation"===u)for(var a,s=k(n),l=new I(u,u,s,o);void 0!==(a=l.next());)if(void 0!==a.selectionSet){var c=y(a),f=o.store.optimisticMutations[c];if(void 0!==f){var v=w(a,o.variables),d=k(a),p=f(v||{},o.store,o);N(p)||K(o,p,d)}}return H(),i},V=function(e,t,r){var n=A(t),i=n[Object.keys(n)[0]];if(void 0!==i){var o=k(i),u=M({},r,{__typename:i.typeCondition.name.value}),a=e.keyOfEntity(u);if(a){var s={variables:{},fragments:n,result:{dependencies:W()},store:e};Y(s,a,o,u)}}},Y=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,l=new I(a,t,r,e);void 0!==(s=l.next());){var c=y(s),f=w(s,o),v=j(t,R(c,f)),d=n[m(s)];if(u&&X(v),void 0===s.selectionSet)i.writeRecord(d,v);else if(N(d))i.writeRecord(d,v);else{var p=k(s),h=D(e,v,p,d);i.writeLink(h,v),i.removeRecord(v)}}},D=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=j(t,""+o),l=D(e,s,r,a);i[o]=l}return i}if(null===n)return null;var c=e.store.keyOfEntity(n),f=null!==c?c:t;return Y(e,f,r,n),f},C=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=w(i,e.variables),l=n[a];if(void 0!==i.selectionSet&&null!==l&&!N(l)){var c=k(i);K(e,l,c)}if("Mutation"===t||"Subscription"===t){var f=e.store.updates[t][u];void 0!==f&&f(n,s||{},e.store,e)}}},K=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]=K(e,t[i],r);return n}if(null!==t){var u=e.store.keyOfEntity(t);null!==u?Y(e,u,r,t):C(e,t.__typename,r,t)}},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(j(t,R("__typename")))}for(var a,s=new I(n,t,r,e);void 0!==(a=s.next());){var l=y(a),c=w(a,o),f=j(t,R(l,c));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=j(e,R(t,r));return this.getRecord(n)},ee.prototype.writeField=function(e,t,r,n){var i=j(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(j(e,R(t,r)));var n=this.keyOfEntity(e);return null===n?null:(X(n),this.resolveValueOrLink(j(n,R(t,r))))},ee.prototype.invalidateQuery=function(e,t){!function(e,t){J(0);var r=S(t.query),n={variables:O(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&&Q(this,e,n)},ee.prototype.writeFragment=function(e,t){V(this,e,t)};var te=function(e,t){J(0);var r=re(e,t);return H(),r},re=function(e,t){var r=S(t.query),n=Object.create(null),i={completeness:"FULL",dependencies:W(),data:n},o={variables:O(r,t.variables),fragments:A(t.query),result:i,store:e};return i.data=ue(o,"Query",k(r),n),i},ne=function(e,t,r){J(0);var n=S(t.query),i={completeness:"FULL",dependencies:W(),data:null},o={variables:O(n,t.variables),fragments:A(t.query),result:i,store:e};return i.data=ie(o,h(n),k(n),r),H(),i},ie=function(e,t,r,n){if("string"!=typeof n.__typename)return n;var i=Object.create(null);i.__typename=n.__typename;for(var o,u=new I(t,t,r,e);void 0!==(o=u.next());){var a=m(o),s=n[a];i[a]=void 0===o.selectionSet||null===s||N(s)?s:oe(e,k(o),s)}return i},oe=function(e,t,r){if(Array.isArray(r)){for(var n=new Array(r.length),i=0,o=r.length;i<o;i++)n[i]=oe(e,t,r[i]);return n}if(null===r)return null;var u=e.store.keyOfEntity(r);if(null!==u){var a=Object.create(null);return ue(e,u,t,a)}return ie(e,r.__typename,t,r)},ue=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,l=new I(a,t,r,e);void 0!==(s=l.next());){var c=y(s),f=w(s,u),v=m(s),d=j(t,R(c,f)),p=o.getRecord(d);i&&X(d);var h=o.resolvers[a];if(void 0!==h&&h.hasOwnProperty(c)){void 0!==p&&(n[v]=p);var g=h[c](n,f||{},o,e);if(void 0===s.selectionSet)n[v]=void 0!==g?g:null;else{var b=k(s);n[v]=ae(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 _=k(s),O=o.getLink(d);void 0===O?"object"==typeof p&&null!==p?n[v]=p:(e.result.completeness="EMPTY",n[v]=null):n[v]=se(e,O,_,n[v])}}return n},ae=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=j(r,""+o);return ae(e,t,a,n,u)});if(null===t)return null;if(le(t)){var o=void 0===i?Object.create(null):i,u=("string"==typeof t?t:e.store.keyOfEntity(t))||r,a=ue(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},se=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]=se(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 ue(e,t,r,a)},le=function(e){return"string"==typeof e||"object"==typeof e&&null!==e&&"string"==typeof e.__typename},ce=function(e){return function(t){return{data:t.data,error:t.error,extensions:t.extensions,operation:M({},t.operation,{context:M({},t.operation.context,{meta:M({},t.operation.context.meta,{cacheOutcome:e})})})}}},fe=function(e){return M({},e,{query:s(e.query)})},ve=function(e){return e.context.requestPolicy},de=function(e){return"query"===e.operationName},pe=function(e){var t=ve(e);return de(e)&&"network-only"!==t},ye=function(e,t){return M({},e,{context:M({},e.context,{requestPolicy:t})})};function he(e){return pe(e)}function me(e){return"FULL"!==e.completeness}function ke(e){return e.operation}function ge(e){return"FULL"===e.completeness}function be(e){return!pe(e)}var _e=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=ve(n=e),function(e){return"mutation"===e.operationName}(n)&&"network-only"!==u){var t=e.key,r=U(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?ye(e,"cache-and-network"):e)})},m=function(e){var t=ve(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,n=e.operation,u=e.error,a=e.extensions,l=de(n),c=e.data,f=n.key;if(o.has(f)&&(o.delete(f),i.clearOptimistic(f)),null!=c)if(t=P(i,n,c).dependencies,l){var v=te(i,n);c=v.data,r=v.dependencies}else c=ne(i,n,c).data;return void 0!==t&&s(e.operation,t),l&&void 0!==r&&h(e.operation,r),{data:c,error:u,extensions:a,operation:n}};function g(e){var t=e.operation;if("cache-and-network"===ve(t)){var r=ye(t,"network-only");n.reexecuteOperation(r)}}return function(e){var t=l(e,c(fe),f(y),v),n=l(t,d(he),c(m),v),i=l(n,d(me),c(ke)),o=l(n,d(ge),f(g),c(ce("hit"))),u=l(r(p([l(t,d(be)),i])),c(k),c(ce("miss")));return p([u,o])}}};export{ee as Store,_e as cacheExchange,q as defaultKeyOfEntity,te as query,ne as readOperation,P as write,V as writeFragment,U as writeOptimistic};
//# sourceMappingURL=urql-exchange-graphcache.es.min.js.map

@@ -279,2 +279,9 @@ "use strict";

var isScalar = function(x) {
if (Array.isArray(x)) {
return x.some(isScalar);
}
return "object" != typeof x || null !== x && "string" != typeof x.__typename;
};
var write = function(store, request, data) {

@@ -392,3 +399,4 @@ initStoreState(0);

} else if (!isScalar(fieldValue)) {
var link = writeField(ctx, fieldKey, node.selectionSet.selections, fieldValue);
var fieldSelect = getSelectionSet(node);
var link = writeField(ctx, fieldKey, fieldSelect, fieldValue);
store.writeLink(link, fieldKey);

@@ -432,3 +440,4 @@ store.removeRecord(fieldKey);

if (void 0 !== node.selectionSet && null !== fieldValue && !isScalar(fieldValue)) {
writeRootField(ctx, fieldValue, node.selectionSet.selections);
var fieldSelect = getSelectionSet(node);
writeRootField(ctx, fieldValue, fieldSelect);
}

@@ -462,9 +471,2 @@ if ("Mutation" === typename || "Subscription" === typename) {

var isScalar = function(x) {
if (Array.isArray(x)) {
return x.some(isScalar);
}
return "object" != typeof x || null !== x && "string" != typeof x.__typename;
};
var invalidateSelection = function(ctx, entityKey, select) {

@@ -697,2 +699,60 @@ var store = ctx.store;

var readOperation = function(store, request, data) {
initStoreState(0);
var operation = getMainOperation(request.query);
var result = {
completeness: "FULL",
dependencies: getCurrentDependencies(),
data: null
};
var ctx = {
variables: normalizeVariables(operation, request.variables),
fragments: getFragments(request.query),
result: result,
store: store
};
result.data = readRoot(ctx, getOperationName(operation), getSelectionSet(operation), data);
clearStoreState();
return result;
};
var readRoot = function(ctx, entityKey, select, originalData) {
if ("string" != typeof originalData.__typename) {
return originalData;
}
var data = Object.create(null);
data.__typename = originalData.__typename;
var iter = new SelectionIterator(entityKey, entityKey, select, ctx);
var node;
while (void 0 !== (node = iter.next())) {
var fieldAlias = getFieldAlias(node);
var fieldValue = originalData[fieldAlias];
if (void 0 !== node.selectionSet && null !== fieldValue && !isScalar(fieldValue)) {
data[fieldAlias] = readRootField(ctx, getSelectionSet(node), fieldValue);
} else {
data[fieldAlias] = fieldValue;
}
}
return data;
};
var readRootField = function(ctx, select, originalData) {
if (Array.isArray(originalData)) {
var newData = new Array(originalData.length);
for (var i = 0, l = originalData.length; i < l; i++) {
newData[i] = readRootField(ctx, select, originalData[i]);
}
return newData;
} else if (null === originalData) {
return null;
}
var entityKey = ctx.store.keyOfEntity(originalData);
if (null !== entityKey) {
var data = Object.create(null);
return readSelection(ctx, entityKey, select, data);
} else {
return readRoot(ctx, originalData.__typename, select, originalData);
}
};
var readSelection = function(ctx, entityKey, select, data) {

@@ -724,2 +784,5 @@ var isQuery = "Query" === entityKey;

if (void 0 !== resolvers && resolvers.hasOwnProperty(fieldName)) {
if (void 0 !== fieldValue) {
data[fieldAlias] = fieldValue;
}
var resolverValue = resolvers[fieldName](data, fieldArgs || {}, store, ctx);

@@ -934,9 +997,8 @@ if (void 0 === node.selectionSet) {

};
var updateCacheWithResult = function(ref) {
var data = ref.data;
var operation = ref.operation;
var dependencies;
if (null != data) {
dependencies = write(store, operation, data).dependencies;
}
var updateCacheWithResult = function(result) {
var operation = result.operation;
var error = result.error;
var extensions = result.extensions;
var isQuery = isQueryOperation(operation);
var data = result.data;
var key = operation.key;

@@ -947,8 +1009,25 @@ if (optimisticKeys.has(key)) {

}
if (void 0 !== dependencies) {
processDependencies(operation, dependencies);
if (isQueryOperation(operation)) {
updateDependencies(operation, dependencies);
var writeDependencies, queryDependencies;
if (null != data) {
writeDependencies = write(store, operation, data).dependencies;
if (isQuery) {
var queryResult = query(store, operation);
data = queryResult.data;
queryDependencies = queryResult.dependencies;
} else {
data = readOperation(store, operation, data).data;
}
}
if (void 0 !== writeDependencies) {
processDependencies(result.operation, writeDependencies);
}
if (isQuery && void 0 !== queryDependencies) {
updateDependencies(result.operation, queryDependencies);
}
return {
data: data,
error: error,
extensions: extensions,
operation: operation
};
};

@@ -967,3 +1046,3 @@ function _ref6(ref) {

var cacheResult$ = wonka.pipe(cache$, wonka.filter(_ref5), wonka.tap(_ref6), wonka.map(addCacheOutcome("hit")));
var result$ = wonka.pipe(forward(wonka.merge([ wonka.pipe(sharedOps$, wonka.filter(_ref7)), cacheOps$ ])), wonka.tap(updateCacheWithResult), wonka.map(addCacheOutcome("miss")));
var result$ = wonka.pipe(forward(wonka.merge([ wonka.pipe(sharedOps$, wonka.filter(_ref7)), cacheOps$ ])), wonka.map(updateCacheWithResult), wonka.map(addCacheOutcome("miss")));
return wonka.merge([ result$, cacheResult$ ]);

@@ -978,2 +1057,4 @@ };

exports.readOperation = readOperation;
exports.write = write;

@@ -980,0 +1061,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){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;
"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"),a=function(e){return e.name.value},u=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:a(e)},l=function(e){return void 0!==e.selectionSet?e.selectionSet.selections:[]},c=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 u=Object.create(null),s=0,l=e.fields.length;s<l;s++){var c=e.fields[s];u[a(c)]=v(c.value,r)}return u;case t.Kind.VARIABLE:var f=r[a(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[a(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=a(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[a(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],u=a(o),s="include"===u;if(s||"skip"===u){var l=o.arguments?o.arguments[0]:null;if(l&&"if"===a(l)){var c=v(l.value,t);if("boolean"==typeof c||null===c)return s?!!c:!c}}}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},_=function(e,t){return t?e+"("+n(t)+")":e},w=function(e,t){return e+"."+t};function x(){return(x=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 L=function(e,t,r,n){return!(!t||t!==(void 0!==(i=e.typeCondition)?a(i):null)&&l(e).some(function(e){if(!c(e))return!1;var t=a(e),i=p(e,n.variables),o=_(t,i);return!n.store.hasField(w(r,o))}));var i},S=function(e,t,r,n){this.typename=e,this.entityKey=t,this.context=n,this.indexStack=[0],this.selectionStack=[r]};S.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(c(r)){if("__typename"===a(r))continue;return r}var n=f(r)?r:this.context.fragments[a(r)];void 0!==n&&L(n,this.typename,this.entityKey,this.context)&&(this.indexStack.push(0),this.selectionStack.push(l(n)))}}}};var E=function(e){return Array.isArray(e)?e.some(E):"object"!=typeof e||null!==e&&"string"!=typeof e.__typename},q=function(e,t,r){Q(0);var n=A(e,t,r);return U(),n},A=function(e,t,r){var n=m(t.query),i={dependencies:D()},o={variables:d(n,t.variables),fragments:k(t.query),result:i,store:e},a=l(n),s=u(n);return"Query"===s?j(o,s,a,r):T(o,s,a,r),i},F=function(e,t,r){Q(r);var n=m(t.query),i={dependencies:D()},o={variables:d(n,t.variables),fragments:k(t.query),result:i,store:e},s=u(n);if("Mutation"===s)for(var c,f=l(n),v=new S(s,s,f,o);void 0!==(c=v.next());)if(void 0!==c.selectionSet){var y=a(c),h=o.store.optimisticMutations[y];if(void 0!==h){var g=p(c,o.variables),b=l(c),O=h(g||{},o.store,o);E(O)||I(o,O,b)}}return U(),i},M=function(e,t,r){var n=k(t),i=n[Object.keys(n)[0]];if(void 0!==i){var o=l(i),a=x({},r,{__typename:i.typeCondition.name.value}),u=e.keyOfEntity(a);if(u){var s={variables:{},fragments:n,result:{dependencies:D()},store:e};j(s,u,o,a)}}},j=function(e,t,r,n){var i=e.store,o=e.variables,u="Query"===t,c=n.__typename;u||V(t),i.writeField(u?t:c,t,"__typename");for(var f,v=new S(c,t,r,e);void 0!==(f=v.next());){var d=a(f),y=p(f,o),h=w(t,_(d,y)),m=n[s(f)];if(u&&V(h),void 0===f.selectionSet)i.writeRecord(m,h);else if(E(m))i.writeRecord(m,h);else{var g=l(f),k=R(e,h,g,m);i.writeLink(k,h),i.removeRecord(h)}}},R=function(e,t,r,n){if(Array.isArray(n)){for(var i=new Array(n.length),o=0,a=n.length;o<a;o++){var u=n[o],s=w(t,""+o),l=R(e,s,r,u);i[o]=l}return i}if(null===n)return null;var c=e.store.keyOfEntity(n),f=null!==c?c:t;return j(e,f,r,n),f},T=function(e,t,r,n){for(var i,o=new S(t,t,r,e);void 0!==(i=o.next());){var u=a(i),c=s(i),f=p(i,e.variables),v=n[c];if(void 0!==i.selectionSet&&null!==v&&!E(v)){var d=l(i);I(e,v,d)}if("Mutation"===t||"Subscription"===t){var y=e.store.updates[t][u];void 0!==y&&y(n,f||{},e.store,e)}}},I=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]=I(e,t[i],r);return n}if(null!==t){var a=e.store.keyOfEntity(t);null!==a?j(e,a,r,t):T(e,t.__typename,r,t)}},P=function(e,t,r){var n,i=e.store,o=e.variables,u="Query"===t;if(u)n=t;else{if(V(t),"string"!=typeof(n=i.getField(t,"__typename")))return;i.removeRecord(w(t,_("__typename")))}for(var s,c=new S(n,t,r,e);void 0!==(s=c.next());){var f=a(s),v=p(s,o),d=w(t,_(f,v));if(u&&V(d),void 0===s.selectionSet)i.removeRecord(d);else{var y=l(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},U=function(){K.current=null,N.current=null},D=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=w(e,_(t,r));return this.getRecord(n)},B.prototype.writeField=function(e,t,r,n){var i=w(t,_(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(w(e,_(t,r)));var n=this.keyOfEntity(e);return null===n?null:(V(n),this.resolveValueOrLink(w(n,_(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",l(r)),U()}(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&&A(this,e,n)},B.prototype.writeFragment=function(e,t){M(this,e,t)};var G=function(e,t){Q(0);var r=z(e,t);return U(),r},z=function(e,t){var r=m(t.query),n=Object.create(null),i={completeness:"FULL",dependencies:D(),data:n},o={variables:d(r,t.variables),fragments:k(t.query),result:i,store:e};return i.data=X(o,"Query",l(r),n),i},J=function(e,t,r){Q(0);var n=m(t.query),i={completeness:"FULL",dependencies:D(),data:null},o={variables:d(n,t.variables),fragments:k(t.query),result:i,store:e};return i.data=H(o,u(n),l(n),r),U(),i},H=function(e,t,r,n){if("string"!=typeof n.__typename)return n;var i=Object.create(null);i.__typename=n.__typename;for(var o,a=new S(t,t,r,e);void 0!==(o=a.next());){var u=s(o),c=n[u];i[u]=void 0===o.selectionSet||null===c||E(c)?c:W(e,l(o),c)}return i},W=function(e,t,r){if(Array.isArray(r)){for(var n=new Array(r.length),i=0,o=r.length;i<o;i++)n[i]=W(e,t,r[i]);return n}if(null===r)return null;var a=e.store.keyOfEntity(r);if(null!==a){var u=Object.create(null);return X(e,a,t,u)}return H(e,r.__typename,t,r)},X=function(e,t,r,n){var i="Query"===t;i||V(t);var o=e.store,u=e.variables,c=i?"Query":o.getField(t,"__typename");if("string"!=typeof c)return e.result.completeness="EMPTY",null;n.__typename=c;for(var f,v=new S(c,t,r,e);void 0!==(f=v.next());){var d=a(f),y=p(f,u),h=s(f),m=w(t,_(d,y)),g=o.getRecord(m);i&&V(m);var k=o.resolvers[c];if(void 0!==k&&k.hasOwnProperty(d)){void 0!==g&&(n[h]=g);var b=k[d](n,y||{},o,e);if(void 0===f.selectionSet)n[h]=void 0!==b?b:null;else{var O=l(f);n[h]=Z(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 x=l(f),L=o.getLink(m);void 0===L?"object"==typeof g&&null!==g?n[h]=g:(e.result.completeness="EMPTY",n[h]=null):n[h]=$(e,L,x,n[h])}}return n},Z=function(e,t,r,n,i){if(Array.isArray(t))return t.map(function(t,o){var a=void 0!==i?i[o]:void 0,u=w(r,""+o);return Z(e,t,u,n,a)});if(null===t)return null;if(ee(t)){var o=void 0===i?Object.create(null):i,a=("string"==typeof t?t:e.store.keyOfEntity(t))||r,u=X(e,a,n,o);if(null!==u&&"object"==typeof t)for(r in t)"__typename"!==r&&t.hasOwnProperty(r)&&(u[r]=t[r]);return u}return e.result.completeness="EMPTY",null},$=function(e,t,r,n){if(Array.isArray(t)){for(var i=new Array(t.length),o=0,a=t.length;o<a;o++)i[o]=$(e,t[o],r,void 0!==n?n[o]:void 0);return i}if(null===t)return null;var u=void 0===n?Object.create(null):n;return X(e,t,r,u)},ee=function(e){return"string"==typeof e||"object"==typeof e&&null!==e&&"string"==typeof e.__typename},te=function(e){return function(t){return{data:t.data,error:t.error,extensions:t.extensions,operation:x({},t.operation,{context:x({},t.operation.context,{meta:x({},t.operation.context.meta,{cacheOutcome:e})})})}}},re=function(e){return x({},e,{query:i.formatDocument(e.query)})},ne=function(e){return e.context.requestPolicy},ie=function(e){return"query"===e.operationName},oe=function(e){var t=ne(e);return ie(e)&&"network-only"!==t},ae=function(e,t){return x({},e,{context:x({},e.context,{requestPolicy:t})})};function ue(e){return oe(e)}function se(e){return"FULL"!==e.completeness}function le(e){return e.operation}function ce(e){return"FULL"===e.completeness}function fe(e){return!oe(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),a=new Set,u=new Map,s=Object.create(null),l=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=u.get(t);u.delete(t),n.reexecuteOperation(r)}})},c=function(e){if(o=ne(n=e),function(e){return"mutation"===e.operationName}(n)&&"network-only"!==o){var t=e.key,r=F(i,e,t).dependencies;0!==r.size&&(a.add(t),l(e,r))}var n,o},f=function(e,t){t.forEach(function(t){(s[t]||(s[t]=[])).push(e.key),u.has(e.key)||u.set(e.key,"network-only"===e.context.requestPolicy?ae(e,"cache-and-network"):e)})},v=function(e){var t=ne(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,n=e.operation,o=e.error,u=e.extensions,s=ie(n),c=e.data,v=n.key;if(a.has(v)&&(a.delete(v),i.clearOptimistic(v)),null!=c)if(t=q(i,n,c).dependencies,s){var p=G(i,n);c=p.data,r=p.dependencies}else c=J(i,n,c).data;return void 0!==t&&l(e.operation,t),s&&void 0!==r&&f(e.operation,r),{data:c,error:o,extensions:u,operation:n}};function d(e){var t=e.operation;if("cache-and-network"===ne(t)){var r=ae(t,"network-only");n.reexecuteOperation(r)}}return function(e){var t=o.pipe(e,o.map(re),o.tap(c),o.share),n=o.pipe(t,o.filter(ue),o.map(v),o.share),i=o.pipe(n,o.filter(se),o.map(le)),a=o.pipe(n,o.filter(ce),o.tap(d),o.map(te("hit"))),u=o.pipe(r(o.merge([o.pipe(t,o.filter(fe)),i])),o.map(p),o.map(te("miss")));return o.merge([u,a])}}},exports.defaultKeyOfEntity=O,exports.query=G,exports.readOperation=J,exports.write=q,exports.writeFragment=M,exports.writeOptimistic=F;
//# sourceMappingURL=urql-exchange-graphcache.min.js.map
{
"name": "@urql/exchange-graphcache",
"version": "1.0.0-beta.4",
"version": "1.0.0-rc.0",
"description": "A normalized and configurable cache exchange for urql",

@@ -5,0 +5,0 @@ "repository": "https://github.com/FormidableLabs/urql-exchange-graphcache",

@@ -299,1 +299,327 @@ import gql from 'graphql-tag';

});
it('follows resolvers on initial write', () => {
const client = createClient({ url: '' });
const [ops$, next] = makeSubject<Operation>();
const opOne = client.createRequestOperation('query', {
key: 1,
query: queryOne,
});
const response = jest.fn(
(forwardOp: Operation): OperationResult => {
if (forwardOp.key === 1) {
return { operation: opOne, data: queryOneData };
}
return undefined as any;
}
);
const forward: ExchangeIO = ops$ =>
pipe(
ops$,
map(response)
);
const result = jest.fn();
const fakeResolver = jest.fn();
pipe(
cacheExchange({
resolvers: {
Author: {
name: () => {
fakeResolver();
return 'newName';
},
},
},
})({ forward, client })(ops$),
tap(result),
publish
);
next(opOne);
expect(response).toHaveBeenCalledTimes(1);
expect(fakeResolver).toHaveBeenCalledTimes(1);
expect(result).toHaveBeenCalledTimes(1);
expect(result.mock.calls[0][0].data).toEqual({
__typename: 'Query',
author: {
__typename: 'Author',
id: '123',
name: 'newName',
},
});
});
it('follows resolvers for mutations', () => {
jest.useFakeTimers();
const mutation = gql`
mutation {
concealAuthor {
id
name
__typename
}
}
`;
const mutationData = {
__typename: 'Mutation',
concealAuthor: {
__typename: 'Author',
id: '123',
name: '[REDACTED ONLINE]',
},
};
const client = createClient({ url: '' });
const [ops$, next] = makeSubject<Operation>();
const opOne = client.createRequestOperation('query', {
key: 1,
query: queryOne,
});
const opMutation = client.createRequestOperation('mutation', {
key: 2,
query: mutation,
});
const response = jest.fn(
(forwardOp: Operation): OperationResult => {
if (forwardOp.key === 1) {
return { operation: opOne, data: queryOneData };
} else if (forwardOp.key === 2) {
return { operation: opMutation, data: mutationData };
}
return undefined as any;
}
);
const result = jest.fn();
const forward: ExchangeIO = ops$ =>
pipe(
ops$,
delay(1),
map(response)
);
const fakeResolver = jest.fn();
pipe(
cacheExchange({
resolvers: {
Author: {
name: () => {
fakeResolver();
return 'newName';
},
},
},
})({ forward, client })(ops$),
tap(result),
publish
);
next(opOne);
jest.runAllTimers();
expect(response).toHaveBeenCalledTimes(1);
next(opMutation);
expect(response).toHaveBeenCalledTimes(1);
expect(fakeResolver).toHaveBeenCalledTimes(1);
jest.runAllTimers();
expect(result.mock.calls[1][0].data).toEqual({
__typename: 'Mutation',
concealAuthor: {
__typename: 'Author',
id: '123',
name: 'newName',
},
});
});
it('follows nested resolvers for mutations', () => {
jest.useFakeTimers();
const mutation = gql`
mutation {
concealAuthors {
id
name
book {
id
title
__typename
}
__typename
}
}
`;
const client = createClient({ url: '' });
const [ops$, next] = makeSubject<Operation>();
const query = gql`
query {
authors {
id
name
book {
id
title
__typename
}
__typename
}
}
`;
const queryOperation = client.createRequestOperation('query', {
key: 1,
query,
});
const mutationOperation = client.createRequestOperation('mutation', {
key: 2,
query: mutation,
});
const mutationData = {
__typename: 'Mutation',
concealAuthors: [
{
__typename: 'Author',
id: '123',
name: '[REDACTED ONLINE]',
},
{
__typename: 'Author',
id: '456',
name: 'Formidable',
book: {
id: '1',
title: 'AwesomeGQL',
__typename: 'Book',
},
},
],
};
const queryData = {
__typename: 'Query',
authors: [
{
__typename: 'Author',
id: '123',
name: '[REDACTED ONLINE]',
},
{
__typename: 'Author',
id: '456',
name: 'Formidable',
book: {
id: '1',
title: 'AwesomeGQL',
__typename: 'Book',
},
},
],
};
const response = jest.fn(
(forwardOp: Operation): OperationResult => {
if (forwardOp.key === 1) {
return { operation: queryOperation, data: queryData };
}
if (forwardOp.key === 2) {
return { operation: mutationOperation, data: mutationData };
}
return undefined as any;
}
);
const result = jest.fn();
const forward: ExchangeIO = ops$ =>
pipe(
ops$,
delay(1),
map(response)
);
const fakeResolver = jest.fn();
const called: any[] = [];
pipe(
cacheExchange({
resolvers: {
Author: {
name: parent => {
called.push(parent.name);
fakeResolver();
return 'Secret Author';
},
},
Book: {
title: parent => {
called.push(parent.title);
fakeResolver();
return 'Secret Book';
},
},
},
})({ forward, client })(ops$),
tap(result),
publish
);
next(queryOperation);
jest.runAllTimers();
expect(response).toHaveBeenCalledTimes(1);
expect(fakeResolver).toHaveBeenCalledTimes(3);
next(mutationOperation);
jest.runAllTimers();
expect(response).toHaveBeenCalledTimes(2);
expect(fakeResolver).toHaveBeenCalledTimes(6);
expect(result.mock.calls[1][0].data).toEqual({
__typename: 'Mutation',
concealAuthors: [
{
__typename: 'Author',
id: '123',
book: null,
name: 'Secret Author',
},
{
__typename: 'Author',
id: '456',
name: 'Secret Author',
book: {
id: '1',
title: 'Secret Book',
__typename: 'Book',
},
},
],
});
expect(called).toEqual([
// Query
'[REDACTED ONLINE]',
'Formidable',
'AwesomeGQL',
// Mutation
'[REDACTED ONLINE]',
'Formidable',
'AwesomeGQL',
]);
});

@@ -11,3 +11,3 @@ import {

import { filter, map, merge, pipe, share, tap } from 'wonka';
import { query, write, writeOptimistic } from './operations';
import { query, write, writeOptimistic, readOperation } from './operations';
import { Store } from './store';

@@ -189,7 +189,6 @@

// Take any OperationResult and update the cache with it
const updateCacheWithResult = ({ data, operation }: OperationResult) => {
let dependencies;
if (data !== null && data !== undefined) {
dependencies = write(store, operation, data).dependencies;
}
const updateCacheWithResult = (result: OperationResult): OperationResult => {
const { operation, error, extensions } = result;
const isQuery = isQueryOperation(operation);
let { data } = result;

@@ -203,11 +202,26 @@ // Clear old optimistic values from the store

if (dependencies !== undefined) {
// Update operations that depend on the updated data (except the current one)
processDependencies(operation, dependencies);
let writeDependencies, queryDependencies;
if (data !== null && data !== undefined) {
writeDependencies = write(store, operation, data).dependencies;
// Update this operation's dependencies if it's a query
if (isQueryOperation(operation)) {
updateDependencies(operation, dependencies);
if (isQuery) {
const queryResult = query(store, operation);
data = queryResult.data;
queryDependencies = queryResult.dependencies;
} else {
data = readOperation(store, operation, data).data;
}
}
if (writeDependencies !== undefined) {
// Update operations that depend on the updated data (except the current one)
processDependencies(result.operation, writeDependencies);
}
// Update this operation's dependencies if it's a query
if (isQuery && queryDependencies !== undefined) {
updateDependencies(result.operation, queryDependencies);
}
return { data, error, extensions, operation };
};

@@ -265,3 +279,3 @@

),
tap(updateCacheWithResult),
map(updateCacheWithResult),
map(addCacheOutcome('miss'))

@@ -268,0 +282,0 @@ );

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

export { query } from './query';
export { query, readOperation } from './query';
export { write, writeOptimistic, writeFragment } from './write';

@@ -11,2 +11,3 @@ import warning from 'warning';

getFieldAlias,
getOperationName,
} from '../ast';

@@ -23,2 +24,3 @@

OperationRequest,
NullArray,
} from '../types';

@@ -34,3 +36,3 @@

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

@@ -77,5 +79,98 @@

result.data = readSelection(ctx, 'Query', getSelectionSet(operation), root);
return result;
};
export const readOperation = (
store: Store,
request: OperationRequest,
data: Data
) => {
initStoreState(0);
const operation = getMainOperation(request.query);
const result: QueryResult = {
completeness: 'FULL',
dependencies: getCurrentDependencies(),
data: null,
};
const ctx: Context = {
variables: normalizeVariables(operation, request.variables),
fragments: getFragments(request.query),
result,
store,
};
result.data = readRoot(
ctx,
getOperationName(operation),
getSelectionSet(operation),
data
);
clearStoreState();
return result;
};
export const readRoot = (
ctx: Context,
entityKey: string,
select: SelectionSet,
originalData: Data
): Data => {
if (typeof originalData.__typename !== 'string') {
return originalData;
}
const data = Object.create(null);
data.__typename = originalData.__typename;
const iter = new SelectionIterator(entityKey, entityKey, select, ctx);
let node;
while ((node = iter.next()) !== undefined) {
const fieldAlias = getFieldAlias(node);
const fieldValue = originalData[fieldAlias];
if (
node.selectionSet !== undefined &&
fieldValue !== null &&
!isScalar(fieldValue)
) {
data[fieldAlias] = readRootField(ctx, getSelectionSet(node), fieldValue);
} else {
data[fieldAlias] = fieldValue;
}
}
return data;
};
const readRootField = (
ctx: Context,
select: SelectionSet,
originalData: null | Data | NullArray<Data>
): Data | NullArray<Data> | null => {
if (Array.isArray(originalData)) {
const newData = new Array(originalData.length);
for (let i = 0, l = originalData.length; i < l; i++)
newData[i] = readRootField(ctx, select, originalData[i]);
return newData;
} else if (originalData === null) {
return null;
}
// Write entity to key that falls back to the given parentFieldKey
const entityKey = ctx.store.keyOfEntity(originalData);
if (entityKey !== null) {
const data: Data = Object.create(null);
return readSelection(ctx, entityKey, select, data);
} else {
const typename = originalData.__typename;
return readRoot(ctx, typename, select, originalData);
}
};
const readSelection = (

@@ -117,2 +212,5 @@ ctx: Context,

// We have a resolver for this field.
if (fieldValue !== undefined) {
data[fieldAlias] = fieldValue;
}
const resolverValue = resolvers[fieldName](

@@ -119,0 +217,0 @@ data,

import { FieldNode, InlineFragmentNode, FragmentDefinitionNode } from 'graphql';
import { Fragments, Variables, SelectionSet } from '../types';
import { Fragments, Variables, SelectionSet, Scalar } from '../types';
import { Store } from '../store';

@@ -106,1 +106,15 @@ import { joinKeys, keyOfField } from '../helpers';

}
// Without a typename field on Data or Data[] the result must be a scalar
// This effectively prevents us from writing Data into the store that
// doesn't have a __typename field
export const isScalar = (x: any): x is Scalar | Scalar[] => {
if (Array.isArray(x)) {
return x.some(isScalar);
}
return (
typeof x !== 'object' ||
(x !== null && typeof (x as any).__typename !== 'string')
);
};

@@ -22,3 +22,2 @@ import warning from 'warning';

Link,
Scalar,
SelectionSet,

@@ -36,3 +35,3 @@ OperationRequest,

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

@@ -209,3 +208,3 @@

// Process the field and write links for the child entities that have been written
const { selections: fieldSelect } = node.selectionSet;
const fieldSelect = getSelectionSet(node);
const link = writeField(ctx, fieldKey, fieldSelect, fieldValue);

@@ -295,3 +294,3 @@ store.writeLink(link, fieldKey);

) {
const { selections: fieldSelect } = node.selectionSet;
const fieldSelect = getSelectionSet(node);
writeRootField(ctx, fieldValue, fieldSelect);

@@ -335,15 +334,1 @@ }

};
// Without a typename field on Data or Data[] the result must be a scalar
// This effectively prevents us from writing Data into the store that
// doesn't have a __typename field
const isScalar = (x: any): x is Scalar | Scalar[] => {
if (Array.isArray(x)) {
return x.some(isScalar);
}
return (
typeof x !== 'object' ||
(x !== null && typeof (x as any).__typename !== 'string')
);
};

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc