You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.7 KiB
123 lines
3.7 KiB
4 months ago
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
|
||
|
var globals = require('../../utilities/globals');
|
||
|
var utilities = require('../../utilities');
|
||
|
require('tslib');
|
||
|
|
||
|
var globalCaches = {};
|
||
|
function registerGlobalCache(name, getSize) {
|
||
|
globalCaches[name] = getSize;
|
||
|
}
|
||
|
|
||
|
exports.DocumentType = void 0;
|
||
|
(function (DocumentType) {
|
||
|
DocumentType[DocumentType["Query"] = 0] = "Query";
|
||
|
DocumentType[DocumentType["Mutation"] = 1] = "Mutation";
|
||
|
DocumentType[DocumentType["Subscription"] = 2] = "Subscription";
|
||
|
})(exports.DocumentType || (exports.DocumentType = {}));
|
||
|
var cache;
|
||
|
function operationName(type) {
|
||
|
var name;
|
||
|
switch (type) {
|
||
|
case exports.DocumentType.Query:
|
||
|
name = "Query";
|
||
|
break;
|
||
|
case exports.DocumentType.Mutation:
|
||
|
name = "Mutation";
|
||
|
break;
|
||
|
case exports.DocumentType.Subscription:
|
||
|
name = "Subscription";
|
||
|
break;
|
||
|
}
|
||
|
return name;
|
||
|
}
|
||
|
function parser(document) {
|
||
|
if (!cache) {
|
||
|
cache = new utilities.AutoCleanedWeakCache(utilities.cacheSizes.parser || 1000 );
|
||
|
}
|
||
|
var cached = cache.get(document);
|
||
|
if (cached)
|
||
|
return cached;
|
||
|
var variables, type, name;
|
||
|
globals.invariant(!!document && !!document.kind, 59, document);
|
||
|
var fragments = [];
|
||
|
var queries = [];
|
||
|
var mutations = [];
|
||
|
var subscriptions = [];
|
||
|
for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {
|
||
|
var x = _a[_i];
|
||
|
if (x.kind === "FragmentDefinition") {
|
||
|
fragments.push(x);
|
||
|
continue;
|
||
|
}
|
||
|
if (x.kind === "OperationDefinition") {
|
||
|
switch (x.operation) {
|
||
|
case "query":
|
||
|
queries.push(x);
|
||
|
break;
|
||
|
case "mutation":
|
||
|
mutations.push(x);
|
||
|
break;
|
||
|
case "subscription":
|
||
|
subscriptions.push(x);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
globals.invariant(!fragments.length ||
|
||
|
queries.length ||
|
||
|
mutations.length ||
|
||
|
subscriptions.length, 60);
|
||
|
globals.invariant(
|
||
|
queries.length + mutations.length + subscriptions.length <= 1,
|
||
|
61,
|
||
|
document,
|
||
|
queries.length,
|
||
|
subscriptions.length,
|
||
|
mutations.length
|
||
|
);
|
||
|
type = queries.length ? exports.DocumentType.Query : exports.DocumentType.Mutation;
|
||
|
if (!queries.length && !mutations.length)
|
||
|
type = exports.DocumentType.Subscription;
|
||
|
var definitions = queries.length ? queries
|
||
|
: mutations.length ? mutations
|
||
|
: subscriptions;
|
||
|
globals.invariant(definitions.length === 1, 62, document, definitions.length);
|
||
|
var definition = definitions[0];
|
||
|
variables = definition.variableDefinitions || [];
|
||
|
if (definition.name && definition.name.kind === "Name") {
|
||
|
name = definition.name.value;
|
||
|
}
|
||
|
else {
|
||
|
name = "data";
|
||
|
}
|
||
|
var payload = { name: name, type: type, variables: variables };
|
||
|
cache.set(document, payload);
|
||
|
return payload;
|
||
|
}
|
||
|
parser.resetCache = function () {
|
||
|
cache = undefined;
|
||
|
};
|
||
|
if (globalThis.__DEV__ !== false) {
|
||
|
registerGlobalCache("parser", function () { return (cache ? cache.size : 0); });
|
||
|
}
|
||
|
function verifyDocumentType(document, type) {
|
||
|
var operation = parser(document);
|
||
|
var requiredOperationName = operationName(type);
|
||
|
var usedOperationName = operationName(operation.type);
|
||
|
globals.invariant(
|
||
|
operation.type === type,
|
||
|
63,
|
||
|
requiredOperationName,
|
||
|
requiredOperationName,
|
||
|
usedOperationName
|
||
|
);
|
||
|
}
|
||
|
|
||
|
exports.operationName = operationName;
|
||
|
exports.parser = parser;
|
||
|
exports.verifyDocumentType = verifyDocumentType;
|
||
|
//# sourceMappingURL=parser.cjs.map
|