Odoo GraphQL Subscription using Node, Express JS for Sample
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.
 
 
 

109 lines
3.5 KiB

import { invariant } from "../../utilities/globals/index.js";
import { AutoCleanedWeakCache, cacheSizes, } from "../../utilities/index.js";
import { registerGlobalCache } from "../../utilities/caching/getMemoryInternals.js";
export var DocumentType;
(function (DocumentType) {
DocumentType[DocumentType["Query"] = 0] = "Query";
DocumentType[DocumentType["Mutation"] = 1] = "Mutation";
DocumentType[DocumentType["Subscription"] = 2] = "Subscription";
})(DocumentType || (DocumentType = {}));
var cache;
export function operationName(type) {
var name;
switch (type) {
case DocumentType.Query:
name = "Query";
break;
case DocumentType.Mutation:
name = "Mutation";
break;
case DocumentType.Subscription:
name = "Subscription";
break;
}
return name;
}
// This parser is mostly used to safety check incoming documents.
export function parser(document) {
if (!cache) {
cache = new AutoCleanedWeakCache(cacheSizes.parser || 1000 /* defaultCacheSizes.parser */);
}
var cached = cache.get(document);
if (cached)
return cached;
var variables, type, name;
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;
}
}
}
invariant(!fragments.length ||
queries.length ||
mutations.length ||
subscriptions.length, 60);
invariant(
queries.length + mutations.length + subscriptions.length <= 1,
61,
document,
queries.length,
subscriptions.length,
mutations.length
);
type = queries.length ? DocumentType.Query : DocumentType.Mutation;
if (!queries.length && !mutations.length)
type = DocumentType.Subscription;
var definitions = queries.length ? queries
: mutations.length ? mutations
: subscriptions;
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"; // fallback to using data if no name
}
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); });
}
export function verifyDocumentType(document, type) {
var operation = parser(document);
var requiredOperationName = operationName(type);
var usedOperationName = operationName(operation.type);
invariant(
operation.type === type,
63,
requiredOperationName,
requiredOperationName,
usedOperationName
);
}
//# sourceMappingURL=index.js.map