UNPKG

apollo-client-cors-hack

Version:

A simple yet functional GraphQL client.

184 lines 7.1 kB
var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; import { getFragmentQueryDocument } from '../queries/getFromAST'; import { getDataWithOptimisticResults } from '../optimistic-data/store'; import { readQueryFromStore } from './readFromStore'; import { writeResultToStore } from './writeToStore'; import { addTypenameToDocument } from '../queries/queryTransform'; var ReduxDataProxy = (function () { function ReduxDataProxy(store, reduxRootSelector, fragmentMatcher, reducerConfig) { this.store = store; this.reduxRootSelector = reduxRootSelector; this.reducerConfig = reducerConfig; this.fragmentMatcher = fragmentMatcher; } ReduxDataProxy.prototype.readQuery = function (_a) { var query = _a.query, variables = _a.variables; if (this.reducerConfig.addTypename) { query = addTypenameToDocument(query); } return readQueryFromStore({ rootId: 'ROOT_QUERY', store: getDataWithOptimisticResults(this.reduxRootSelector(this.store.getState())), query: query, variables: variables, fragmentMatcherFunction: this.fragmentMatcher.match, config: this.reducerConfig, }); }; ReduxDataProxy.prototype.readFragment = function (_a) { var id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables; var query = getFragmentQueryDocument(fragment, fragmentName); var data = getDataWithOptimisticResults(this.reduxRootSelector(this.store.getState())); if (typeof data[id] === 'undefined') { return null; } if (this.reducerConfig.addTypename) { query = addTypenameToDocument(query); } return readQueryFromStore({ rootId: id, store: data, query: query, variables: variables, fragmentMatcherFunction: this.fragmentMatcher.match, config: this.reducerConfig, }); }; ReduxDataProxy.prototype.writeQuery = function (_a) { var data = _a.data, query = _a.query, variables = _a.variables; if (this.reducerConfig.addTypename) { query = addTypenameToDocument(query); } this.store.dispatch({ type: 'APOLLO_WRITE', writes: [{ rootId: 'ROOT_QUERY', result: data, document: query, variables: variables || {}, }], }); }; ReduxDataProxy.prototype.writeFragment = function (_a) { var data = _a.data, id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables; var document = getFragmentQueryDocument(fragment, fragmentName); if (this.reducerConfig.addTypename) { document = addTypenameToDocument(document); } this.store.dispatch({ type: 'APOLLO_WRITE', writes: [{ rootId: id, result: data, document: document, variables: variables || {}, }], }); }; return ReduxDataProxy; }()); export { ReduxDataProxy }; var TransactionDataProxy = (function () { function TransactionDataProxy(data, reducerConfig) { this.data = __assign({}, data); this.reducerConfig = reducerConfig; this.writes = []; this.isFinished = false; } TransactionDataProxy.prototype.finish = function () { this.assertNotFinished(); var writes = this.writes; this.writes = []; this.isFinished = true; return writes; }; TransactionDataProxy.prototype.readQuery = function (_a) { var query = _a.query, variables = _a.variables; this.assertNotFinished(); if (this.reducerConfig.addTypename) { query = addTypenameToDocument(query); } return readQueryFromStore({ rootId: 'ROOT_QUERY', store: this.data, query: query, variables: variables, config: this.reducerConfig, fragmentMatcherFunction: this.reducerConfig.fragmentMatcher, }); }; TransactionDataProxy.prototype.readFragment = function (_a) { var id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables; this.assertNotFinished(); var data = this.data; var query = getFragmentQueryDocument(fragment, fragmentName); if (this.reducerConfig.addTypename) { query = addTypenameToDocument(query); } if (typeof data[id] === 'undefined') { return null; } return readQueryFromStore({ rootId: id, store: data, query: query, variables: variables, config: this.reducerConfig, fragmentMatcherFunction: this.reducerConfig.fragmentMatcher, }); }; TransactionDataProxy.prototype.writeQuery = function (_a) { var data = _a.data, query = _a.query, variables = _a.variables; this.assertNotFinished(); if (this.reducerConfig.addTypename) { query = addTypenameToDocument(query); } this.applyWrite({ rootId: 'ROOT_QUERY', result: data, document: query, variables: variables || {}, }); }; TransactionDataProxy.prototype.writeFragment = function (_a) { var data = _a.data, id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables; this.assertNotFinished(); var query = getFragmentQueryDocument(fragment, fragmentName); if (this.reducerConfig.addTypename) { query = addTypenameToDocument(query); } this.applyWrite({ rootId: id, result: data, document: query, variables: variables || {}, }); }; TransactionDataProxy.prototype.assertNotFinished = function () { if (this.isFinished) { throw new Error('Cannot call transaction methods after the transaction has finished.'); } }; TransactionDataProxy.prototype.applyWrite = function (write) { writeResultToStore({ result: write.result, dataId: write.rootId, document: write.document, variables: write.variables, store: this.data, dataIdFromObject: this.reducerConfig.dataIdFromObject || (function () { return null; }), fragmentMatcherFunction: this.reducerConfig.fragmentMatcher, }); this.writes.push(write); }; return TransactionDataProxy; }()); export { TransactionDataProxy }; //# sourceMappingURL=proxy.js.map