UNPKG

5.46 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/query/graphql-runner.js"],"names":["parse","validate","execute","require","debounce","withResolverContext","LocalNodeModel","GraphQLRunner","constructor","store","nodeStore","createPageDependency","schema","schemaCustomization","getState","nodeModel","schemaComposer","composer","parseCache","Map","validDocuments","WeakSet","scheduleClearCache","clearCache","bind","clear","query","has","set","get","document","errors","length","add","context","result","rootValue","contextValue","customContext","variableValues","Promise","resolve","module","exports"],"mappings":"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","sourcesContent":["const { parse, validate, execute } = require(`graphql`)\nconst { debounce } = require(`lodash`)\n\nconst withResolverContext = require(`../schema/context`)\nconst { LocalNodeModel } = require(`../schema/node-model`)\n\nclass GraphQLRunner {\n constructor(store) {\n this.store = store\n const nodeStore = require(`../db/nodes`)\n const createPageDependency = require(`../redux/actions/add-page-dependency`)\n const { schema, schemaCustomization } = this.store.getState()\n\n this.nodeModel = new LocalNodeModel({\n nodeStore,\n schema,\n schemaComposer: schemaCustomization.composer,\n createPageDependency,\n })\n this.schema = schema\n this.parseCache = new Map()\n this.validDocuments = new WeakSet()\n this.scheduleClearCache = debounce(this.clearCache.bind(this), 5000)\n }\n\n clearCache() {\n this.parseCache.clear()\n this.validDocuments = new WeakSet()\n }\n\n parse(query) {\n if (!this.parseCache.has(query)) {\n this.parseCache.set(query, parse(query))\n }\n return this.parseCache.get(query)\n }\n\n validate(schema, document) {\n if (!this.validDocuments.has(document)) {\n const errors = validate(schema, document)\n if (!errors.length) {\n this.validDocuments.add(document)\n }\n return errors\n }\n return []\n }\n\n query(query, context) {\n const { schema, schemaCustomization } = this.store.getState()\n\n if (this.schema !== schema) {\n this.schema = schema\n this.clearCache()\n }\n\n const document = this.parse(query)\n const errors = this.validate(schema, document)\n\n const result =\n errors.length > 0\n ? { errors }\n : execute({\n schema,\n document,\n rootValue: context,\n contextValue: withResolverContext({\n schema,\n schemaComposer: schemaCustomization.composer,\n context,\n customContext: schemaCustomization.context,\n nodeModel: this.nodeModel,\n }),\n variableValues: context,\n })\n\n // Queries are usually executed in batch. But after the batch is finished\n // cache just wastes memory without much benefits.\n // TODO: consider a better strategy for cache purging/invalidation\n this.scheduleClearCache()\n return Promise.resolve(result)\n }\n}\n\nmodule.exports = GraphQLRunner\n"],"file":"graphql-runner.js"}
\No newline at end of file