From 217b6b394d5d845de1e68339ad39e38604702597 Mon Sep 17 00:00:00 2001 From: Vladimir Razuvaev Date: Wed, 21 Jul 2021 18:29:17 +0700 Subject: [PATCH] fix(gatsby-plugin-mdx): generate mdx once when multiple mdx fields requested --- .../gatsby/create-schema-customization.js | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/packages/gatsby-plugin-mdx/gatsby/create-schema-customization.js b/packages/gatsby-plugin-mdx/gatsby/create-schema-customization.js index fe28703437384..aca0536a58475 100644 --- a/packages/gatsby-plugin-mdx/gatsby/create-schema-customization.js +++ b/packages/gatsby-plugin-mdx/gatsby/create-schema-customization.js @@ -93,20 +93,30 @@ module.exports = function createSchemaCustomization( } } - const processMDX = ({ node }) => - genMDX({ - node, - options, - store, - pathPrefix, - getNode, - getNodes, - cache, - reporter, - actions, - schema, - ...helpers, - }) + const pendingPromises = new WeakMap() + const processMDX = ({ node }) => { + let promise = pendingPromises.get(node) + if (!promise) { + promise = genMDX({ + node, + options, + store, + pathPrefix, + getNode, + getNodes, + cache, + reporter, + actions, + schema, + ...helpers, + }) + pendingPromises.set(node, promise) + promise.then(() => { + pendingPromises.delete(node) + }) + } + return promise + } // New Code // Schema const MdxType = schema.buildObjectType({