From 364b532a06aa1d93bca734ea84b2bcbf614c2aa4 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Feb 2020 14:21:00 +0000 Subject: [PATCH 1/4] Move buildTime into new node type --- .../internal-data-bridge/gatsby-node.js | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js index 7f134cebffd7c..42452284706f3 100644 --- a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js +++ b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js @@ -78,9 +78,6 @@ exports.sourceNodes = ({ createContentDigest, actions, store }) => { }) // Add site node. - const buildTime = moment() - .subtract(process.uptime(), `seconds`) - .toJSON() const createGatsbyConfigNode = (config = {}) => { // Delete plugins from the config as we add plugins above. @@ -93,7 +90,6 @@ exports.sourceNodes = ({ createContentDigest, actions, store }) => { port: state.program.port, host: state.program.host, ...configCopy, - buildTime, } createNode({ ...node, @@ -109,6 +105,22 @@ exports.sourceNodes = ({ createContentDigest, actions, store }) => { createGatsbyConfigNode(state.config) + const buildTime = moment() + .subtract(process.uptime(), `seconds`) + .startOf(`second`) + .toJSON() + + createNode({ + id: `SiteBuildTime`, + parent: null, + children: [], + buildTime, + internal: { + contentDigest: createContentDigest(buildTime), + type: `SiteBuildTime`, + }, + }) + const pathToGatsbyConfig = systemPath.join( program.directory, `gatsby-config.js` @@ -129,6 +141,24 @@ exports.sourceNodes = ({ createContentDigest, actions, store }) => { }) } +exports.createResolvers = ({ createResolvers }) => { + const resolvers = { + Site: { + buildTime: { + type: `Date`, + resolve(source, args, context, info) { + const buildNode = context.nodeModel.getNodeById({ + id: `SiteBuildTime`, + type: `SiteBuildTime`, + }) + return buildNode.buildTime + }, + }, + }, + } + createResolvers(resolvers) +} + exports.onCreatePage = ({ createContentDigest, page, actions }) => { const { createNode } = actions // eslint-disable-next-line From 4fe452e8e9623408635137df54153424e6f12780 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Feb 2020 15:16:00 +0000 Subject: [PATCH 2/4] Use original resolver --- .../internal-data-bridge/gatsby-node.js | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js index 42452284706f3..bdbb1df3c2b42 100644 --- a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js +++ b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js @@ -141,17 +141,35 @@ exports.sourceNodes = ({ createContentDigest, actions, store }) => { }) } +exports.createSchemaCustomization = ({ actions }) => { + const { createTypes } = actions + const typeDefs = ` + type Site implements Node { + buildTime: Date @dateformat + } + ` + createTypes(typeDefs) +} + exports.createResolvers = ({ createResolvers }) => { const resolvers = { Site: { buildTime: { type: `Date`, resolve(source, args, context, info) { - const buildNode = context.nodeModel.getNodeById({ + const { buildTime } = context.nodeModel.getNodeById({ id: `SiteBuildTime`, type: `SiteBuildTime`, }) - return buildNode.buildTime + return info.originalResolver( + { + ...source, + buildTime, + }, + args, + context, + info + ) }, }, }, From a4747945299f625de15c2b265185b220b6a40bbe Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Feb 2020 15:24:20 +0000 Subject: [PATCH 3/4] Call the type SiteMetadata --- .../internal-data-bridge/gatsby-node.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js index bdbb1df3c2b42..50dcb2b377c4c 100644 --- a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js +++ b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js @@ -110,14 +110,16 @@ exports.sourceNodes = ({ createContentDigest, actions, store }) => { .startOf(`second`) .toJSON() + const metadataNode = { buildTime } + createNode({ - id: `SiteBuildTime`, + ...metadataNode, + id: `SiteBuildMetadata`, parent: null, children: [], - buildTime, internal: { - contentDigest: createContentDigest(buildTime), - type: `SiteBuildTime`, + contentDigest: createContentDigest(metadataNode), + type: `SiteBuildMetadata`, }, }) @@ -158,8 +160,8 @@ exports.createResolvers = ({ createResolvers }) => { type: `Date`, resolve(source, args, context, info) { const { buildTime } = context.nodeModel.getNodeById({ - id: `SiteBuildTime`, - type: `SiteBuildTime`, + id: `SiteBuildMetadata`, + type: `SiteBuildMetadata`, }) return info.originalResolver( { From fff1ad12e1505dee1252a850ddb09bf013215c87 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Feb 2020 15:39:12 +0000 Subject: [PATCH 4/4] Update snapshot --- .../__tests__/__snapshots__/load-plugins.js.snap | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap b/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap index 5eb196634af75..b46918821e8d2 100644 --- a/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap +++ b/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap @@ -36,6 +36,8 @@ Array [ "name": "internal-data-bridge", "nodeAPIs": Array [ "sourceNodes", + "createSchemaCustomization", + "createResolvers", "onCreatePage", ], "pluginOptions": Object { @@ -220,6 +222,8 @@ Array [ "name": "internal-data-bridge", "nodeAPIs": Array [ "sourceNodes", + "createSchemaCustomization", + "createResolvers", "onCreatePage", ], "pluginOptions": Object { @@ -432,6 +436,8 @@ Array [ "name": "internal-data-bridge", "nodeAPIs": Array [ "sourceNodes", + "createSchemaCustomization", + "createResolvers", "onCreatePage", ], "pluginOptions": Object {