From 0f8d747b495f3fe25536d3eb8eb49c5bbb2f7d71 Mon Sep 17 00:00:00 2001 From: Vladimir Razuvaev Date: Fri, 23 Jul 2021 15:36:04 +0700 Subject: [PATCH] fix(gatsby-plugin-mdx): generate mdx once when multiple mdx fields requested (#32462) --- .../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({