apollo-client-cors-hack
Version:
A simple yet functional GraphQL client.
184 lines • 7.1 kB
JavaScript
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