UNPKG

11.1 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/schema/index.js"],"names":["tracer","require","globalTracer","store","nodeStore","createSchemaComposer","buildSchema","rebuildSchemaWithSitePage","builtInFieldExtensions","builtInTypeDefinitions","TypeConflictReporter","getAllTypeDefinitions","schemaCustomization","types","getState","builtInTypes","map","typeDef","typeOrTypeDef","plugin","undefined","filter","type","name","getAllFieldExtensions","fieldExtensions","customFieldExtensions","buildInferenceMetadata","Promise","resolve","length","typeNames","processNextType","typeName","pop","dispatch","payload","nodes","getNodesByType","setTimeout","build","parentSpan","fullMetadataBuild","spanArgs","childOf","span","startSpan","getTypes","thirdPartySchemas","printConfig","inferenceMetadata","config","mapping","typeMapping","typeConflictReporter","schemaComposer","schema","printConflicts","finish","rebuild","rebuildWithSitePage","composer","module","exports"],"mappings":"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","sourcesContent":["/* @flow */\n\nconst tracer = require(`opentracing`).globalTracer()\nconst { store } = require(`../redux`)\nconst nodeStore = require(`../db/nodes`)\nconst { createSchemaComposer } = require(`./schema-composer`)\nconst { buildSchema, rebuildSchemaWithSitePage } = require(`./schema`)\nconst { builtInFieldExtensions } = require(`./extensions`)\nconst { builtInTypeDefinitions } = require(`./types/built-in-types`)\nconst { TypeConflictReporter } = require(`./infer/type-conflict-reporter`)\n\nconst getAllTypeDefinitions = () => {\n const {\n schemaCustomization: { types },\n } = store.getState()\n\n const builtInTypes = builtInTypeDefinitions().map(typeDef => {\n return {\n typeOrTypeDef: typeDef,\n plugin: undefined,\n }\n })\n\n // Ensure that user-defined types are processed last\n return [\n ...builtInTypes,\n ...types.filter(\n type => type.plugin && type.plugin.name !== `default-site-plugin`\n ),\n ...types.filter(\n type => !type.plugin || type.plugin.name === `default-site-plugin`\n ),\n ]\n}\n\nconst getAllFieldExtensions = () => {\n const {\n schemaCustomization: { fieldExtensions: customFieldExtensions },\n } = store.getState()\n\n return {\n ...customFieldExtensions,\n ...builtInFieldExtensions,\n }\n}\n\n// Schema building requires metadata for type inference.\n// Technically it means looping through all type nodes, analyzing node structure\n// and then using this aggregated node structure in related GraphQL type.\n// Actual logic for inference located in inferenceMetadata reducer and ./infer\n// Here we just orchestrate the process via redux actions\nconst buildInferenceMetadata = ({ types }) =>\n new Promise(resolve => {\n if (!types || !types.length) {\n resolve()\n return\n }\n const typeNames = [...types]\n // TODO: use async iterators when we switch to node>=10\n // or better investigate if we can offload metadata building to worker/Jobs API\n // and then feed the result into redux?\n const processNextType = () => {\n const typeName = typeNames.pop()\n store.dispatch({\n type: `BUILD_TYPE_METADATA`,\n payload: {\n typeName,\n nodes: nodeStore.getNodesByType(typeName),\n },\n })\n if (typeNames.length > 0) {\n // Give event-loop a break\n setTimeout(processNextType, 0)\n } else {\n resolve()\n }\n }\n processNextType()\n })\n\nconst build = async ({ parentSpan, fullMetadataBuild = true }) => {\n const spanArgs = parentSpan ? { childOf: parentSpan } : {}\n const span = tracer.startSpan(`build schema`, spanArgs)\n\n if (fullMetadataBuild) {\n // Build metadata for type inference and start updating it incrementally\n // except for SitePage type: we rebuild it in rebuildWithSitePage anyway\n // so it makes little sense to update it incrementally\n // (and those updates may have significant performance overhead)\n await buildInferenceMetadata({ types: nodeStore.getTypes() })\n store.dispatch({ type: `START_INCREMENTAL_INFERENCE` })\n store.dispatch({ type: `DISABLE_TYPE_INFERENCE`, payload: [`SitePage`] })\n }\n\n const {\n schemaCustomization: { thirdPartySchemas, printConfig },\n inferenceMetadata,\n config: { mapping: typeMapping },\n } = store.getState()\n\n const typeConflictReporter = new TypeConflictReporter()\n\n const fieldExtensions = getAllFieldExtensions()\n const schemaComposer = createSchemaComposer({ fieldExtensions })\n const schema = await buildSchema({\n schemaComposer,\n nodeStore,\n types: getAllTypeDefinitions(),\n fieldExtensions,\n thirdPartySchemas,\n typeMapping,\n printConfig,\n typeConflictReporter,\n inferenceMetadata,\n parentSpan,\n })\n\n typeConflictReporter.printConflicts()\n\n store.dispatch({\n type: `SET_SCHEMA_COMPOSER`,\n payload: schemaComposer,\n })\n store.dispatch({\n type: `SET_SCHEMA`,\n payload: schema,\n })\n\n span.finish()\n}\n\nconst rebuild = async ({ parentSpan }) =>\n await build({ parentSpan, fullMetadataBuild: false })\n\nconst rebuildWithSitePage = async ({ parentSpan }) => {\n const spanArgs = parentSpan ? { childOf: parentSpan } : {}\n const span = tracer.startSpan(\n `rebuild schema with SitePage context`,\n spanArgs\n )\n await buildInferenceMetadata({ types: [`SitePage`] })\n\n // Disabling incremental inference for SitePage after the initial build\n // as it has a significant performance cost for zero benefits.\n // The only benefit is that schema rebuilds when SitePage.context structure changes.\n // (one can just restart `develop` in this case)\n store.dispatch({ type: `DISABLE_TYPE_INFERENCE`, payload: [`SitePage`] })\n\n const {\n schemaCustomization: { composer: schemaComposer },\n config: { mapping: typeMapping },\n inferenceMetadata,\n } = store.getState()\n\n const typeConflictReporter = new TypeConflictReporter()\n\n const schema = await rebuildSchemaWithSitePage({\n schemaComposer,\n nodeStore,\n fieldExtensions: getAllFieldExtensions(),\n typeMapping,\n typeConflictReporter,\n inferenceMetadata,\n parentSpan,\n })\n\n typeConflictReporter.printConflicts()\n\n store.dispatch({\n type: `SET_SCHEMA_COMPOSER`,\n payload: schemaComposer,\n })\n store.dispatch({\n type: `SET_SCHEMA`,\n payload: schema,\n })\n\n span.finish()\n}\n\nmodule.exports = {\n build,\n rebuild,\n rebuildWithSitePage,\n}\n"],"file":"index.js"}
\No newline at end of file