gatsby 5.8.0 → 5.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -30,10 +30,12 @@ const incrementalReducer = (state = {}, action) => {
|
|
|
30
30
|
// Overwrites existing metadata
|
|
31
31
|
const {
|
|
32
32
|
nodes,
|
|
33
|
-
typeName
|
|
33
|
+
typeName,
|
|
34
|
+
clearExistingMetadata
|
|
34
35
|
} = action.payload;
|
|
35
36
|
if (!((_state$typeName = state[typeName]) !== null && _state$typeName !== void 0 && _state$typeName.ignored)) {
|
|
36
|
-
state[typeName]
|
|
37
|
+
const initialMetadata = clearExistingMetadata || !state[typeName] ? initialTypeMetadata() : state[typeName];
|
|
38
|
+
state[typeName] = (0, _inferenceMetadata.addNodes)(initialMetadata, nodes);
|
|
37
39
|
}
|
|
38
40
|
return state;
|
|
39
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference-metadata.js","names":["ignoredFields","Set","NodeInterfaceFields","initialTypeMetadata","incrementalReducer","state","action","type","typeDefs","Array","isArray","payload","ignoredTypes","reduce","typesWithoutInference","forEach","ignore","nodes","typeName","ignored","addNodes","types","disable","node","oldNode","internal","deleteNode","addNode","addedField","previousFields","fields","dirty","Object","keys","StepsEnum","initialState","step","initialBuild","typeMap","inferenceMetadataReducer","incrementalBuild"],"sources":["../../../src/redux/reducers/inference-metadata.ts"],"sourcesContent":["// Tracking structure of nodes to utilize this metadata for schema inference\n// Type descriptors stay relevant at any point in time making incremental inference trivial\nimport { omit } from \"lodash\"\nimport {\n addNode,\n addNodes,\n deleteNode,\n ignore,\n disable,\n} from \"../../schema/infer/inference-metadata\"\nimport { NodeInterfaceFields } from \"../../schema/types/node-interface\"\nimport { typesWithoutInference } from \"../../schema/types/type-defs\"\n\nimport { IGatsbyState, ActionsUnion } from \"../types\"\n\nconst ignoredFields: Set<string> = new Set(NodeInterfaceFields)\n\nconst initialTypeMetadata = (): { ignoredFields: Set<string> } => {\n return { ignoredFields }\n}\n\nconst incrementalReducer = (\n state: IGatsbyState[\"inferenceMetadata\"][\"typeMap\"] = {},\n action: ActionsUnion\n): IGatsbyState[\"inferenceMetadata\"][\"typeMap\"] => {\n switch (action.type) {\n case `CREATE_TYPES`: {\n const typeDefs = Array.isArray(action.payload)\n ? action.payload\n : [action.payload]\n const ignoredTypes = typeDefs.reduce(typesWithoutInference, [])\n ignoredTypes.forEach(type => {\n state[type] = ignore(state[type] || initialTypeMetadata())\n })\n return state\n }\n\n case `BUILD_TYPE_METADATA`: {\n // Overwrites existing metadata\n const { nodes, typeName } = action.payload\n if (!state[typeName]?.ignored) {\n state[typeName] = addNodes(
|
|
1
|
+
{"version":3,"file":"inference-metadata.js","names":["ignoredFields","Set","NodeInterfaceFields","initialTypeMetadata","incrementalReducer","state","action","type","typeDefs","Array","isArray","payload","ignoredTypes","reduce","typesWithoutInference","forEach","ignore","nodes","typeName","clearExistingMetadata","ignored","initialMetadata","addNodes","types","disable","node","oldNode","internal","deleteNode","addNode","addedField","previousFields","fields","dirty","Object","keys","StepsEnum","initialState","step","initialBuild","typeMap","inferenceMetadataReducer","incrementalBuild"],"sources":["../../../src/redux/reducers/inference-metadata.ts"],"sourcesContent":["// Tracking structure of nodes to utilize this metadata for schema inference\n// Type descriptors stay relevant at any point in time making incremental inference trivial\nimport { omit } from \"lodash\"\nimport {\n addNode,\n addNodes,\n deleteNode,\n ignore,\n disable,\n} from \"../../schema/infer/inference-metadata\"\nimport { NodeInterfaceFields } from \"../../schema/types/node-interface\"\nimport { typesWithoutInference } from \"../../schema/types/type-defs\"\n\nimport { IGatsbyState, ActionsUnion } from \"../types\"\n\nconst ignoredFields: Set<string> = new Set(NodeInterfaceFields)\n\nconst initialTypeMetadata = (): { ignoredFields: Set<string> } => {\n return { ignoredFields }\n}\n\nconst incrementalReducer = (\n state: IGatsbyState[\"inferenceMetadata\"][\"typeMap\"] = {},\n action: ActionsUnion\n): IGatsbyState[\"inferenceMetadata\"][\"typeMap\"] => {\n switch (action.type) {\n case `CREATE_TYPES`: {\n const typeDefs = Array.isArray(action.payload)\n ? action.payload\n : [action.payload]\n const ignoredTypes = typeDefs.reduce(typesWithoutInference, [])\n ignoredTypes.forEach(type => {\n state[type] = ignore(state[type] || initialTypeMetadata())\n })\n return state\n }\n\n case `BUILD_TYPE_METADATA`: {\n // Overwrites existing metadata\n const { nodes, typeName, clearExistingMetadata } = action.payload\n if (!state[typeName]?.ignored) {\n const initialMetadata =\n clearExistingMetadata || !state[typeName]\n ? initialTypeMetadata()\n : state[typeName]\n\n state[typeName] = addNodes(initialMetadata, nodes)\n }\n return state\n }\n\n case `DISABLE_TYPE_INFERENCE`: {\n // Note: types disabled here will be re-enabled after BUILD_TYPE_METADATA\n const types = action.payload\n types.forEach(type => {\n state[type] = disable(state[type] || initialTypeMetadata())\n })\n return state\n }\n\n case `CREATE_NODE`: {\n const { payload: node, oldNode } = action\n const { type } = node.internal\n if (oldNode) {\n state[type] = deleteNode(state[type] || initialTypeMetadata(), oldNode)\n }\n state[type] = addNode(state[type] || initialTypeMetadata(), node)\n return state\n }\n\n case `DELETE_NODE`: {\n const node = action.payload\n if (!node) return state\n const { type } = node.internal\n state[type] = deleteNode(state[type] || initialTypeMetadata(), node)\n return state\n }\n\n case `ADD_FIELD_TO_NODE`: {\n const { payload: node, addedField } = action\n const { type } = node.internal\n\n // Must unregister previous fields first.\n // Can't simply add { fields: { [addedField]: node.fields[addedField] } }\n // because it will count `fields` key twice for the same node\n const previousFields = omit(node.fields, [addedField])\n state[type] = deleteNode(state[type], { ...node, fields: previousFields })\n state[type] = addNode(state[type], { ...node, fields: node.fields })\n\n // TODO: there might be an edge case when the same field is \"added\" twice.\n // Then we'll count it twice in metadata. The only way to avoid it as I see it\n // is to pass original node before modifications along with a new node\n // in action payload and utilize original `node.fields` in deleteNode call above\n return state\n }\n\n case `ADD_CHILD_NODE_TO_PARENT_NODE`: {\n // Marking parent type as dirty so that it rebuilds\n const { type } = action.payload.internal\n state[type].dirty = true\n return state\n }\n\n case `SET_SCHEMA`: {\n Object.keys(state).forEach(type => {\n state[type].dirty = false\n })\n return state\n }\n\n default:\n return state\n }\n}\n\nenum StepsEnum {\n initialBuild = `initialBuild`,\n incrementalBuild = `incrementalBuild`,\n}\n\nconst initialState = (): IGatsbyState[\"inferenceMetadata\"] => {\n return {\n step: StepsEnum.initialBuild, // `initialBuild` | `incrementalBuild`\n typeMap: {},\n }\n}\n\nexport const inferenceMetadataReducer = (\n state: IGatsbyState[\"inferenceMetadata\"] = initialState(),\n action: ActionsUnion\n): IGatsbyState[\"inferenceMetadata\"] => {\n switch (action.type) {\n case `CREATE_NODE`:\n case `DELETE_NODE`:\n case `ADD_CHILD_NODE_TO_PARENT_NODE`:\n case `ADD_FIELD_TO_NODE`: {\n // Perf: disable incremental inference until the first schema build.\n // There are plugins which create and delete lots of nodes during bootstrap,\n // which makes this reducer to do a lot of unnecessary work.\n // Instead we defer the initial metadata creation until the first schema build\n // and then enable incremental updates explicitly\n if (state.step === StepsEnum.initialBuild) {\n return state\n }\n state.typeMap = incrementalReducer(state.typeMap, action)\n return state\n }\n\n case `START_INCREMENTAL_INFERENCE`: {\n return {\n ...state,\n step: StepsEnum.incrementalBuild,\n }\n }\n\n case `DELETE_CACHE`: {\n return initialState()\n }\n\n default: {\n state.typeMap = incrementalReducer(state.typeMap, action)\n return state\n }\n }\n}\n"],"mappings":"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"}
|
package/dist/redux/types.d.ts
CHANGED
package/dist/redux/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["ProgramStatus"],"sources":["../../src/redux/types.ts"],"sourcesContent":["import type { TrailingSlash } from \"gatsby-page-utils\"\nimport { IProgram, Stage } from \"../commands/types\"\nimport { GraphQLFieldExtensionDefinition } from \"../schema/extensions\"\nimport {\n DocumentNode,\n GraphQLSchema,\n DefinitionNode,\n SourceLocation,\n} from \"graphql\"\nimport { SchemaComposer } from \"graphql-compose\"\nimport { IGatsbyCLIState } from \"gatsby-cli/src/reporter/redux/types\"\nimport { ThunkAction } from \"redux-thunk\"\nimport { InternalJob, JobResultInterface } from \"../utils/jobs/manager\"\nimport { ITypeMetadata } from \"../schema/infer/inference-metadata\"\nimport { Span } from \"opentracing\"\nimport { ICollectedSlices } from \"../utils/babel/find-slices\"\n\ntype SystemPath = string\ntype Identifier = string\n\nexport interface IRedirect {\n fromPath: string\n toPath: string\n isPermanent?: boolean\n redirectInBrowser?: boolean\n ignoreCase: boolean\n // Users can add anything to this createRedirect API\n [key: string]: any\n}\n\nexport enum ProgramStatus {\n BOOTSTRAP_FINISHED = `BOOTSTRAP_FINISHED`,\n BOOTSTRAP_QUERY_RUNNING_FINISHED = `BOOTSTRAP_QUERY_RUNNING_FINISHED`,\n}\n\nexport type PageMode = \"SSG\" | \"DSG\" | \"SSR\"\n\nexport interface IGatsbyPage {\n internalComponentName: string\n path: string\n matchPath: undefined | string\n component: SystemPath\n componentChunkName: string\n isCreatedByStatefulCreatePages: boolean\n context: Record<string, unknown>\n updatedAt: number\n // eslint-disable-next-line @typescript-eslint/naming-convention\n pluginCreator___NODE: Identifier\n pluginCreatorId: Identifier\n componentPath: SystemPath\n ownerNodeId: Identifier\n manifestId?: string\n defer?: boolean\n /**\n * INTERNAL. Do not use `page.mode`, it can be removed at any time\n * `page.mode` is currently reliable only in engines and `onPostBuild` hook\n * (in develop it is dynamic and can change at any time)\n * TODO: remove, see comments in utils/page-mode:materializePageMode\n *\n * @internal\n */\n mode: PageMode\n slices: Record<string, string>\n}\n\nexport interface IGatsbySlice {\n componentPath: string\n componentChunkName: string\n context: Record<string, unknown>\n name: string\n updatedAt: number\n}\n\nexport interface IGatsbyFunction {\n /** The route in the browser to access the function **/\n functionRoute: string\n /** The absolute path to the original function **/\n originalAbsoluteFilePath: string\n /** The relative path to the original function **/\n originalRelativeFilePath: string\n /** The relative path to the compiled function (always ends with .js) **/\n relativeCompiledFilePath: string\n /** The absolute path to the compiled function (doesn't transfer across machines) **/\n absoluteCompiledFilePath: string\n /** The matchPath regex created by path-to-regexp. Only created if the function is dynamic. **/\n matchPath: string | undefined\n /** The plugin that owns this function route **/\n pluginName: string\n}\n\nexport interface IGraphQLTypegenOptions {\n typesOutputPath: string\n documentSearchPaths: Array<string>\n generateOnBuild: boolean\n}\n\nexport interface IGatsbyConfig {\n plugins?: Array<{\n // This is the name of the plugin like `gatsby-plugin-manifest`\n resolve: string\n options: {\n [key: string]: unknown\n }\n }>\n siteMetadata?: {\n title?: string\n author?: string\n description?: string\n siteUrl?: string\n // siteMetadata is free form\n [key: string]: unknown\n }\n // @deprecated\n polyfill?: boolean\n developMiddleware?: any\n proxy?: any\n partytownProxiedURLs?: Array<string>\n pathPrefix?: string\n assetPrefix?: string\n mapping?: Record<string, string>\n jsxRuntime?: \"classic\" | \"automatic\"\n jsxImportSource?: string\n trailingSlash?: TrailingSlash\n graphqlTypegen?: IGraphQLTypegenOptions\n}\n\nexport interface IGatsbyNode {\n id: Identifier\n parent: Identifier\n children: Array<Identifier>\n internal: {\n type: string\n counter: number\n owner: string\n contentDigest: string\n mediaType?: string\n content?: string\n description?: string\n }\n [key: string]: unknown\n fields: Array<string>\n}\n\nexport interface IGatsbyPlugin {\n id: Identifier\n name: string\n version: string\n [key: string]: any\n}\n\nexport interface IGatsbyPluginContext {\n [key: string]: (...args: Array<any>) => any\n}\n\nexport interface IGatsbyStaticQueryComponents {\n name: string\n componentPath: SystemPath\n id: Identifier\n query: string\n hash: string\n}\n\nexport interface IGatsbyPageComponent {\n componentPath: SystemPath\n componentChunkName: string\n query: string\n pages: Set<string>\n isInBootstrap: boolean\n serverData: boolean\n config: boolean\n isSlice: boolean\n Head: boolean\n}\n\nexport interface IDefinitionMeta {\n name: string\n def: DefinitionNode\n filePath: string\n text: string\n templateLoc: SourceLocation\n printedAst: string | null\n isHook: boolean\n isStaticQuery: boolean\n isFragment: boolean\n isConfigQuery: boolean\n hash: number\n}\n\ntype GatsbyNodes = Map<string, IGatsbyNode>\n\nexport interface IGatsbyIncompleteJobV2 {\n job: InternalJob\n}\n\nexport interface IGatsbyIncompleteJob {\n job: InternalJob\n plugin: IGatsbyPlugin\n}\n\nexport interface IGatsbyCompleteJobV2 {\n result: JobResultInterface\n inputPaths: InternalJob[\"inputPaths\"]\n}\n\nexport interface IPlugin {\n name: string\n options: Record<string, unknown>\n}\n\nexport interface IBabelStage {\n plugins: Array<IPlugin>\n presets: Array<IPlugin>\n options?: {\n cacheDirectory: boolean\n sourceType: string\n sourceMaps?: string\n }\n}\n\nexport interface IStateProgram extends IProgram {\n extensions: Array<string>\n browserslist: Array<string>\n}\n\nexport interface IQueryState {\n dirty: number\n running: number\n}\n\nexport interface IComponentState {\n componentPath: string\n query: string\n pages: Set<Identifier>\n errors: number\n}\n\nexport interface IHtmlFileState {\n dirty: number\n isDeleted: boolean\n pageDataHash: string\n}\n\nexport interface IStaticQueryResultState {\n dirty: number\n staticQueryResultHash: string\n}\n\nexport type GatsbyNodeAPI =\n | \"onPreBoostrap\"\n | \"onPostBoostrap\"\n | \"onCreateWebpackConfig\"\n | \"onCreatePage\"\n | \"onCreateNode\"\n | \"sourceNodes\"\n | \"createPagesStatefully\"\n | \"createPages\"\n | \"onPostBuild\"\n\nexport interface IGatsbyState {\n program: IStateProgram\n nodes: GatsbyNodes\n nodesByType: Map<string, GatsbyNodes>\n resolvedNodesCache: Map<string, any> // TODO\n nodesTouched: Set<string>\n nodeManifests: Array<INodeManifest>\n requestHeaders: Map<string, { [header: string]: string }>\n telemetry: ITelemetry\n lastAction: ActionsUnion\n flattenedPlugins: Array<{\n resolve: SystemPath\n id: Identifier\n name: string\n version: string\n pluginOptions: {\n plugins: []\n [key: string]: unknown\n }\n nodeAPIs: Array<GatsbyNodeAPI>\n browserAPIs: Array<\n | \"onRouteUpdate\"\n | \"registerServiceWorker\"\n | \"onServiceWorkerActive\"\n | \"onPostPrefetchPathname\"\n >\n ssrAPIs: Array<\"onRenderBody\" | \"onPreRenderHTML\">\n pluginFilepath: SystemPath\n subPluginPaths?: Array<string>\n modulePath?: string\n }>\n config: IGatsbyConfig\n functions: Array<IGatsbyFunction>\n pages: Map<string, IGatsbyPage>\n schema: GraphQLSchema\n definitions: Map<string, IDefinitionMeta>\n status: {\n plugins: Record<string, IGatsbyPlugin>\n PLUGINS_HASH: Identifier\n LAST_NODE_COUNTER: number\n }\n queries: {\n byNode: Map<Identifier, Set<Identifier>>\n byConnection: Map<string, Set<Identifier>>\n queryNodes: Map<Identifier, Set<Identifier>>\n trackedQueries: Map<Identifier, IQueryState>\n trackedComponents: Map<string, IComponentState>\n deletedQueries: Set<Identifier>\n dirtyQueriesListToEmitViaWebsocket: Array<string>\n }\n components: Map<IGatsbyPageComponent[\"componentPath\"], IGatsbyPageComponent>\n staticQueryComponents: Map<\n IGatsbyStaticQueryComponents[\"id\"],\n IGatsbyStaticQueryComponents\n >\n staticQueriesByTemplate: Map<SystemPath, Array<Identifier>>\n pendingPageDataWrites: {\n pagePaths: Set<string>\n sliceNames: Set<string>\n }\n // @deprecated\n jobs: {\n active: Array<any> // TODO\n done: Array<any> // TODO\n }\n jobsV2: {\n incomplete: Map<Identifier, IGatsbyIncompleteJobV2>\n complete: Map<Identifier, IGatsbyCompleteJobV2>\n jobsByRequest: Map<string, Set<Identifier>>\n }\n webpack: any // TODO This should be the output from ./utils/webpack.config.js\n webpackCompilationHash: string\n redirects: Array<IRedirect>\n babelrc: {\n stages: {\n [key in Stage]: IBabelStage\n }\n }\n schemaCustomization: {\n composer: null | SchemaComposer<any>\n context: Record<string, any>\n fieldExtensions: GraphQLFieldExtensionDefinition\n printConfig: {\n path?: string\n include?: { types?: Array<string>; plugins?: Array<string> }\n exclude?: { types?: Array<string>; plugins?: Array<string> }\n withFieldTypes?: boolean\n } | null\n thirdPartySchemas: Array<GraphQLSchema>\n types: Array<\n string | { typeOrTypeDef: DocumentNode; plugin: IGatsbyPlugin }\n >\n }\n logs: IGatsbyCLIState\n inferenceMetadata: {\n step: string // TODO make enum or union\n typeMap: {\n [key: string]: ITypeMetadata\n }\n }\n pageDataStats: Map<SystemPath, number>\n visitedPages: Map<string, Set<string>>\n html: {\n trackedHtmlFiles: Map<Identifier, IHtmlFileState>\n browserCompilationHash: string\n ssrCompilationHash: string\n trackedStaticQueryResults: Map<string, IStaticQueryResultState>\n unsafeBuiltinWasUsedInSSR: boolean\n templateCompilationHashes: Record<string, string>\n slicesProps: {\n bySliceId: Map<\n string,\n {\n pages: Set<string>\n props: Record<string, unknown>\n sliceName: string\n hasChildren: boolean\n dirty: number\n }\n >\n byPagePath: Map<string, Set<string>>\n bySliceName: Map<\n string,\n {\n sliceDataHash: string\n dirty: number\n props: Set<string>\n }\n >\n }\n pagesThatNeedToStitchSlices: Set<string>\n }\n slices: Map<string, IGatsbySlice>\n componentsUsingSlices: Map<string, ICollectedSlices>\n slicesByTemplate: Map<SystemPath, ICollectedSlices>\n}\n\nexport type GatsbyStateKeys = keyof IGatsbyState\n\nexport interface ICachedReduxState {\n nodes?: IGatsbyState[\"nodes\"]\n status: IGatsbyState[\"status\"]\n components: IGatsbyState[\"components\"]\n jobsV2: IGatsbyState[\"jobsV2\"]\n staticQueryComponents: IGatsbyState[\"staticQueryComponents\"]\n webpackCompilationHash: IGatsbyState[\"webpackCompilationHash\"]\n pageDataStats: IGatsbyState[\"pageDataStats\"]\n pages?: IGatsbyState[\"pages\"]\n staticQueriesByTemplate: IGatsbyState[\"staticQueriesByTemplate\"]\n pendingPageDataWrites: IGatsbyState[\"pendingPageDataWrites\"]\n queries: IGatsbyState[\"queries\"]\n html: IGatsbyState[\"html\"]\n slices: IGatsbyState[\"slices\"]\n slicesByTemplate: IGatsbyState[\"slicesByTemplate\"]\n}\n\nexport type ActionsUnion =\n | IAddChildNodeToParentNodeAction\n | IAddFieldToNodeAction\n | IAddThirdPartySchema\n | IApiFinishedAction\n | ICreateFieldExtension\n | ICreateNodeAction\n | ICreatePageAction\n | ICreatePageDependencyAction\n | ICreateTypes\n | IDeleteCacheAction\n | IDeleteNodeAction\n | IDeletePageAction\n | IPageQueryRunAction\n | IPrintTypeDefinitions\n | IQueryClearDirtyQueriesListToEmitViaWebsocket\n | IQueryExtractedAction\n | IQueryExtractedBabelSuccessAction\n | IQueryExtractionBabelErrorAction\n | IQueryExtractionGraphQLErrorAction\n | IQueryStartAction\n | IRemoveStaticQuery\n | IReplaceComponentQueryAction\n | IReplaceStaticQueryAction\n | IReplaceWebpackConfigAction\n | ISetPluginStatusAction\n | ISetProgramStatusAction\n | ISetResolvedNodesAction\n | ISetSchemaAction\n | ISetGraphQLDefinitionsAction\n | ISetSiteFlattenedPluginsAction\n | ISetWebpackCompilationHashAction\n | ISetSSRGlobalSharedWebpackCompilationHashAction\n | ISetWebpackConfigAction\n | ITouchNodeAction\n | IUpdatePluginsHashAction\n | ICreateJobV2Action\n | IEndJobV2Action\n | IRemoveStaleJobV2Action\n | IAddPageDataStatsAction\n | IAddSliceDataStatsAction\n | IRemoveTemplateComponentAction\n | ISetBabelPluginAction\n | ISetBabelPresetAction\n | ISetBabelOptionsAction\n | ICreateJobAction\n | ISetJobAction\n | IEndJobAction\n | ISetStaticQueriesByTemplateAction\n | IAddPendingPageDataWriteAction\n | IAddPendingTemplateDataWriteAction\n | IAddPendingSliceDataWriteAction\n | IAddPendingSliceTemplateDataWriteAction\n | IClearPendingPageDataWriteAction\n | IClearPendingSliceDataWriteAction\n | ICreateResolverContext\n | IClearSchemaCustomizationAction\n | ISetSchemaComposerAction\n | IStartIncrementalInferenceAction\n | IBuildTypeMetadataAction\n | IDisableTypeInferenceAction\n | ISetProgramAction\n | ISetProgramExtensions\n | IRemovedHtml\n | ITrackedHtmlCleanup\n | IGeneratedHtml\n | IMarkHtmlDirty\n | ISSRUsedUnsafeBuiltin\n | ISetSiteConfig\n | IMergeWorkerQueryState\n | ISetComponentFeatures\n | IMaterializePageMode\n | ISetJobV2Context\n | IClearJobV2Context\n | ISetDomainRequestHeaders\n | ICreateSliceAction\n | IDeleteSliceAction\n | ISetSSRTemplateWebpackCompilationHashAction\n | ISetComponentsUsingSlicesAction\n | ISetSlicesByTemplateAction\n | ISetSlicesProps\n | ISlicesPropsRemoveStale\n | ISlicesPropsRendered\n | ISlicesStitched\n | ISlicesScriptsRegenerated\n | IProcessGatsbyImageSourceUrlAction\n | IClearGatsbyImageSourceUrlAction\n\nexport interface ISetComponentFeatures {\n type: `SET_COMPONENT_FEATURES`\n payload: {\n componentPath: string\n serverData: boolean\n config: boolean\n Head: boolean\n }\n}\n\nexport interface IApiFinishedAction {\n type: `API_FINISHED`\n payload: {\n apiName: GatsbyNodeAPI\n }\n}\n\ninterface ISetBabelPluginAction {\n type: `SET_BABEL_PLUGIN`\n payload: {\n stage: Stage\n name: IPlugin[\"name\"]\n options: IPlugin[\"options\"]\n }\n}\n\ninterface ISetBabelPresetAction {\n type: `SET_BABEL_PRESET`\n payload: {\n stage: Stage\n name: IPlugin[\"name\"]\n options: IPlugin[\"options\"]\n }\n}\n\ninterface ISetBabelOptionsAction {\n type: `SET_BABEL_OPTIONS`\n payload: {\n stage: Stage\n name: IPlugin[\"name\"]\n options: IPlugin[\"options\"]\n }\n}\n\nexport interface ICreateJobV2Action {\n type: `CREATE_JOB_V2`\n payload: {\n job: IGatsbyIncompleteJobV2[\"job\"]\n }\n plugin: { name: string }\n}\n\nexport interface IEndJobV2Action {\n type: `END_JOB_V2`\n payload: {\n jobContentDigest: string\n result: JobResultInterface\n }\n plugin: { name: string }\n}\n\nexport interface IRemoveStaleJobV2Action {\n type: `REMOVE_STALE_JOB_V2`\n payload: {\n contentDigest: string\n }\n}\n\nexport type ICreateJobV2FromInternalAction = ThunkAction<\n Promise<Record<string, unknown>>,\n IGatsbyState,\n void,\n ActionsUnion\n>\n\ninterface ICreateJobAction {\n type: `CREATE_JOB`\n payload: {\n id: string\n job: IGatsbyIncompleteJob[\"job\"]\n }\n plugin: IGatsbyIncompleteJob[\"plugin\"]\n}\n\ninterface ISetJobAction {\n type: `SET_JOB`\n payload: {\n id: string\n job: IGatsbyIncompleteJob[\"job\"]\n }\n plugin: IGatsbyIncompleteJob[\"plugin\"]\n}\n\ninterface IEndJobAction {\n type: `END_JOB`\n payload: {\n id: string\n job: IGatsbyIncompleteJob[\"job\"]\n }\n plugin: IGatsbyIncompleteJob[\"plugin\"]\n}\n\nexport interface ICreatePageDependencyActionPayloadType {\n path: string\n nodeId?: string\n connection?: string\n}\n\nexport interface ICreatePageDependencyAction {\n type: `CREATE_COMPONENT_DEPENDENCY`\n plugin?: string\n payload: Array<ICreatePageDependencyActionPayloadType>\n}\n\nexport interface IDeleteComponentDependenciesAction {\n type: \"DELETE_COMPONENTS_DEPENDENCIES\"\n payload: {\n paths: Array<string>\n }\n}\n\nexport interface IReplaceComponentQueryAction {\n type: \"REPLACE_COMPONENT_QUERY\"\n payload: {\n query: string\n componentPath: string\n }\n}\n\nexport interface IReplaceStaticQueryAction {\n type: `REPLACE_STATIC_QUERY`\n plugin: IGatsbyPlugin | null | undefined\n payload: {\n name: string\n componentPath: string\n id: string\n query: string\n hash: string\n }\n}\n\nexport interface IQueryClearDirtyQueriesListToEmitViaWebsocket {\n type: `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`\n}\n\nexport interface IQueryExtractedAction {\n type: `QUERY_EXTRACTED`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { componentPath: string; query: string }\n}\n\nexport interface IQueryExtractionGraphQLErrorAction {\n type: `QUERY_EXTRACTION_GRAPHQL_ERROR`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { componentPath: string; error: string }\n}\n\nexport interface IQueryExtractedBabelSuccessAction {\n type: `QUERY_EXTRACTION_BABEL_SUCCESS`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { componentPath: string }\n}\n\nexport interface IQueryExtractionBabelErrorAction {\n type: `QUERY_EXTRACTION_BABEL_ERROR`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: {\n componentPath: string\n error: Error\n }\n}\n\nexport interface ISetProgramStatusAction {\n type: `SET_PROGRAM_STATUS`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: ProgramStatus\n}\n\nexport interface IPageQueryRunAction {\n type: `PAGE_QUERY_RUN`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: {\n path: string\n componentPath: string\n queryType: \"page\" | \"static\" | \"slice\"\n resultHash: string\n queryHash: string\n }\n}\n\nexport interface IQueryStartAction {\n type: `QUERY_START`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { path: string; componentPath: string; isPage: boolean }\n}\n\nexport interface IRemoveStaleJobAction {\n type: `REMOVE_STALE_JOB_V2`\n plugin: IGatsbyPlugin | undefined\n traceId?: string\n payload: { contentDigest: string }\n}\n\nexport interface IAddThirdPartySchema {\n type: `ADD_THIRD_PARTY_SCHEMA`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: GraphQLSchema\n}\n\nexport interface ICreateTypes {\n type: `CREATE_TYPES`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: DocumentNode | Array<DocumentNode>\n}\n\nexport interface ICreateFieldExtension {\n type: `CREATE_FIELD_EXTENSION`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: {\n name: string\n extension: GraphQLFieldExtensionDefinition\n }\n}\n\nexport interface IPrintTypeDefinitions {\n type: `PRINT_SCHEMA_REQUESTED`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: {\n path?: string\n include?: { types?: Array<string>; plugins?: Array<string> }\n exclude?: { types?: Array<string>; plugins?: Array<string> }\n withFieldTypes?: boolean\n }\n}\n\nexport interface ICreateResolverContext {\n type: `CREATE_RESOLVER_CONTEXT`\n plugin: IGatsbyPlugin\n traceId?: string\n payload:\n | IGatsbyPluginContext\n | { [camelCasedPluginNameWithoutPrefix: string]: IGatsbyPluginContext }\n}\n\ninterface IClearSchemaCustomizationAction {\n type: `CLEAR_SCHEMA_CUSTOMIZATION`\n}\n\ninterface ISetSchemaComposerAction {\n type: `SET_SCHEMA_COMPOSER`\n payload: SchemaComposer<any>\n}\n\nexport interface ICreateServerVisitedPage {\n type: `CREATE_SERVER_VISITED_PAGE`\n payload: IGatsbyPage\n plugin?: IGatsbyPlugin\n}\n\nexport interface ICreatePageAction {\n type: `CREATE_PAGE`\n payload: IGatsbyPage\n plugin?: IGatsbyPlugin\n contextModified?: boolean\n componentModified?: boolean\n slicesModified?: boolean\n}\n\nexport interface ICreateSliceAction {\n type: `CREATE_SLICE`\n payload: IGatsbySlice\n plugin?: IGatsbyPlugin\n traceId: string | undefined\n componentModified?: boolean\n contextModified?: boolean\n}\n\nexport interface IDeleteSliceAction {\n type: `DELETE_SLICE`\n payload: {\n name: string\n componentPath: string\n }\n}\n\nexport interface ISetComponentsUsingSlicesAction {\n type: `SET_COMPONENTS_USING_PAGE_SLICES`\n payload: Map<string, ICollectedSlices>\n}\n\nexport interface ISetSlicesByTemplateAction {\n type: `SET_SLICES_BY_TEMPLATE`\n payload: {\n componentPath: string\n slices: ICollectedSlices\n }\n}\n\nexport interface ISetSlicesProps {\n type: `SET_SLICES_PROPS`\n payload: Record<\n string,\n Record<\n string,\n {\n props: Record<string, unknown>\n sliceName: string\n hasChildren: boolean\n }\n >\n >\n}\n\nexport interface ISlicesPropsRemoveStale {\n type: `SLICES_PROPS_REMOVE_STALE`\n}\n\nexport interface ISlicesPropsRendered {\n type: `SLICES_PROPS_RENDERED`\n payload: Array<{ sliceId: string }>\n}\n\nexport interface ISlicesStitched {\n type: `SLICES_STITCHED`\n}\n\nexport interface ISlicesScriptsRegenerated {\n type: `SLICES_SCRIPTS_REGENERATED`\n}\n\nexport interface ICreateRedirectAction {\n type: `CREATE_REDIRECT`\n payload: IRedirect\n}\n\nexport interface IDeleteCacheAction {\n type: `DELETE_CACHE`\n cacheIsCorrupt?: boolean\n}\n\nexport interface IRemoveTemplateComponentAction {\n type: `REMOVE_STATIC_QUERIES_BY_TEMPLATE`\n payload: {\n componentPath: string\n }\n}\n\nexport interface ISetStaticQueriesByTemplateAction {\n type: `SET_STATIC_QUERIES_BY_TEMPLATE`\n payload: {\n componentPath: string\n staticQueryHashes: Array<Identifier>\n }\n}\n\nexport interface IAddPendingPageDataWriteAction {\n type: `ADD_PENDING_PAGE_DATA_WRITE`\n payload: {\n path: string\n }\n}\n\nexport interface IAddPendingTemplateDataWriteAction {\n type: `ADD_PENDING_TEMPLATE_DATA_WRITE`\n payload: {\n componentPath: SystemPath\n pages: Array<string>\n }\n}\n\nexport interface IAddPendingSliceDataWriteAction {\n type: `ADD_PENDING_SLICE_DATA_WRITE`\n payload: {\n name: string\n }\n}\n\nexport interface IAddPendingSliceTemplateDataWriteAction {\n type: `ADD_PENDING_SLICE_TEMPLATE_DATA_WRITE`\n payload: {\n componentPath: SystemPath\n sliceNames: Array<string>\n }\n}\n\nexport interface IClearPendingPageDataWriteAction {\n type: `CLEAR_PENDING_PAGE_DATA_WRITE`\n payload: {\n page: string\n }\n}\n\nexport interface IClearPendingSliceDataWriteAction {\n type: `CLEAR_PENDING_SLICE_DATA_WRITE`\n payload: {\n name: string\n }\n}\n\nexport interface IDeletePageAction {\n type: `DELETE_PAGE`\n payload: IGatsbyPage\n}\n\nexport interface IRemoveStaticQuery {\n type: `REMOVE_STATIC_QUERY`\n payload: IGatsbyStaticQueryComponents[\"id\"]\n}\n\nexport interface ISetWebpackCompilationHashAction {\n type: `SET_WEBPACK_COMPILATION_HASH`\n payload: IGatsbyState[\"webpackCompilationHash\"]\n}\n\nexport interface ISetSSRGlobalSharedWebpackCompilationHashAction {\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`\n payload: string\n}\n\nexport interface ISetSSRTemplateWebpackCompilationHashAction {\n type: `SET_SSR_TEMPLATE_WEBPACK_COMPILATION_HASH`\n payload: {\n templateHash: string\n templatePath: string\n isSlice: boolean\n pages: Array<string>\n }\n}\n\nexport interface IUpdatePluginsHashAction {\n type: `UPDATE_PLUGINS_HASH`\n payload: Identifier\n}\n\nexport interface ISetPluginStatusAction {\n type: `SET_PLUGIN_STATUS`\n plugin: IGatsbyPlugin\n payload: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any\n }\n}\n\nexport interface IReplaceWebpackConfigAction {\n type: `REPLACE_WEBPACK_CONFIG`\n payload: IGatsbyState[\"webpack\"]\n}\n\nexport interface ISetWebpackConfigAction {\n type: `SET_WEBPACK_CONFIG`\n payload: Partial<IGatsbyState[\"webpack\"]>\n}\n\nexport interface ISetSchemaAction {\n type: `SET_SCHEMA`\n payload: IGatsbyState[\"schema\"]\n}\n\nexport interface ISetGraphQLDefinitionsAction {\n type: `SET_GRAPHQL_DEFINITIONS`\n payload: IGatsbyState[\"definitions\"]\n}\n\nexport interface ISetSiteConfig {\n type: `SET_SITE_CONFIG`\n payload: IGatsbyState[\"config\"]\n}\n\nexport interface ISetSiteFunctions {\n type: `SET_SITE_FUNCTIONS`\n payload: IGatsbyState[\"functions\"]\n}\n\nexport interface ICreateNodeAction {\n type: `CREATE_NODE`\n payload: IGatsbyNode\n oldNode?: IGatsbyNode\n traceId: string\n parentSpan: Span\n followsSpan: Span\n}\n\nexport interface IAddFieldToNodeAction {\n type: `ADD_FIELD_TO_NODE`\n payload: IGatsbyNode\n addedField: string\n}\n\nexport interface IAddChildNodeToParentNodeAction {\n type: `ADD_CHILD_NODE_TO_PARENT_NODE`\n payload: IGatsbyNode\n}\n\nexport interface IDeleteNodeAction {\n type: `DELETE_NODE`\n // FIXME: figure out why payload can be undefined here\n payload: IGatsbyNode | void\n}\n\nexport interface ISetSiteFlattenedPluginsAction {\n type: `SET_SITE_FLATTENED_PLUGINS`\n payload: IGatsbyState[\"flattenedPlugins\"]\n}\n\nexport interface ISetResolvedNodesAction {\n type: `SET_RESOLVED_NODES`\n payload: {\n key: string\n nodes: IGatsbyState[\"resolvedNodesCache\"]\n }\n}\n\nexport interface IAddPageDataStatsAction {\n type: `ADD_PAGE_DATA_STATS`\n payload: {\n pagePath: string\n filePath: SystemPath\n size: number\n pageDataHash: string\n }\n}\n\nexport interface IAddSliceDataStatsAction {\n type: `ADD_SLICE_DATA_STATS`\n payload: {\n sliceName: string\n filePath: SystemPath\n size: number\n sliceDataHash: string\n }\n}\n\nexport interface ITouchNodeAction {\n type: `TOUCH_NODE`\n payload: Identifier\n}\n\ninterface IStartIncrementalInferenceAction {\n type: `START_INCREMENTAL_INFERENCE`\n}\n\ninterface IBuildTypeMetadataAction {\n type: `BUILD_TYPE_METADATA`\n payload: {\n nodes: Array<IGatsbyNode>\n typeName: string\n }\n}\n\ninterface IDisableTypeInferenceAction {\n type: `DISABLE_TYPE_INFERENCE`\n payload: Array<string>\n}\n\ninterface ISetProgramAction {\n type: `SET_PROGRAM`\n payload: IStateProgram\n}\n\ninterface ISetProgramExtensions {\n type: `SET_PROGRAM_EXTENSIONS`\n payload: Array<string>\n}\n\ninterface IRemovedHtml {\n type: `HTML_REMOVED`\n payload: string\n}\n\ninterface ITrackedHtmlCleanup {\n type: `HTML_TRACKED_PAGES_CLEANUP`\n payload: Set<string>\n}\n\ninterface IGeneratedHtml {\n type: `HTML_GENERATED`\n payload: Array<string>\n}\n\ninterface IMarkHtmlDirty {\n type: `HTML_MARK_DIRTY_BECAUSE_STATIC_QUERY_RESULT_CHANGED`\n payload: {\n pages: Set<string>\n slices: Set<string>\n staticQueryHashes: Set<string>\n }\n}\n\ninterface ISSRUsedUnsafeBuiltin {\n type: `SSR_USED_UNSAFE_BUILTIN`\n}\n\nexport interface ICreateNodeManifest {\n type: `CREATE_NODE_MANIFEST`\n payload: {\n manifestId: string\n node: IGatsbyNode\n pluginName: string\n updatedAtUTC?: string | number\n }\n}\n\nexport interface IDeleteNodeManifests {\n type: `DELETE_NODE_MANIFESTS`\n}\n\nexport interface INodeManifest {\n manifestId: string\n pluginName: string\n node: {\n id: string\n }\n}\n\nexport interface ISetDomainRequestHeaders {\n type: `SET_REQUEST_HEADERS`\n payload: {\n domain: string\n headers: {\n [header: string]: string\n }\n }\n}\n\nexport interface IProcessGatsbyImageSourceUrlAction {\n type: `PROCESS_GATSBY_IMAGE_SOURCE_URL`\n payload: {\n sourceUrl: string\n }\n}\n\nexport interface IClearGatsbyImageSourceUrlAction {\n type: `CLEAR_GATSBY_IMAGE_SOURCE_URL`\n}\n\nexport interface ITelemetry {\n gatsbyImageSourceUrls: Set<string>\n}\n\nexport interface IMergeWorkerQueryState {\n type: `MERGE_WORKER_QUERY_STATE`\n payload: {\n workerId: number\n queryStateChunk: IGatsbyState[\"queries\"]\n queryStateTelemetryChunk: IGatsbyState[\"telemetry\"]\n }\n}\n\nexport interface IMaterializePageMode {\n type: `MATERIALIZE_PAGE_MODE`\n payload: {\n path: string\n pageMode: PageMode\n }\n}\n\nexport interface ISetJobV2Context {\n type: `SET_JOB_V2_CONTEXT`\n payload: {\n job: IGatsbyIncompleteJobV2[\"job\"]\n requestId: string\n }\n}\n\nexport interface IClearJobV2Context {\n type: `CLEAR_JOB_V2_CONTEXT`\n payload: {\n requestId: string\n }\n}\n"],"mappings":";;;;IA8BYA,aAAa;AAAA;AAAA,WAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;AAAA,GAAbA,aAAa,6BAAbA,aAAa"}
|
|
1
|
+
{"version":3,"file":"types.js","names":["ProgramStatus"],"sources":["../../src/redux/types.ts"],"sourcesContent":["import type { TrailingSlash } from \"gatsby-page-utils\"\nimport { IProgram, Stage } from \"../commands/types\"\nimport { GraphQLFieldExtensionDefinition } from \"../schema/extensions\"\nimport {\n DocumentNode,\n GraphQLSchema,\n DefinitionNode,\n SourceLocation,\n} from \"graphql\"\nimport { SchemaComposer } from \"graphql-compose\"\nimport { IGatsbyCLIState } from \"gatsby-cli/src/reporter/redux/types\"\nimport { ThunkAction } from \"redux-thunk\"\nimport { InternalJob, JobResultInterface } from \"../utils/jobs/manager\"\nimport { ITypeMetadata } from \"../schema/infer/inference-metadata\"\nimport { Span } from \"opentracing\"\nimport { ICollectedSlices } from \"../utils/babel/find-slices\"\n\ntype SystemPath = string\ntype Identifier = string\n\nexport interface IRedirect {\n fromPath: string\n toPath: string\n isPermanent?: boolean\n redirectInBrowser?: boolean\n ignoreCase: boolean\n // Users can add anything to this createRedirect API\n [key: string]: any\n}\n\nexport enum ProgramStatus {\n BOOTSTRAP_FINISHED = `BOOTSTRAP_FINISHED`,\n BOOTSTRAP_QUERY_RUNNING_FINISHED = `BOOTSTRAP_QUERY_RUNNING_FINISHED`,\n}\n\nexport type PageMode = \"SSG\" | \"DSG\" | \"SSR\"\n\nexport interface IGatsbyPage {\n internalComponentName: string\n path: string\n matchPath: undefined | string\n component: SystemPath\n componentChunkName: string\n isCreatedByStatefulCreatePages: boolean\n context: Record<string, unknown>\n updatedAt: number\n // eslint-disable-next-line @typescript-eslint/naming-convention\n pluginCreator___NODE: Identifier\n pluginCreatorId: Identifier\n componentPath: SystemPath\n ownerNodeId: Identifier\n manifestId?: string\n defer?: boolean\n /**\n * INTERNAL. Do not use `page.mode`, it can be removed at any time\n * `page.mode` is currently reliable only in engines and `onPostBuild` hook\n * (in develop it is dynamic and can change at any time)\n * TODO: remove, see comments in utils/page-mode:materializePageMode\n *\n * @internal\n */\n mode: PageMode\n slices: Record<string, string>\n}\n\nexport interface IGatsbySlice {\n componentPath: string\n componentChunkName: string\n context: Record<string, unknown>\n name: string\n updatedAt: number\n}\n\nexport interface IGatsbyFunction {\n /** The route in the browser to access the function **/\n functionRoute: string\n /** The absolute path to the original function **/\n originalAbsoluteFilePath: string\n /** The relative path to the original function **/\n originalRelativeFilePath: string\n /** The relative path to the compiled function (always ends with .js) **/\n relativeCompiledFilePath: string\n /** The absolute path to the compiled function (doesn't transfer across machines) **/\n absoluteCompiledFilePath: string\n /** The matchPath regex created by path-to-regexp. Only created if the function is dynamic. **/\n matchPath: string | undefined\n /** The plugin that owns this function route **/\n pluginName: string\n}\n\nexport interface IGraphQLTypegenOptions {\n typesOutputPath: string\n documentSearchPaths: Array<string>\n generateOnBuild: boolean\n}\n\nexport interface IGatsbyConfig {\n plugins?: Array<{\n // This is the name of the plugin like `gatsby-plugin-manifest`\n resolve: string\n options: {\n [key: string]: unknown\n }\n }>\n siteMetadata?: {\n title?: string\n author?: string\n description?: string\n siteUrl?: string\n // siteMetadata is free form\n [key: string]: unknown\n }\n // @deprecated\n polyfill?: boolean\n developMiddleware?: any\n proxy?: any\n partytownProxiedURLs?: Array<string>\n pathPrefix?: string\n assetPrefix?: string\n mapping?: Record<string, string>\n jsxRuntime?: \"classic\" | \"automatic\"\n jsxImportSource?: string\n trailingSlash?: TrailingSlash\n graphqlTypegen?: IGraphQLTypegenOptions\n}\n\nexport interface IGatsbyNode {\n id: Identifier\n parent: Identifier\n children: Array<Identifier>\n internal: {\n type: string\n counter: number\n owner: string\n contentDigest: string\n mediaType?: string\n content?: string\n description?: string\n }\n [key: string]: unknown\n fields: Array<string>\n}\n\nexport interface IGatsbyPlugin {\n id: Identifier\n name: string\n version: string\n [key: string]: any\n}\n\nexport interface IGatsbyPluginContext {\n [key: string]: (...args: Array<any>) => any\n}\n\nexport interface IGatsbyStaticQueryComponents {\n name: string\n componentPath: SystemPath\n id: Identifier\n query: string\n hash: string\n}\n\nexport interface IGatsbyPageComponent {\n componentPath: SystemPath\n componentChunkName: string\n query: string\n pages: Set<string>\n isInBootstrap: boolean\n serverData: boolean\n config: boolean\n isSlice: boolean\n Head: boolean\n}\n\nexport interface IDefinitionMeta {\n name: string\n def: DefinitionNode\n filePath: string\n text: string\n templateLoc: SourceLocation\n printedAst: string | null\n isHook: boolean\n isStaticQuery: boolean\n isFragment: boolean\n isConfigQuery: boolean\n hash: number\n}\n\ntype GatsbyNodes = Map<string, IGatsbyNode>\n\nexport interface IGatsbyIncompleteJobV2 {\n job: InternalJob\n}\n\nexport interface IGatsbyIncompleteJob {\n job: InternalJob\n plugin: IGatsbyPlugin\n}\n\nexport interface IGatsbyCompleteJobV2 {\n result: JobResultInterface\n inputPaths: InternalJob[\"inputPaths\"]\n}\n\nexport interface IPlugin {\n name: string\n options: Record<string, unknown>\n}\n\nexport interface IBabelStage {\n plugins: Array<IPlugin>\n presets: Array<IPlugin>\n options?: {\n cacheDirectory: boolean\n sourceType: string\n sourceMaps?: string\n }\n}\n\nexport interface IStateProgram extends IProgram {\n extensions: Array<string>\n browserslist: Array<string>\n}\n\nexport interface IQueryState {\n dirty: number\n running: number\n}\n\nexport interface IComponentState {\n componentPath: string\n query: string\n pages: Set<Identifier>\n errors: number\n}\n\nexport interface IHtmlFileState {\n dirty: number\n isDeleted: boolean\n pageDataHash: string\n}\n\nexport interface IStaticQueryResultState {\n dirty: number\n staticQueryResultHash: string\n}\n\nexport type GatsbyNodeAPI =\n | \"onPreBoostrap\"\n | \"onPostBoostrap\"\n | \"onCreateWebpackConfig\"\n | \"onCreatePage\"\n | \"onCreateNode\"\n | \"sourceNodes\"\n | \"createPagesStatefully\"\n | \"createPages\"\n | \"onPostBuild\"\n\nexport interface IGatsbyState {\n program: IStateProgram\n nodes: GatsbyNodes\n nodesByType: Map<string, GatsbyNodes>\n resolvedNodesCache: Map<string, any> // TODO\n nodesTouched: Set<string>\n nodeManifests: Array<INodeManifest>\n requestHeaders: Map<string, { [header: string]: string }>\n telemetry: ITelemetry\n lastAction: ActionsUnion\n flattenedPlugins: Array<{\n resolve: SystemPath\n id: Identifier\n name: string\n version: string\n pluginOptions: {\n plugins: []\n [key: string]: unknown\n }\n nodeAPIs: Array<GatsbyNodeAPI>\n browserAPIs: Array<\n | \"onRouteUpdate\"\n | \"registerServiceWorker\"\n | \"onServiceWorkerActive\"\n | \"onPostPrefetchPathname\"\n >\n ssrAPIs: Array<\"onRenderBody\" | \"onPreRenderHTML\">\n pluginFilepath: SystemPath\n subPluginPaths?: Array<string>\n modulePath?: string\n }>\n config: IGatsbyConfig\n functions: Array<IGatsbyFunction>\n pages: Map<string, IGatsbyPage>\n schema: GraphQLSchema\n definitions: Map<string, IDefinitionMeta>\n status: {\n plugins: Record<string, IGatsbyPlugin>\n PLUGINS_HASH: Identifier\n LAST_NODE_COUNTER: number\n }\n queries: {\n byNode: Map<Identifier, Set<Identifier>>\n byConnection: Map<string, Set<Identifier>>\n queryNodes: Map<Identifier, Set<Identifier>>\n trackedQueries: Map<Identifier, IQueryState>\n trackedComponents: Map<string, IComponentState>\n deletedQueries: Set<Identifier>\n dirtyQueriesListToEmitViaWebsocket: Array<string>\n }\n components: Map<IGatsbyPageComponent[\"componentPath\"], IGatsbyPageComponent>\n staticQueryComponents: Map<\n IGatsbyStaticQueryComponents[\"id\"],\n IGatsbyStaticQueryComponents\n >\n staticQueriesByTemplate: Map<SystemPath, Array<Identifier>>\n pendingPageDataWrites: {\n pagePaths: Set<string>\n sliceNames: Set<string>\n }\n // @deprecated\n jobs: {\n active: Array<any> // TODO\n done: Array<any> // TODO\n }\n jobsV2: {\n incomplete: Map<Identifier, IGatsbyIncompleteJobV2>\n complete: Map<Identifier, IGatsbyCompleteJobV2>\n jobsByRequest: Map<string, Set<Identifier>>\n }\n webpack: any // TODO This should be the output from ./utils/webpack.config.js\n webpackCompilationHash: string\n redirects: Array<IRedirect>\n babelrc: {\n stages: {\n [key in Stage]: IBabelStage\n }\n }\n schemaCustomization: {\n composer: null | SchemaComposer<any>\n context: Record<string, any>\n fieldExtensions: GraphQLFieldExtensionDefinition\n printConfig: {\n path?: string\n include?: { types?: Array<string>; plugins?: Array<string> }\n exclude?: { types?: Array<string>; plugins?: Array<string> }\n withFieldTypes?: boolean\n } | null\n thirdPartySchemas: Array<GraphQLSchema>\n types: Array<\n string | { typeOrTypeDef: DocumentNode; plugin: IGatsbyPlugin }\n >\n }\n logs: IGatsbyCLIState\n inferenceMetadata: {\n step: string // TODO make enum or union\n typeMap: {\n [key: string]: ITypeMetadata\n }\n }\n pageDataStats: Map<SystemPath, number>\n visitedPages: Map<string, Set<string>>\n html: {\n trackedHtmlFiles: Map<Identifier, IHtmlFileState>\n browserCompilationHash: string\n ssrCompilationHash: string\n trackedStaticQueryResults: Map<string, IStaticQueryResultState>\n unsafeBuiltinWasUsedInSSR: boolean\n templateCompilationHashes: Record<string, string>\n slicesProps: {\n bySliceId: Map<\n string,\n {\n pages: Set<string>\n props: Record<string, unknown>\n sliceName: string\n hasChildren: boolean\n dirty: number\n }\n >\n byPagePath: Map<string, Set<string>>\n bySliceName: Map<\n string,\n {\n sliceDataHash: string\n dirty: number\n props: Set<string>\n }\n >\n }\n pagesThatNeedToStitchSlices: Set<string>\n }\n slices: Map<string, IGatsbySlice>\n componentsUsingSlices: Map<string, ICollectedSlices>\n slicesByTemplate: Map<SystemPath, ICollectedSlices>\n}\n\nexport type GatsbyStateKeys = keyof IGatsbyState\n\nexport interface ICachedReduxState {\n nodes?: IGatsbyState[\"nodes\"]\n status: IGatsbyState[\"status\"]\n components: IGatsbyState[\"components\"]\n jobsV2: IGatsbyState[\"jobsV2\"]\n staticQueryComponents: IGatsbyState[\"staticQueryComponents\"]\n webpackCompilationHash: IGatsbyState[\"webpackCompilationHash\"]\n pageDataStats: IGatsbyState[\"pageDataStats\"]\n pages?: IGatsbyState[\"pages\"]\n staticQueriesByTemplate: IGatsbyState[\"staticQueriesByTemplate\"]\n pendingPageDataWrites: IGatsbyState[\"pendingPageDataWrites\"]\n queries: IGatsbyState[\"queries\"]\n html: IGatsbyState[\"html\"]\n slices: IGatsbyState[\"slices\"]\n slicesByTemplate: IGatsbyState[\"slicesByTemplate\"]\n}\n\nexport type ActionsUnion =\n | IAddChildNodeToParentNodeAction\n | IAddFieldToNodeAction\n | IAddThirdPartySchema\n | IApiFinishedAction\n | ICreateFieldExtension\n | ICreateNodeAction\n | ICreatePageAction\n | ICreatePageDependencyAction\n | ICreateTypes\n | IDeleteCacheAction\n | IDeleteNodeAction\n | IDeletePageAction\n | IPageQueryRunAction\n | IPrintTypeDefinitions\n | IQueryClearDirtyQueriesListToEmitViaWebsocket\n | IQueryExtractedAction\n | IQueryExtractedBabelSuccessAction\n | IQueryExtractionBabelErrorAction\n | IQueryExtractionGraphQLErrorAction\n | IQueryStartAction\n | IRemoveStaticQuery\n | IReplaceComponentQueryAction\n | IReplaceStaticQueryAction\n | IReplaceWebpackConfigAction\n | ISetPluginStatusAction\n | ISetProgramStatusAction\n | ISetResolvedNodesAction\n | ISetSchemaAction\n | ISetGraphQLDefinitionsAction\n | ISetSiteFlattenedPluginsAction\n | ISetWebpackCompilationHashAction\n | ISetSSRGlobalSharedWebpackCompilationHashAction\n | ISetWebpackConfigAction\n | ITouchNodeAction\n | IUpdatePluginsHashAction\n | ICreateJobV2Action\n | IEndJobV2Action\n | IRemoveStaleJobV2Action\n | IAddPageDataStatsAction\n | IAddSliceDataStatsAction\n | IRemoveTemplateComponentAction\n | ISetBabelPluginAction\n | ISetBabelPresetAction\n | ISetBabelOptionsAction\n | ICreateJobAction\n | ISetJobAction\n | IEndJobAction\n | ISetStaticQueriesByTemplateAction\n | IAddPendingPageDataWriteAction\n | IAddPendingTemplateDataWriteAction\n | IAddPendingSliceDataWriteAction\n | IAddPendingSliceTemplateDataWriteAction\n | IClearPendingPageDataWriteAction\n | IClearPendingSliceDataWriteAction\n | ICreateResolverContext\n | IClearSchemaCustomizationAction\n | ISetSchemaComposerAction\n | IStartIncrementalInferenceAction\n | IBuildTypeMetadataAction\n | IDisableTypeInferenceAction\n | ISetProgramAction\n | ISetProgramExtensions\n | IRemovedHtml\n | ITrackedHtmlCleanup\n | IGeneratedHtml\n | IMarkHtmlDirty\n | ISSRUsedUnsafeBuiltin\n | ISetSiteConfig\n | IMergeWorkerQueryState\n | ISetComponentFeatures\n | IMaterializePageMode\n | ISetJobV2Context\n | IClearJobV2Context\n | ISetDomainRequestHeaders\n | ICreateSliceAction\n | IDeleteSliceAction\n | ISetSSRTemplateWebpackCompilationHashAction\n | ISetComponentsUsingSlicesAction\n | ISetSlicesByTemplateAction\n | ISetSlicesProps\n | ISlicesPropsRemoveStale\n | ISlicesPropsRendered\n | ISlicesStitched\n | ISlicesScriptsRegenerated\n | IProcessGatsbyImageSourceUrlAction\n | IClearGatsbyImageSourceUrlAction\n\nexport interface ISetComponentFeatures {\n type: `SET_COMPONENT_FEATURES`\n payload: {\n componentPath: string\n serverData: boolean\n config: boolean\n Head: boolean\n }\n}\n\nexport interface IApiFinishedAction {\n type: `API_FINISHED`\n payload: {\n apiName: GatsbyNodeAPI\n }\n}\n\ninterface ISetBabelPluginAction {\n type: `SET_BABEL_PLUGIN`\n payload: {\n stage: Stage\n name: IPlugin[\"name\"]\n options: IPlugin[\"options\"]\n }\n}\n\ninterface ISetBabelPresetAction {\n type: `SET_BABEL_PRESET`\n payload: {\n stage: Stage\n name: IPlugin[\"name\"]\n options: IPlugin[\"options\"]\n }\n}\n\ninterface ISetBabelOptionsAction {\n type: `SET_BABEL_OPTIONS`\n payload: {\n stage: Stage\n name: IPlugin[\"name\"]\n options: IPlugin[\"options\"]\n }\n}\n\nexport interface ICreateJobV2Action {\n type: `CREATE_JOB_V2`\n payload: {\n job: IGatsbyIncompleteJobV2[\"job\"]\n }\n plugin: { name: string }\n}\n\nexport interface IEndJobV2Action {\n type: `END_JOB_V2`\n payload: {\n jobContentDigest: string\n result: JobResultInterface\n }\n plugin: { name: string }\n}\n\nexport interface IRemoveStaleJobV2Action {\n type: `REMOVE_STALE_JOB_V2`\n payload: {\n contentDigest: string\n }\n}\n\nexport type ICreateJobV2FromInternalAction = ThunkAction<\n Promise<Record<string, unknown>>,\n IGatsbyState,\n void,\n ActionsUnion\n>\n\ninterface ICreateJobAction {\n type: `CREATE_JOB`\n payload: {\n id: string\n job: IGatsbyIncompleteJob[\"job\"]\n }\n plugin: IGatsbyIncompleteJob[\"plugin\"]\n}\n\ninterface ISetJobAction {\n type: `SET_JOB`\n payload: {\n id: string\n job: IGatsbyIncompleteJob[\"job\"]\n }\n plugin: IGatsbyIncompleteJob[\"plugin\"]\n}\n\ninterface IEndJobAction {\n type: `END_JOB`\n payload: {\n id: string\n job: IGatsbyIncompleteJob[\"job\"]\n }\n plugin: IGatsbyIncompleteJob[\"plugin\"]\n}\n\nexport interface ICreatePageDependencyActionPayloadType {\n path: string\n nodeId?: string\n connection?: string\n}\n\nexport interface ICreatePageDependencyAction {\n type: `CREATE_COMPONENT_DEPENDENCY`\n plugin?: string\n payload: Array<ICreatePageDependencyActionPayloadType>\n}\n\nexport interface IDeleteComponentDependenciesAction {\n type: \"DELETE_COMPONENTS_DEPENDENCIES\"\n payload: {\n paths: Array<string>\n }\n}\n\nexport interface IReplaceComponentQueryAction {\n type: \"REPLACE_COMPONENT_QUERY\"\n payload: {\n query: string\n componentPath: string\n }\n}\n\nexport interface IReplaceStaticQueryAction {\n type: `REPLACE_STATIC_QUERY`\n plugin: IGatsbyPlugin | null | undefined\n payload: {\n name: string\n componentPath: string\n id: string\n query: string\n hash: string\n }\n}\n\nexport interface IQueryClearDirtyQueriesListToEmitViaWebsocket {\n type: `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`\n}\n\nexport interface IQueryExtractedAction {\n type: `QUERY_EXTRACTED`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { componentPath: string; query: string }\n}\n\nexport interface IQueryExtractionGraphQLErrorAction {\n type: `QUERY_EXTRACTION_GRAPHQL_ERROR`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { componentPath: string; error: string }\n}\n\nexport interface IQueryExtractedBabelSuccessAction {\n type: `QUERY_EXTRACTION_BABEL_SUCCESS`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { componentPath: string }\n}\n\nexport interface IQueryExtractionBabelErrorAction {\n type: `QUERY_EXTRACTION_BABEL_ERROR`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: {\n componentPath: string\n error: Error\n }\n}\n\nexport interface ISetProgramStatusAction {\n type: `SET_PROGRAM_STATUS`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: ProgramStatus\n}\n\nexport interface IPageQueryRunAction {\n type: `PAGE_QUERY_RUN`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: {\n path: string\n componentPath: string\n queryType: \"page\" | \"static\" | \"slice\"\n resultHash: string\n queryHash: string\n }\n}\n\nexport interface IQueryStartAction {\n type: `QUERY_START`\n plugin: IGatsbyPlugin\n traceId: string | undefined\n payload: { path: string; componentPath: string; isPage: boolean }\n}\n\nexport interface IRemoveStaleJobAction {\n type: `REMOVE_STALE_JOB_V2`\n plugin: IGatsbyPlugin | undefined\n traceId?: string\n payload: { contentDigest: string }\n}\n\nexport interface IAddThirdPartySchema {\n type: `ADD_THIRD_PARTY_SCHEMA`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: GraphQLSchema\n}\n\nexport interface ICreateTypes {\n type: `CREATE_TYPES`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: DocumentNode | Array<DocumentNode>\n}\n\nexport interface ICreateFieldExtension {\n type: `CREATE_FIELD_EXTENSION`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: {\n name: string\n extension: GraphQLFieldExtensionDefinition\n }\n}\n\nexport interface IPrintTypeDefinitions {\n type: `PRINT_SCHEMA_REQUESTED`\n plugin: IGatsbyPlugin\n traceId?: string\n payload: {\n path?: string\n include?: { types?: Array<string>; plugins?: Array<string> }\n exclude?: { types?: Array<string>; plugins?: Array<string> }\n withFieldTypes?: boolean\n }\n}\n\nexport interface ICreateResolverContext {\n type: `CREATE_RESOLVER_CONTEXT`\n plugin: IGatsbyPlugin\n traceId?: string\n payload:\n | IGatsbyPluginContext\n | { [camelCasedPluginNameWithoutPrefix: string]: IGatsbyPluginContext }\n}\n\ninterface IClearSchemaCustomizationAction {\n type: `CLEAR_SCHEMA_CUSTOMIZATION`\n}\n\ninterface ISetSchemaComposerAction {\n type: `SET_SCHEMA_COMPOSER`\n payload: SchemaComposer<any>\n}\n\nexport interface ICreateServerVisitedPage {\n type: `CREATE_SERVER_VISITED_PAGE`\n payload: IGatsbyPage\n plugin?: IGatsbyPlugin\n}\n\nexport interface ICreatePageAction {\n type: `CREATE_PAGE`\n payload: IGatsbyPage\n plugin?: IGatsbyPlugin\n contextModified?: boolean\n componentModified?: boolean\n slicesModified?: boolean\n}\n\nexport interface ICreateSliceAction {\n type: `CREATE_SLICE`\n payload: IGatsbySlice\n plugin?: IGatsbyPlugin\n traceId: string | undefined\n componentModified?: boolean\n contextModified?: boolean\n}\n\nexport interface IDeleteSliceAction {\n type: `DELETE_SLICE`\n payload: {\n name: string\n componentPath: string\n }\n}\n\nexport interface ISetComponentsUsingSlicesAction {\n type: `SET_COMPONENTS_USING_PAGE_SLICES`\n payload: Map<string, ICollectedSlices>\n}\n\nexport interface ISetSlicesByTemplateAction {\n type: `SET_SLICES_BY_TEMPLATE`\n payload: {\n componentPath: string\n slices: ICollectedSlices\n }\n}\n\nexport interface ISetSlicesProps {\n type: `SET_SLICES_PROPS`\n payload: Record<\n string,\n Record<\n string,\n {\n props: Record<string, unknown>\n sliceName: string\n hasChildren: boolean\n }\n >\n >\n}\n\nexport interface ISlicesPropsRemoveStale {\n type: `SLICES_PROPS_REMOVE_STALE`\n}\n\nexport interface ISlicesPropsRendered {\n type: `SLICES_PROPS_RENDERED`\n payload: Array<{ sliceId: string }>\n}\n\nexport interface ISlicesStitched {\n type: `SLICES_STITCHED`\n}\n\nexport interface ISlicesScriptsRegenerated {\n type: `SLICES_SCRIPTS_REGENERATED`\n}\n\nexport interface ICreateRedirectAction {\n type: `CREATE_REDIRECT`\n payload: IRedirect\n}\n\nexport interface IDeleteCacheAction {\n type: `DELETE_CACHE`\n cacheIsCorrupt?: boolean\n}\n\nexport interface IRemoveTemplateComponentAction {\n type: `REMOVE_STATIC_QUERIES_BY_TEMPLATE`\n payload: {\n componentPath: string\n }\n}\n\nexport interface ISetStaticQueriesByTemplateAction {\n type: `SET_STATIC_QUERIES_BY_TEMPLATE`\n payload: {\n componentPath: string\n staticQueryHashes: Array<Identifier>\n }\n}\n\nexport interface IAddPendingPageDataWriteAction {\n type: `ADD_PENDING_PAGE_DATA_WRITE`\n payload: {\n path: string\n }\n}\n\nexport interface IAddPendingTemplateDataWriteAction {\n type: `ADD_PENDING_TEMPLATE_DATA_WRITE`\n payload: {\n componentPath: SystemPath\n pages: Array<string>\n }\n}\n\nexport interface IAddPendingSliceDataWriteAction {\n type: `ADD_PENDING_SLICE_DATA_WRITE`\n payload: {\n name: string\n }\n}\n\nexport interface IAddPendingSliceTemplateDataWriteAction {\n type: `ADD_PENDING_SLICE_TEMPLATE_DATA_WRITE`\n payload: {\n componentPath: SystemPath\n sliceNames: Array<string>\n }\n}\n\nexport interface IClearPendingPageDataWriteAction {\n type: `CLEAR_PENDING_PAGE_DATA_WRITE`\n payload: {\n page: string\n }\n}\n\nexport interface IClearPendingSliceDataWriteAction {\n type: `CLEAR_PENDING_SLICE_DATA_WRITE`\n payload: {\n name: string\n }\n}\n\nexport interface IDeletePageAction {\n type: `DELETE_PAGE`\n payload: IGatsbyPage\n}\n\nexport interface IRemoveStaticQuery {\n type: `REMOVE_STATIC_QUERY`\n payload: IGatsbyStaticQueryComponents[\"id\"]\n}\n\nexport interface ISetWebpackCompilationHashAction {\n type: `SET_WEBPACK_COMPILATION_HASH`\n payload: IGatsbyState[\"webpackCompilationHash\"]\n}\n\nexport interface ISetSSRGlobalSharedWebpackCompilationHashAction {\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`\n payload: string\n}\n\nexport interface ISetSSRTemplateWebpackCompilationHashAction {\n type: `SET_SSR_TEMPLATE_WEBPACK_COMPILATION_HASH`\n payload: {\n templateHash: string\n templatePath: string\n isSlice: boolean\n pages: Array<string>\n }\n}\n\nexport interface IUpdatePluginsHashAction {\n type: `UPDATE_PLUGINS_HASH`\n payload: Identifier\n}\n\nexport interface ISetPluginStatusAction {\n type: `SET_PLUGIN_STATUS`\n plugin: IGatsbyPlugin\n payload: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any\n }\n}\n\nexport interface IReplaceWebpackConfigAction {\n type: `REPLACE_WEBPACK_CONFIG`\n payload: IGatsbyState[\"webpack\"]\n}\n\nexport interface ISetWebpackConfigAction {\n type: `SET_WEBPACK_CONFIG`\n payload: Partial<IGatsbyState[\"webpack\"]>\n}\n\nexport interface ISetSchemaAction {\n type: `SET_SCHEMA`\n payload: IGatsbyState[\"schema\"]\n}\n\nexport interface ISetGraphQLDefinitionsAction {\n type: `SET_GRAPHQL_DEFINITIONS`\n payload: IGatsbyState[\"definitions\"]\n}\n\nexport interface ISetSiteConfig {\n type: `SET_SITE_CONFIG`\n payload: IGatsbyState[\"config\"]\n}\n\nexport interface ISetSiteFunctions {\n type: `SET_SITE_FUNCTIONS`\n payload: IGatsbyState[\"functions\"]\n}\n\nexport interface ICreateNodeAction {\n type: `CREATE_NODE`\n payload: IGatsbyNode\n oldNode?: IGatsbyNode\n traceId: string\n parentSpan: Span\n followsSpan: Span\n}\n\nexport interface IAddFieldToNodeAction {\n type: `ADD_FIELD_TO_NODE`\n payload: IGatsbyNode\n addedField: string\n}\n\nexport interface IAddChildNodeToParentNodeAction {\n type: `ADD_CHILD_NODE_TO_PARENT_NODE`\n payload: IGatsbyNode\n}\n\nexport interface IDeleteNodeAction {\n type: `DELETE_NODE`\n // FIXME: figure out why payload can be undefined here\n payload: IGatsbyNode | void\n}\n\nexport interface ISetSiteFlattenedPluginsAction {\n type: `SET_SITE_FLATTENED_PLUGINS`\n payload: IGatsbyState[\"flattenedPlugins\"]\n}\n\nexport interface ISetResolvedNodesAction {\n type: `SET_RESOLVED_NODES`\n payload: {\n key: string\n nodes: IGatsbyState[\"resolvedNodesCache\"]\n }\n}\n\nexport interface IAddPageDataStatsAction {\n type: `ADD_PAGE_DATA_STATS`\n payload: {\n pagePath: string\n filePath: SystemPath\n size: number\n pageDataHash: string\n }\n}\n\nexport interface IAddSliceDataStatsAction {\n type: `ADD_SLICE_DATA_STATS`\n payload: {\n sliceName: string\n filePath: SystemPath\n size: number\n sliceDataHash: string\n }\n}\n\nexport interface ITouchNodeAction {\n type: `TOUCH_NODE`\n payload: Identifier\n}\n\ninterface IStartIncrementalInferenceAction {\n type: `START_INCREMENTAL_INFERENCE`\n}\n\ninterface IBuildTypeMetadataAction {\n type: `BUILD_TYPE_METADATA`\n payload: {\n nodes: Array<IGatsbyNode>\n clearExistingMetadata: boolean\n typeName: string\n }\n}\n\ninterface IDisableTypeInferenceAction {\n type: `DISABLE_TYPE_INFERENCE`\n payload: Array<string>\n}\n\ninterface ISetProgramAction {\n type: `SET_PROGRAM`\n payload: IStateProgram\n}\n\ninterface ISetProgramExtensions {\n type: `SET_PROGRAM_EXTENSIONS`\n payload: Array<string>\n}\n\ninterface IRemovedHtml {\n type: `HTML_REMOVED`\n payload: string\n}\n\ninterface ITrackedHtmlCleanup {\n type: `HTML_TRACKED_PAGES_CLEANUP`\n payload: Set<string>\n}\n\ninterface IGeneratedHtml {\n type: `HTML_GENERATED`\n payload: Array<string>\n}\n\ninterface IMarkHtmlDirty {\n type: `HTML_MARK_DIRTY_BECAUSE_STATIC_QUERY_RESULT_CHANGED`\n payload: {\n pages: Set<string>\n slices: Set<string>\n staticQueryHashes: Set<string>\n }\n}\n\ninterface ISSRUsedUnsafeBuiltin {\n type: `SSR_USED_UNSAFE_BUILTIN`\n}\n\nexport interface ICreateNodeManifest {\n type: `CREATE_NODE_MANIFEST`\n payload: {\n manifestId: string\n node: IGatsbyNode\n pluginName: string\n updatedAtUTC?: string | number\n }\n}\n\nexport interface IDeleteNodeManifests {\n type: `DELETE_NODE_MANIFESTS`\n}\n\nexport interface INodeManifest {\n manifestId: string\n pluginName: string\n node: {\n id: string\n }\n}\n\nexport interface ISetDomainRequestHeaders {\n type: `SET_REQUEST_HEADERS`\n payload: {\n domain: string\n headers: {\n [header: string]: string\n }\n }\n}\n\nexport interface IProcessGatsbyImageSourceUrlAction {\n type: `PROCESS_GATSBY_IMAGE_SOURCE_URL`\n payload: {\n sourceUrl: string\n }\n}\n\nexport interface IClearGatsbyImageSourceUrlAction {\n type: `CLEAR_GATSBY_IMAGE_SOURCE_URL`\n}\n\nexport interface ITelemetry {\n gatsbyImageSourceUrls: Set<string>\n}\n\nexport interface IMergeWorkerQueryState {\n type: `MERGE_WORKER_QUERY_STATE`\n payload: {\n workerId: number\n queryStateChunk: IGatsbyState[\"queries\"]\n queryStateTelemetryChunk: IGatsbyState[\"telemetry\"]\n }\n}\n\nexport interface IMaterializePageMode {\n type: `MATERIALIZE_PAGE_MODE`\n payload: {\n path: string\n pageMode: PageMode\n }\n}\n\nexport interface ISetJobV2Context {\n type: `SET_JOB_V2_CONTEXT`\n payload: {\n job: IGatsbyIncompleteJobV2[\"job\"]\n requestId: string\n }\n}\n\nexport interface IClearJobV2Context {\n type: `CLEAR_JOB_V2_CONTEXT`\n payload: {\n requestId: string\n }\n}\n"],"mappings":";;;;IA8BYA,aAAa;AAAA;AAAA,WAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;AAAA,GAAbA,aAAa,6BAAbA,aAAa"}
|
package/dist/schema/index.js
CHANGED
|
@@ -70,18 +70,43 @@ const buildInferenceMetadata = ({
|
|
|
70
70
|
// TODO: use async iterators when we switch to node>=10
|
|
71
71
|
// or better investigate if we can offload metadata building to worker/Jobs API
|
|
72
72
|
// and then feed the result into redux?
|
|
73
|
-
const processNextType = () => {
|
|
73
|
+
const processNextType = async () => {
|
|
74
74
|
const typeName = typeNames.pop();
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
let processingNodes = [];
|
|
76
|
+
let dispatchCount = 0;
|
|
77
|
+
function dispatchNodes() {
|
|
78
|
+
return new Promise(res => {
|
|
79
|
+
store.dispatch({
|
|
80
|
+
type: `BUILD_TYPE_METADATA`,
|
|
81
|
+
payload: {
|
|
82
|
+
typeName,
|
|
83
|
+
// only clear metadata on the first chunk for this type
|
|
84
|
+
clearExistingMetadata: dispatchCount++ === 0,
|
|
85
|
+
nodes: processingNodes
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
setImmediate(() => {
|
|
89
|
+
// clear this array after BUILD_TYPE_METADATA reducer has synchronously run
|
|
90
|
+
processingNodes = [];
|
|
91
|
+
// dont block the event loop. node may decide to free previous processingNodes array from memory if it needs to.
|
|
92
|
+
setImmediate(() => {
|
|
93
|
+
res(null);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
for (const node of getDataStore().iterateNodesByType(typeName)) {
|
|
99
|
+
processingNodes.push(node);
|
|
100
|
+
if (processingNodes.length > 1000) {
|
|
101
|
+
await dispatchNodes();
|
|
80
102
|
}
|
|
81
|
-
}
|
|
103
|
+
}
|
|
104
|
+
if (processingNodes.length > 0) {
|
|
105
|
+
await dispatchNodes();
|
|
106
|
+
}
|
|
82
107
|
if (typeNames.length > 0) {
|
|
83
|
-
//
|
|
84
|
-
|
|
108
|
+
// dont block the event loop
|
|
109
|
+
setImmediate(() => processNextType());
|
|
85
110
|
} else {
|
|
86
111
|
resolve();
|
|
87
112
|
}
|
package/dist/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["tracer","require","globalTracer","store","getDataStore","getTypes","createSchemaComposer","buildSchema","builtInFieldExtensions","builtInTypeDefinitions","TypeConflictReporter","shouldPrintEngineSnapshot","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","iterateNodesByType","setTimeout","build","parentSpan","fullMetadataBuild","spanArgs","childOf","span","startSpan","ready","thirdPartySchemas","printConfig","inferenceMetadata","config","mapping","typeMapping","program","directory","typeConflictReporter","enginePrintConfig","path","rewrite","schemaComposer","schema","printConflicts","finish","rebuild","module","exports"],"sources":["../../src/schema/index.js"],"sourcesContent":["/* @flow */\n\nconst tracer = require(`opentracing`).globalTracer()\nconst { store } = require(`../redux`)\nconst { getDataStore, getTypes } = require(`../datastore`)\nconst { createSchemaComposer } = require(`./schema-composer`)\nconst { buildSchema } = require(`./schema`)\nconst { builtInFieldExtensions } = require(`./extensions`)\nconst { builtInTypeDefinitions } = require(`./types/built-in-types`)\nconst { TypeConflictReporter } = require(`./infer/type-conflict-reporter`)\nconst { shouldPrintEngineSnapshot } = require(`../utils/engines-helpers`)\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: getDataStore().iterateNodesByType(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 await getDataStore().ready()\n\n if (fullMetadataBuild) {\n // Build metadata for type inference and start updating it incrementally\n await buildInferenceMetadata({ types: getTypes() })\n store.dispatch({ type: `START_INCREMENTAL_INFERENCE` })\n }\n\n const {\n schemaCustomization: { thirdPartySchemas, printConfig },\n inferenceMetadata,\n config: { mapping: typeMapping },\n program: { directory },\n } = store.getState()\n\n const typeConflictReporter = new TypeConflictReporter()\n\n const enginePrintConfig = shouldPrintEngineSnapshot()\n ? {\n path: `${directory}/.cache/schema.gql`,\n rewrite: true,\n }\n : undefined\n\n const fieldExtensions = getAllFieldExtensions()\n const schemaComposer = createSchemaComposer({ fieldExtensions })\n const schema = await buildSchema({\n schemaComposer,\n types: getAllTypeDefinitions(),\n fieldExtensions,\n thirdPartySchemas,\n typeMapping,\n printConfig,\n enginePrintConfig,\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\nmodule.exports = {\n build,\n rebuild,\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["tracer","require","globalTracer","store","getDataStore","getTypes","createSchemaComposer","buildSchema","builtInFieldExtensions","builtInTypeDefinitions","TypeConflictReporter","shouldPrintEngineSnapshot","getAllTypeDefinitions","schemaCustomization","types","getState","builtInTypes","map","typeDef","typeOrTypeDef","plugin","undefined","filter","type","name","getAllFieldExtensions","fieldExtensions","customFieldExtensions","buildInferenceMetadata","Promise","resolve","length","typeNames","processNextType","typeName","pop","processingNodes","dispatchCount","dispatchNodes","res","dispatch","payload","clearExistingMetadata","nodes","setImmediate","node","iterateNodesByType","push","build","parentSpan","fullMetadataBuild","spanArgs","childOf","span","startSpan","ready","thirdPartySchemas","printConfig","inferenceMetadata","config","mapping","typeMapping","program","directory","typeConflictReporter","enginePrintConfig","path","rewrite","schemaComposer","schema","printConflicts","finish","rebuild","module","exports"],"sources":["../../src/schema/index.js"],"sourcesContent":["/* @flow */\n\nconst tracer = require(`opentracing`).globalTracer()\nconst { store } = require(`../redux`)\nconst { getDataStore, getTypes } = require(`../datastore`)\nconst { createSchemaComposer } = require(`./schema-composer`)\nconst { buildSchema } = require(`./schema`)\nconst { builtInFieldExtensions } = require(`./extensions`)\nconst { builtInTypeDefinitions } = require(`./types/built-in-types`)\nconst { TypeConflictReporter } = require(`./infer/type-conflict-reporter`)\nconst { shouldPrintEngineSnapshot } = require(`../utils/engines-helpers`)\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 = async () => {\n const typeName = typeNames.pop()\n\n let processingNodes = []\n let dispatchCount = 0\n function dispatchNodes() {\n return new Promise(res => {\n store.dispatch({\n type: `BUILD_TYPE_METADATA`,\n payload: {\n typeName,\n // only clear metadata on the first chunk for this type\n clearExistingMetadata: dispatchCount++ === 0,\n nodes: processingNodes,\n },\n })\n setImmediate(() => {\n // clear this array after BUILD_TYPE_METADATA reducer has synchronously run\n processingNodes = []\n // dont block the event loop. node may decide to free previous processingNodes array from memory if it needs to.\n setImmediate(() => {\n res(null)\n })\n })\n })\n }\n\n for (const node of getDataStore().iterateNodesByType(typeName)) {\n processingNodes.push(node)\n\n if (processingNodes.length > 1000) {\n await dispatchNodes()\n }\n }\n\n if (processingNodes.length > 0) {\n await dispatchNodes()\n }\n\n if (typeNames.length > 0) {\n // dont block the event loop\n setImmediate(() => processNextType())\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 await getDataStore().ready()\n\n if (fullMetadataBuild) {\n // Build metadata for type inference and start updating it incrementally\n await buildInferenceMetadata({ types: getTypes() })\n store.dispatch({ type: `START_INCREMENTAL_INFERENCE` })\n }\n\n const {\n schemaCustomization: { thirdPartySchemas, printConfig },\n inferenceMetadata,\n config: { mapping: typeMapping },\n program: { directory },\n } = store.getState()\n\n const typeConflictReporter = new TypeConflictReporter()\n\n const enginePrintConfig = shouldPrintEngineSnapshot()\n ? {\n path: `${directory}/.cache/schema.gql`,\n rewrite: true,\n }\n : undefined\n\n const fieldExtensions = getAllFieldExtensions()\n const schemaComposer = createSchemaComposer({ fieldExtensions })\n const schema = await buildSchema({\n schemaComposer,\n types: getAllTypeDefinitions(),\n fieldExtensions,\n thirdPartySchemas,\n typeMapping,\n printConfig,\n enginePrintConfig,\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\nmodule.exports = {\n build,\n rebuild,\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gatsby",
|
|
3
3
|
"description": "Blazing fast modern site generator for React",
|
|
4
|
-
"version": "5.8.
|
|
4
|
+
"version": "5.8.1",
|
|
5
5
|
"author": "Kyle Mathews <mathews.kyle@gmail.com>",
|
|
6
6
|
"bin": {
|
|
7
7
|
"gatsby": "./cli.js"
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"gatsby-legacy-polyfills": "^3.8.0",
|
|
97
97
|
"gatsby-link": "^5.8.0",
|
|
98
98
|
"gatsby-page-utils": "^3.8.0",
|
|
99
|
-
"gatsby-parcel-config": "
|
|
99
|
+
"gatsby-parcel-config": "1.8.0",
|
|
100
100
|
"gatsby-plugin-page-creator": "^5.8.0",
|
|
101
101
|
"gatsby-plugin-typescript": "^5.8.0",
|
|
102
102
|
"gatsby-plugin-utils": "^4.8.0",
|
|
@@ -275,5 +275,5 @@
|
|
|
275
275
|
"yargs": {
|
|
276
276
|
"boolean-negation": false
|
|
277
277
|
},
|
|
278
|
-
"gitHead": "
|
|
278
|
+
"gitHead": "12c91db83842327398193676395693b1f9fff6ac"
|
|
279
279
|
}
|