mirror of
https://github.com/CamHenlin/MessagesForMacintosh.git
synced 2025-02-18 05:30:26 +00:00
96 lines
4.5 KiB
JavaScript
96 lines
4.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var apollo_utilities_1 = require("apollo-utilities");
|
|
var ts_invariant_1 = require("ts-invariant");
|
|
var haveWarned = false;
|
|
function shouldWarn() {
|
|
var answer = !haveWarned;
|
|
if (!apollo_utilities_1.isTest()) {
|
|
haveWarned = true;
|
|
}
|
|
return answer;
|
|
}
|
|
var HeuristicFragmentMatcher = (function () {
|
|
function HeuristicFragmentMatcher() {
|
|
}
|
|
HeuristicFragmentMatcher.prototype.ensureReady = function () {
|
|
return Promise.resolve();
|
|
};
|
|
HeuristicFragmentMatcher.prototype.canBypassInit = function () {
|
|
return true;
|
|
};
|
|
HeuristicFragmentMatcher.prototype.match = function (idValue, typeCondition, context) {
|
|
var obj = context.store.get(idValue.id);
|
|
var isRootQuery = idValue.id === 'ROOT_QUERY';
|
|
if (!obj) {
|
|
return isRootQuery;
|
|
}
|
|
var _a = obj.__typename, __typename = _a === void 0 ? isRootQuery && 'Query' : _a;
|
|
if (!__typename) {
|
|
if (shouldWarn()) {
|
|
ts_invariant_1.invariant.warn("You're using fragments in your queries, but either don't have the addTypename:\n true option set in Apollo Client, or you are trying to write a fragment to the store without the __typename.\n Please turn on the addTypename option and include __typename when writing fragments so that Apollo Client\n can accurately match fragments.");
|
|
ts_invariant_1.invariant.warn('Could not find __typename on Fragment ', typeCondition, obj);
|
|
ts_invariant_1.invariant.warn("DEPRECATION WARNING: using fragments without __typename is unsupported behavior " +
|
|
"and will be removed in future versions of Apollo client. You should fix this and set addTypename to true now.");
|
|
}
|
|
return 'heuristic';
|
|
}
|
|
if (__typename === typeCondition) {
|
|
return true;
|
|
}
|
|
if (shouldWarn()) {
|
|
ts_invariant_1.invariant.error('You are using the simple (heuristic) fragment matcher, but your ' +
|
|
'queries contain union or interface types. Apollo Client will not be ' +
|
|
'able to accurately map fragments. To make this error go away, use ' +
|
|
'the `IntrospectionFragmentMatcher` as described in the docs: ' +
|
|
'https://www.apollographql.com/docs/react/advanced/fragments.html#fragment-matcher');
|
|
}
|
|
return 'heuristic';
|
|
};
|
|
return HeuristicFragmentMatcher;
|
|
}());
|
|
exports.HeuristicFragmentMatcher = HeuristicFragmentMatcher;
|
|
var IntrospectionFragmentMatcher = (function () {
|
|
function IntrospectionFragmentMatcher(options) {
|
|
if (options && options.introspectionQueryResultData) {
|
|
this.possibleTypesMap = this.parseIntrospectionResult(options.introspectionQueryResultData);
|
|
this.isReady = true;
|
|
}
|
|
else {
|
|
this.isReady = false;
|
|
}
|
|
this.match = this.match.bind(this);
|
|
}
|
|
IntrospectionFragmentMatcher.prototype.match = function (idValue, typeCondition, context) {
|
|
ts_invariant_1.invariant(this.isReady, 'FragmentMatcher.match() was called before FragmentMatcher.init()');
|
|
var obj = context.store.get(idValue.id);
|
|
var isRootQuery = idValue.id === 'ROOT_QUERY';
|
|
if (!obj) {
|
|
return isRootQuery;
|
|
}
|
|
var _a = obj.__typename, __typename = _a === void 0 ? isRootQuery && 'Query' : _a;
|
|
ts_invariant_1.invariant(__typename, "Cannot match fragment because __typename property is missing: " + JSON.stringify(obj));
|
|
if (__typename === typeCondition) {
|
|
return true;
|
|
}
|
|
var implementingTypes = this.possibleTypesMap[typeCondition];
|
|
if (__typename &&
|
|
implementingTypes &&
|
|
implementingTypes.indexOf(__typename) > -1) {
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
IntrospectionFragmentMatcher.prototype.parseIntrospectionResult = function (introspectionResultData) {
|
|
var typeMap = {};
|
|
introspectionResultData.__schema.types.forEach(function (type) {
|
|
if (type.kind === 'UNION' || type.kind === 'INTERFACE') {
|
|
typeMap[type.name] = type.possibleTypes.map(function (implementingType) { return implementingType.name; });
|
|
}
|
|
});
|
|
return typeMap;
|
|
};
|
|
return IntrospectionFragmentMatcher;
|
|
}());
|
|
exports.IntrospectionFragmentMatcher = IntrospectionFragmentMatcher;
|
|
//# sourceMappingURL=fragmentMatcher.js.map
|