Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
fragmentMatcherFunction?: FragmentMatcher;
}): NormalizedCache {
// XXX TODO REFACTOR: this is a temporary workaround until query normalization is made to work with documents.
const operationDefinition = getOperationDefinition(document)!;
try {
return this.writeSelectionSetToStore({
result,
dataId,
selectionSet: operationDefinition.selectionSet,
context: {
store,
processedData: {},
variables: assign(
{},
getDefaultValues(operationDefinition),
variables,
),
dataIdFromObject,
fragmentMap: createFragmentMap(getFragmentDefinitions(document)),
fragmentMatcherFunction,
},
});
} catch (e) {
throw enhanceErrorWithDocument(e, document);
}
}
const transformed = cache.transformDocument(document);
const forLink = removeConnectionDirectiveFromDocument(
cache.transformForLink(transformed));
const clientQuery = this.localState.clientQuery(transformed);
const serverQuery = this.localState.serverQuery(forLink);
const cacheEntry = {
document: transformed,
// TODO These two calls (hasClientExports and shouldForceResolvers)
// could probably be merged into a single traversal.
hasClientExports: hasClientExports(transformed),
hasForcedResolvers: this.localState.shouldForceResolvers(transformed),
clientQuery,
serverQuery,
defaultVars: getDefaultValues(
getOperationDefinition(transformed)
) as OperationVariables,
};
const add = (doc: DocumentNode | null) => {
if (doc && !transformCache.has(doc)) {
transformCache.set(doc, cacheEntry);
}
}
// Add cacheEntry to the transformCache using several different keys,
// since any one of these documents could end up getting passed to the
// transform method again in the future.
add(document);
add(transformed);
add(clientQuery);
add(serverQuery);
refetchQueries = [],
update: updateWithProxyFn,
errorPolicy = 'ignore',
}: MutationOptions): Promise> {
if (!mutation) {
throw new Error(
'mutation option is required. You must specify your GraphQL document in the mutation option.',
);
}
const mutationId = this.generateQueryId();
mutation = this.dataStore.getCache().transformDocument(mutation);
variables = assign(
{},
getDefaultValues(getMutationDefinition(mutation)),
variables,
);
const mutationString = print(mutation);
const request = {
query: mutation,
variables,
operationName: getOperationName(mutation) || undefined,
} as Request;
this.setQuery(mutationId, () => ({ document: mutation }));
// Create a map of update queries by id to the query instead of by name.
const generateUpdateQueriesInfo: () => {
[queryId: string]: QueryWithUpdater;
} = () => {
): ObservableQuery {
if (options.fetchPolicy === 'standby') {
throw new Error(
'client.watchQuery cannot be called with fetchPolicy set to "standby"',
);
}
// get errors synchronously
const queryDefinition = getQueryDefinition(options.query);
// assign variable default values if supplied
if (
queryDefinition.variableDefinitions &&
queryDefinition.variableDefinitions.length
) {
const defaultValues = getDefaultValues(queryDefinition);
options.variables = assign({}, defaultValues, options.variables);
}
if (typeof options.notifyOnNetworkStatusChange === 'undefined') {
options.notifyOnNetworkStatusChange = false;
}
let transformedOptions = { ...options } as WatchQueryOptions;
return new ObservableQuery({
scheduler: this.scheduler,
options: transformedOptions,
shouldSubscribe: shouldSubscribe,
});
}
export function diffQueryAgainstStore({
store,
query,
variables,
previousResult,
returnPartialData = true,
rootId = 'ROOT_QUERY',
fragmentMatcherFunction,
config,
}: DiffQueryAgainstStoreOptions): Cache.DiffResult {
// Throw the right validation error by trying to find a query in the document
const queryDefinition = getQueryDefinition(query);
variables = assign({}, getDefaultValues(queryDefinition), variables);
const context: ReadStoreContext = {
// Global settings
store,
returnPartialData,
customResolvers: (config && config.customResolvers) || {},
// Flag set during execution
hasMissingField: false,
};
const rootIdValue = {
type: 'id',
id: rootId,
previousResult,
};
export function writeQueryToStore(_a) {
var result = _a.result, query = _a.query, _b = _a.storeFactory, storeFactory = _b === void 0 ? defaultNormalizedCacheFactory : _b, _c = _a.store, store = _c === void 0 ? storeFactory() : _c, variables = _a.variables, dataIdFromObject = _a.dataIdFromObject, _d = _a.fragmentMap, fragmentMap = _d === void 0 ? {} : _d, fragmentMatcherFunction = _a.fragmentMatcherFunction;
var queryDefinition = getQueryDefinition(query);
variables = assign({}, getDefaultValues(queryDefinition), variables);
try {
return writeSelectionSetToStore({
dataId: 'ROOT_QUERY',
result: result,
selectionSet: queryDefinition.selectionSet,
context: {
store: store,
storeFactory: storeFactory,
processedData: {},
variables: variables,
dataIdFromObject: dataIdFromObject,
fragmentMap: fragmentMap,
fragmentMatcherFunction: fragmentMatcherFunction,
},
});
}