From 151f20c4ec1cb38ef963aea58050b4788a37af16 Mon Sep 17 00:00:00 2001 From: Ty Hopp Date: Wed, 2 Nov 2022 15:38:06 +0800 Subject: [PATCH] feat(gatsby): Traverse re-exports in static query mapper (#36943) --- integration-tests/artifacts/__tests__/index.js | 9 +++++++++ .../artifacts/src/components/title-named-export.js | 7 +++++++ .../artifacts/src/components/title-re-export.js | 1 + .../artifacts/src/pages/import-re-export.js | 6 ++++++ .../src/utils/webpack/plugins/static-query-mapper.ts | 8 +------- 5 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 integration-tests/artifacts/src/components/title-named-export.js create mode 100644 integration-tests/artifacts/src/components/title-re-export.js create mode 100644 integration-tests/artifacts/src/pages/import-re-export.js diff --git a/integration-tests/artifacts/__tests__/index.js b/integration-tests/artifacts/__tests__/index.js index af194613040c1..be8d1aca9dec6 100644 --- a/integration-tests/artifacts/__tests__/index.js +++ b/integration-tests/artifacts/__tests__/index.js @@ -426,6 +426,15 @@ describe(`First run (baseline)`, () => { expect(staticQueryHashes.sort()).toEqual(queries.map(hashQuery).sort()) }) + test(`are written correctly when a re-exported query is imported`, async () => { + const queries = [titleQuery, ...globalQueries] + const pagePath = `/import-re-export/` + + const { staticQueryHashes } = await readPageData(publicDir, pagePath) + + expect(staticQueryHashes.sort()).toEqual(queries.map(hashQuery).sort()) + }) + test(`are written correctly when dynamically imported`, async () => { const queries = [titleQuery, ...globalQueries] const pagePath = `/dynamic/` diff --git a/integration-tests/artifacts/src/components/title-named-export.js b/integration-tests/artifacts/src/components/title-named-export.js new file mode 100644 index 0000000000000..da83eae1b89c7 --- /dev/null +++ b/integration-tests/artifacts/src/components/title-named-export.js @@ -0,0 +1,7 @@ +import React from "react" +import { useTitle } from "../hooks/use-title" + +export function Title() { + const title = useTitle() + return
{title}
+} diff --git a/integration-tests/artifacts/src/components/title-re-export.js b/integration-tests/artifacts/src/components/title-re-export.js new file mode 100644 index 0000000000000..b08eb0914b5dc --- /dev/null +++ b/integration-tests/artifacts/src/components/title-re-export.js @@ -0,0 +1 @@ +export { Title as TitleReExport } from "./title-named-export" diff --git a/integration-tests/artifacts/src/pages/import-re-export.js b/integration-tests/artifacts/src/pages/import-re-export.js new file mode 100644 index 0000000000000..7a888e1d9bd10 --- /dev/null +++ b/integration-tests/artifacts/src/pages/import-re-export.js @@ -0,0 +1,6 @@ +import React from "react" +import { TitleReExport } from "../components/title-re-export" + +export default function ImportReExport() { + return +} diff --git a/packages/gatsby/src/utils/webpack/plugins/static-query-mapper.ts b/packages/gatsby/src/utils/webpack/plugins/static-query-mapper.ts index 4d67430d825f0..f8340fdb85920 100644 --- a/packages/gatsby/src/utils/webpack/plugins/static-query-mapper.ts +++ b/packages/gatsby/src/utils/webpack/plugins/static-query-mapper.ts @@ -240,13 +240,7 @@ export class StaticQueryMapper { compilation.moduleGraph.getIncomingConnections(module) for (const connection of incomingConnections) { if (connection.originModule instanceof NormalModule) { - const shouldTraverse = - connection.dependency?.type !== - `harmony export imported specifier` - - if (shouldTraverse) { - traverseModule(connection.originModule, config, visitedModules) - } + traverseModule(connection.originModule, config, visitedModules) } } }