gatsby 4.8.0-next.2 → 4.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ### [4.7.2](https://github.com/gatsbyjs/gatsby/commits/gatsby@4.7.2/packages/gatsby) (2022-02-15)
7
+
8
+ #### Bug Fixes
9
+
10
+ - Content Sync DSG bug [#34799](https://github.com/gatsbyjs/gatsby/issues/34799) [#34818](https://github.com/gatsbyjs/gatsby/issues/34818) ([7ef1fb6](https://github.com/gatsbyjs/gatsby/commit/7ef1fb6a3e6b75e74a41d545283dc0602dc9811e))
11
+
6
12
  ### [4.7.1](https://github.com/gatsbyjs/gatsby/commits/gatsby@4.7.1/packages/gatsby) (2022-02-08)
7
13
 
8
14
  **Note:** Version bump only for package gatsby
@@ -287,8 +287,10 @@ externalTelemetryAttributes) {
287
287
 
288
288
  if ("4" === `4`) {
289
289
  queryIds.pageQueryIds = queryIds.pageQueryIds.filter(query => (0, _pageMode.getPageMode)(query) === `SSG`);
290
- }
290
+ } // Start saving page.mode in the main process (while queries run in workers in parallel)
291
+
291
292
 
293
+ const waitMaterializePageMode = (0, _pageMode.materializePageMode)();
292
294
  let waitForWorkerPoolRestart = Promise.resolve();
293
295
 
294
296
  if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {
@@ -326,6 +328,7 @@ externalTelemetryAttributes) {
326
328
  }
327
329
 
328
330
  if (process.send && (0, _enginesHelpers.shouldGenerateEngines)()) {
331
+ await waitMaterializePageMode;
329
332
  process.send({
330
333
  type: `LOG_ACTION`,
331
334
  action: {
@@ -391,9 +394,7 @@ externalTelemetryAttributes) {
391
394
  program.keepPageRenderer = true;
392
395
  }
393
396
 
394
- await waitForWorkerPoolRestart; // Start saving page.mode in the main process (while HTML is generated in workers in parallel)
395
-
396
- const waitMaterializePageMode = (0, _pageMode.materializePageMode)();
397
+ await waitForWorkerPoolRestart;
397
398
  const {
398
399
  toRegenerate,
399
400
  toDelete
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/build.ts"],"names":["module","exports","build","program","externalTelemetryAttributes","global","__GATSBY","buildId","uuid","v4","root","directory","process","env","VERBOSE","verbose","report","setVerbose","profile","warn","name","sitePackageJson","sitePath","lastRun","Date","now","pid","publicDir","path","join","GATSBY_OPEN_TRACING_CONFIG_FILE","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","Object","entries","forEach","key","value","gatsbyNodeGraphQLFunction","workerPool","parentSpan","graphql","store","closeJavascriptBundleCompilation","closeHTMLBundleCompilation","webpackAssets","webpackCompilationHash","webpackSSRCompilationHash","engineBundlingPromises","buildActivityTimer","activityTimer","stats","close","hasWarnings","rawMessages","toJson","all","warnings","assets","cachedAssets","hash","err","panic","Stage","BuildJavascript","end","state","getState","push","rootDir","components","staticQueriesByTemplate","reporter","isVerbose","Promise","buildSSRBundleActivityProgress","BuildHTML","pageConfigActivity","validateEnginesActivity","error","id","context","cacheActivity","graphqlRunner","GraphQLRunner","collectStats","graphqlTracing","queryIds","pageQueryIds","filter","query","waitForWorkerPoolRestart","resolve","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","restart","send","type","action","timestamp","toJSON","appDataUtil","exists","dispatch","payload","rewriteActivityTimer","write","html","ssrCompilationHash","isTrackingEnabled","bundleSizes","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","actions","setProgramStatus","db","saveState","keepPageRenderer","waitMaterializePageMode","toRegenerate","toDelete","waitWorkerPoolEnd","SSGCount","DSGCount","SSRCount","page","pages","mode","pagesCount","length","totalPagesCount","postBuildActivityTimer","e","message","_renderPageTree","functions","gatsbyCloudConfig","config","info","uptime","logPages","writeToFile","createdFilesPath","createdFilesContent","deletedFilesPath","deletedFilesContent","fs","writeFile"],"mappings":"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","sourcesContent":["import path from \"path\"\nimport report from \"gatsby-cli/lib/reporter\"\nimport signalExit from \"signal-exit\"\nimport fs from \"fs-extra\"\nimport telemetry from \"gatsby-telemetry\"\nimport { updateInternalSiteMetadata, isTruthy, uuid } from \"gatsby-core-utils\"\nimport {\n buildRenderer,\n buildHTMLPagesAndDeleteStaleArtifacts,\n IBuildArgs,\n} from \"./build-html\"\nimport { buildProductionBundle } from \"./build-javascript\"\nimport { bootstrap } from \"../bootstrap\"\nimport apiRunnerNode from \"../utils/api-runner-node\"\nimport { GraphQLRunner } from \"../query/graphql-runner\"\nimport { copyStaticDirs } from \"../utils/get-static-dir\"\nimport { initTracer, stopTracer } from \"../utils/tracer\"\nimport * as db from \"../redux/save-state\"\nimport { store } from \"../redux\"\nimport * as appDataUtil from \"../utils/app-data\"\nimport { flush as flushPendingPageDataWrites } from \"../utils/page-data\"\nimport {\n structureWebpackErrors,\n reportWebpackWarnings,\n} from \"../utils/webpack-error-utils\"\nimport {\n userGetsSevenDayFeedback,\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n showSevenDayFeedbackRequest,\n} from \"../utils/feedback\"\nimport { actions } from \"../redux/actions\"\nimport { waitUntilAllJobsComplete } from \"../utils/wait-until-jobs-complete\"\nimport { Stage } from \"./types\"\nimport {\n calculateDirtyQueries,\n runStaticQueries,\n runPageQueries,\n writeOutRequires,\n} from \"../services\"\nimport {\n markWebpackStatusAsPending,\n markWebpackStatusAsDone,\n} from \"../utils/webpack-status\"\nimport { showExperimentNotices } from \"../utils/show-experiment-notice\"\nimport {\n mergeWorkerState,\n runQueriesInWorkersQueue,\n} from \"../utils/worker/pool\"\nimport { createGraphqlEngineBundle } from \"../schema/graphql-engine/bundle-webpack\"\nimport {\n createPageSSRBundle,\n writeQueryContext,\n} from \"../utils/page-ssr-module/bundle-webpack\"\nimport { shouldGenerateEngines } from \"../utils/engines-helpers\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport type webpack from \"webpack\"\nimport {\n materializePageMode,\n getPageMode,\n preparePageTemplateConfigs,\n} from \"../utils/page-mode\"\nimport { validateEngines } from \"../utils/validate-engines\"\nimport { constructConfigObject } from \"../utils/gatsby-cloud-config\"\n\nmodule.exports = async function build(\n program: IBuildArgs,\n // Let external systems running Gatsby to inject attributes\n externalTelemetryAttributes: Record<string, any>\n): Promise<void> {\n // global gatsby object to use without store\n global.__GATSBY = {\n buildId: uuid.v4(),\n root: program!.directory,\n }\n\n if (isTruthy(process.env.VERBOSE)) {\n program.verbose = true\n }\n report.setVerbose(program.verbose)\n\n if (program.profile) {\n report.warn(\n `React Profiling is enabled. This can have a performance impact. See https://www.gatsbyjs.org/docs/profiling-site-performance-with-react-profiler/#performance-impact`\n )\n }\n\n await updateInternalSiteMetadata({\n name: program.sitePackageJson.name,\n sitePath: program.directory,\n lastRun: Date.now(),\n pid: process.pid,\n })\n\n markWebpackStatusAsPending()\n\n const publicDir = path.join(program.directory, `public`)\n if (!externalTelemetryAttributes) {\n await initTracer(\n process.env.GATSBY_OPEN_TRACING_CONFIG_FILE ||\n program.openTracingConfigFile\n )\n }\n\n const buildActivity = report.phantomActivity(`build`)\n buildActivity.start()\n\n telemetry.trackCli(`BUILD_START`)\n signalExit(exitCode => {\n telemetry.trackCli(`BUILD_END`, {\n exitCode: exitCode as number | undefined,\n })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n // Add external tags to buildSpan\n if (externalTelemetryAttributes) {\n Object.entries(externalTelemetryAttributes).forEach(([key, value]) => {\n buildActivity.span.setTag(key, value)\n })\n }\n\n const { gatsbyNodeGraphQLFunction, workerPool } = await bootstrap({\n program,\n parentSpan: buildSpan,\n })\n\n await apiRunnerNode(`onPreBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n\n // writes sync and async require files to disk\n // used inside routing \"html\" + \"javascript\"\n await writeOutRequires({\n store,\n parentSpan: buildSpan,\n })\n\n let closeJavascriptBundleCompilation: (() => Promise<void>) | undefined\n let closeHTMLBundleCompilation: (() => Promise<void>) | undefined\n let webpackAssets: Array<webpack.StatsAsset> | null = null\n let webpackCompilationHash: string | null = null\n let webpackSSRCompilationHash: string | null = null\n\n const engineBundlingPromises: Array<Promise<any>> = []\n const buildActivityTimer = report.activityTimer(\n `Building production JavaScript and CSS bundles`,\n { parentSpan: buildSpan }\n )\n buildActivityTimer.start()\n\n try {\n const { stats, close } = await buildProductionBundle(\n program,\n buildActivityTimer.span\n )\n closeJavascriptBundleCompilation = close\n\n if (stats.hasWarnings()) {\n const rawMessages = stats.toJson({ all: false, warnings: true })\n reportWebpackWarnings(rawMessages.warnings, report)\n }\n\n webpackAssets = stats.toJson({\n all: false,\n assets: true,\n cachedAssets: true,\n }).assets as Array<webpack.StatsAsset>\n webpackCompilationHash = stats.hash as string\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n const state = store.getState()\n const buildActivityTimer = report.activityTimer(\n `Building Rendering Engines`,\n { parentSpan: buildSpan }\n )\n try {\n buildActivityTimer.start()\n // bundle graphql-engine\n engineBundlingPromises.push(\n createGraphqlEngineBundle(program.directory, report, program.verbose)\n )\n\n engineBundlingPromises.push(\n createPageSSRBundle({\n rootDir: program.directory,\n components: state.components,\n staticQueriesByTemplate: state.staticQueriesByTemplate,\n webpackCompilationHash: webpackCompilationHash as string, // we set webpackCompilationHash above\n reporter: report,\n isVerbose: program.verbose,\n })\n )\n await Promise.all(engineBundlingPromises)\n } catch (err) {\n reporter.panic(err)\n } finally {\n buildActivityTimer.end()\n }\n }\n\n const buildSSRBundleActivityProgress = report.activityTimer(\n `Building HTML renderer`,\n { parentSpan: buildSpan }\n )\n buildSSRBundleActivityProgress.start()\n try {\n const { close, stats } = await buildRenderer(\n program,\n Stage.BuildHTML,\n buildSSRBundleActivityProgress.span\n )\n\n closeHTMLBundleCompilation = close\n webpackSSRCompilationHash = stats.hash as string\n\n await close()\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildHTML, err))\n } finally {\n buildSSRBundleActivityProgress.end()\n }\n\n // exec outer config function for each template\n const pageConfigActivity = report.activityTimer(`Execute page configs`, {\n parentSpan: buildSpan,\n })\n pageConfigActivity.start()\n try {\n await preparePageTemplateConfigs(gatsbyNodeGraphQLFunction)\n } catch (err) {\n reporter.panic(err)\n } finally {\n pageConfigActivity.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n const validateEnginesActivity = report.activityTimer(\n `Validating Rendering Engines`,\n {\n parentSpan: buildSpan,\n }\n )\n validateEnginesActivity.start()\n try {\n await validateEngines(store.getState().program.directory)\n } catch (error) {\n validateEnginesActivity.panic({ id: `98001`, context: {}, error })\n } finally {\n validateEnginesActivity.end()\n }\n }\n\n const cacheActivity = report.activityTimer(`Caching Webpack compilations`, {\n parentSpan: buildSpan,\n })\n try {\n cacheActivity.start()\n await Promise.all([\n closeJavascriptBundleCompilation?.(),\n closeHTMLBundleCompilation?.(),\n ])\n } finally {\n cacheActivity.end()\n }\n\n const graphqlRunner = new GraphQLRunner(store, {\n collectStats: true,\n graphqlTracing: program.graphqlTracing,\n })\n\n const { queryIds } = await calculateDirtyQueries({ store })\n\n // Only run queries with mode SSG\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n queryIds.pageQueryIds = queryIds.pageQueryIds.filter(\n query => getPageMode(query) === `SSG`\n )\n }\n\n let waitForWorkerPoolRestart = Promise.resolve()\n if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {\n await runQueriesInWorkersQueue(workerPool, queryIds, {\n parentSpan: buildSpan,\n })\n // Jobs still might be running even though query running finished\n await waitUntilAllJobsComplete()\n // Restart worker pool before merging state to lower memory pressure while merging state\n waitForWorkerPoolRestart = workerPool.restart()\n await mergeWorkerState(workerPool, buildSpan)\n } else {\n await runStaticQueries({\n queryIds,\n parentSpan: buildSpan,\n store,\n graphqlRunner,\n })\n\n await runPageQueries({\n queryIds,\n graphqlRunner,\n parentSpan: buildSpan,\n store,\n })\n }\n\n // create scope so we don't leak state object\n {\n const state = store.getState()\n await writeQueryContext({\n staticQueriesByTemplate: state.staticQueriesByTemplate,\n components: state.components,\n })\n }\n\n if (process.send && shouldGenerateEngines()) {\n process.send({\n type: `LOG_ACTION`,\n action: {\n type: `ENGINES_READY`,\n timestamp: new Date().toJSON(),\n },\n })\n }\n\n // Copy files from the static directory to\n // an equivalent static directory within public.\n copyStaticDirs()\n\n // create scope so we don't leak state object\n {\n const state = store.getState()\n if (\n webpackCompilationHash !== state.webpackCompilationHash ||\n !appDataUtil.exists(publicDir)\n ) {\n store.dispatch({\n type: `SET_WEBPACK_COMPILATION_HASH`,\n payload: webpackCompilationHash,\n })\n\n const rewriteActivityTimer = report.activityTimer(\n `Rewriting compilation hashes`,\n {\n parentSpan: buildSpan,\n }\n )\n rewriteActivityTimer.start()\n\n await appDataUtil.write(publicDir, webpackCompilationHash as string)\n\n rewriteActivityTimer.end()\n }\n\n if (state.html.ssrCompilationHash !== webpackSSRCompilationHash) {\n store.dispatch({\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`,\n payload: webpackSSRCompilationHash,\n })\n }\n }\n\n await flushPendingPageDataWrites(buildSpan)\n markWebpackStatusAsDone()\n\n if (telemetry.isTrackingEnabled()) {\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const bundleSizes = (webpackAssets as Array<webpack.StatsAsset>)\n .filter(asset => asset.name.endsWith(`.js`))\n .map(asset => asset.size / 1000)\n const pageDataSizes = [...store.getState().pageDataStats.values()]\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n bundleStats: telemetry.aggregateStats(bundleSizes),\n pageDataStats: telemetry.aggregateStats(pageDataSizes),\n queryStats: graphqlRunner.getStats(),\n })\n }\n\n store.dispatch(actions.setProgramStatus(`BOOTSTRAP_QUERY_RUNNING_FINISHED`))\n\n await db.saveState()\n\n await waitUntilAllJobsComplete()\n\n // we need to save it again to make sure our latest state has been saved\n await db.saveState()\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // well, tbf we should just generate this in `.cache` and avoid deleting it :shrug:\n program.keepPageRenderer = true\n }\n\n await waitForWorkerPoolRestart\n\n // Start saving page.mode in the main process (while HTML is generated in workers in parallel)\n const waitMaterializePageMode = materializePageMode()\n\n const { toRegenerate, toDelete } =\n await buildHTMLPagesAndDeleteStaleArtifacts({\n program,\n workerPool,\n parentSpan: buildSpan,\n })\n\n await waitMaterializePageMode\n const waitWorkerPoolEnd = Promise.all(workerPool.end())\n\n {\n let SSGCount = 0\n let DSGCount = 0\n let SSRCount = 0\n for (const page of store.getState().pages.values()) {\n if (page.mode === `SSR`) {\n SSRCount++\n } else if (page.mode === `DSG`) {\n DSGCount++\n } else {\n SSGCount++\n }\n }\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n pagesCount: toRegenerate.length, // number of html files that will be written\n totalPagesCount: store.getState().pages.size, // total number of pages\n SSRCount,\n DSGCount,\n SSGCount,\n })\n }\n\n const postBuildActivityTimer = report.activityTimer(`onPostBuild`, {\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.start()\n await apiRunnerNode(`onPostBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: postBuildActivityTimer.span,\n })\n postBuildActivityTimer.end()\n\n // Wait for any jobs that were started in onPostBuild\n // This could occur due to queries being run which invoke sharp for instance\n await waitUntilAllJobsComplete()\n\n try {\n await waitWorkerPoolEnd\n } catch (e) {\n report.warn(`Error when closing WorkerPool: ${e.message}`)\n }\n\n // Make sure we saved the latest state so we have all jobs cached\n await db.saveState()\n\n const state = store.getState()\n reporter._renderPageTree({\n components: state.components,\n functions: state.functions,\n pages: state.pages,\n root: state.program.directory,\n })\n\n if (process.send) {\n const gatsbyCloudConfig = constructConfigObject(state.config)\n\n process.send({\n type: `LOG_ACTION`,\n action: {\n type: `GATSBY_CONFIG_KEYS`,\n payload: gatsbyCloudConfig,\n timestamp: new Date().toJSON(),\n },\n })\n }\n\n report.info(`Done building in ${process.uptime()} sec`)\n\n buildActivity.end()\n if (!externalTelemetryAttributes) {\n await stopTracer()\n }\n\n if (program.logPages) {\n if (toRegenerate.length) {\n report.info(\n `Built pages:\\n${toRegenerate\n .map(path => `Updated page: ${path}`)\n .join(`\\n`)}`\n )\n }\n\n if (toDelete.length) {\n report.info(\n `Deleted pages:\\n${toDelete\n .map(path => `Deleted page: ${path}`)\n .join(`\\n`)}`\n )\n }\n }\n\n if (program.writeToFile) {\n const createdFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `newPages.txt`\n )\n const createdFilesContent = toRegenerate.length\n ? `${toRegenerate.join(`\\n`)}\\n`\n : ``\n\n const deletedFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `deletedPages.txt`\n )\n const deletedFilesContent = toDelete.length\n ? `${toDelete.join(`\\n`)}\\n`\n : ``\n\n await fs.writeFile(createdFilesPath, createdFilesContent, `utf8`)\n report.info(`.cache/newPages.txt created`)\n\n await fs.writeFile(deletedFilesPath, deletedFilesContent, `utf8`)\n report.info(`.cache/deletedPages.txt created`)\n }\n\n showExperimentNotices()\n\n if (await userGetsSevenDayFeedback()) {\n showSevenDayFeedbackRequest()\n } else if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n}\n"],"file":"build.js"}
1
+ {"version":3,"sources":["../../src/commands/build.ts"],"names":["module","exports","build","program","externalTelemetryAttributes","global","__GATSBY","buildId","uuid","v4","root","directory","process","env","VERBOSE","verbose","report","setVerbose","profile","warn","name","sitePackageJson","sitePath","lastRun","Date","now","pid","publicDir","path","join","GATSBY_OPEN_TRACING_CONFIG_FILE","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","Object","entries","forEach","key","value","gatsbyNodeGraphQLFunction","workerPool","parentSpan","graphql","store","closeJavascriptBundleCompilation","closeHTMLBundleCompilation","webpackAssets","webpackCompilationHash","webpackSSRCompilationHash","engineBundlingPromises","buildActivityTimer","activityTimer","stats","close","hasWarnings","rawMessages","toJson","all","warnings","assets","cachedAssets","hash","err","panic","Stage","BuildJavascript","end","state","getState","push","rootDir","components","staticQueriesByTemplate","reporter","isVerbose","Promise","buildSSRBundleActivityProgress","BuildHTML","pageConfigActivity","validateEnginesActivity","error","id","context","cacheActivity","graphqlRunner","GraphQLRunner","collectStats","graphqlTracing","queryIds","pageQueryIds","filter","query","waitMaterializePageMode","waitForWorkerPoolRestart","resolve","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","restart","send","type","action","timestamp","toJSON","appDataUtil","exists","dispatch","payload","rewriteActivityTimer","write","html","ssrCompilationHash","isTrackingEnabled","bundleSizes","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","actions","setProgramStatus","db","saveState","keepPageRenderer","toRegenerate","toDelete","waitWorkerPoolEnd","SSGCount","DSGCount","SSRCount","page","pages","mode","pagesCount","length","totalPagesCount","postBuildActivityTimer","e","message","_renderPageTree","functions","gatsbyCloudConfig","config","info","uptime","logPages","writeToFile","createdFilesPath","createdFilesContent","deletedFilesPath","deletedFilesContent","fs","writeFile"],"mappings":"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","sourcesContent":["import path from \"path\"\nimport report from \"gatsby-cli/lib/reporter\"\nimport signalExit from \"signal-exit\"\nimport fs from \"fs-extra\"\nimport telemetry from \"gatsby-telemetry\"\nimport { updateInternalSiteMetadata, isTruthy, uuid } from \"gatsby-core-utils\"\nimport {\n buildRenderer,\n buildHTMLPagesAndDeleteStaleArtifacts,\n IBuildArgs,\n} from \"./build-html\"\nimport { buildProductionBundle } from \"./build-javascript\"\nimport { bootstrap } from \"../bootstrap\"\nimport apiRunnerNode from \"../utils/api-runner-node\"\nimport { GraphQLRunner } from \"../query/graphql-runner\"\nimport { copyStaticDirs } from \"../utils/get-static-dir\"\nimport { initTracer, stopTracer } from \"../utils/tracer\"\nimport * as db from \"../redux/save-state\"\nimport { store } from \"../redux\"\nimport * as appDataUtil from \"../utils/app-data\"\nimport { flush as flushPendingPageDataWrites } from \"../utils/page-data\"\nimport {\n structureWebpackErrors,\n reportWebpackWarnings,\n} from \"../utils/webpack-error-utils\"\nimport {\n userGetsSevenDayFeedback,\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n showSevenDayFeedbackRequest,\n} from \"../utils/feedback\"\nimport { actions } from \"../redux/actions\"\nimport { waitUntilAllJobsComplete } from \"../utils/wait-until-jobs-complete\"\nimport { Stage } from \"./types\"\nimport {\n calculateDirtyQueries,\n runStaticQueries,\n runPageQueries,\n writeOutRequires,\n} from \"../services\"\nimport {\n markWebpackStatusAsPending,\n markWebpackStatusAsDone,\n} from \"../utils/webpack-status\"\nimport { showExperimentNotices } from \"../utils/show-experiment-notice\"\nimport {\n mergeWorkerState,\n runQueriesInWorkersQueue,\n} from \"../utils/worker/pool\"\nimport { createGraphqlEngineBundle } from \"../schema/graphql-engine/bundle-webpack\"\nimport {\n createPageSSRBundle,\n writeQueryContext,\n} from \"../utils/page-ssr-module/bundle-webpack\"\nimport { shouldGenerateEngines } from \"../utils/engines-helpers\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport type webpack from \"webpack\"\nimport {\n materializePageMode,\n getPageMode,\n preparePageTemplateConfigs,\n} from \"../utils/page-mode\"\nimport { validateEngines } from \"../utils/validate-engines\"\nimport { constructConfigObject } from \"../utils/gatsby-cloud-config\"\n\nmodule.exports = async function build(\n program: IBuildArgs,\n // Let external systems running Gatsby to inject attributes\n externalTelemetryAttributes: Record<string, any>\n): Promise<void> {\n // global gatsby object to use without store\n global.__GATSBY = {\n buildId: uuid.v4(),\n root: program!.directory,\n }\n\n if (isTruthy(process.env.VERBOSE)) {\n program.verbose = true\n }\n report.setVerbose(program.verbose)\n\n if (program.profile) {\n report.warn(\n `React Profiling is enabled. This can have a performance impact. See https://www.gatsbyjs.org/docs/profiling-site-performance-with-react-profiler/#performance-impact`\n )\n }\n\n await updateInternalSiteMetadata({\n name: program.sitePackageJson.name,\n sitePath: program.directory,\n lastRun: Date.now(),\n pid: process.pid,\n })\n\n markWebpackStatusAsPending()\n\n const publicDir = path.join(program.directory, `public`)\n if (!externalTelemetryAttributes) {\n await initTracer(\n process.env.GATSBY_OPEN_TRACING_CONFIG_FILE ||\n program.openTracingConfigFile\n )\n }\n\n const buildActivity = report.phantomActivity(`build`)\n buildActivity.start()\n\n telemetry.trackCli(`BUILD_START`)\n signalExit(exitCode => {\n telemetry.trackCli(`BUILD_END`, {\n exitCode: exitCode as number | undefined,\n })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n // Add external tags to buildSpan\n if (externalTelemetryAttributes) {\n Object.entries(externalTelemetryAttributes).forEach(([key, value]) => {\n buildActivity.span.setTag(key, value)\n })\n }\n\n const { gatsbyNodeGraphQLFunction, workerPool } = await bootstrap({\n program,\n parentSpan: buildSpan,\n })\n\n await apiRunnerNode(`onPreBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n\n // writes sync and async require files to disk\n // used inside routing \"html\" + \"javascript\"\n await writeOutRequires({\n store,\n parentSpan: buildSpan,\n })\n\n let closeJavascriptBundleCompilation: (() => Promise<void>) | undefined\n let closeHTMLBundleCompilation: (() => Promise<void>) | undefined\n let webpackAssets: Array<webpack.StatsAsset> | null = null\n let webpackCompilationHash: string | null = null\n let webpackSSRCompilationHash: string | null = null\n\n const engineBundlingPromises: Array<Promise<any>> = []\n const buildActivityTimer = report.activityTimer(\n `Building production JavaScript and CSS bundles`,\n { parentSpan: buildSpan }\n )\n buildActivityTimer.start()\n\n try {\n const { stats, close } = await buildProductionBundle(\n program,\n buildActivityTimer.span\n )\n closeJavascriptBundleCompilation = close\n\n if (stats.hasWarnings()) {\n const rawMessages = stats.toJson({ all: false, warnings: true })\n reportWebpackWarnings(rawMessages.warnings, report)\n }\n\n webpackAssets = stats.toJson({\n all: false,\n assets: true,\n cachedAssets: true,\n }).assets as Array<webpack.StatsAsset>\n webpackCompilationHash = stats.hash as string\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n const state = store.getState()\n const buildActivityTimer = report.activityTimer(\n `Building Rendering Engines`,\n { parentSpan: buildSpan }\n )\n try {\n buildActivityTimer.start()\n // bundle graphql-engine\n engineBundlingPromises.push(\n createGraphqlEngineBundle(program.directory, report, program.verbose)\n )\n\n engineBundlingPromises.push(\n createPageSSRBundle({\n rootDir: program.directory,\n components: state.components,\n staticQueriesByTemplate: state.staticQueriesByTemplate,\n webpackCompilationHash: webpackCompilationHash as string, // we set webpackCompilationHash above\n reporter: report,\n isVerbose: program.verbose,\n })\n )\n await Promise.all(engineBundlingPromises)\n } catch (err) {\n reporter.panic(err)\n } finally {\n buildActivityTimer.end()\n }\n }\n\n const buildSSRBundleActivityProgress = report.activityTimer(\n `Building HTML renderer`,\n { parentSpan: buildSpan }\n )\n buildSSRBundleActivityProgress.start()\n try {\n const { close, stats } = await buildRenderer(\n program,\n Stage.BuildHTML,\n buildSSRBundleActivityProgress.span\n )\n\n closeHTMLBundleCompilation = close\n webpackSSRCompilationHash = stats.hash as string\n\n await close()\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildHTML, err))\n } finally {\n buildSSRBundleActivityProgress.end()\n }\n\n // exec outer config function for each template\n const pageConfigActivity = report.activityTimer(`Execute page configs`, {\n parentSpan: buildSpan,\n })\n pageConfigActivity.start()\n try {\n await preparePageTemplateConfigs(gatsbyNodeGraphQLFunction)\n } catch (err) {\n reporter.panic(err)\n } finally {\n pageConfigActivity.end()\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n const validateEnginesActivity = report.activityTimer(\n `Validating Rendering Engines`,\n {\n parentSpan: buildSpan,\n }\n )\n validateEnginesActivity.start()\n try {\n await validateEngines(store.getState().program.directory)\n } catch (error) {\n validateEnginesActivity.panic({ id: `98001`, context: {}, error })\n } finally {\n validateEnginesActivity.end()\n }\n }\n\n const cacheActivity = report.activityTimer(`Caching Webpack compilations`, {\n parentSpan: buildSpan,\n })\n try {\n cacheActivity.start()\n await Promise.all([\n closeJavascriptBundleCompilation?.(),\n closeHTMLBundleCompilation?.(),\n ])\n } finally {\n cacheActivity.end()\n }\n\n const graphqlRunner = new GraphQLRunner(store, {\n collectStats: true,\n graphqlTracing: program.graphqlTracing,\n })\n\n const { queryIds } = await calculateDirtyQueries({ store })\n\n // Only run queries with mode SSG\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n queryIds.pageQueryIds = queryIds.pageQueryIds.filter(\n query => getPageMode(query) === `SSG`\n )\n }\n\n // Start saving page.mode in the main process (while queries run in workers in parallel)\n const waitMaterializePageMode = materializePageMode()\n\n let waitForWorkerPoolRestart = Promise.resolve()\n if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {\n await runQueriesInWorkersQueue(workerPool, queryIds, {\n parentSpan: buildSpan,\n })\n // Jobs still might be running even though query running finished\n await waitUntilAllJobsComplete()\n // Restart worker pool before merging state to lower memory pressure while merging state\n waitForWorkerPoolRestart = workerPool.restart()\n await mergeWorkerState(workerPool, buildSpan)\n } else {\n await runStaticQueries({\n queryIds,\n parentSpan: buildSpan,\n store,\n graphqlRunner,\n })\n\n await runPageQueries({\n queryIds,\n graphqlRunner,\n parentSpan: buildSpan,\n store,\n })\n }\n\n // create scope so we don't leak state object\n {\n const state = store.getState()\n await writeQueryContext({\n staticQueriesByTemplate: state.staticQueriesByTemplate,\n components: state.components,\n })\n }\n\n if (process.send && shouldGenerateEngines()) {\n await waitMaterializePageMode\n process.send({\n type: `LOG_ACTION`,\n action: {\n type: `ENGINES_READY`,\n timestamp: new Date().toJSON(),\n },\n })\n }\n\n // Copy files from the static directory to\n // an equivalent static directory within public.\n copyStaticDirs()\n\n // create scope so we don't leak state object\n {\n const state = store.getState()\n if (\n webpackCompilationHash !== state.webpackCompilationHash ||\n !appDataUtil.exists(publicDir)\n ) {\n store.dispatch({\n type: `SET_WEBPACK_COMPILATION_HASH`,\n payload: webpackCompilationHash,\n })\n\n const rewriteActivityTimer = report.activityTimer(\n `Rewriting compilation hashes`,\n {\n parentSpan: buildSpan,\n }\n )\n rewriteActivityTimer.start()\n\n await appDataUtil.write(publicDir, webpackCompilationHash as string)\n\n rewriteActivityTimer.end()\n }\n\n if (state.html.ssrCompilationHash !== webpackSSRCompilationHash) {\n store.dispatch({\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`,\n payload: webpackSSRCompilationHash,\n })\n }\n }\n\n await flushPendingPageDataWrites(buildSpan)\n markWebpackStatusAsDone()\n\n if (telemetry.isTrackingEnabled()) {\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const bundleSizes = (webpackAssets as Array<webpack.StatsAsset>)\n .filter(asset => asset.name.endsWith(`.js`))\n .map(asset => asset.size / 1000)\n const pageDataSizes = [...store.getState().pageDataStats.values()]\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n bundleStats: telemetry.aggregateStats(bundleSizes),\n pageDataStats: telemetry.aggregateStats(pageDataSizes),\n queryStats: graphqlRunner.getStats(),\n })\n }\n\n store.dispatch(actions.setProgramStatus(`BOOTSTRAP_QUERY_RUNNING_FINISHED`))\n\n await db.saveState()\n\n await waitUntilAllJobsComplete()\n\n // we need to save it again to make sure our latest state has been saved\n await db.saveState()\n\n if (_CFLAGS_.GATSBY_MAJOR === `4` && shouldGenerateEngines()) {\n // well, tbf we should just generate this in `.cache` and avoid deleting it :shrug:\n program.keepPageRenderer = true\n }\n\n await waitForWorkerPoolRestart\n\n const { toRegenerate, toDelete } =\n await buildHTMLPagesAndDeleteStaleArtifacts({\n program,\n workerPool,\n parentSpan: buildSpan,\n })\n\n await waitMaterializePageMode\n const waitWorkerPoolEnd = Promise.all(workerPool.end())\n\n {\n let SSGCount = 0\n let DSGCount = 0\n let SSRCount = 0\n for (const page of store.getState().pages.values()) {\n if (page.mode === `SSR`) {\n SSRCount++\n } else if (page.mode === `DSG`) {\n DSGCount++\n } else {\n SSGCount++\n }\n }\n\n telemetry.addSiteMeasurement(`BUILD_END`, {\n pagesCount: toRegenerate.length, // number of html files that will be written\n totalPagesCount: store.getState().pages.size, // total number of pages\n SSRCount,\n DSGCount,\n SSGCount,\n })\n }\n\n const postBuildActivityTimer = report.activityTimer(`onPostBuild`, {\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.start()\n await apiRunnerNode(`onPostBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: postBuildActivityTimer.span,\n })\n postBuildActivityTimer.end()\n\n // Wait for any jobs that were started in onPostBuild\n // This could occur due to queries being run which invoke sharp for instance\n await waitUntilAllJobsComplete()\n\n try {\n await waitWorkerPoolEnd\n } catch (e) {\n report.warn(`Error when closing WorkerPool: ${e.message}`)\n }\n\n // Make sure we saved the latest state so we have all jobs cached\n await db.saveState()\n\n const state = store.getState()\n reporter._renderPageTree({\n components: state.components,\n functions: state.functions,\n pages: state.pages,\n root: state.program.directory,\n })\n\n if (process.send) {\n const gatsbyCloudConfig = constructConfigObject(state.config)\n\n process.send({\n type: `LOG_ACTION`,\n action: {\n type: `GATSBY_CONFIG_KEYS`,\n payload: gatsbyCloudConfig,\n timestamp: new Date().toJSON(),\n },\n })\n }\n\n report.info(`Done building in ${process.uptime()} sec`)\n\n buildActivity.end()\n if (!externalTelemetryAttributes) {\n await stopTracer()\n }\n\n if (program.logPages) {\n if (toRegenerate.length) {\n report.info(\n `Built pages:\\n${toRegenerate\n .map(path => `Updated page: ${path}`)\n .join(`\\n`)}`\n )\n }\n\n if (toDelete.length) {\n report.info(\n `Deleted pages:\\n${toDelete\n .map(path => `Deleted page: ${path}`)\n .join(`\\n`)}`\n )\n }\n }\n\n if (program.writeToFile) {\n const createdFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `newPages.txt`\n )\n const createdFilesContent = toRegenerate.length\n ? `${toRegenerate.join(`\\n`)}\\n`\n : ``\n\n const deletedFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `deletedPages.txt`\n )\n const deletedFilesContent = toDelete.length\n ? `${toDelete.join(`\\n`)}\\n`\n : ``\n\n await fs.writeFile(createdFilesPath, createdFilesContent, `utf8`)\n report.info(`.cache/newPages.txt created`)\n\n await fs.writeFile(deletedFilesPath, deletedFilesContent, `utf8`)\n report.info(`.cache/deletedPages.txt created`)\n }\n\n showExperimentNotices()\n\n if (await userGetsSevenDayFeedback()) {\n showSevenDayFeedbackRequest()\n } else if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n}\n"],"file":"build.js"}
@@ -88,7 +88,12 @@ function getDatabases() {
88
88
  // FIXME: sharedStructuresKey breaks tests - probably need some cleanup for it on DELETE_CACHE
89
89
  // sharedStructuresKey: Symbol.for(`structures`),
90
90
  // @ts-ignore
91
- cache: true
91
+ cache: {
92
+ // expirer: false disables LRU part and only take care of WeakRefs
93
+ // this way we don't retain nodes strongly, but will continue to
94
+ // reuse them if they are loaded already
95
+ expirer: false
96
+ }
92
97
  }),
93
98
  nodesByType: rootDb.openDB({
94
99
  name: `nodesByType`,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/datastore/lmdb/lmdb-datastore.ts"],"names":["lmdbDatastore","getNode","getTypes","countNodes","iterateNodes","iterateNodesByType","updateDataStore","ready","runQuery","getNodes","getNodesByType","preSyncDeletedNodeIdsCache","Set","getDefaultDbPath","dbFileName","process","env","NODE_ENV","FORCE_TEST_DATABASE_ID","JEST_WORKER_ID","cwd","fullDbPath","rootDb","databases","getRootDb","Error","name","path","compression","getDatabases","globalThis","__GATSBY_OPEN_LMDBS","Map","get","nodes","openDB","cache","nodesByType","dupSort","metadata","useVersions","indexes","set","result","Array","from","type","nodesDb","GatsbyIterable","getKeys","snapshot","map","nodeId","undefined","filter","Boolean","getValues","id","has","asArray","typeName","stats","getStats","Math","max","Number","entryCount","size","getValuesCount","args","GATSBY_EXPERIMENTAL_LMDB_INDEXES","datastore","Promise","resolve","lastOperationPromise","action","dbs","transactionSync","clearSync","clearIndexes","operationPromise","all","delete","payload","add","then","clear","setupLmdbStore","dbPath","state","emitter","on"],"mappings":"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","sourcesContent":["import { RootDatabase, open, ArrayLikeIterable } from \"lmdb\"\n// import { performance } from \"perf_hooks\"\nimport { ActionsUnion, IGatsbyNode } from \"../../redux/types\"\nimport { updateNodes } from \"./updates/nodes\"\nimport { updateNodesByType } from \"./updates/nodes-by-type\"\nimport { IDataStore, ILmdbDatabases, IQueryResult } from \"../types\"\nimport { emitter, replaceReducer } from \"../../redux\"\nimport { GatsbyIterable } from \"../common/iterable\"\nimport { doRunQuery } from \"./query/run-query\"\nimport {\n IRunFilterArg,\n runFastFiltersAndSort,\n} from \"../in-memory/run-fast-filters\"\n\nconst lmdbDatastore = {\n getNode,\n getTypes,\n countNodes,\n iterateNodes,\n iterateNodesByType,\n updateDataStore,\n ready,\n runQuery,\n\n // deprecated:\n getNodes,\n getNodesByType,\n}\n\nconst preSyncDeletedNodeIdsCache = new Set()\n\nfunction getDefaultDbPath(): string {\n const dbFileName =\n process.env.NODE_ENV === `test`\n ? `test-datastore-${\n // FORCE_TEST_DATABASE_ID will be set if this gets executed in worker context\n // when running jest tests. JEST_WORKER_ID will be set when this gets executed directly\n // in test context (jest will use jest-worker internally).\n process.env.FORCE_TEST_DATABASE_ID ?? process.env.JEST_WORKER_ID\n }`\n : `datastore`\n\n return process.cwd() + `/.cache/data/` + dbFileName\n}\n\nlet fullDbPath\nlet rootDb\nlet databases\n\nfunction getRootDb(): RootDatabase {\n if (!rootDb) {\n if (!fullDbPath) {\n throw new Error(`LMDB path is not set!`)\n }\n rootDb = open({\n name: `root`,\n path: fullDbPath,\n compression: true,\n })\n }\n return rootDb\n}\n\n/* eslint-disable @typescript-eslint/no-namespace */\ndeclare global {\n namespace NodeJS {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Global {\n __GATSBY_OPEN_LMDBS?: Map<string, ILmdbDatabases>\n }\n }\n}\n\nfunction getDatabases(): ILmdbDatabases {\n if (!databases) {\n // __GATSBY_OPEN_LMDBS tracks if we already opened given db in this process\n // In `gatsby serve` case we might try to open it twice - once for engines\n // and second to get access to `SitePage` nodes (to power trailing slashes\n // redirect middleware). This ensure there is single instance within a process.\n // Using more instances seems to cause weird random errors.\n if (!globalThis.__GATSBY_OPEN_LMDBS) {\n globalThis.__GATSBY_OPEN_LMDBS = new Map()\n }\n databases = globalThis.__GATSBY_OPEN_LMDBS.get(fullDbPath)\n if (databases) {\n return databases\n }\n\n const rootDb = getRootDb()\n databases = {\n nodes: rootDb.openDB({\n name: `nodes`,\n // FIXME: sharedStructuresKey breaks tests - probably need some cleanup for it on DELETE_CACHE\n // sharedStructuresKey: Symbol.for(`structures`),\n // @ts-ignore\n cache: true,\n }),\n nodesByType: rootDb.openDB({\n name: `nodesByType`,\n dupSort: true,\n }),\n metadata: rootDb.openDB({\n name: `metadata`,\n useVersions: true,\n }),\n indexes: rootDb.openDB({\n name: `indexes`,\n // TODO: use dupSort when this is ready: https://github.com/DoctorEvidence/lmdb-store/issues/66\n // dupSort: true\n }),\n }\n globalThis.__GATSBY_OPEN_LMDBS.set(fullDbPath, databases)\n }\n return databases\n}\n\n/**\n * @deprecated\n */\nfunction getNodes(): Array<IGatsbyNode> {\n // const start = performance.now()\n const result = Array.from<IGatsbyNode>(iterateNodes())\n // const timeTotal = performance.now() - start\n // console.warn(\n // `getNodes() is deprecated, use iterateNodes() instead; ` +\n // `array length: ${result.length}; time(ms): ${timeTotal}`\n // )\n return result ?? []\n}\n\n/**\n * @deprecated\n */\nfunction getNodesByType(type: string): Array<IGatsbyNode> {\n // const start = performance.now()\n const result = Array.from<IGatsbyNode>(iterateNodesByType(type))\n // const timeTotal = performance.now() - start\n // console.warn(\n // `getNodesByType() is deprecated, use iterateNodesByType() instead; ` +\n // `array length: ${result.length}; time(ms): ${timeTotal}`\n // )\n return result ?? []\n}\n\nfunction iterateNodes(): GatsbyIterable<IGatsbyNode> {\n // Additionally fetching items by id to leverage lmdb-store cache\n const nodesDb = getDatabases().nodes\n return new GatsbyIterable(\n nodesDb\n .getKeys({ snapshot: false })\n .map(nodeId => (typeof nodeId === `string` ? getNode(nodeId) : undefined))\n .filter(Boolean) as ArrayLikeIterable<IGatsbyNode>\n )\n}\n\nfunction iterateNodesByType(type: string): GatsbyIterable<IGatsbyNode> {\n const nodesByType = getDatabases().nodesByType\n return new GatsbyIterable(\n nodesByType\n .getValues(type)\n .map(nodeId => getNode(nodeId))\n .filter(Boolean) as ArrayLikeIterable<IGatsbyNode>\n )\n}\n\nfunction getNode(id: string): IGatsbyNode | undefined {\n if (!id || preSyncDeletedNodeIdsCache.has(id)) {\n return undefined\n }\n\n const { nodes } = getDatabases()\n return nodes.get(id)\n}\n\nfunction getTypes(): Array<string> {\n return getDatabases().nodesByType.getKeys({}).asArray\n}\n\nfunction countNodes(typeName?: string): number {\n if (!typeName) {\n const stats = getDatabases().nodes.getStats() as { entryCount: number }\n return Math.max(\n Number(stats.entryCount) - preSyncDeletedNodeIdsCache.size,\n 0\n ) // FIXME: add -1 when restoring shared structures key\n }\n\n const { nodesByType } = getDatabases()\n return nodesByType.getValuesCount(typeName)\n}\n\nasync function runQuery(args: IRunFilterArg): Promise<IQueryResult> {\n if (process.env.GATSBY_EXPERIMENTAL_LMDB_INDEXES) {\n return await doRunQuery({\n datastore: lmdbDatastore,\n databases: getDatabases(),\n ...args,\n })\n }\n return Promise.resolve(runFastFiltersAndSort(args))\n}\n\nlet lastOperationPromise: Promise<any> = Promise.resolve()\n\nfunction updateDataStore(action: ActionsUnion): void {\n switch (action.type) {\n case `DELETE_CACHE`: {\n const dbs = getDatabases()\n // Force sync commit\n dbs.nodes.transactionSync(() => {\n dbs.nodes.clearSync()\n dbs.nodesByType.clearSync()\n dbs.metadata.clearSync()\n dbs.indexes.clearSync()\n })\n break\n }\n case `SET_PROGRAM`: {\n // TODO: remove this when we have support for incremental indexes in lmdb\n clearIndexes()\n break\n }\n case `CREATE_NODE`:\n case `DELETE_NODE`:\n case `ADD_FIELD_TO_NODE`:\n case `ADD_CHILD_NODE_TO_PARENT_NODE`:\n case `MATERIALIZE_PAGE_MODE`: {\n const dbs = getDatabases()\n const operationPromise = Promise.all([\n updateNodes(dbs.nodes, action),\n updateNodesByType(dbs.nodesByType, action),\n ])\n lastOperationPromise = operationPromise\n\n // if create is used in the same transaction as delete we should remove it from cache\n if (action.type === `CREATE_NODE`) {\n preSyncDeletedNodeIdsCache.delete(action.payload.id)\n }\n\n if (action.type === `DELETE_NODE` && action.payload?.id) {\n preSyncDeletedNodeIdsCache.add(action.payload.id)\n operationPromise.then(() => {\n // only clear if no other operations have been done in the meantime\n if (lastOperationPromise === operationPromise) {\n preSyncDeletedNodeIdsCache.clear()\n }\n })\n }\n }\n }\n}\n\nfunction clearIndexes(): void {\n const dbs = getDatabases()\n dbs.nodes.transactionSync(() => {\n dbs.metadata.clearSync()\n dbs.indexes.clearSync()\n })\n}\n\n/**\n * Resolves when all the data is synced\n */\nasync function ready(): Promise<void> {\n await lastOperationPromise\n}\n\nexport function setupLmdbStore({\n dbPath = getDefaultDbPath(),\n}: { dbPath?: string } = {}): IDataStore {\n fullDbPath = dbPath\n\n replaceReducer({\n nodes: (state = new Map(), action) =>\n action.type === `DELETE_CACHE` ? new Map() : state,\n nodesByType: (state = new Map(), action) =>\n action.type === `DELETE_CACHE` ? new Map() : state,\n })\n emitter.on(`*`, action => {\n if (action) {\n updateDataStore(action)\n }\n })\n // TODO: remove this when we have support for incremental indexes in lmdb\n clearIndexes()\n return lmdbDatastore\n}\n"],"file":"lmdb-datastore.js"}
1
+ {"version":3,"sources":["../../../src/datastore/lmdb/lmdb-datastore.ts"],"names":["lmdbDatastore","getNode","getTypes","countNodes","iterateNodes","iterateNodesByType","updateDataStore","ready","runQuery","getNodes","getNodesByType","preSyncDeletedNodeIdsCache","Set","getDefaultDbPath","dbFileName","process","env","NODE_ENV","FORCE_TEST_DATABASE_ID","JEST_WORKER_ID","cwd","fullDbPath","rootDb","databases","getRootDb","Error","name","path","compression","getDatabases","globalThis","__GATSBY_OPEN_LMDBS","Map","get","nodes","openDB","cache","expirer","nodesByType","dupSort","metadata","useVersions","indexes","set","result","Array","from","type","nodesDb","GatsbyIterable","getKeys","snapshot","map","nodeId","undefined","filter","Boolean","getValues","id","has","asArray","typeName","stats","getStats","Math","max","Number","entryCount","size","getValuesCount","args","GATSBY_EXPERIMENTAL_LMDB_INDEXES","datastore","Promise","resolve","lastOperationPromise","action","dbs","transactionSync","clearSync","clearIndexes","operationPromise","all","delete","payload","add","then","clear","setupLmdbStore","dbPath","state","emitter","on"],"mappings":";;;;;AAAA;;AAGA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAKA,MAAMA,aAAa,GAAG;AACpBC,EAAAA,OADoB;AAEpBC,EAAAA,QAFoB;AAGpBC,EAAAA,UAHoB;AAIpBC,EAAAA,YAJoB;AAKpBC,EAAAA,kBALoB;AAMpBC,EAAAA,eANoB;AAOpBC,EAAAA,KAPoB;AAQpBC,EAAAA,QARoB;AAUpB;AACAC,EAAAA,QAXoB;AAYpBC,EAAAA;AAZoB,CAAtB;AAeA,MAAMC,0BAA0B,GAAG,IAAIC,GAAJ,EAAnC;;AAEA,SAASC,gBAAT,GAAoC;AAAA;;AAClC,QAAMC,UAAU,GACdC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAA0B,MAA1B,GACK,kBACC;AACA;AACA;AAHF,2BAIEF,OAAO,CAACC,GAAR,CAAYE,sBAJd,yEAIwCH,OAAO,CAACC,GAAR,CAAYG,cACnD,EANL,GAOK,WARP;AAUA,SAAOJ,OAAO,CAACK,GAAR,KAAiB,eAAjB,GAAkCN,UAAzC;AACD;;AAED,IAAIO,UAAJ;AACA,IAAIC,MAAJ;AACA,IAAIC,SAAJ;;AAEA,SAASC,SAAT,GAAmC;AACjC,MAAI,CAACF,MAAL,EAAa;AACX,QAAI,CAACD,UAAL,EAAiB;AACf,YAAM,IAAII,KAAJ,CAAW,uBAAX,CAAN;AACD;;AACDH,IAAAA,MAAM,GAAG,gBAAK;AACZI,MAAAA,IAAI,EAAG,MADK;AAEZC,MAAAA,IAAI,EAAEN,UAFM;AAGZO,MAAAA,WAAW,EAAE;AAHD,KAAL,CAAT;AAKD;;AACD,SAAON,MAAP;AACD;AAED;;;AAUA,SAASO,YAAT,GAAwC;AACtC,MAAI,CAACN,SAAL,EAAgB;AACd;AACA;AACA;AACA;AACA;AACA,QAAI,CAACO,UAAU,CAACC,mBAAhB,EAAqC;AACnCD,MAAAA,UAAU,CAACC,mBAAX,GAAiC,IAAIC,GAAJ,EAAjC;AACD;;AACDT,IAAAA,SAAS,GAAGO,UAAU,CAACC,mBAAX,CAA+BE,GAA/B,CAAmCZ,UAAnC,CAAZ;;AACA,QAAIE,SAAJ,EAAe;AACb,aAAOA,SAAP;AACD;;AAED,UAAMD,MAAM,GAAGE,SAAS,EAAxB;AACAD,IAAAA,SAAS,GAAG;AACVW,MAAAA,KAAK,EAAEZ,MAAM,CAACa,MAAP,CAAc;AACnBT,QAAAA,IAAI,EAAG,OADY;AAEnB;AACA;AACA;AACAU,QAAAA,KAAK,EAAE;AACL;AACA;AACA;AACAC,UAAAA,OAAO,EAAE;AAJJ;AALY,OAAd,CADG;AAaVC,MAAAA,WAAW,EAAEhB,MAAM,CAACa,MAAP,CAAc;AACzBT,QAAAA,IAAI,EAAG,aADkB;AAEzBa,QAAAA,OAAO,EAAE;AAFgB,OAAd,CAbH;AAiBVC,MAAAA,QAAQ,EAAElB,MAAM,CAACa,MAAP,CAAc;AACtBT,QAAAA,IAAI,EAAG,UADe;AAEtBe,QAAAA,WAAW,EAAE;AAFS,OAAd,CAjBA;AAqBVC,MAAAA,OAAO,EAAEpB,MAAM,CAACa,MAAP,CAAc;AACrBT,QAAAA,IAAI,EAAG,SADc,CAErB;AACA;;AAHqB,OAAd;AArBC,KAAZ;;AA2BAI,IAAAA,UAAU,CAACC,mBAAX,CAA+BY,GAA/B,CAAmCtB,UAAnC,EAA+CE,SAA/C;AACD;;AACD,SAAOA,SAAP;AACD;AAED;AACA;AACA;;;AACA,SAASd,QAAT,GAAwC;AACtC;AACA,QAAMmC,MAAM,GAAGC,KAAK,CAACC,IAAN,CAAwB1C,YAAY,EAApC,CAAf,CAFsC,CAGtC;AACA;AACA;AACA;AACA;;AACA,SAAOwC,MAAP,aAAOA,MAAP,cAAOA,MAAP,GAAiB,EAAjB;AACD;AAED;AACA;AACA;;;AACA,SAASlC,cAAT,CAAwBqC,IAAxB,EAA0D;AACxD;AACA,QAAMH,MAAM,GAAGC,KAAK,CAACC,IAAN,CAAwBzC,kBAAkB,CAAC0C,IAAD,CAA1C,CAAf,CAFwD,CAGxD;AACA;AACA;AACA;AACA;;AACA,SAAOH,MAAP,aAAOA,MAAP,cAAOA,MAAP,GAAiB,EAAjB;AACD;;AAED,SAASxC,YAAT,GAAqD;AACnD;AACA,QAAM4C,OAAO,GAAGnB,YAAY,GAAGK,KAA/B;AACA,SAAO,IAAIe,wBAAJ,CACLD,OAAO,CACJE,OADH,CACW;AAAEC,IAAAA,QAAQ,EAAE;AAAZ,GADX,EAEGC,GAFH,CAEOC,MAAM,IAAK,OAAOA,MAAP,KAAmB,QAAnB,GAA6BpD,OAAO,CAACoD,MAAD,CAApC,GAA+CC,SAFjE,EAGGC,MAHH,CAGUC,OAHV,CADK,CAAP;AAMD;;AAED,SAASnD,kBAAT,CAA4B0C,IAA5B,EAAuE;AACrE,QAAMT,WAAW,GAAGT,YAAY,GAAGS,WAAnC;AACA,SAAO,IAAIW,wBAAJ,CACLX,WAAW,CACRmB,SADH,CACaV,IADb,EAEGK,GAFH,CAEOC,MAAM,IAAIpD,OAAO,CAACoD,MAAD,CAFxB,EAGGE,MAHH,CAGUC,OAHV,CADK,CAAP;AAMD;;AAED,SAASvD,OAAT,CAAiByD,EAAjB,EAAsD;AACpD,MAAI,CAACA,EAAD,IAAO/C,0BAA0B,CAACgD,GAA3B,CAA+BD,EAA/B,CAAX,EAA+C;AAC7C,WAAOJ,SAAP;AACD;;AAED,QAAM;AAAEpB,IAAAA;AAAF,MAAYL,YAAY,EAA9B;AACA,SAAOK,KAAK,CAACD,GAAN,CAAUyB,EAAV,CAAP;AACD;;AAED,SAASxD,QAAT,GAAmC;AACjC,SAAO2B,YAAY,GAAGS,WAAf,CAA2BY,OAA3B,CAAmC,EAAnC,EAAuCU,OAA9C;AACD;;AAED,SAASzD,UAAT,CAAoB0D,QAApB,EAA+C;AAC7C,MAAI,CAACA,QAAL,EAAe;AACb,UAAMC,KAAK,GAAGjC,YAAY,GAAGK,KAAf,CAAqB6B,QAArB,EAAd;AACA,WAAOC,IAAI,CAACC,GAAL,CACLC,MAAM,CAACJ,KAAK,CAACK,UAAP,CAAN,GAA2BxD,0BAA0B,CAACyD,IADjD,EAEL,CAFK,CAAP,CAFa,CAKX;AACH;;AAED,QAAM;AAAE9B,IAAAA;AAAF,MAAkBT,YAAY,EAApC;AACA,SAAOS,WAAW,CAAC+B,cAAZ,CAA2BR,QAA3B,CAAP;AACD;;AAED,eAAerD,QAAf,CAAwB8D,IAAxB,EAAoE;AAClE,MAAIvD,OAAO,CAACC,GAAR,CAAYuD,gCAAhB,EAAkD;AAChD,WAAO,MAAM,0BAAW;AACtBC,MAAAA,SAAS,EAAExE,aADW;AAEtBuB,MAAAA,SAAS,EAAEM,YAAY,EAFD;AAGtB,SAAGyC;AAHmB,KAAX,CAAb;AAKD;;AACD,SAAOG,OAAO,CAACC,OAAR,CAAgB,2CAAsBJ,IAAtB,CAAhB,CAAP;AACD;;AAED,IAAIK,oBAAkC,GAAGF,OAAO,CAACC,OAAR,EAAzC;;AAEA,SAASpE,eAAT,CAAyBsE,MAAzB,EAAqD;AACnD,UAAQA,MAAM,CAAC7B,IAAf;AACE,SAAM,cAAN;AAAqB;AACnB,cAAM8B,GAAG,GAAGhD,YAAY,EAAxB,CADmB,CAEnB;;AACAgD,QAAAA,GAAG,CAAC3C,KAAJ,CAAU4C,eAAV,CAA0B,MAAM;AAC9BD,UAAAA,GAAG,CAAC3C,KAAJ,CAAU6C,SAAV;AACAF,UAAAA,GAAG,CAACvC,WAAJ,CAAgByC,SAAhB;AACAF,UAAAA,GAAG,CAACrC,QAAJ,CAAauC,SAAb;AACAF,UAAAA,GAAG,CAACnC,OAAJ,CAAYqC,SAAZ;AACD,SALD;AAMA;AACD;;AACD,SAAM,aAAN;AAAoB;AAClB;AACAC,QAAAA,YAAY;AACZ;AACD;;AACD,SAAM,aAAN;AACA,SAAM,aAAN;AACA,SAAM,mBAAN;AACA,SAAM,+BAAN;AACA,SAAM,uBAAN;AAA8B;AAAA;;AAC5B,cAAMH,GAAG,GAAGhD,YAAY,EAAxB;AACA,cAAMoD,gBAAgB,GAAGR,OAAO,CAACS,GAAR,CAAY,CACnC,wBAAYL,GAAG,CAAC3C,KAAhB,EAAuB0C,MAAvB,CADmC,EAEnC,oCAAkBC,GAAG,CAACvC,WAAtB,EAAmCsC,MAAnC,CAFmC,CAAZ,CAAzB;AAIAD,QAAAA,oBAAoB,GAAGM,gBAAvB,CAN4B,CAQ5B;;AACA,YAAIL,MAAM,CAAC7B,IAAP,KAAiB,aAArB,EAAmC;AACjCpC,UAAAA,0BAA0B,CAACwE,MAA3B,CAAkCP,MAAM,CAACQ,OAAP,CAAe1B,EAAjD;AACD;;AAED,YAAIkB,MAAM,CAAC7B,IAAP,KAAiB,aAAjB,uBAAiC6B,MAAM,CAACQ,OAAxC,4CAAiC,gBAAgB1B,EAArD,EAAyD;AACvD/C,UAAAA,0BAA0B,CAAC0E,GAA3B,CAA+BT,MAAM,CAACQ,OAAP,CAAe1B,EAA9C;AACAuB,UAAAA,gBAAgB,CAACK,IAAjB,CAAsB,MAAM;AAC1B;AACA,gBAAIX,oBAAoB,KAAKM,gBAA7B,EAA+C;AAC7CtE,cAAAA,0BAA0B,CAAC4E,KAA3B;AACD;AACF,WALD;AAMD;AACF;AA3CH;AA6CD;;AAED,SAASP,YAAT,GAA8B;AAC5B,QAAMH,GAAG,GAAGhD,YAAY,EAAxB;AACAgD,EAAAA,GAAG,CAAC3C,KAAJ,CAAU4C,eAAV,CAA0B,MAAM;AAC9BD,IAAAA,GAAG,CAACrC,QAAJ,CAAauC,SAAb;AACAF,IAAAA,GAAG,CAACnC,OAAJ,CAAYqC,SAAZ;AACD,GAHD;AAID;AAED;AACA;AACA;;;AACA,eAAexE,KAAf,GAAsC;AACpC,QAAMoE,oBAAN;AACD;;AAEM,SAASa,cAAT,CAAwB;AAC7BC,EAAAA,MAAM,GAAG5E,gBAAgB;AADI,IAEN,EAFlB,EAEkC;AACvCQ,EAAAA,UAAU,GAAGoE,MAAb;AAEA,6BAAe;AACbvD,IAAAA,KAAK,EAAE,CAACwD,KAAK,GAAG,IAAI1D,GAAJ,EAAT,EAAoB4C,MAApB,KACLA,MAAM,CAAC7B,IAAP,KAAiB,cAAjB,GAAiC,IAAIf,GAAJ,EAAjC,GAA6C0D,KAFlC;AAGbpD,IAAAA,WAAW,EAAE,CAACoD,KAAK,GAAG,IAAI1D,GAAJ,EAAT,EAAoB4C,MAApB,KACXA,MAAM,CAAC7B,IAAP,KAAiB,cAAjB,GAAiC,IAAIf,GAAJ,EAAjC,GAA6C0D;AAJlC,GAAf;;AAMAC,iBAAQC,EAAR,CAAY,GAAZ,EAAgBhB,MAAM,IAAI;AACxB,QAAIA,MAAJ,EAAY;AACVtE,MAAAA,eAAe,CAACsE,MAAD,CAAf;AACD;AACF,GAJD,EATuC,CAcvC;;;AACAI,EAAAA,YAAY;AACZ,SAAOhF,aAAP;AACD","sourcesContent":["import { RootDatabase, open, ArrayLikeIterable } from \"lmdb\"\n// import { performance } from \"perf_hooks\"\nimport { ActionsUnion, IGatsbyNode } from \"../../redux/types\"\nimport { updateNodes } from \"./updates/nodes\"\nimport { updateNodesByType } from \"./updates/nodes-by-type\"\nimport { IDataStore, ILmdbDatabases, IQueryResult } from \"../types\"\nimport { emitter, replaceReducer } from \"../../redux\"\nimport { GatsbyIterable } from \"../common/iterable\"\nimport { doRunQuery } from \"./query/run-query\"\nimport {\n IRunFilterArg,\n runFastFiltersAndSort,\n} from \"../in-memory/run-fast-filters\"\n\nconst lmdbDatastore = {\n getNode,\n getTypes,\n countNodes,\n iterateNodes,\n iterateNodesByType,\n updateDataStore,\n ready,\n runQuery,\n\n // deprecated:\n getNodes,\n getNodesByType,\n}\n\nconst preSyncDeletedNodeIdsCache = new Set()\n\nfunction getDefaultDbPath(): string {\n const dbFileName =\n process.env.NODE_ENV === `test`\n ? `test-datastore-${\n // FORCE_TEST_DATABASE_ID will be set if this gets executed in worker context\n // when running jest tests. JEST_WORKER_ID will be set when this gets executed directly\n // in test context (jest will use jest-worker internally).\n process.env.FORCE_TEST_DATABASE_ID ?? process.env.JEST_WORKER_ID\n }`\n : `datastore`\n\n return process.cwd() + `/.cache/data/` + dbFileName\n}\n\nlet fullDbPath\nlet rootDb\nlet databases\n\nfunction getRootDb(): RootDatabase {\n if (!rootDb) {\n if (!fullDbPath) {\n throw new Error(`LMDB path is not set!`)\n }\n rootDb = open({\n name: `root`,\n path: fullDbPath,\n compression: true,\n })\n }\n return rootDb\n}\n\n/* eslint-disable @typescript-eslint/no-namespace */\ndeclare global {\n namespace NodeJS {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Global {\n __GATSBY_OPEN_LMDBS?: Map<string, ILmdbDatabases>\n }\n }\n}\n\nfunction getDatabases(): ILmdbDatabases {\n if (!databases) {\n // __GATSBY_OPEN_LMDBS tracks if we already opened given db in this process\n // In `gatsby serve` case we might try to open it twice - once for engines\n // and second to get access to `SitePage` nodes (to power trailing slashes\n // redirect middleware). This ensure there is single instance within a process.\n // Using more instances seems to cause weird random errors.\n if (!globalThis.__GATSBY_OPEN_LMDBS) {\n globalThis.__GATSBY_OPEN_LMDBS = new Map()\n }\n databases = globalThis.__GATSBY_OPEN_LMDBS.get(fullDbPath)\n if (databases) {\n return databases\n }\n\n const rootDb = getRootDb()\n databases = {\n nodes: rootDb.openDB({\n name: `nodes`,\n // FIXME: sharedStructuresKey breaks tests - probably need some cleanup for it on DELETE_CACHE\n // sharedStructuresKey: Symbol.for(`structures`),\n // @ts-ignore\n cache: {\n // expirer: false disables LRU part and only take care of WeakRefs\n // this way we don't retain nodes strongly, but will continue to\n // reuse them if they are loaded already\n expirer: false,\n },\n }),\n nodesByType: rootDb.openDB({\n name: `nodesByType`,\n dupSort: true,\n }),\n metadata: rootDb.openDB({\n name: `metadata`,\n useVersions: true,\n }),\n indexes: rootDb.openDB({\n name: `indexes`,\n // TODO: use dupSort when this is ready: https://github.com/DoctorEvidence/lmdb-store/issues/66\n // dupSort: true\n }),\n }\n globalThis.__GATSBY_OPEN_LMDBS.set(fullDbPath, databases)\n }\n return databases\n}\n\n/**\n * @deprecated\n */\nfunction getNodes(): Array<IGatsbyNode> {\n // const start = performance.now()\n const result = Array.from<IGatsbyNode>(iterateNodes())\n // const timeTotal = performance.now() - start\n // console.warn(\n // `getNodes() is deprecated, use iterateNodes() instead; ` +\n // `array length: ${result.length}; time(ms): ${timeTotal}`\n // )\n return result ?? []\n}\n\n/**\n * @deprecated\n */\nfunction getNodesByType(type: string): Array<IGatsbyNode> {\n // const start = performance.now()\n const result = Array.from<IGatsbyNode>(iterateNodesByType(type))\n // const timeTotal = performance.now() - start\n // console.warn(\n // `getNodesByType() is deprecated, use iterateNodesByType() instead; ` +\n // `array length: ${result.length}; time(ms): ${timeTotal}`\n // )\n return result ?? []\n}\n\nfunction iterateNodes(): GatsbyIterable<IGatsbyNode> {\n // Additionally fetching items by id to leverage lmdb-store cache\n const nodesDb = getDatabases().nodes\n return new GatsbyIterable(\n nodesDb\n .getKeys({ snapshot: false })\n .map(nodeId => (typeof nodeId === `string` ? getNode(nodeId) : undefined))\n .filter(Boolean) as ArrayLikeIterable<IGatsbyNode>\n )\n}\n\nfunction iterateNodesByType(type: string): GatsbyIterable<IGatsbyNode> {\n const nodesByType = getDatabases().nodesByType\n return new GatsbyIterable(\n nodesByType\n .getValues(type)\n .map(nodeId => getNode(nodeId))\n .filter(Boolean) as ArrayLikeIterable<IGatsbyNode>\n )\n}\n\nfunction getNode(id: string): IGatsbyNode | undefined {\n if (!id || preSyncDeletedNodeIdsCache.has(id)) {\n return undefined\n }\n\n const { nodes } = getDatabases()\n return nodes.get(id)\n}\n\nfunction getTypes(): Array<string> {\n return getDatabases().nodesByType.getKeys({}).asArray\n}\n\nfunction countNodes(typeName?: string): number {\n if (!typeName) {\n const stats = getDatabases().nodes.getStats() as { entryCount: number }\n return Math.max(\n Number(stats.entryCount) - preSyncDeletedNodeIdsCache.size,\n 0\n ) // FIXME: add -1 when restoring shared structures key\n }\n\n const { nodesByType } = getDatabases()\n return nodesByType.getValuesCount(typeName)\n}\n\nasync function runQuery(args: IRunFilterArg): Promise<IQueryResult> {\n if (process.env.GATSBY_EXPERIMENTAL_LMDB_INDEXES) {\n return await doRunQuery({\n datastore: lmdbDatastore,\n databases: getDatabases(),\n ...args,\n })\n }\n return Promise.resolve(runFastFiltersAndSort(args))\n}\n\nlet lastOperationPromise: Promise<any> = Promise.resolve()\n\nfunction updateDataStore(action: ActionsUnion): void {\n switch (action.type) {\n case `DELETE_CACHE`: {\n const dbs = getDatabases()\n // Force sync commit\n dbs.nodes.transactionSync(() => {\n dbs.nodes.clearSync()\n dbs.nodesByType.clearSync()\n dbs.metadata.clearSync()\n dbs.indexes.clearSync()\n })\n break\n }\n case `SET_PROGRAM`: {\n // TODO: remove this when we have support for incremental indexes in lmdb\n clearIndexes()\n break\n }\n case `CREATE_NODE`:\n case `DELETE_NODE`:\n case `ADD_FIELD_TO_NODE`:\n case `ADD_CHILD_NODE_TO_PARENT_NODE`:\n case `MATERIALIZE_PAGE_MODE`: {\n const dbs = getDatabases()\n const operationPromise = Promise.all([\n updateNodes(dbs.nodes, action),\n updateNodesByType(dbs.nodesByType, action),\n ])\n lastOperationPromise = operationPromise\n\n // if create is used in the same transaction as delete we should remove it from cache\n if (action.type === `CREATE_NODE`) {\n preSyncDeletedNodeIdsCache.delete(action.payload.id)\n }\n\n if (action.type === `DELETE_NODE` && action.payload?.id) {\n preSyncDeletedNodeIdsCache.add(action.payload.id)\n operationPromise.then(() => {\n // only clear if no other operations have been done in the meantime\n if (lastOperationPromise === operationPromise) {\n preSyncDeletedNodeIdsCache.clear()\n }\n })\n }\n }\n }\n}\n\nfunction clearIndexes(): void {\n const dbs = getDatabases()\n dbs.nodes.transactionSync(() => {\n dbs.metadata.clearSync()\n dbs.indexes.clearSync()\n })\n}\n\n/**\n * Resolves when all the data is synced\n */\nasync function ready(): Promise<void> {\n await lastOperationPromise\n}\n\nexport function setupLmdbStore({\n dbPath = getDefaultDbPath(),\n}: { dbPath?: string } = {}): IDataStore {\n fullDbPath = dbPath\n\n replaceReducer({\n nodes: (state = new Map(), action) =>\n action.type === `DELETE_CACHE` ? new Map() : state,\n nodesByType: (state = new Map(), action) =>\n action.type === `DELETE_CACHE` ? new Map() : state,\n })\n emitter.on(`*`, action => {\n if (action) {\n updateDataStore(action)\n }\n })\n // TODO: remove this when we have support for incremental indexes in lmdb\n clearIndexes()\n return lmdbDatastore\n}\n"],"file":"lmdb-datastore.js"}
@@ -10,9 +10,10 @@ export declare const actions: {
10
10
  * Add a third-party schema to be merged into main schema. Schema has to be a
11
11
  * graphql-js GraphQLSchema object.
12
12
  *
13
- * This schema is going to be merged as-is. This can easily break the main
14
- * Gatsby schema, so it's user's responsibility to make sure it doesn't happen
15
- * (by e.g. namespacing the schema).
13
+ * This schema is going to be merged as-is. Merging it in this way will
14
+ * easily break the main Gatsby Schema. Since we do not want that, therefore
15
+ * it is the user's responsibility to make sure that it does not happen.
16
+ * One such way of avoiding it is by namespacing the schema.
16
17
  *
17
18
  * @availableIn [createSchemaCustomization, sourceNodes]
18
19
  *
@@ -18,9 +18,10 @@ const actions = {
18
18
  * Add a third-party schema to be merged into main schema. Schema has to be a
19
19
  * graphql-js GraphQLSchema object.
20
20
  *
21
- * This schema is going to be merged as-is. This can easily break the main
22
- * Gatsby schema, so it's user's responsibility to make sure it doesn't happen
23
- * (by e.g. namespacing the schema).
21
+ * This schema is going to be merged as-is. Merging it in this way will
22
+ * easily break the main Gatsby Schema. Since we do not want that, therefore
23
+ * it is the user's responsibility to make sure that it does not happen.
24
+ * One such way of avoiding it is by namespacing the schema.
24
25
  *
25
26
  * @availableIn [createSchemaCustomization, sourceNodes]
26
27
  *
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/actions/restricted.ts"],"names":["actions","addThirdPartySchema","schema","plugin","traceId","type","payload","createTypes","types","Array","isArray","map","parseTypeDef","createFieldExtension","extension","dispatch","getState","name","fieldExtensions","schemaCustomization","report","error","reservedExtensionNames","includes","printTypeDefinitions","path","include","exclude","withFieldTypes","createResolverContext","context","replace","withDeprecationWarning","actionName","action","api","allowedIn","args","warn","a","join","withErrorMessage","nodeAPIs","Object","keys","require","ALLOWED_IN","DEPRECATED_IN","set","availableActionsByAPI","mapAvailableActionsToAPIs","restrictions","actionNames","forEach","deprecatedIn","forbiddenIn","filter"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;AACA;;AA4BO,MAAMA,OAAO,GAAG;AACrB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,mBAAmB,EAAE,CACnB;AAAEC,IAAAA;AAAF,GADmB,EAEnBC,MAFmB,EAGnBC,OAHmB,KAIM;AACzB,WAAO;AACLC,MAAAA,IAAI,EAAG,wBADF;AAELF,MAAAA,MAFK;AAGLC,MAAAA,OAHK;AAILE,MAAAA,OAAO,EAAEJ;AAJJ,KAAP;AAMD,GAzBoB;;AA2BrB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEK,EAAAA,WAAW,EAAE,CACXC,KADW,EAMXL,MANW,EAOXC,OAPW,KAQM;AACjB,WAAO;AACLC,MAAAA,IAAI,EAAG,cADF;AAELF,MAAAA,MAFK;AAGLC,MAAAA,OAHK;AAILE,MAAAA,OAAO,EAAEG,KAAK,CAACC,OAAN,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","sourcesContent":["import { camelCase } from \"lodash\"\nimport { GraphQLSchema, GraphQLOutputType } from \"graphql\"\nimport { ActionCreator } from \"redux\"\nimport { ThunkAction } from \"redux-thunk\"\nimport report from \"gatsby-cli/lib/reporter\"\nimport { parseTypeDef } from \"../../schema/types/type-defs\"\nimport {\n GraphQLFieldExtensionDefinition,\n reservedExtensionNames,\n} from \"../../schema/extensions\"\nimport { GatsbyGraphQLType } from \"../../schema/types/type-builders\"\nimport {\n IGatsbyPlugin,\n ActionsUnion,\n IAddThirdPartySchema,\n ICreateTypes,\n IGatsbyState,\n ICreateFieldExtension,\n IPrintTypeDefinitions,\n ICreateResolverContext,\n IGatsbyPluginContext,\n} from \"../types\"\n\ntype RestrictionActionNames =\n | \"createFieldExtension\"\n | \"createTypes\"\n | \"createResolverContext\"\n | \"addThirdPartySchema\"\n | \"printTypeDefinitions\"\n\ntype SomeActionCreator =\n | ActionCreator<ActionsUnion>\n | ActionCreator<ThunkAction<any, IGatsbyState, any, ActionsUnion>>\n\nexport const actions = {\n /**\n * Add a third-party schema to be merged into main schema. Schema has to be a\n * graphql-js GraphQLSchema object.\n *\n * This schema is going to be merged as-is. This can easily break the main\n * Gatsby schema, so it's user's responsibility to make sure it doesn't happen\n * (by e.g. namespacing the schema).\n *\n * @availableIn [createSchemaCustomization, sourceNodes]\n *\n * @param {Object} $0\n * @param {GraphQLSchema} $0.schema GraphQL schema to add\n */\n addThirdPartySchema: (\n { schema }: { schema: GraphQLSchema },\n plugin: IGatsbyPlugin,\n traceId?: string\n ): IAddThirdPartySchema => {\n return {\n type: `ADD_THIRD_PARTY_SCHEMA`,\n plugin,\n traceId,\n payload: schema,\n }\n },\n\n /**\n * Add type definitions to the GraphQL schema.\n *\n * @availableIn [createSchemaCustomization, sourceNodes]\n *\n * @param {string | GraphQLOutputType | GatsbyGraphQLType | string[] | GraphQLOutputType[] | GatsbyGraphQLType[]} types Type definitions\n *\n * Type definitions can be provided either as\n * [`graphql-js` types](https://graphql.org/graphql-js/), in\n * [GraphQL schema definition language (SDL)](https://graphql.org/learn/)\n * or using Gatsby Type Builders available on the `schema` API argument.\n *\n * Things to note:\n * * type definitions targeting node types, i.e. `MarkdownRemark` and others\n * added in `sourceNodes` or `onCreateNode` APIs, need to implement the\n * `Node` interface. Interface fields will be added automatically, but it\n * is mandatory to label those types with `implements Node`.\n * * by default, explicit type definitions from `createTypes` will be merged\n * with inferred field types, and default field resolvers for `Date` (which\n * adds formatting options) and `File` (which resolves the field value as\n * a `relativePath` foreign-key field) are added. This behavior can be\n * customised with `@infer`, `@dontInfer` directives or extensions. Fields\n * may be assigned resolver (and other option like args) with additional\n * directives. Currently `@dateformat`, `@link`, `@fileByRelativePath` and\n * `@proxy` are available.\n *\n *\n * Schema customization controls:\n * * `@infer` - run inference on the type and add fields that don't exist on the\n * defined type to it.\n * * `@dontInfer` - don't run any inference on the type\n *\n * Extensions to add resolver options:\n * * `@dateformat` - add date formatting arguments. Accepts `formatString` and\n * `locale` options that sets the defaults for this field\n * * `@link` - connect to a different Node. Arguments `by` and `from`, which\n * define which field to compare to on a remote node and which field to use on\n * the source node\n * * `@fileByRelativePath` - connect to a File node. Same arguments. The\n * difference from link is that this normalizes the relative path to be\n * relative from the path where source node is found.\n * * `@proxy` - in case the underlying node data contains field names with\n * characters that are invalid in GraphQL, `proxy` allows to explicitly\n * proxy those properties to fields with valid field names. Takes a `from` arg.\n *\n *\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * const { createTypes } = actions\n * const typeDefs = `\n * \"\"\"\n * Markdown Node\n * \"\"\"\n * type MarkdownRemark implements Node @infer {\n * frontmatter: Frontmatter!\n * }\n *\n * \"\"\"\n * Markdown Frontmatter\n * \"\"\"\n * type Frontmatter @infer {\n * title: String!\n * author: AuthorJson! @link\n * date: Date! @dateformat\n * published: Boolean!\n * tags: [String!]!\n * }\n *\n * \"\"\"\n * Author information\n * \"\"\"\n * # Does not include automatically inferred fields\n * type AuthorJson implements Node @dontInfer {\n * name: String!\n * birthday: Date! @dateformat(locale: \"ru\")\n * }\n * `\n * createTypes(typeDefs)\n * }\n *\n * // using Gatsby Type Builder API\n * exports.createSchemaCustomization = ({ actions, schema }) => {\n * const { createTypes } = actions\n * const typeDefs = [\n * schema.buildObjectType({\n * name: 'MarkdownRemark',\n * fields: {\n * frontmatter: 'Frontmatter!'\n * },\n * interfaces: ['Node'],\n * extensions: {\n * infer: true,\n * },\n * }),\n * schema.buildObjectType({\n * name: 'Frontmatter',\n * fields: {\n * title: {\n * type: 'String!',\n * resolve(parent) {\n * return parent.title || '(Untitled)'\n * }\n * },\n * author: {\n * type: 'AuthorJson'\n * extensions: {\n * link: {},\n * },\n * }\n * date: {\n * type: 'Date!'\n * extensions: {\n * dateformat: {},\n * },\n * },\n * published: 'Boolean!',\n * tags: '[String!]!',\n * }\n * }),\n * schema.buildObjectType({\n * name: 'AuthorJson',\n * fields: {\n * name: 'String!'\n * birthday: {\n * type: 'Date!'\n * extensions: {\n * dateformat: {\n * locale: 'ru',\n * },\n * },\n * },\n * },\n * interfaces: ['Node'],\n * extensions: {\n * infer: false,\n * },\n * }),\n * ]\n * createTypes(typeDefs)\n * }\n */\n createTypes: (\n types:\n | string\n | GraphQLOutputType\n | GatsbyGraphQLType<any, any>\n | Array<string | GraphQLOutputType | GatsbyGraphQLType<any, any>>,\n plugin: IGatsbyPlugin,\n traceId?: string\n ): ICreateTypes => {\n return {\n type: `CREATE_TYPES`,\n plugin,\n traceId,\n payload: Array.isArray(types)\n ? types.map(parseTypeDef)\n : parseTypeDef(types),\n }\n },\n\n /**\n * Add a field extension to the GraphQL schema.\n *\n * Extensions allow defining custom behavior which can be added to fields\n * via directive (in SDL) or on the `extensions` prop (with Type Builders).\n *\n * The extension definition takes a `name`, an `extend` function, and optional\n * extension `args` for options. The `extend` function has to return a (partial)\n * field config, and receives the extension options and the previous field config\n * as arguments.\n *\n * @availableIn [createSchemaCustomization, sourceNodes]\n *\n * @param {GraphQLFieldExtensionDefinition} extension The field extension definition\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * const { createFieldExtension } = actions\n * createFieldExtension({\n * name: 'motivate',\n * args: {\n * caffeine: 'Int'\n * },\n * extend(options, prevFieldConfig) {\n * return {\n * type: 'String',\n * args: {\n * sunshine: {\n * type: 'Int',\n * defaultValue: 0,\n * },\n * },\n * resolve(source, args, context, info) {\n * const motivation = (options.caffeine || 0) - args.sunshine\n * if (motivation > 5) return 'Work! Work! Work!'\n * return 'Maybe tomorrow.'\n * },\n * }\n * },\n * })\n * }\n */\n createFieldExtension:\n (\n extension: GraphQLFieldExtensionDefinition,\n plugin: IGatsbyPlugin,\n traceId?: string\n ): ThunkAction<\n void,\n IGatsbyState,\n Record<string, unknown>,\n ICreateFieldExtension\n > =>\n (dispatch, getState): void => {\n const { name } = extension || {}\n const { fieldExtensions } = getState().schemaCustomization\n\n if (!name) {\n report.error(\n `The provided field extension must have a \\`name\\` property.`\n )\n } else if (reservedExtensionNames.includes(name)) {\n report.error(\n `The field extension name \\`${name}\\` is reserved for internal use.`\n )\n } else if (fieldExtensions[name]) {\n report.error(\n `A field extension with the name \\`${name}\\` has already been registered.`\n )\n } else {\n dispatch({\n type: `CREATE_FIELD_EXTENSION`,\n plugin,\n traceId,\n payload: { name, extension },\n })\n }\n },\n\n /**\n * Write GraphQL schema to file\n *\n * Writes out inferred and explicitly specified type definitions. This is not\n * the full GraphQL schema, but only the types necessary to recreate all type\n * definitions, i.e. it does not include directives, built-ins, and derived\n * types for filtering, sorting, pagination etc. Optionally, you can define a\n * list of types to include/exclude. This is recommended to avoid including\n * definitions for plugin-created types.\n *\n * The first object parameter is required, however all the fields in the object are optional.\n *\n * @availableIn [createSchemaCustomization]\n *\n * @param {object} $0\n * @param {string} [$0.path] The path to the output file, defaults to `schema.gql`\n * @param {object} [$0.include] Configure types to include\n * @param {string[]} [$0.include.types] Only include these types\n * @param {string[]} [$0.include.plugins] Only include types owned by these plugins\n * @param {object} [$0.exclude] Configure types to exclude\n * @param {string[]} [$0.exclude.types] Do not include these types\n * @param {string[]} [$0.exclude.plugins] Do not include types owned by these plugins\n * @param {boolean} [$0.withFieldTypes] Include field types, defaults to `true`\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * // This code writes a GraphQL schema to a file named `schema.gql`.\n * actions.printTypeDefinitions({})\n * }\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * // This code writes a GraphQL schema to a file named `schema.gql`, but this time it does not include field types.\n * actions.printTypeDefinitions({ withFieldTypes: false })\n * }\n */\n printTypeDefinitions: (\n {\n path = `schema.gql`,\n include,\n exclude,\n withFieldTypes = true,\n }: {\n path?: string\n include?: { types?: Array<string>; plugins?: Array<string> }\n exclude?: { types?: Array<string>; plugins?: Array<string> }\n withFieldTypes?: boolean\n },\n plugin: IGatsbyPlugin,\n traceId?: string\n ): IPrintTypeDefinitions => {\n return {\n type: `PRINT_SCHEMA_REQUESTED`,\n plugin,\n traceId,\n payload: {\n path,\n include,\n exclude,\n withFieldTypes,\n },\n }\n },\n\n /**\n * Make functionality available on field resolver `context`\n *\n * @availableIn [createSchemaCustomization]\n *\n * @param {object} context Object to make available on `context`.\n * When called from a plugin, the context value will be namespaced under\n * the camel-cased plugin name without the \"gatsby-\" prefix\n * @example\n * const getHtml = md => remark().use(html).process(md)\n * exports.createSchemaCustomization = ({ actions }) => {\n * actions.createResolverContext({ getHtml })\n * }\n * // The context value can then be accessed in any field resolver like this:\n * exports.createSchemaCustomization = ({ actions, schema }) => {\n * actions.createTypes(schema.buildObjectType({\n * name: 'Test',\n * interfaces: ['Node'],\n * fields: {\n * md: {\n * type: 'String!',\n * async resolve(source, args, context, info) {\n * const processed = await context.transformerRemark.getHtml(source.internal.contents)\n * return processed.contents\n * }\n * }\n * }\n * }))\n * }\n */\n createResolverContext:\n (\n context: IGatsbyPluginContext,\n plugin: IGatsbyPlugin,\n traceId?: string\n ): ThunkAction<\n void,\n IGatsbyState,\n Record<string, unknown>,\n ICreateResolverContext\n > =>\n (dispatch): void => {\n if (!context || typeof context !== `object`) {\n report.error(\n `Expected context value passed to \\`createResolverContext\\` to be an object. Received \"${context}\".`\n )\n } else {\n const { name } = plugin || {}\n const payload =\n !name || name === `default-site-plugin`\n ? context\n : { [camelCase(name.replace(/^gatsby-/, ``))]: context }\n dispatch({\n type: `CREATE_RESOLVER_CONTEXT`,\n plugin,\n traceId,\n payload,\n })\n }\n },\n}\n\nconst withDeprecationWarning =\n (\n actionName: RestrictionActionNames,\n action: SomeActionCreator,\n api: API,\n allowedIn: Array<API>\n ): SomeActionCreator =>\n (...args: Array<any>): ReturnType<ActionCreator<any>> => {\n report.warn(\n `Calling \\`${actionName}\\` in the \\`${api}\\` API is deprecated. ` +\n `Please use: ${allowedIn.map(a => `\\`${a}\\``).join(`, `)}.`\n )\n return action(...args)\n }\n\nconst withErrorMessage =\n (actionName: RestrictionActionNames, api: API, allowedIn: Array<API>) =>\n () =>\n // return a thunk that does not dispatch anything\n (): void => {\n report.error(\n `\\`${actionName}\\` is not available in the \\`${api}\\` API. ` +\n `Please use: ${allowedIn.map(a => `\\`${a}\\``).join(`, `)}.`\n )\n }\n\nconst nodeAPIs = Object.keys(require(`../../utils/api-node-docs`))\n\nconst ALLOWED_IN = `ALLOWED_IN`\nconst DEPRECATED_IN = `DEPRECATED_IN`\n\ntype API = string\n\ntype Restrictions = Record<\n RestrictionActionNames,\n Partial<{\n ALLOWED_IN: Array<API>\n DEPRECATED_IN: Array<API>\n }>\n>\n\ntype AvailableActionsByAPI = Record<\n API,\n { [K in RestrictionActionNames]: SomeActionCreator }\n>\n\nconst set = (\n availableActionsByAPI: Record<string, any>,\n api: API,\n actionName: RestrictionActionNames,\n action: SomeActionCreator\n): void => {\n availableActionsByAPI[api] = availableActionsByAPI[api] || {}\n availableActionsByAPI[api][actionName] = action\n}\n\nconst mapAvailableActionsToAPIs = (\n restrictions: Restrictions\n): AvailableActionsByAPI => {\n const availableActionsByAPI: AvailableActionsByAPI = {}\n\n const actionNames = Object.keys(restrictions) as Array<\n keyof typeof restrictions\n >\n actionNames.forEach(actionName => {\n const action = actions[actionName]\n\n const allowedIn: Array<API> = restrictions[actionName][ALLOWED_IN] || []\n allowedIn.forEach(api =>\n set(availableActionsByAPI, api, actionName, action)\n )\n\n const deprecatedIn: Array<API> =\n restrictions[actionName][DEPRECATED_IN] || []\n deprecatedIn.forEach(api =>\n set(\n availableActionsByAPI,\n api,\n actionName,\n withDeprecationWarning(actionName, action, api, allowedIn)\n )\n )\n\n const forbiddenIn = nodeAPIs.filter(\n api => ![...allowedIn, ...deprecatedIn].includes(api)\n )\n forbiddenIn.forEach(api =>\n set(\n availableActionsByAPI,\n api,\n actionName,\n withErrorMessage(actionName, api, allowedIn)\n )\n )\n })\n\n return availableActionsByAPI\n}\n\nexport const availableActionsByAPI = mapAvailableActionsToAPIs({\n createFieldExtension: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n [DEPRECATED_IN]: [`sourceNodes`],\n },\n createTypes: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`, `sourceNodes`],\n },\n createResolverContext: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n },\n addThirdPartySchema: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`, `sourceNodes`],\n },\n printTypeDefinitions: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n },\n})\n"],"file":"restricted.js"}
1
+ {"version":3,"sources":["../../../src/redux/actions/restricted.ts"],"names":["actions","addThirdPartySchema","schema","plugin","traceId","type","payload","createTypes","types","Array","isArray","map","parseTypeDef","createFieldExtension","extension","dispatch","getState","name","fieldExtensions","schemaCustomization","report","error","reservedExtensionNames","includes","printTypeDefinitions","path","include","exclude","withFieldTypes","createResolverContext","context","replace","withDeprecationWarning","actionName","action","api","allowedIn","args","warn","a","join","withErrorMessage","nodeAPIs","Object","keys","require","ALLOWED_IN","DEPRECATED_IN","set","availableActionsByAPI","mapAvailableActionsToAPIs","restrictions","actionNames","forEach","deprecatedIn","forbiddenIn","filter"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;AACA;;AA4BO,MAAMA,OAAO,GAAG;AACrB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,mBAAmB,EAAE,CACnB;AAAEC,IAAAA;AAAF,GADmB,EAEnBC,MAFmB,EAGnBC,OAHmB,KAIM;AACzB,WAAO;AACLC,MAAAA,IAAI,EAAG,wBADF;AAELF,MAAAA,MAFK;AAGLC,MAAAA,OAHK;AAILE,MAAAA,OAAO,EAAEJ;AAJJ,KAAP;AAMD,GA1BoB;;AA4BrB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEK,EAAAA,WAAW,EAAE,CACXC,KADW,EAMXL,MANW,EAOXC,OAPW,KAQM;AACjB,WAAO;AACLC,MAAAA,IAAI,EAAG,cADF;AAELF,MAAAA,MAFK;AAGLC,MAAAA,OAHK;AAILE,MAAAA,OAAO,EAAEG,KAAK,CAACC,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","sourcesContent":["import { camelCase } from \"lodash\"\nimport { GraphQLSchema, GraphQLOutputType } from \"graphql\"\nimport { ActionCreator } from \"redux\"\nimport { ThunkAction } from \"redux-thunk\"\nimport report from \"gatsby-cli/lib/reporter\"\nimport { parseTypeDef } from \"../../schema/types/type-defs\"\nimport {\n GraphQLFieldExtensionDefinition,\n reservedExtensionNames,\n} from \"../../schema/extensions\"\nimport { GatsbyGraphQLType } from \"../../schema/types/type-builders\"\nimport {\n IGatsbyPlugin,\n ActionsUnion,\n IAddThirdPartySchema,\n ICreateTypes,\n IGatsbyState,\n ICreateFieldExtension,\n IPrintTypeDefinitions,\n ICreateResolverContext,\n IGatsbyPluginContext,\n} from \"../types\"\n\ntype RestrictionActionNames =\n | \"createFieldExtension\"\n | \"createTypes\"\n | \"createResolverContext\"\n | \"addThirdPartySchema\"\n | \"printTypeDefinitions\"\n\ntype SomeActionCreator =\n | ActionCreator<ActionsUnion>\n | ActionCreator<ThunkAction<any, IGatsbyState, any, ActionsUnion>>\n\nexport const actions = {\n /**\n * Add a third-party schema to be merged into main schema. Schema has to be a\n * graphql-js GraphQLSchema object.\n *\n * This schema is going to be merged as-is. Merging it in this way will\n * easily break the main Gatsby Schema. Since we do not want that, therefore\n * it is the user's responsibility to make sure that it does not happen.\n * One such way of avoiding it is by namespacing the schema.\n *\n * @availableIn [createSchemaCustomization, sourceNodes]\n *\n * @param {Object} $0\n * @param {GraphQLSchema} $0.schema GraphQL schema to add\n */\n addThirdPartySchema: (\n { schema }: { schema: GraphQLSchema },\n plugin: IGatsbyPlugin,\n traceId?: string\n ): IAddThirdPartySchema => {\n return {\n type: `ADD_THIRD_PARTY_SCHEMA`,\n plugin,\n traceId,\n payload: schema,\n }\n },\n\n /**\n * Add type definitions to the GraphQL schema.\n *\n * @availableIn [createSchemaCustomization, sourceNodes]\n *\n * @param {string | GraphQLOutputType | GatsbyGraphQLType | string[] | GraphQLOutputType[] | GatsbyGraphQLType[]} types Type definitions\n *\n * Type definitions can be provided either as\n * [`graphql-js` types](https://graphql.org/graphql-js/), in\n * [GraphQL schema definition language (SDL)](https://graphql.org/learn/)\n * or using Gatsby Type Builders available on the `schema` API argument.\n *\n * Things to note:\n * * type definitions targeting node types, i.e. `MarkdownRemark` and others\n * added in `sourceNodes` or `onCreateNode` APIs, need to implement the\n * `Node` interface. Interface fields will be added automatically, but it\n * is mandatory to label those types with `implements Node`.\n * * by default, explicit type definitions from `createTypes` will be merged\n * with inferred field types, and default field resolvers for `Date` (which\n * adds formatting options) and `File` (which resolves the field value as\n * a `relativePath` foreign-key field) are added. This behavior can be\n * customised with `@infer`, `@dontInfer` directives or extensions. Fields\n * may be assigned resolver (and other option like args) with additional\n * directives. Currently `@dateformat`, `@link`, `@fileByRelativePath` and\n * `@proxy` are available.\n *\n *\n * Schema customization controls:\n * * `@infer` - run inference on the type and add fields that don't exist on the\n * defined type to it.\n * * `@dontInfer` - don't run any inference on the type\n *\n * Extensions to add resolver options:\n * * `@dateformat` - add date formatting arguments. Accepts `formatString` and\n * `locale` options that sets the defaults for this field\n * * `@link` - connect to a different Node. Arguments `by` and `from`, which\n * define which field to compare to on a remote node and which field to use on\n * the source node\n * * `@fileByRelativePath` - connect to a File node. Same arguments. The\n * difference from link is that this normalizes the relative path to be\n * relative from the path where source node is found.\n * * `@proxy` - in case the underlying node data contains field names with\n * characters that are invalid in GraphQL, `proxy` allows to explicitly\n * proxy those properties to fields with valid field names. Takes a `from` arg.\n *\n *\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * const { createTypes } = actions\n * const typeDefs = `\n * \"\"\"\n * Markdown Node\n * \"\"\"\n * type MarkdownRemark implements Node @infer {\n * frontmatter: Frontmatter!\n * }\n *\n * \"\"\"\n * Markdown Frontmatter\n * \"\"\"\n * type Frontmatter @infer {\n * title: String!\n * author: AuthorJson! @link\n * date: Date! @dateformat\n * published: Boolean!\n * tags: [String!]!\n * }\n *\n * \"\"\"\n * Author information\n * \"\"\"\n * # Does not include automatically inferred fields\n * type AuthorJson implements Node @dontInfer {\n * name: String!\n * birthday: Date! @dateformat(locale: \"ru\")\n * }\n * `\n * createTypes(typeDefs)\n * }\n *\n * // using Gatsby Type Builder API\n * exports.createSchemaCustomization = ({ actions, schema }) => {\n * const { createTypes } = actions\n * const typeDefs = [\n * schema.buildObjectType({\n * name: 'MarkdownRemark',\n * fields: {\n * frontmatter: 'Frontmatter!'\n * },\n * interfaces: ['Node'],\n * extensions: {\n * infer: true,\n * },\n * }),\n * schema.buildObjectType({\n * name: 'Frontmatter',\n * fields: {\n * title: {\n * type: 'String!',\n * resolve(parent) {\n * return parent.title || '(Untitled)'\n * }\n * },\n * author: {\n * type: 'AuthorJson'\n * extensions: {\n * link: {},\n * },\n * }\n * date: {\n * type: 'Date!'\n * extensions: {\n * dateformat: {},\n * },\n * },\n * published: 'Boolean!',\n * tags: '[String!]!',\n * }\n * }),\n * schema.buildObjectType({\n * name: 'AuthorJson',\n * fields: {\n * name: 'String!'\n * birthday: {\n * type: 'Date!'\n * extensions: {\n * dateformat: {\n * locale: 'ru',\n * },\n * },\n * },\n * },\n * interfaces: ['Node'],\n * extensions: {\n * infer: false,\n * },\n * }),\n * ]\n * createTypes(typeDefs)\n * }\n */\n createTypes: (\n types:\n | string\n | GraphQLOutputType\n | GatsbyGraphQLType<any, any>\n | Array<string | GraphQLOutputType | GatsbyGraphQLType<any, any>>,\n plugin: IGatsbyPlugin,\n traceId?: string\n ): ICreateTypes => {\n return {\n type: `CREATE_TYPES`,\n plugin,\n traceId,\n payload: Array.isArray(types)\n ? types.map(parseTypeDef)\n : parseTypeDef(types),\n }\n },\n\n /**\n * Add a field extension to the GraphQL schema.\n *\n * Extensions allow defining custom behavior which can be added to fields\n * via directive (in SDL) or on the `extensions` prop (with Type Builders).\n *\n * The extension definition takes a `name`, an `extend` function, and optional\n * extension `args` for options. The `extend` function has to return a (partial)\n * field config, and receives the extension options and the previous field config\n * as arguments.\n *\n * @availableIn [createSchemaCustomization, sourceNodes]\n *\n * @param {GraphQLFieldExtensionDefinition} extension The field extension definition\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * const { createFieldExtension } = actions\n * createFieldExtension({\n * name: 'motivate',\n * args: {\n * caffeine: 'Int'\n * },\n * extend(options, prevFieldConfig) {\n * return {\n * type: 'String',\n * args: {\n * sunshine: {\n * type: 'Int',\n * defaultValue: 0,\n * },\n * },\n * resolve(source, args, context, info) {\n * const motivation = (options.caffeine || 0) - args.sunshine\n * if (motivation > 5) return 'Work! Work! Work!'\n * return 'Maybe tomorrow.'\n * },\n * }\n * },\n * })\n * }\n */\n createFieldExtension:\n (\n extension: GraphQLFieldExtensionDefinition,\n plugin: IGatsbyPlugin,\n traceId?: string\n ): ThunkAction<\n void,\n IGatsbyState,\n Record<string, unknown>,\n ICreateFieldExtension\n > =>\n (dispatch, getState): void => {\n const { name } = extension || {}\n const { fieldExtensions } = getState().schemaCustomization\n\n if (!name) {\n report.error(\n `The provided field extension must have a \\`name\\` property.`\n )\n } else if (reservedExtensionNames.includes(name)) {\n report.error(\n `The field extension name \\`${name}\\` is reserved for internal use.`\n )\n } else if (fieldExtensions[name]) {\n report.error(\n `A field extension with the name \\`${name}\\` has already been registered.`\n )\n } else {\n dispatch({\n type: `CREATE_FIELD_EXTENSION`,\n plugin,\n traceId,\n payload: { name, extension },\n })\n }\n },\n\n /**\n * Write GraphQL schema to file\n *\n * Writes out inferred and explicitly specified type definitions. This is not\n * the full GraphQL schema, but only the types necessary to recreate all type\n * definitions, i.e. it does not include directives, built-ins, and derived\n * types for filtering, sorting, pagination etc. Optionally, you can define a\n * list of types to include/exclude. This is recommended to avoid including\n * definitions for plugin-created types.\n *\n * The first object parameter is required, however all the fields in the object are optional.\n *\n * @availableIn [createSchemaCustomization]\n *\n * @param {object} $0\n * @param {string} [$0.path] The path to the output file, defaults to `schema.gql`\n * @param {object} [$0.include] Configure types to include\n * @param {string[]} [$0.include.types] Only include these types\n * @param {string[]} [$0.include.plugins] Only include types owned by these plugins\n * @param {object} [$0.exclude] Configure types to exclude\n * @param {string[]} [$0.exclude.types] Do not include these types\n * @param {string[]} [$0.exclude.plugins] Do not include types owned by these plugins\n * @param {boolean} [$0.withFieldTypes] Include field types, defaults to `true`\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * // This code writes a GraphQL schema to a file named `schema.gql`.\n * actions.printTypeDefinitions({})\n * }\n * @example\n * exports.createSchemaCustomization = ({ actions }) => {\n * // This code writes a GraphQL schema to a file named `schema.gql`, but this time it does not include field types.\n * actions.printTypeDefinitions({ withFieldTypes: false })\n * }\n */\n printTypeDefinitions: (\n {\n path = `schema.gql`,\n include,\n exclude,\n withFieldTypes = true,\n }: {\n path?: string\n include?: { types?: Array<string>; plugins?: Array<string> }\n exclude?: { types?: Array<string>; plugins?: Array<string> }\n withFieldTypes?: boolean\n },\n plugin: IGatsbyPlugin,\n traceId?: string\n ): IPrintTypeDefinitions => {\n return {\n type: `PRINT_SCHEMA_REQUESTED`,\n plugin,\n traceId,\n payload: {\n path,\n include,\n exclude,\n withFieldTypes,\n },\n }\n },\n\n /**\n * Make functionality available on field resolver `context`\n *\n * @availableIn [createSchemaCustomization]\n *\n * @param {object} context Object to make available on `context`.\n * When called from a plugin, the context value will be namespaced under\n * the camel-cased plugin name without the \"gatsby-\" prefix\n * @example\n * const getHtml = md => remark().use(html).process(md)\n * exports.createSchemaCustomization = ({ actions }) => {\n * actions.createResolverContext({ getHtml })\n * }\n * // The context value can then be accessed in any field resolver like this:\n * exports.createSchemaCustomization = ({ actions, schema }) => {\n * actions.createTypes(schema.buildObjectType({\n * name: 'Test',\n * interfaces: ['Node'],\n * fields: {\n * md: {\n * type: 'String!',\n * async resolve(source, args, context, info) {\n * const processed = await context.transformerRemark.getHtml(source.internal.contents)\n * return processed.contents\n * }\n * }\n * }\n * }))\n * }\n */\n createResolverContext:\n (\n context: IGatsbyPluginContext,\n plugin: IGatsbyPlugin,\n traceId?: string\n ): ThunkAction<\n void,\n IGatsbyState,\n Record<string, unknown>,\n ICreateResolverContext\n > =>\n (dispatch): void => {\n if (!context || typeof context !== `object`) {\n report.error(\n `Expected context value passed to \\`createResolverContext\\` to be an object. Received \"${context}\".`\n )\n } else {\n const { name } = plugin || {}\n const payload =\n !name || name === `default-site-plugin`\n ? context\n : { [camelCase(name.replace(/^gatsby-/, ``))]: context }\n dispatch({\n type: `CREATE_RESOLVER_CONTEXT`,\n plugin,\n traceId,\n payload,\n })\n }\n },\n}\n\nconst withDeprecationWarning =\n (\n actionName: RestrictionActionNames,\n action: SomeActionCreator,\n api: API,\n allowedIn: Array<API>\n ): SomeActionCreator =>\n (...args: Array<any>): ReturnType<ActionCreator<any>> => {\n report.warn(\n `Calling \\`${actionName}\\` in the \\`${api}\\` API is deprecated. ` +\n `Please use: ${allowedIn.map(a => `\\`${a}\\``).join(`, `)}.`\n )\n return action(...args)\n }\n\nconst withErrorMessage =\n (actionName: RestrictionActionNames, api: API, allowedIn: Array<API>) =>\n () =>\n // return a thunk that does not dispatch anything\n (): void => {\n report.error(\n `\\`${actionName}\\` is not available in the \\`${api}\\` API. ` +\n `Please use: ${allowedIn.map(a => `\\`${a}\\``).join(`, `)}.`\n )\n }\n\nconst nodeAPIs = Object.keys(require(`../../utils/api-node-docs`))\n\nconst ALLOWED_IN = `ALLOWED_IN`\nconst DEPRECATED_IN = `DEPRECATED_IN`\n\ntype API = string\n\ntype Restrictions = Record<\n RestrictionActionNames,\n Partial<{\n ALLOWED_IN: Array<API>\n DEPRECATED_IN: Array<API>\n }>\n>\n\ntype AvailableActionsByAPI = Record<\n API,\n { [K in RestrictionActionNames]: SomeActionCreator }\n>\n\nconst set = (\n availableActionsByAPI: Record<string, any>,\n api: API,\n actionName: RestrictionActionNames,\n action: SomeActionCreator\n): void => {\n availableActionsByAPI[api] = availableActionsByAPI[api] || {}\n availableActionsByAPI[api][actionName] = action\n}\n\nconst mapAvailableActionsToAPIs = (\n restrictions: Restrictions\n): AvailableActionsByAPI => {\n const availableActionsByAPI: AvailableActionsByAPI = {}\n\n const actionNames = Object.keys(restrictions) as Array<\n keyof typeof restrictions\n >\n actionNames.forEach(actionName => {\n const action = actions[actionName]\n\n const allowedIn: Array<API> = restrictions[actionName][ALLOWED_IN] || []\n allowedIn.forEach(api =>\n set(availableActionsByAPI, api, actionName, action)\n )\n\n const deprecatedIn: Array<API> =\n restrictions[actionName][DEPRECATED_IN] || []\n deprecatedIn.forEach(api =>\n set(\n availableActionsByAPI,\n api,\n actionName,\n withDeprecationWarning(actionName, action, api, allowedIn)\n )\n )\n\n const forbiddenIn = nodeAPIs.filter(\n api => ![...allowedIn, ...deprecatedIn].includes(api)\n )\n forbiddenIn.forEach(api =>\n set(\n availableActionsByAPI,\n api,\n actionName,\n withErrorMessage(actionName, api, allowedIn)\n )\n )\n })\n\n return availableActionsByAPI\n}\n\nexport const availableActionsByAPI = mapAvailableActionsToAPIs({\n createFieldExtension: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n [DEPRECATED_IN]: [`sourceNodes`],\n },\n createTypes: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`, `sourceNodes`],\n },\n createResolverContext: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n },\n addThirdPartySchema: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`, `sourceNodes`],\n },\n printTypeDefinitions: {\n [ALLOWED_IN]: [`createSchemaCustomization`],\n },\n})\n"],"file":"restricted.js"}
@@ -9,6 +9,8 @@ var _lodash = _interopRequireDefault(require("lodash"));
9
9
 
10
10
  var _gatsbyCoreUtils = require("gatsby-core-utils");
11
11
 
12
+ var _mutex = require("gatsby-core-utils/mutex");
13
+
12
14
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
13
15
 
14
16
  var _md5File = _interopRequireDefault(require("md5-file"));
@@ -375,29 +377,23 @@ async function initialize({
375
377
  // // ignore errors (mostly will just be directory not found).
376
378
  // }
377
379
  // }
378
- if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE || process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {
379
- const deleteGlobs = [// By default delete all files & subdirectories
380
- `${cacheDirectory}/**`, `${cacheDirectory}/*/`];
381
-
382
- if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE) {
383
- // Stop the caches directory from being deleted, add all sub directories,
384
- // but remove gatsby-source-filesystem
385
- deleteGlobs.push(`!${cacheDirectory}/caches`);
386
- deleteGlobs.push(`${cacheDirectory}/caches/*`);
387
- deleteGlobs.push(`!${cacheDirectory}/caches/gatsby-source-filesystem`);
388
- }
389
-
390
- if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {
391
- // Add webpack
392
- deleteGlobs.push(`!${cacheDirectory}/webpack`);
393
- }
380
+ const deleteGlobs = [// By default delete all files & subdirectories
381
+ `${cacheDirectory}/**`, `!${cacheDirectory}/data`, `${cacheDirectory}/data/**`, `!${cacheDirectory}/data/gatsby-core-utils/`, `!${cacheDirectory}/data/gatsby-core-utils/**`];
382
+
383
+ if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE) {
384
+ // Stop the caches directory from being deleted, add all sub directories,
385
+ // but remove gatsby-source-filesystem
386
+ deleteGlobs.push(`!${cacheDirectory}/caches`);
387
+ deleteGlobs.push(`${cacheDirectory}/caches/*`);
388
+ deleteGlobs.push(`!${cacheDirectory}/caches/gatsby-source-filesystem`);
389
+ }
394
390
 
395
- await (0, _del.default)(deleteGlobs);
396
- } else {
397
- // Attempt to empty dir if remove fails,
398
- // like when directory is mount point
399
- await _fsExtra.default.remove(cacheDirectory).catch(() => _fsExtra.default.emptyDir(cacheDirectory));
391
+ if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {
392
+ // Add webpack
393
+ deleteGlobs.push(`!${cacheDirectory}/webpack`);
400
394
  }
395
+
396
+ await (0, _del.default)(deleteGlobs);
401
397
  } catch (e) {
402
398
  _reporter.default.error(`Failed to remove .cache files.`, e);
403
399
  } // Tell reducers to delete their data (the store will already have
@@ -407,10 +403,12 @@ async function initialize({
407
403
  _redux.store.dispatch({
408
404
  type: `DELETE_CACHE`,
409
405
  cacheIsCorrupt
410
- }); // in future this should show which plugin's caches are purged
411
- // possibly should also have which plugins had caches
406
+ }); // make sure all previous mutexes are released
412
407
 
413
408
 
409
+ await (0, _mutex.releaseAllMutexes)(); // in future this should show which plugin's caches are purged
410
+ // possibly should also have which plugins had caches
411
+
414
412
  _gatsbyTelemetry.default.decorateEvent(`BUILD_END`, {
415
413
  pluginCachesPurged: [`*`]
416
414
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/initialize.ts"],"names":["process","env","gatsby_executing_command","GATSBY_EXPERIMENTAL_FAST_DEV","GATSBY_WORKER_POOL_WORKER","GATSBY_EXPERIMENTAL_DEV_SSR","PRESERVE_FILE_DOWNLOAD_CACHE","PRESERVE_WEBPACK_CACHE","reporter","info","telemetry","trackFeatureIsUsed","on","reason","panic","initialize","program","args","parentSpan","GATSBY_DISABLE_CACHE_PERSISTENCE","setStore","store","_registerAdditionalDiagnosticOutputHandler","logPendingJobs","outputs","job","getState","jobsV2","incomplete","push","length","size","JSON","stringify","directory","extensions","browserslist","dispatch","type","payload","activityForJobs","emitter","phantomActivity","start","onEndJob","jobs","active","end","activity","activityTimer","siteDirectory","config","processFlags","flattenedPlugins","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR","lmdbStoreIsUsed","GATSBY_DETECT_NODE_MUTATIONS","polyfill","warn","CYPRESS_SUPPORT","verbose","pluginsStr","_","uniq","map","p","name","version","decorateEvent","plugins","span","lmdbCacheDirectoryName","cacheDirectory","publicDirectory","workerCacheDirectory","lmdbCacheDirectory","cacheJsonDirExists","fs","existsSync","publicDirExists","workerCacheDirExists","lmdbCacheDirExists","cacheDirExists","NODE_ENV","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","remove","catch","emptyDir","pluginVersions","state","hashes","Promise","all","trailingSlash","pluginsHash","crypto","createHash","update","concat","digest","oldPluginsHash","status","PLUGINS_HASH","stripIndent","cacheIsCorrupt","GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE","GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE","deleteGlobs","e","error","pluginCachesPurged","ensureDir","srcDir","__dirname","siteDir","tryRequire","copy","ensureDirSync","err","hasAPIFile","plugin","skipSSR","undefined","envAPIs","modulePath","path","join","resolve","Array","isArray","isResolved","isResolvedSSR","ssrPlugins","options","pluginOptions","filter","browserPlugins","browserPluginsRequires","relativePluginPath","relative","browserAPIRunner","sSRAPIRunner","readFileSync","ssrPluginsRequires","writeFileSync","apiResults","traceId","flattenDeep","workerPool","WorkerPool","create"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAWA;AACA;AACA,IACEA,OAAO,CAACC,GAAR,CAAYC,wBAAZ,KAA0C,SAA1C,IACAF,OAAO,CAACC,GAAR,CAAYE,4BADZ,IAEA,CAAC,4BAFD,IAGA;AACA;AACA,CAACH,OAAO,CAACC,GAAR,CAAYG,yBANf,EAOE;AACAJ,EAAAA,OAAO,CAACC,GAAR,CAAYI,2BAAZ,GAA2C,MAA3C;AACAL,EAAAA,OAAO,CAACC,GAAR,CAAYK,4BAAZ,GAA4C,MAA5C;AACAN,EAAAA,OAAO,CAACC,GAAR,CAAYM,sBAAZ,GAAsC,MAAtC;;AAEAC,oBAASC,IAAT,CAAe;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAPE;;AASAC,2BAAUC,kBAAV,CAA8B,SAA9B;AACD,C,CAED;;;AACAX,OAAO,CAACY,EAAR,CAAY,oBAAZ,EAAkCC,MAAD,IAAqB;AACpD;AACAL,oBAASM,KAAT,CAAgBD,MAAD,IAAsB,qBAArC;AACD,CAHD,E,CAKA;AACA;AACA;AACA;;AAEO,eAAeE,UAAf,CAA0B;AAC/BC,EAAAA,OAAO,EAAEC,IADsB;AAE/BC,EAAAA;AAF+B,CAA1B,EAMJ;AACD,MAAIlB,OAAO,CAACC,GAAR,CAAYkB,gCAAhB,EAAkD;AAChDX,sBAASC,IAAT,CACG,gJADH;;AAGAC,6BAAUC,kBAAV,CAA8B,yBAA9B;AACD;;AACD,MAAI,CAACM,IAAL,EAAW;AACTT,sBAASM,KAAT,CAAgB,sBAAhB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE,MAAIG,IAAI,CAACG,QAAT,EAAmB;AACjBH,IAAAA,IAAI,CAACG,QAAL,CAAcC,YAAd;AACD;;AAED,MAAIb,kBAASc,0CAAb,EAAyD;AACvDd,sBAASc,0CAAT,CACE,SAASC,cAAT,GAAkC;AAChC,YAAMC,OAA2B,GAAG,EAApC;;AAEA,WAAK,MAAM,GAAG;AAAEC,QAAAA;AAAF,OAAH,CAAX,IAA0BJ,aAAMK,QAAN,GAAiBC,MAAjB,CAAwBC,UAAlD,EAA8D;AAC5DJ,QAAAA,OAAO,CAACK,IAAR,CAAaJ,GAAb;;AACA,YAAID,OAAO,CAACM,MAAR,IAAkB,CAAtB,EAAyB;AACvB;AACA;AACA;AACD;AACF;;AAED,aAAON,OAAO,CAACM,MAAR,GACF,4BAA2BN,OAAO,CAACM,MAAO,OACzCT,aAAMK,QAAN,GAAiBC,MAAjB,CAAwBC,UAAxB,CAAmCG,IACpC,mBAFD,GAEsBC,IAAI,CAACC,SAAL,CAAeT,OAAf,EAAwB,IAAxB,EAA8B,CAA9B,CAHnB,GAIF,EAJL;AAKD,KAlBH;AAoBD;;AAED,QAAMU,SAAS,GAAG,4BAAMjB,IAAI,CAACiB,SAAX,CAAlB;AAEA,QAAMlB,OAAsB,GAAG,EAC7B,GAAGC,IAD0B;AAE7BkB,IAAAA,UAAU,EAAE,EAFiB;AAG7BC,IAAAA,YAAY,EAAE,mCAAgBF,SAAhB,CAHe;AAI7B;AACAA,IAAAA;AAL6B,GAA/B;;AAQAb,eAAMgB,QAAN,CAAe;AACbC,IAAAA,IAAI,EAAG,aADM;AAEbC,IAAAA,OAAO,EAAEvB;AAFI,GAAf;;AAKA,MAAIwB,eAAJ;;AAEAC,iBAAQ7B,EAAR,CAAY,YAAZ,EAAyB,MAAM;AAC7B,QAAI,CAAC4B,eAAL,EAAsB;AACpBA,MAAAA,eAAe,GAAGhC,kBAASkC,eAAT,CAA0B,cAA1B,CAAlB;AACAF,MAAAA,eAAe,CAACG,KAAhB;AACD;AACF,GALD;;AAOA,QAAMC,QAAQ,GAAG,MAAY;AAC3B,QAAIJ,eAAe,IAAInB,aAAMK,QAAN,GAAiBmB,IAAjB,CAAsBC,MAAtB,CAA6BhB,MAA7B,KAAwC,CAA/D,EAAkE;AAChEU,MAAAA,eAAe,CAACO,GAAhB;AACAP,MAAAA,eAAe,GAAG,IAAlB;AACD;AACF,GALD;;AAOAC,iBAAQ7B,EAAR,CAAY,SAAZ,EAAsBgC,QAAtB,EAlFC,CAoFD;;;AACA,MAAII,QAAQ,GAAGxC,kBAASyC,aAAT,CAAwB,oBAAxB,EAA6C;AAC1D/B,IAAAA;AAD0D,GAA7C,CAAf;;AAGA8B,EAAAA,QAAQ,CAACL,KAAT;AACA,QAAMO,aAAa,GAAGlC,OAAO,CAACkB,SAA9B;AACA,QAAMiB,MAAM,GAAG,MAAM,4BAAW;AAC9BD,IAAAA,aAD8B;AAE9BE,IAAAA,YAAY,EAAE;AAFgB,GAAX,CAArB;AAIAJ,EAAAA,QAAQ,CAACD,GAAT,GA9FC,CAgGD;;AACAC,EAAAA,QAAQ,GAAGxC,kBAASyC,aAAT,CAAwB,cAAxB,EAAuC;AAChD/B,IAAAA;AADgD,GAAvC,CAAX;AAGA8B,EAAAA,QAAQ,CAACL,KAAT;AACA,QAAMU,gBAAgB,GAAG,MAAM,8BAAYF,MAAZ,EAAoBD,aAApB,CAA/B;AACAF,EAAAA,QAAQ,CAACD,GAAT,GAtGC,CAwGD;AACA;AACA;;AACA,MACE/C,OAAO,CAACC,GAAR,CAAYqD,mCAAZ,IACA,CAACtD,OAAO,CAACC,GAAR,CAAYsD,wCAFf,EAGE;AACA;AACA;AACAvD,IAAAA,OAAO,CAACC,GAAR,CAAYsD,wCAAZ,GAAwD,MAAxD;AACD;;AACD,QAAMC,eAAe,GAAG,iCAAxB;;AAEA,MAAIxD,OAAO,CAACC,GAAR,CAAYwD,4BAAhB,EAA8C;AAC5C;AACD;;AAED,MAAIN,MAAM,IAAIA,MAAM,CAACO,QAArB,EAA+B;AAC7BlD,sBAASmD,IAAT,CACG,mIADH;AAGD;;AAED,MAAI3D,OAAO,CAACC,GAAR,CAAYqD,mCAAhB,EAAqD;AACnD,QAAItD,OAAO,CAACC,GAAR,CAAYC,wBAAZ,KAA0C,SAA9C,EAAwD;AACtD;AACA;AACA,aAAOF,OAAO,CAACC,GAAR,CAAYqD,mCAAnB;AACD,KAJD,MAIO,IAAI,gCAAU,CAACtD,OAAO,CAACC,GAAR,CAAY2D,eAA3B,EAA4C;AACjD,aAAO5D,OAAO,CAACC,GAAR,CAAYqD,mCAAnB;;AACA9C,wBAASqD,OAAT,CACG,+GADH;AAGD;AACF,GA1IA,CA4ID;AACA;;;AACAxC,eAAMgB,QAAN,CAAe,sCAAgBhB,aAAMK,QAAN,GAAiBC,MAAjC,CAAf,EA9IC,CAgJD;AACA;;;AACA,QAAMmC,UAAU,GAAGC,gBAAEC,IAAF,CAAOX,gBAAgB,CAACY,GAAjB,CAAqBC,CAAC,IAAK,GAAEA,CAAC,CAACC,IAAK,IAAGD,CAAC,CAACE,OAAQ,EAAjD,CAAP,CAAnB;;AACA1D,2BAAU2D,aAAV,CAAyB,WAAzB,EAAqC;AACnCC,IAAAA,OAAO,EAAER;AAD0B,GAArC;;AAIApD,2BAAU2D,aAAV,CAAyB,cAAzB,EAAwC;AACtCC,IAAAA,OAAO,EAAER;AAD6B,GAAxC,EAvJC,CA2JD;AACA;;;AACA,yCA7JC,CA+JD;;AACAd,EAAAA,QAAQ,GAAGxC,kBAASyC,aAAT,CAAwB,WAAxB,EAAoC;AAC7C/B,IAAAA;AAD6C,GAApC,CAAX;AAGA8B,EAAAA,QAAQ,CAACL,KAAT;AACA,QAAM,4BAAe,WAAf,EAA2B;AAAEzB,IAAAA,UAAU,EAAE8B,QAAQ,CAACuB;AAAvB,GAA3B,CAAN;AACAvB,EAAAA,QAAQ,CAACD,GAAT;AAEA,QAAMyB,sBAAsB,GAAI,aAAhC;AAEA,QAAMC,cAAc,GAAI,GAAEzD,OAAO,CAACkB,SAAU,SAA5C;AACA,QAAMwC,eAAe,GAAI,GAAE1D,OAAO,CAACkB,SAAU,SAA7C;AACA,QAAMyC,oBAAoB,GAAI,GAAE3D,OAAO,CAACkB,SAAU,gBAAlD;AACA,QAAM0C,kBAAkB,GAAI,GAAE5D,OAAO,CAACkB,SAAU,WAAUsC,sBAAuB,EAAjF;;AAEA,QAAMK,kBAAkB,GAAGC,iBAAGC,UAAH,CAAe,GAAEN,cAAe,OAAhC,CAA3B;;AACA,QAAMO,eAAe,GAAGF,iBAAGC,UAAH,CAAcL,eAAd,CAAxB;;AACA,QAAMO,oBAAoB,GAAGH,iBAAGC,UAAH,CAAcJ,oBAAd,CAA7B;;AACA,QAAMO,kBAAkB,GAAGJ,iBAAGC,UAAH,CAAcH,kBAAd,CAA3B,CAjLC,CAmLD;;;AACA,QAAMO,cAAc,GAAG3B,eAAe,GAClC0B,kBADkC,GAElCL,kBAFJ,CApLC,CAwLD;AACA;;AACA,MACE7E,OAAO,CAACC,GAAR,CAAYmF,QAAZ,KAA0B,YAA1B,IACAJ,eADA,IAEA,CAACG,cAHH,EAIE;AACAnC,IAAAA,QAAQ,GAAGxC,kBAASyC,aAAT,CACR,gDADQ,EAET;AACE/B,MAAAA;AADF,KAFS,CAAX;AAMA8B,IAAAA,QAAQ,CAACL,KAAT;AACA,UAAM,kBAAI,CACP,wBADO,EAEP,wBAFO,EAGP,gBAHO,EAIP,gCAJO,CAAJ,CAAN;AAMAK,IAAAA,QAAQ,CAACD,GAAT;AACD,GA7MA,CA+MD;AACA;;;AACA,MACEkC,oBAAoB,IACpBjF,OAAO,CAACC,GAAR,CAAYoF,0CAFd,EAGE;AACArC,IAAAA,QAAQ,GAAGxC,kBAASyC,aAAT,CACR,0CADQ,EAET;AACE/B,MAAAA;AADF,KAFS,CAAX;AAMA8B,IAAAA,QAAQ,CAACL,KAAT;AACA,UAAMmC,iBACHQ,MADG,CACIX,oBADJ,EAEHY,KAFG,CAEG,MAAMT,iBAAGU,QAAH,CAAYb,oBAAZ,CAFT,CAAN;AAGA3B,IAAAA,QAAQ,CAACD,GAAT;AACD;;AAEDC,EAAAA,QAAQ,GAAGxC,kBAASyC,aAAT,CAAwB,kBAAxB,EAA2C;AACpD/B,IAAAA;AADoD,GAA3C,CAAX;AAGA8B,EAAAA,QAAQ,CAACL,KAAT,GArOC,CAsOD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAM8C,cAAc,GAAGpC,gBAAgB,CAACY,GAAjB,CAAqBC,CAAC,IAAIA,CAAC,CAACE,OAA5B,CAAvB;;AAEA,QAAMsB,KAAK,GAAGrE,aAAMK,QAAN,EAAd;;AAEA,QAAMiE,MAAW,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAY,CACpC,sBAAS,cAAT,CADoC,EAEpC,sBAAS,GAAE7E,OAAO,CAACkB,SAAU,mBAA7B,EAAiDqD,KAAjD,CAAuD,MAAM,CAAE,CAA/D,CAFoC,EAE8B;AAClE,wBAAS,GAAEvE,OAAO,CAACkB,SAAU,iBAA7B,EAA+CqD,KAA/C,CAAqD,MAAM,CAAE,CAA7D,CAHoC,EAG4B;AAChE;AAAEO,IAAAA,aAAa,EAAEJ,KAAK,CAACvC,MAAN,CAAa2C;AAA9B,GAJoC,CAAZ,CAA1B;;AAOA,QAAMC,WAAW,GAAGC,gBACjBC,UADiB,CACL,KADK,EAEjBC,MAFiB,CAEVlE,IAAI,CAACC,SAAL,CAAewD,cAAc,CAACU,MAAf,CAAsBR,MAAtB,CAAf,CAFU,EAGjBS,MAHiB,CAGT,KAHS,CAApB;;AAKA,QAAMC,cAAc,GAAGX,KAAK,IAAIA,KAAK,CAACY,MAAf,GAAwBZ,KAAK,CAACY,MAAN,CAAaC,YAArC,GAAqD,EAA5E,CA9PC,CAgQD;AACA;AACA;AACA;AACA;;AACA,MAAIF,cAAc,IAAIN,WAAW,KAAKM,cAAtC,EAAsD;AACpD7F,sBAASC,IAAT,CAAcD,kBAASgG,WAAY;AACvC;AACA;AACA,KAHI;AAID,GA1QA,CA4QD;AACA;;;AACA,QAAMC,cAAc,GAAGtB,cAAc,IAAI,CAACH,eAA1C;;AACA,MAAIyB,cAAJ,EAAoB;AAClBjG,sBAASC,IAAT,CAAcD,kBAASgG,WAAY;AACvC;AACA;AACA;AACA,KAJI;AAKD;;AAED,MAAI,CAACH,cAAD,IAAmBN,WAAW,KAAKM,cAAnC,IAAqDI,cAAzD,EAAyE;AACvE,QAAI;AACF;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,UACEzG,OAAO,CAACC,GAAR,CAAYyG,gDAAZ,IACA1G,OAAO,CAACC,GAAR,CAAY0G,0CAFd,EAGE;AACA,cAAMC,WAAW,GAAG,CAClB;AACC,WAAEnC,cAAe,KAFA,EAGjB,GAAEA,cAAe,KAHA,CAApB;;AAMA,YAAIzE,OAAO,CAACC,GAAR,CAAYyG,gDAAhB,EAAkE;AAChE;AACA;AACAE,UAAAA,WAAW,CAAC/E,IAAZ,CAAkB,IAAG4C,cAAe,SAApC;AACAmC,UAAAA,WAAW,CAAC/E,IAAZ,CAAkB,GAAE4C,cAAe,WAAnC;AACAmC,UAAAA,WAAW,CAAC/E,IAAZ,CAAkB,IAAG4C,cAAe,kCAApC;AACD;;AAED,YAAIzE,OAAO,CAACC,GAAR,CAAY0G,0CAAhB,EAA4D;AAC1D;AACAC,UAAAA,WAAW,CAAC/E,IAAZ,CAAkB,IAAG4C,cAAe,UAApC;AACD;;AACD,cAAM,kBAAImC,WAAJ,CAAN;AACD,OAvBD,MAuBO;AACL;AACA;AACA,cAAM9B,iBAAGQ,MAAH,CAAUb,cAAV,EAA0Bc,KAA1B,CAAgC,MAAMT,iBAAGU,QAAH,CAAYf,cAAZ,CAAtC,CAAN;AACD;AACF,KAnFD,CAmFE,OAAOoC,CAAP,EAAU;AACVrG,wBAASsG,KAAT,CAAgB,gCAAhB,EAAiDD,CAAjD;AACD,KAtFsE,CAuFvE;AACA;;;AACAxF,iBAAMgB,QAAN,CAAe;AACbC,MAAAA,IAAI,EAAG,cADM;AAEbmE,MAAAA;AAFa,KAAf,EAzFuE,CA8FvE;AACA;;;AACA/F,6BAAU2D,aAAV,CAAyB,WAAzB,EAAqC;AACnC0C,MAAAA,kBAAkB,EAAE,CAAE,GAAF;AADe,KAArC;;AAGArG,6BAAU2D,aAAV,CAAyB,cAAzB,EAAwC;AACtC0C,MAAAA,kBAAkB,EAAE,CAAE,GAAF;AADkB,KAAxC;AAGD,GA7XA,CA+XD;;;AACA1F,eAAMgB,QAAN,CAAe;AACbC,IAAAA,IAAI,EAAG,qBADM;AAEbC,IAAAA,OAAO,EAAEwD;AAFI,GAAf,EAhYC,CAqYD;AACA;;;AACA,QAAMjB,iBAAGkC,SAAH,CAAavC,cAAb,CAAN,CAvYC,CAyYD;;AACA,QAAMK,iBAAGkC,SAAH,CAAc,GAAEtC,eAAgB,SAAhC,CAAN,CA1YC,CA4YD;;AACA,MAAI,QAA2B,GAA/B,EAAmC;AACjC,UAAM,4BAAe,cAAf,EAA8B;AAClCxD,MAAAA,UAAU,EAAE8B,QAAQ,CAACuB;AADa,KAA9B,CAAN;AAGD,GAJD,MAIO;AACL,UAAM,4BAAe,uBAAf,EAAuC;AAC3CrD,MAAAA,UAAU,EAAE8B,QAAQ,CAACuB;AADsB,KAAvC,CAAN;AAGD;;AAEDvB,EAAAA,QAAQ,CAACD,GAAT;AAEAC,EAAAA,QAAQ,GAAGxC,kBAASyC,aAAT,CAAwB,mBAAxB,EAA4C;AACrD/B,IAAAA;AADqD,GAA5C,CAAX;AAGA8B,EAAAA,QAAQ,CAACL,KAAT;AACA,QAAMsE,MAAM,GAAI,GAAEC,SAAU,kBAA5B;AACA,QAAMC,OAAO,GAAG1C,cAAhB;AACA,QAAM2C,UAAU,GAAI,GAAEF,SAAU,iCAAhC;;AACA,MAAI;AACF,UAAMpC,iBAAGuC,IAAH,CAAQJ,MAAR,EAAgBE,OAAhB,CAAN;AACA,UAAMrC,iBAAGuC,IAAH,CAAQD,UAAR,EAAqB,GAAED,OAAQ,wBAA/B,CAAN;;AACA,QAAI3D,eAAJ,EAAqB;AACnB,YAAMsB,iBAAGwC,aAAH,CAAkB,GAAE7C,cAAe,IAAGD,sBAAuB,EAA7D,CAAN;AACD,KAFD,MAEO;AACL,YAAMM,iBAAGwC,aAAH,CAAkB,GAAE7C,cAAe,OAAnC,CAAN;AACD,KAPC,CASF;AACA;AACA;;;AACA,UAAMK,iBAAGU,QAAH,CAAa,GAAEf,cAAe,YAA9B,CAAN;AACD,GAbD,CAaE,OAAO8C,GAAP,EAAY;AACZ/G,sBAASM,KAAT,CAAgB,qCAAhB,EAAsDyG,GAAtD;AACD,GA/aA,CAibD;AACA;;;AACA,QAAMC,UAAU,GAAG,CAACvH,GAAD,EAAMwH,MAAN,KAAqC;AACtD;AACA;AACA,QAAIxH,GAAG,KAAM,KAAT,IAAiBwH,MAAM,CAACC,OAAP,KAAmB,IAAxC,EAA8C,OAAOC,SAAP;AAE9C,UAAMC,OAAO,GAAGH,MAAM,CAAE,GAAExH,GAAI,MAAR,CAAtB,CALsD,CAOtD;AACA;;AACA,QAAI;AACF,UAAIA,GAAG,KAAM,SAAb,EAAuB;AACrB,cAAM4H,UAAU,GAAGC,cAAKC,IAAL,CAAUN,MAAM,CAACO,OAAjB,EAA2B,UAAS/H,GAAI,EAAxC,CAAnB;;AACA,eAAO,4BAAM,mCAAc4H,UAAd,CAAN,CAAP;AACD;AACF,KALD,CAKE,OAAOhB,CAAP,EAAU,CACV;AACD;;AAED,QAAIe,OAAO,IAAIK,KAAK,CAACC,OAAN,CAAcN,OAAd,CAAX,IAAqCA,OAAO,CAAC9F,MAAR,GAAiB,CAA1D,EAA6D;AAC3D,YAAM+F,UAAU,GAAGC,cAAKC,IAAL,CAAUN,MAAM,CAACO,OAAjB,EAA2B,UAAS/H,GAAI,EAAxC,CAAnB;;AACA,aAAO,4BAAM,mCAAc4H,UAAd,CAAN,CAAP;AACD;;AACD,WAAOF,SAAP;AACD,GAvBD;;AAyBA,QAAMQ,UAAU,GAAIV,MAAD,IAAyC,CAAC,CAACA,MAAM,CAACO,OAArE;;AACA,QAAMI,aAAa,GAAIX,MAAD,IACpB,CAAC,CAACA,MAAM,CAACO,OADX;;AAGA,QAAMK,UAAuC,GAAGhF,gBAAgB,CAC7DY,GAD6C,CACzCwD,MAAM,IAAI;AACb,WAAO;AACLtD,MAAAA,IAAI,EAAEsD,MAAM,CAACtD,IADR;AAEL6D,MAAAA,OAAO,EAAER,UAAU,CAAE,KAAF,EAAQC,MAAR,CAFd;AAGLa,MAAAA,OAAO,EAAEb,MAAM,CAACc;AAHX,KAAP;AAKD,GAP6C,EAQ7CC,MAR6C,CAQtCJ,aARsC,CAAhD;AAUA,QAAMK,cAAwC,GAAGpF,gBAAgB,CAC9DY,GAD8C,CAC1CwD,MAAM,IAAI;AACb,WAAO;AACLO,MAAAA,OAAO,EAAER,UAAU,CAAE,SAAF,EAAYC,MAAZ,CADd;AAELa,MAAAA,OAAO,EAAEb,MAAM,CAACc;AAFX,KAAP;AAID,GAN8C,EAO9CC,MAP8C,CAOvCL,UAPuC,CAAjD;AASA,QAAMO,sBAAsB,GAAGD,cAAc,CAC1CxE,GAD4B,CACxBwD,MAAM,IAAI;AACb;AACA,UAAMkB,kBAAkB,GAAGb,cAAKc,QAAL,CAAczB,OAAd,EAAuBM,MAAM,CAACO,OAA9B,CAA3B;;AACA,WAAQ;AACd,yBAAyB,4BAAMW,kBAAN,CAA0B;AACnD,iBAAiB3G,IAAI,CAACC,SAAL,CAAewF,MAAM,CAACa,OAAtB,CAA+B;AAChD,MAHM;AAID,GAR4B,EAS5BP,IAT4B,CAStB,GATsB,CAA/B;AAWA,QAAMc,gBAAgB,GAAI,qBAAoBH,sBAAuB,KAArE;AAEA,MAAII,YAAY,GAAI,EAApB;;AAEA,MAAI;AACFA,IAAAA,YAAY,GAAGhE,iBAAGiE,YAAH,CAAiB,GAAE5B,OAAQ,oBAA3B,EAAiD,OAAjD,CAAf;AACD,GAFD,CAEE,OAAOI,GAAP,EAAY;AACZ/G,sBAASM,KAAT,CAAgB,kBAAiBqG,OAAQ,oBAAzC,EAA8DI,GAA9D;AACD;;AAED,QAAMyB,kBAAkB,GAAGX,UAAU,CAClCpE,GADwB,CAEvBwD,MAAM,IACH;AACT,eAAeA,MAAM,CAACtD,IAAK;AAC3B,yBAAyBsD,MAAM,CAACO,OAAQ;AACxC,iBAAiBhG,IAAI,CAACC,SAAL,CAAewF,MAAM,CAACa,OAAtB,CAA+B;AAChD,MAP6B,EASxBP,IATwB,CASlB,GATkB,CAA3B;AAUAe,EAAAA,YAAY,GAAI,kBAAiBE,kBAAmB,MAAKF,YAAa,EAAtE;;AAEAhE,mBAAGmE,aAAH,CACG,GAAE9B,OAAQ,gCADb,EAEE0B,gBAFF,EAGG,OAHH;;AAKA/D,mBAAGmE,aAAH,CAAkB,GAAE9B,OAAQ,oBAA5B,EAAiD2B,YAAjD,EAAgE,OAAhE;;AAEA9F,EAAAA,QAAQ,CAACD,GAAT;AACA;AACF;AACA;AAEE;;AACAC,EAAAA,QAAQ,GAAGxC,kBAASyC,aAAT,CAAwB,gBAAxB,EAAyC;AAClD/B,IAAAA;AADkD,GAAzC,CAAX;AAGA8B,EAAAA,QAAQ,CAACL,KAAT;AACA,QAAM,4BAAe,gBAAf,EAAgC;AACpCzB,IAAAA,UAAU,EAAE8B,QAAQ,CAACuB;AADe,GAAhC,CAAN;AAGAvB,EAAAA,QAAQ,CAACD,GAAT,GAxhBC,CA0hBD;;AACArC,2BAAUC,kBAAV,CAA8B,iBAAgB+E,KAAK,CAACvC,MAAN,CAAa2C,aAAc,EAAzE,EA3hBC,CA6hBD;;;AACA,QAAM3D,UAAU,GAAG,CAAE,MAAF,EAAU,KAAV,EAAiB,MAAjB,EAAyB,OAAzB,EAAkC,OAAlC,CAAnB,CA9hBC,CA+hBD;AACA;;AACA,QAAM+G,UAAU,GAAG,MAAM,4BAAe,sBAAf,EAAsC;AAC7DC,IAAAA,OAAO,EAAG,8BADmD;AAE7DjI,IAAAA;AAF6D,GAAtC,CAAzB;;AAKAG,eAAMgB,QAAN,CAAe;AACbC,IAAAA,IAAI,EAAG,wBADM;AAEbC,IAAAA,OAAO,EAAEwB,gBAAEqF,WAAF,CAAc,CAACjH,UAAD,EAAa+G,UAAb,CAAd;AAFI,GAAf;;AAKA,QAAMG,UAAU,GAAGC,UAAU,CAACC,MAAX,EAAnB;AAEA,SAAO;AACLlI,IAAAA,KAAK,EAALA,YADK;AAELgI,IAAAA;AAFK,GAAP;AAID","sourcesContent":["import _ from \"lodash\"\nimport { slash, isCI } from \"gatsby-core-utils\"\nimport fs from \"fs-extra\"\nimport md5File from \"md5-file\"\nimport crypto from \"crypto\"\nimport del from \"del\"\nimport path from \"path\"\nimport telemetry from \"gatsby-telemetry\"\n\nimport apiRunnerNode from \"../utils/api-runner-node\"\nimport { getBrowsersList } from \"../utils/browserslist\"\nimport { Store, AnyAction } from \"redux\"\nimport * as WorkerPool from \"../utils/worker/pool\"\nimport { startPluginRunner } from \"../redux/plugin-runner\"\nimport { store, emitter } from \"../redux\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { removeStaleJobs } from \"../bootstrap/remove-stale-jobs\"\nimport { IPluginInfoOptions } from \"../bootstrap/load-plugins/types\"\nimport { IGatsbyState, IStateProgram } from \"../redux/types\"\nimport { IBuildContext } from \"./types\"\nimport { detectLmdbStore } from \"../datastore\"\nimport { loadConfig } from \"../bootstrap/load-config\"\nimport { loadPlugins } from \"../bootstrap/load-plugins\"\nimport type { InternalJob } from \"../utils/jobs/types\"\nimport { enableNodeMutationsDetection } from \"../utils/detect-node-mutations\"\nimport { resolveModule } from \"../utils/module-resolver\"\n\ninterface IPluginResolution {\n resolve: string\n options: IPluginInfoOptions\n}\n\ninterface IPluginResolutionSSR extends IPluginResolution {\n name: string\n}\n\n// If the env variable GATSBY_EXPERIMENTAL_FAST_DEV is set, enable\n// all DEV experimental changes (but only during development & not on CI).\nif (\n process.env.gatsby_executing_command === `develop` &&\n process.env.GATSBY_EXPERIMENTAL_FAST_DEV &&\n !isCI() &&\n // skip FAST_DEV handling in workers, all env vars will be handle\n // by main process already and passed to worker\n !process.env.GATSBY_WORKER_POOL_WORKER\n) {\n process.env.GATSBY_EXPERIMENTAL_DEV_SSR = `true`\n process.env.PRESERVE_FILE_DOWNLOAD_CACHE = `true`\n process.env.PRESERVE_WEBPACK_CACHE = `true`\n\n reporter.info(`\nThree fast dev experiments are enabled: Development SSR, preserving file download cache and preserving webpack cache.\n\nPlease give feedback on their respective umbrella issues!\n\n- https://gatsby.dev/dev-ssr-feedback\n- https://gatsby.dev/cache-clearing-feedback\n `)\n\n telemetry.trackFeatureIsUsed(`FastDev`)\n}\n\n// Show stack trace on unhandled promises.\nprocess.on(`unhandledRejection`, (reason: unknown) => {\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33636\n reporter.panic((reason as Error) || `Unhandled rejection`)\n})\n\n// Override console.log to add the source file + line number.\n// Useful for debugging if you lose a console.log somewhere.\n// Otherwise leave commented out.\n// require(`../bootstrap/log-line-function`)\n\nexport async function initialize({\n program: args,\n parentSpan,\n}: IBuildContext): Promise<{\n store: Store<IGatsbyState, AnyAction>\n workerPool: WorkerPool.GatsbyWorkerPool\n}> {\n if (process.env.GATSBY_DISABLE_CACHE_PERSISTENCE) {\n reporter.info(\n `GATSBY_DISABLE_CACHE_PERSISTENCE is enabled. Cache won't be persisted. Next builds will not be able to reuse any work done by current session.`\n )\n telemetry.trackFeatureIsUsed(`DisableCachePersistence`)\n }\n if (!args) {\n reporter.panic(`Missing program args`)\n }\n\n /* Time for a little story...\n * When running `gatsby develop`, the globally installed gatsby-cli starts\n * and sets up a Redux store (which is where logs are now stored). When gatsby\n * finds your project's locally installed gatsby-cli package in node_modules,\n * it switches over. This instance will have a separate redux store. We need to\n * ensure that the correct store is used which is why we call setStore\n * (/packages/gatsby-cli/src/reporter/redux/index.js)\n *\n * This function\n * - copies over the logs from the global gatsby-cli to the local one\n * - sets the store to the local one (so that further actions dispatched by\n * the global gatsby-cli are handled by the local one)\n */\n if (args.setStore) {\n args.setStore(store)\n }\n\n if (reporter._registerAdditionalDiagnosticOutputHandler) {\n reporter._registerAdditionalDiagnosticOutputHandler(\n function logPendingJobs(): string {\n const outputs: Array<InternalJob> = []\n\n for (const [, { job }] of store.getState().jobsV2.incomplete) {\n outputs.push(job)\n if (outputs.length >= 5) {\n // 5 not finished jobs should be enough to track down issues\n // this is just limiting output \"spam\"\n break\n }\n }\n\n return outputs.length\n ? `Unfinished jobs (showing ${outputs.length} of ${\n store.getState().jobsV2.incomplete.size\n } jobs total):\\n\\n` + JSON.stringify(outputs, null, 2)\n : ``\n }\n )\n }\n\n const directory = slash(args.directory)\n\n const program: IStateProgram = {\n ...args,\n extensions: [],\n browserslist: getBrowsersList(directory),\n // Fix program directory path for windows env.\n directory,\n }\n\n store.dispatch({\n type: `SET_PROGRAM`,\n payload: program,\n })\n\n let activityForJobs\n\n emitter.on(`CREATE_JOB`, () => {\n if (!activityForJobs) {\n activityForJobs = reporter.phantomActivity(`Running jobs`)\n activityForJobs.start()\n }\n })\n\n const onEndJob = (): void => {\n if (activityForJobs && store.getState().jobs.active.length === 0) {\n activityForJobs.end()\n activityForJobs = null\n }\n }\n\n emitter.on(`END_JOB`, onEndJob)\n\n // Load gatsby config\n let activity = reporter.activityTimer(`load gatsby config`, {\n parentSpan,\n })\n activity.start()\n const siteDirectory = program.directory\n const config = await loadConfig({\n siteDirectory,\n processFlags: true,\n })\n activity.end()\n\n // Load plugins\n activity = reporter.activityTimer(`load plugins`, {\n parentSpan,\n })\n activity.start()\n const flattenedPlugins = await loadPlugins(config, siteDirectory)\n activity.end()\n\n // TODO: figure out proper way of disabling loading indicator\n // for now GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR=false gatsby develop\n // will work, but we don't want to force users into using env vars\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n !process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR\n ) {\n // if query on demand is enabled and GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR was not set at all\n // enable loading indicator\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR = `true`\n }\n const lmdbStoreIsUsed = detectLmdbStore()\n\n if (process.env.GATSBY_DETECT_NODE_MUTATIONS) {\n enableNodeMutationsDetection()\n }\n\n if (config && config.polyfill) {\n reporter.warn(\n `Support for custom Promise polyfills has been removed in Gatsby v2. We only support Babel 7's new automatic polyfilling behavior.`\n )\n }\n\n if (process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n if (process.env.gatsby_executing_command !== `develop`) {\n // we don't want to ever have this flag enabled for anything than develop\n // in case someone have this env var globally set\n delete process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND\n } else if (isCI() && !process.env.CYPRESS_SUPPORT) {\n delete process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND\n reporter.verbose(\n `Experimental Query on Demand feature is not available in CI environment. Continuing with eager query running.`\n )\n }\n }\n\n // run stale jobs\n // @ts-ignore we'll need to fix redux typings https://redux.js.org/usage/usage-with-typescript\n store.dispatch(removeStaleJobs(store.getState().jobsV2))\n\n // Multiple occurrences of the same name-version-pair can occur,\n // so we report an array of unique pairs\n const pluginsStr = _.uniq(flattenedPlugins.map(p => `${p.name}@${p.version}`))\n telemetry.decorateEvent(`BUILD_END`, {\n plugins: pluginsStr,\n })\n\n telemetry.decorateEvent(`DEVELOP_STOP`, {\n plugins: pluginsStr,\n })\n\n // Start plugin runner which listens to the store\n // and invokes Gatsby API based on actions.\n startPluginRunner()\n\n // onPreInit\n activity = reporter.activityTimer(`onPreInit`, {\n parentSpan,\n })\n activity.start()\n await apiRunnerNode(`onPreInit`, { parentSpan: activity.span })\n activity.end()\n\n const lmdbCacheDirectoryName = `caches-lmdb`\n\n const cacheDirectory = `${program.directory}/.cache`\n const publicDirectory = `${program.directory}/public`\n const workerCacheDirectory = `${program.directory}/.cache/worker`\n const lmdbCacheDirectory = `${program.directory}/.cache/${lmdbCacheDirectoryName}`\n\n const cacheJsonDirExists = fs.existsSync(`${cacheDirectory}/json`)\n const publicDirExists = fs.existsSync(publicDirectory)\n const workerCacheDirExists = fs.existsSync(workerCacheDirectory)\n const lmdbCacheDirExists = fs.existsSync(lmdbCacheDirectory)\n\n // check the cache file that is used by the current configuration\n const cacheDirExists = lmdbStoreIsUsed\n ? lmdbCacheDirExists\n : cacheJsonDirExists\n\n // For builds in case public dir exists, but cache doesn't, we need to clean up potentially stale\n // artifacts from previous builds (due to cache not being available, we can't rely on tracking of artifacts)\n if (\n process.env.NODE_ENV === `production` &&\n publicDirExists &&\n !cacheDirExists\n ) {\n activity = reporter.activityTimer(\n `delete html and css files from previous builds`,\n {\n parentSpan,\n }\n )\n activity.start()\n await del([\n `public/**/*.{html,css}`,\n `!public/page-data/**/*`,\n `!public/static`,\n `!public/static/**/*.{html,css}`,\n ])\n activity.end()\n }\n\n // When the main process and workers communicate they save parts of their redux state to .cache/worker\n // We should clean this directory to remove stale files that a worker might accidentally reuse then\n if (\n workerCacheDirExists &&\n process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING\n ) {\n activity = reporter.activityTimer(\n `delete worker cache from previous builds`,\n {\n parentSpan,\n }\n )\n activity.start()\n await fs\n .remove(workerCacheDirectory)\n .catch(() => fs.emptyDir(workerCacheDirectory))\n activity.end()\n }\n\n activity = reporter.activityTimer(`initialize cache`, {\n parentSpan,\n })\n activity.start()\n // Check if any plugins have been updated since our last run. If so\n // we delete the cache is there's likely been changes\n // since the previous run.\n //\n // We do this by creating a hash of all the version numbers of installed\n // plugins, the site's package.json, gatsby-config.js, and gatsby-node.js.\n // The last, gatsby-node.js, is important as many gatsby sites put important\n // logic in there e.g. generating slugs for custom pages.\n const pluginVersions = flattenedPlugins.map(p => p.version)\n\n const state = store.getState()\n\n const hashes: any = await Promise.all([\n md5File(`package.json`),\n md5File(`${program.directory}/gatsby-config.js`).catch(() => {}), // ignore as this file isn't required),\n md5File(`${program.directory}/gatsby-node.js`).catch(() => {}), // ignore as this file isn't required),\n { trailingSlash: state.config.trailingSlash },\n ])\n\n const pluginsHash = crypto\n .createHash(`md5`)\n .update(JSON.stringify(pluginVersions.concat(hashes)))\n .digest(`hex`)\n\n const oldPluginsHash = state && state.status ? state.status.PLUGINS_HASH : ``\n\n // Check if anything has changed. If it has, delete the site's .cache\n // directory and tell reducers to empty themselves.\n //\n // Also if the hash isn't there, then delete things just in case something\n // is weird.\n if (oldPluginsHash && pluginsHash !== oldPluginsHash) {\n reporter.info(reporter.stripIndent`\n One or more of your plugins have changed since the last time you ran Gatsby. As\n a precaution, we're deleting your site's cache to ensure there's no stale data.\n `)\n }\n\n // .cache directory exists in develop at this point\n // so checking for .cache/json or .cache/caches-lmdb as a heuristic (could be any expected file)\n const cacheIsCorrupt = cacheDirExists && !publicDirExists\n if (cacheIsCorrupt) {\n reporter.info(reporter.stripIndent`\n We've detected that the Gatsby cache is incomplete (the .cache directory exists\n but the public directory does not). As a precaution, we're deleting your site's\n cache to ensure there's no stale data.\n `)\n }\n\n if (!oldPluginsHash || pluginsHash !== oldPluginsHash || cacheIsCorrupt) {\n try {\n // Comment out inviet until we can test perf impact\n //\n // let sourceFileSystemVersion = flattenedPlugins.find(\n // plugin => plugin.name === `gatsby-source-filesystem`\n // )?.version\n\n // // The site might be using a plugin which uses \"createRemoteFileNode\" but\n // // doesn't have gatsby-source-filesystem in their gatsby-config.js. So lets\n // // also try requiring it.\n // if (!sourceFileSystemVersion) {\n // try {\n // sourceFileSystemVersion = require(`gatsby-source-filesystem/package.json`)\n // ?.version\n // } catch {\n // // ignore require errors\n // }\n // }\n // } else if (\n // sourceFileSystemVersion &&\n // semver.lt(sourceFileSystemVersion, `2.9.0`)\n // ) {\n // // If the site has more than 50 downloaded files in it, tell them\n // // how to save time.\n // try {\n // // Divide by two as the directory as both cache files + the actual downloaded files so\n // // two results / downloaded file.\n // const filesCount =\n // (await fs.readdir(`.cache/caches/gatsby-source-filesystem`))\n // .length / 2\n // if (filesCount > 50) {\n // reporter.info(stripIndent`\\n\\n\n\n // Your local development experience is about to get better, faster, and stronger!\n\n // Your friendly Gatsby maintainers detected your site downloads quite a few files and that we're about to delete all ${Math.round(\n // filesCount\n // )} of them 😅. We're working right now to make our caching smarter which means we won't delete your downloaded files any more.\n\n // If you're interested in trialing the new caching behavior *today* — which should make your local development environment faster, go ahead and enable the PRESERVE_FILE_DOWNLOAD_CACHE flag and run your develop server again.\n\n // To do so, add to your gatsby-config.js:\n\n // flags: {\n // preserve_file_download_cache: true,\n // }\n\n // visit the umbrella issue to learn more: https://github.com/gatsbyjs/gatsby/discussions/28331\n // `)\n // }\n // } catch {\n // // ignore errors (mostly will just be directory not found).\n // }\n // }\n\n if (\n process.env.GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE ||\n process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE\n ) {\n const deleteGlobs = [\n // By default delete all files & subdirectories\n `${cacheDirectory}/**`,\n `${cacheDirectory}/*/`,\n ]\n\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE) {\n // Stop the caches directory from being deleted, add all sub directories,\n // but remove gatsby-source-filesystem\n deleteGlobs.push(`!${cacheDirectory}/caches`)\n deleteGlobs.push(`${cacheDirectory}/caches/*`)\n deleteGlobs.push(`!${cacheDirectory}/caches/gatsby-source-filesystem`)\n }\n\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {\n // Add webpack\n deleteGlobs.push(`!${cacheDirectory}/webpack`)\n }\n await del(deleteGlobs)\n } else {\n // Attempt to empty dir if remove fails,\n // like when directory is mount point\n await fs.remove(cacheDirectory).catch(() => fs.emptyDir(cacheDirectory))\n }\n } catch (e) {\n reporter.error(`Failed to remove .cache files.`, e)\n }\n // Tell reducers to delete their data (the store will already have\n // been loaded from the file system cache).\n store.dispatch({\n type: `DELETE_CACHE`,\n cacheIsCorrupt,\n })\n\n // in future this should show which plugin's caches are purged\n // possibly should also have which plugins had caches\n telemetry.decorateEvent(`BUILD_END`, {\n pluginCachesPurged: [`*`],\n })\n telemetry.decorateEvent(`DEVELOP_STOP`, {\n pluginCachesPurged: [`*`],\n })\n }\n\n // Update the store with the new plugins hash.\n store.dispatch({\n type: `UPDATE_PLUGINS_HASH`,\n payload: pluginsHash,\n })\n\n // Now that we know the .cache directory is safe, initialize the cache\n // directory.\n await fs.ensureDir(cacheDirectory)\n\n // Ensure the public/static directory\n await fs.ensureDir(`${publicDirectory}/static`)\n\n // Init plugins once cache is initialized\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n await apiRunnerNode(`onPluginInit`, {\n parentSpan: activity.span,\n })\n } else {\n await apiRunnerNode(`unstable_onPluginInit`, {\n parentSpan: activity.span,\n })\n }\n\n activity.end()\n\n activity = reporter.activityTimer(`copy gatsby files`, {\n parentSpan,\n })\n activity.start()\n const srcDir = `${__dirname}/../../cache-dir`\n const siteDir = cacheDirectory\n const tryRequire = `${__dirname}/../utils/test-require-error.js`\n try {\n await fs.copy(srcDir, siteDir)\n await fs.copy(tryRequire, `${siteDir}/test-require-error.js`)\n if (lmdbStoreIsUsed) {\n await fs.ensureDirSync(`${cacheDirectory}/${lmdbCacheDirectoryName}`)\n } else {\n await fs.ensureDirSync(`${cacheDirectory}/json`)\n }\n\n // Ensure .cache/fragments exists and is empty. We want fragments to be\n // added on every run in response to data as fragments can only be added if\n // the data used to create the schema they're dependent on is available.\n await fs.emptyDir(`${cacheDirectory}/fragments`)\n } catch (err) {\n reporter.panic(`Unable to copy site files to .cache`, err)\n }\n\n // Find plugins which implement gatsby-browser and gatsby-ssr and write\n // out api-runners for them.\n const hasAPIFile = (env, plugin): string | undefined => {\n // The plugin loader has disabled SSR APIs for this plugin. Usually due to\n // multiple implementations of an API that can only be implemented once\n if (env === `ssr` && plugin.skipSSR === true) return undefined\n\n const envAPIs = plugin[`${env}APIs`]\n\n // Always include gatsby-browser.js files if they exist as they're\n // a handy place to include global styles and other global imports.\n try {\n if (env === `browser`) {\n const modulePath = path.join(plugin.resolve, `gatsby-${env}`)\n return slash(resolveModule(modulePath) as string)\n }\n } catch (e) {\n // ignore\n }\n\n if (envAPIs && Array.isArray(envAPIs) && envAPIs.length > 0) {\n const modulePath = path.join(plugin.resolve, `gatsby-${env}`)\n return slash(resolveModule(modulePath) as string)\n }\n return undefined\n }\n\n const isResolved = (plugin): plugin is IPluginResolution => !!plugin.resolve\n const isResolvedSSR = (plugin): plugin is IPluginResolutionSSR =>\n !!plugin.resolve\n\n const ssrPlugins: Array<IPluginResolutionSSR> = flattenedPlugins\n .map(plugin => {\n return {\n name: plugin.name,\n resolve: hasAPIFile(`ssr`, plugin),\n options: plugin.pluginOptions,\n }\n })\n .filter(isResolvedSSR)\n\n const browserPlugins: Array<IPluginResolution> = flattenedPlugins\n .map(plugin => {\n return {\n resolve: hasAPIFile(`browser`, plugin),\n options: plugin.pluginOptions,\n }\n })\n .filter(isResolved)\n\n const browserPluginsRequires = browserPlugins\n .map(plugin => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativePluginPath = path.relative(siteDir, plugin.resolve)\n return `{\n plugin: require('${slash(relativePluginPath)}'),\n options: ${JSON.stringify(plugin.options)},\n }`\n })\n .join(`,`)\n\n const browserAPIRunner = `module.exports = [${browserPluginsRequires}]\\n`\n\n let sSRAPIRunner = ``\n\n try {\n sSRAPIRunner = fs.readFileSync(`${siteDir}/api-runner-ssr.js`, `utf-8`)\n } catch (err) {\n reporter.panic(`Failed to read ${siteDir}/api-runner-ssr.js`, err)\n }\n\n const ssrPluginsRequires = ssrPlugins\n .map(\n plugin =>\n `{\n name: '${plugin.name}',\n plugin: require('${plugin.resolve}'),\n options: ${JSON.stringify(plugin.options)},\n }`\n )\n .join(`,`)\n sSRAPIRunner = `var plugins = [${ssrPluginsRequires}]\\n${sSRAPIRunner}`\n\n fs.writeFileSync(\n `${siteDir}/api-runner-browser-plugins.js`,\n browserAPIRunner,\n `utf-8`\n )\n fs.writeFileSync(`${siteDir}/api-runner-ssr.js`, sSRAPIRunner, `utf-8`)\n\n activity.end()\n /**\n * Start the main bootstrap processes.\n */\n\n // onPreBootstrap\n activity = reporter.activityTimer(`onPreBootstrap`, {\n parentSpan,\n })\n activity.start()\n await apiRunnerNode(`onPreBootstrap`, {\n parentSpan: activity.span,\n })\n activity.end()\n\n // Track trailing slash option used in config\n telemetry.trackFeatureIsUsed(`trailingSlash:${state.config.trailingSlash}`)\n\n // Collect resolvable extensions and attach to program.\n const extensions = [`.mjs`, `.js`, `.jsx`, `.wasm`, `.json`]\n // Change to this being an action and plugins implement `onPreBootstrap`\n // for adding extensions.\n const apiResults = await apiRunnerNode(`resolvableExtensions`, {\n traceId: `initial-resolvableExtensions`,\n parentSpan,\n })\n\n store.dispatch({\n type: `SET_PROGRAM_EXTENSIONS`,\n payload: _.flattenDeep([extensions, apiResults]),\n })\n\n const workerPool = WorkerPool.create()\n\n return {\n store,\n workerPool,\n }\n}\n"],"file":"initialize.js"}
1
+ {"version":3,"sources":["../../src/services/initialize.ts"],"names":["process","env","gatsby_executing_command","GATSBY_EXPERIMENTAL_FAST_DEV","GATSBY_WORKER_POOL_WORKER","GATSBY_EXPERIMENTAL_DEV_SSR","PRESERVE_FILE_DOWNLOAD_CACHE","PRESERVE_WEBPACK_CACHE","reporter","info","telemetry","trackFeatureIsUsed","on","reason","panic","initialize","program","args","parentSpan","GATSBY_DISABLE_CACHE_PERSISTENCE","setStore","store","_registerAdditionalDiagnosticOutputHandler","logPendingJobs","outputs","job","getState","jobsV2","incomplete","push","length","size","JSON","stringify","directory","extensions","browserslist","dispatch","type","payload","activityForJobs","emitter","phantomActivity","start","onEndJob","jobs","active","end","activity","activityTimer","siteDirectory","config","processFlags","flattenedPlugins","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR","lmdbStoreIsUsed","GATSBY_DETECT_NODE_MUTATIONS","polyfill","warn","CYPRESS_SUPPORT","verbose","pluginsStr","_","uniq","map","p","name","version","decorateEvent","plugins","span","lmdbCacheDirectoryName","cacheDirectory","publicDirectory","workerCacheDirectory","lmdbCacheDirectory","cacheJsonDirExists","fs","existsSync","publicDirExists","workerCacheDirExists","lmdbCacheDirExists","cacheDirExists","NODE_ENV","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","remove","catch","emptyDir","pluginVersions","state","hashes","Promise","all","trailingSlash","pluginsHash","crypto","createHash","update","concat","digest","oldPluginsHash","status","PLUGINS_HASH","stripIndent","cacheIsCorrupt","deleteGlobs","GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE","GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE","e","error","pluginCachesPurged","ensureDir","srcDir","__dirname","siteDir","tryRequire","copy","ensureDirSync","err","hasAPIFile","plugin","skipSSR","undefined","envAPIs","modulePath","path","join","resolve","Array","isArray","isResolved","isResolvedSSR","ssrPlugins","options","pluginOptions","filter","browserPlugins","browserPluginsRequires","relativePluginPath","relative","browserAPIRunner","sSRAPIRunner","readFileSync","ssrPluginsRequires","writeFileSync","apiResults","traceId","flattenDeep","workerPool","WorkerPool","create"],"mappings":"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","sourcesContent":["import _ from \"lodash\"\nimport { slash, isCI } from \"gatsby-core-utils\"\nimport { releaseAllMutexes } from \"gatsby-core-utils/mutex\"\nimport fs from \"fs-extra\"\nimport md5File from \"md5-file\"\nimport crypto from \"crypto\"\nimport del from \"del\"\nimport path from \"path\"\nimport telemetry from \"gatsby-telemetry\"\n\nimport apiRunnerNode from \"../utils/api-runner-node\"\nimport { getBrowsersList } from \"../utils/browserslist\"\nimport { Store, AnyAction } from \"redux\"\nimport * as WorkerPool from \"../utils/worker/pool\"\nimport { startPluginRunner } from \"../redux/plugin-runner\"\nimport { store, emitter } from \"../redux\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { removeStaleJobs } from \"../bootstrap/remove-stale-jobs\"\nimport { IPluginInfoOptions } from \"../bootstrap/load-plugins/types\"\nimport { IGatsbyState, IStateProgram } from \"../redux/types\"\nimport { IBuildContext } from \"./types\"\nimport { detectLmdbStore } from \"../datastore\"\nimport { loadConfig } from \"../bootstrap/load-config\"\nimport { loadPlugins } from \"../bootstrap/load-plugins\"\nimport type { InternalJob } from \"../utils/jobs/types\"\nimport { enableNodeMutationsDetection } from \"../utils/detect-node-mutations\"\nimport { resolveModule } from \"../utils/module-resolver\"\n\ninterface IPluginResolution {\n resolve: string\n options: IPluginInfoOptions\n}\n\ninterface IPluginResolutionSSR extends IPluginResolution {\n name: string\n}\n\n// If the env variable GATSBY_EXPERIMENTAL_FAST_DEV is set, enable\n// all DEV experimental changes (but only during development & not on CI).\nif (\n process.env.gatsby_executing_command === `develop` &&\n process.env.GATSBY_EXPERIMENTAL_FAST_DEV &&\n !isCI() &&\n // skip FAST_DEV handling in workers, all env vars will be handle\n // by main process already and passed to worker\n !process.env.GATSBY_WORKER_POOL_WORKER\n) {\n process.env.GATSBY_EXPERIMENTAL_DEV_SSR = `true`\n process.env.PRESERVE_FILE_DOWNLOAD_CACHE = `true`\n process.env.PRESERVE_WEBPACK_CACHE = `true`\n\n reporter.info(`\nThree fast dev experiments are enabled: Development SSR, preserving file download cache and preserving webpack cache.\n\nPlease give feedback on their respective umbrella issues!\n\n- https://gatsby.dev/dev-ssr-feedback\n- https://gatsby.dev/cache-clearing-feedback\n `)\n\n telemetry.trackFeatureIsUsed(`FastDev`)\n}\n\n// Show stack trace on unhandled promises.\nprocess.on(`unhandledRejection`, (reason: unknown) => {\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/33636\n reporter.panic((reason as Error) || `Unhandled rejection`)\n})\n\n// Override console.log to add the source file + line number.\n// Useful for debugging if you lose a console.log somewhere.\n// Otherwise leave commented out.\n// require(`../bootstrap/log-line-function`)\n\nexport async function initialize({\n program: args,\n parentSpan,\n}: IBuildContext): Promise<{\n store: Store<IGatsbyState, AnyAction>\n workerPool: WorkerPool.GatsbyWorkerPool\n}> {\n if (process.env.GATSBY_DISABLE_CACHE_PERSISTENCE) {\n reporter.info(\n `GATSBY_DISABLE_CACHE_PERSISTENCE is enabled. Cache won't be persisted. Next builds will not be able to reuse any work done by current session.`\n )\n telemetry.trackFeatureIsUsed(`DisableCachePersistence`)\n }\n if (!args) {\n reporter.panic(`Missing program args`)\n }\n\n /* Time for a little story...\n * When running `gatsby develop`, the globally installed gatsby-cli starts\n * and sets up a Redux store (which is where logs are now stored). When gatsby\n * finds your project's locally installed gatsby-cli package in node_modules,\n * it switches over. This instance will have a separate redux store. We need to\n * ensure that the correct store is used which is why we call setStore\n * (/packages/gatsby-cli/src/reporter/redux/index.js)\n *\n * This function\n * - copies over the logs from the global gatsby-cli to the local one\n * - sets the store to the local one (so that further actions dispatched by\n * the global gatsby-cli are handled by the local one)\n */\n if (args.setStore) {\n args.setStore(store)\n }\n\n if (reporter._registerAdditionalDiagnosticOutputHandler) {\n reporter._registerAdditionalDiagnosticOutputHandler(\n function logPendingJobs(): string {\n const outputs: Array<InternalJob> = []\n\n for (const [, { job }] of store.getState().jobsV2.incomplete) {\n outputs.push(job)\n if (outputs.length >= 5) {\n // 5 not finished jobs should be enough to track down issues\n // this is just limiting output \"spam\"\n break\n }\n }\n\n return outputs.length\n ? `Unfinished jobs (showing ${outputs.length} of ${\n store.getState().jobsV2.incomplete.size\n } jobs total):\\n\\n` + JSON.stringify(outputs, null, 2)\n : ``\n }\n )\n }\n\n const directory = slash(args.directory)\n\n const program: IStateProgram = {\n ...args,\n extensions: [],\n browserslist: getBrowsersList(directory),\n // Fix program directory path for windows env.\n directory,\n }\n\n store.dispatch({\n type: `SET_PROGRAM`,\n payload: program,\n })\n\n let activityForJobs\n\n emitter.on(`CREATE_JOB`, () => {\n if (!activityForJobs) {\n activityForJobs = reporter.phantomActivity(`Running jobs`)\n activityForJobs.start()\n }\n })\n\n const onEndJob = (): void => {\n if (activityForJobs && store.getState().jobs.active.length === 0) {\n activityForJobs.end()\n activityForJobs = null\n }\n }\n\n emitter.on(`END_JOB`, onEndJob)\n\n // Load gatsby config\n let activity = reporter.activityTimer(`load gatsby config`, {\n parentSpan,\n })\n activity.start()\n const siteDirectory = program.directory\n const config = await loadConfig({\n siteDirectory,\n processFlags: true,\n })\n activity.end()\n\n // Load plugins\n activity = reporter.activityTimer(`load plugins`, {\n parentSpan,\n })\n activity.start()\n const flattenedPlugins = await loadPlugins(config, siteDirectory)\n activity.end()\n\n // TODO: figure out proper way of disabling loading indicator\n // for now GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR=false gatsby develop\n // will work, but we don't want to force users into using env vars\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n !process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR\n ) {\n // if query on demand is enabled and GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR was not set at all\n // enable loading indicator\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR = `true`\n }\n const lmdbStoreIsUsed = detectLmdbStore()\n\n if (process.env.GATSBY_DETECT_NODE_MUTATIONS) {\n enableNodeMutationsDetection()\n }\n\n if (config && config.polyfill) {\n reporter.warn(\n `Support for custom Promise polyfills has been removed in Gatsby v2. We only support Babel 7's new automatic polyfilling behavior.`\n )\n }\n\n if (process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n if (process.env.gatsby_executing_command !== `develop`) {\n // we don't want to ever have this flag enabled for anything than develop\n // in case someone have this env var globally set\n delete process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND\n } else if (isCI() && !process.env.CYPRESS_SUPPORT) {\n delete process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND\n reporter.verbose(\n `Experimental Query on Demand feature is not available in CI environment. Continuing with eager query running.`\n )\n }\n }\n\n // run stale jobs\n // @ts-ignore we'll need to fix redux typings https://redux.js.org/usage/usage-with-typescript\n store.dispatch(removeStaleJobs(store.getState().jobsV2))\n\n // Multiple occurrences of the same name-version-pair can occur,\n // so we report an array of unique pairs\n const pluginsStr = _.uniq(flattenedPlugins.map(p => `${p.name}@${p.version}`))\n telemetry.decorateEvent(`BUILD_END`, {\n plugins: pluginsStr,\n })\n\n telemetry.decorateEvent(`DEVELOP_STOP`, {\n plugins: pluginsStr,\n })\n\n // Start plugin runner which listens to the store\n // and invokes Gatsby API based on actions.\n startPluginRunner()\n\n // onPreInit\n activity = reporter.activityTimer(`onPreInit`, {\n parentSpan,\n })\n activity.start()\n await apiRunnerNode(`onPreInit`, { parentSpan: activity.span })\n activity.end()\n\n const lmdbCacheDirectoryName = `caches-lmdb`\n\n const cacheDirectory = `${program.directory}/.cache`\n const publicDirectory = `${program.directory}/public`\n const workerCacheDirectory = `${program.directory}/.cache/worker`\n const lmdbCacheDirectory = `${program.directory}/.cache/${lmdbCacheDirectoryName}`\n\n const cacheJsonDirExists = fs.existsSync(`${cacheDirectory}/json`)\n const publicDirExists = fs.existsSync(publicDirectory)\n const workerCacheDirExists = fs.existsSync(workerCacheDirectory)\n const lmdbCacheDirExists = fs.existsSync(lmdbCacheDirectory)\n\n // check the cache file that is used by the current configuration\n const cacheDirExists = lmdbStoreIsUsed\n ? lmdbCacheDirExists\n : cacheJsonDirExists\n\n // For builds in case public dir exists, but cache doesn't, we need to clean up potentially stale\n // artifacts from previous builds (due to cache not being available, we can't rely on tracking of artifacts)\n if (\n process.env.NODE_ENV === `production` &&\n publicDirExists &&\n !cacheDirExists\n ) {\n activity = reporter.activityTimer(\n `delete html and css files from previous builds`,\n {\n parentSpan,\n }\n )\n activity.start()\n await del([\n `public/**/*.{html,css}`,\n `!public/page-data/**/*`,\n `!public/static`,\n `!public/static/**/*.{html,css}`,\n ])\n activity.end()\n }\n\n // When the main process and workers communicate they save parts of their redux state to .cache/worker\n // We should clean this directory to remove stale files that a worker might accidentally reuse then\n if (\n workerCacheDirExists &&\n process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING\n ) {\n activity = reporter.activityTimer(\n `delete worker cache from previous builds`,\n {\n parentSpan,\n }\n )\n activity.start()\n await fs\n .remove(workerCacheDirectory)\n .catch(() => fs.emptyDir(workerCacheDirectory))\n activity.end()\n }\n\n activity = reporter.activityTimer(`initialize cache`, {\n parentSpan,\n })\n activity.start()\n // Check if any plugins have been updated since our last run. If so\n // we delete the cache is there's likely been changes\n // since the previous run.\n //\n // We do this by creating a hash of all the version numbers of installed\n // plugins, the site's package.json, gatsby-config.js, and gatsby-node.js.\n // The last, gatsby-node.js, is important as many gatsby sites put important\n // logic in there e.g. generating slugs for custom pages.\n const pluginVersions = flattenedPlugins.map(p => p.version)\n\n const state = store.getState()\n\n const hashes: any = await Promise.all([\n md5File(`package.json`),\n md5File(`${program.directory}/gatsby-config.js`).catch(() => {}), // ignore as this file isn't required),\n md5File(`${program.directory}/gatsby-node.js`).catch(() => {}), // ignore as this file isn't required),\n { trailingSlash: state.config.trailingSlash },\n ])\n\n const pluginsHash = crypto\n .createHash(`md5`)\n .update(JSON.stringify(pluginVersions.concat(hashes)))\n .digest(`hex`)\n\n const oldPluginsHash = state && state.status ? state.status.PLUGINS_HASH : ``\n\n // Check if anything has changed. If it has, delete the site's .cache\n // directory and tell reducers to empty themselves.\n //\n // Also if the hash isn't there, then delete things just in case something\n // is weird.\n if (oldPluginsHash && pluginsHash !== oldPluginsHash) {\n reporter.info(reporter.stripIndent`\n One or more of your plugins have changed since the last time you ran Gatsby. As\n a precaution, we're deleting your site's cache to ensure there's no stale data.\n `)\n }\n\n // .cache directory exists in develop at this point\n // so checking for .cache/json or .cache/caches-lmdb as a heuristic (could be any expected file)\n const cacheIsCorrupt = cacheDirExists && !publicDirExists\n if (cacheIsCorrupt) {\n reporter.info(reporter.stripIndent`\n We've detected that the Gatsby cache is incomplete (the .cache directory exists\n but the public directory does not). As a precaution, we're deleting your site's\n cache to ensure there's no stale data.\n `)\n }\n\n if (!oldPluginsHash || pluginsHash !== oldPluginsHash || cacheIsCorrupt) {\n try {\n // Comment out inviet until we can test perf impact\n //\n // let sourceFileSystemVersion = flattenedPlugins.find(\n // plugin => plugin.name === `gatsby-source-filesystem`\n // )?.version\n\n // // The site might be using a plugin which uses \"createRemoteFileNode\" but\n // // doesn't have gatsby-source-filesystem in their gatsby-config.js. So lets\n // // also try requiring it.\n // if (!sourceFileSystemVersion) {\n // try {\n // sourceFileSystemVersion = require(`gatsby-source-filesystem/package.json`)\n // ?.version\n // } catch {\n // // ignore require errors\n // }\n // }\n // } else if (\n // sourceFileSystemVersion &&\n // semver.lt(sourceFileSystemVersion, `2.9.0`)\n // ) {\n // // If the site has more than 50 downloaded files in it, tell them\n // // how to save time.\n // try {\n // // Divide by two as the directory as both cache files + the actual downloaded files so\n // // two results / downloaded file.\n // const filesCount =\n // (await fs.readdir(`.cache/caches/gatsby-source-filesystem`))\n // .length / 2\n // if (filesCount > 50) {\n // reporter.info(stripIndent`\\n\\n\n\n // Your local development experience is about to get better, faster, and stronger!\n\n // Your friendly Gatsby maintainers detected your site downloads quite a few files and that we're about to delete all ${Math.round(\n // filesCount\n // )} of them 😅. We're working right now to make our caching smarter which means we won't delete your downloaded files any more.\n\n // If you're interested in trialing the new caching behavior *today* — which should make your local development environment faster, go ahead and enable the PRESERVE_FILE_DOWNLOAD_CACHE flag and run your develop server again.\n\n // To do so, add to your gatsby-config.js:\n\n // flags: {\n // preserve_file_download_cache: true,\n // }\n\n // visit the umbrella issue to learn more: https://github.com/gatsbyjs/gatsby/discussions/28331\n // `)\n // }\n // } catch {\n // // ignore errors (mostly will just be directory not found).\n // }\n // }\n\n const deleteGlobs = [\n // By default delete all files & subdirectories\n `${cacheDirectory}/**`,\n `!${cacheDirectory}/data`,\n `${cacheDirectory}/data/**`,\n `!${cacheDirectory}/data/gatsby-core-utils/`,\n `!${cacheDirectory}/data/gatsby-core-utils/**`,\n ]\n\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_FILE_DOWNLOAD_CACHE) {\n // Stop the caches directory from being deleted, add all sub directories,\n // but remove gatsby-source-filesystem\n deleteGlobs.push(`!${cacheDirectory}/caches`)\n deleteGlobs.push(`${cacheDirectory}/caches/*`)\n deleteGlobs.push(`!${cacheDirectory}/caches/gatsby-source-filesystem`)\n }\n\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {\n // Add webpack\n deleteGlobs.push(`!${cacheDirectory}/webpack`)\n }\n\n await del(deleteGlobs)\n } catch (e) {\n reporter.error(`Failed to remove .cache files.`, e)\n }\n // Tell reducers to delete their data (the store will already have\n // been loaded from the file system cache).\n store.dispatch({\n type: `DELETE_CACHE`,\n cacheIsCorrupt,\n })\n\n // make sure all previous mutexes are released\n await releaseAllMutexes()\n\n // in future this should show which plugin's caches are purged\n // possibly should also have which plugins had caches\n telemetry.decorateEvent(`BUILD_END`, {\n pluginCachesPurged: [`*`],\n })\n telemetry.decorateEvent(`DEVELOP_STOP`, {\n pluginCachesPurged: [`*`],\n })\n }\n\n // Update the store with the new plugins hash.\n store.dispatch({\n type: `UPDATE_PLUGINS_HASH`,\n payload: pluginsHash,\n })\n\n // Now that we know the .cache directory is safe, initialize the cache\n // directory.\n await fs.ensureDir(cacheDirectory)\n\n // Ensure the public/static directory\n await fs.ensureDir(`${publicDirectory}/static`)\n\n // Init plugins once cache is initialized\n if (_CFLAGS_.GATSBY_MAJOR === `4`) {\n await apiRunnerNode(`onPluginInit`, {\n parentSpan: activity.span,\n })\n } else {\n await apiRunnerNode(`unstable_onPluginInit`, {\n parentSpan: activity.span,\n })\n }\n\n activity.end()\n\n activity = reporter.activityTimer(`copy gatsby files`, {\n parentSpan,\n })\n activity.start()\n const srcDir = `${__dirname}/../../cache-dir`\n const siteDir = cacheDirectory\n const tryRequire = `${__dirname}/../utils/test-require-error.js`\n try {\n await fs.copy(srcDir, siteDir)\n await fs.copy(tryRequire, `${siteDir}/test-require-error.js`)\n if (lmdbStoreIsUsed) {\n await fs.ensureDirSync(`${cacheDirectory}/${lmdbCacheDirectoryName}`)\n } else {\n await fs.ensureDirSync(`${cacheDirectory}/json`)\n }\n\n // Ensure .cache/fragments exists and is empty. We want fragments to be\n // added on every run in response to data as fragments can only be added if\n // the data used to create the schema they're dependent on is available.\n await fs.emptyDir(`${cacheDirectory}/fragments`)\n } catch (err) {\n reporter.panic(`Unable to copy site files to .cache`, err)\n }\n\n // Find plugins which implement gatsby-browser and gatsby-ssr and write\n // out api-runners for them.\n const hasAPIFile = (env, plugin): string | undefined => {\n // The plugin loader has disabled SSR APIs for this plugin. Usually due to\n // multiple implementations of an API that can only be implemented once\n if (env === `ssr` && plugin.skipSSR === true) return undefined\n\n const envAPIs = plugin[`${env}APIs`]\n\n // Always include gatsby-browser.js files if they exist as they're\n // a handy place to include global styles and other global imports.\n try {\n if (env === `browser`) {\n const modulePath = path.join(plugin.resolve, `gatsby-${env}`)\n return slash(resolveModule(modulePath) as string)\n }\n } catch (e) {\n // ignore\n }\n\n if (envAPIs && Array.isArray(envAPIs) && envAPIs.length > 0) {\n const modulePath = path.join(plugin.resolve, `gatsby-${env}`)\n return slash(resolveModule(modulePath) as string)\n }\n return undefined\n }\n\n const isResolved = (plugin): plugin is IPluginResolution => !!plugin.resolve\n const isResolvedSSR = (plugin): plugin is IPluginResolutionSSR =>\n !!plugin.resolve\n\n const ssrPlugins: Array<IPluginResolutionSSR> = flattenedPlugins\n .map(plugin => {\n return {\n name: plugin.name,\n resolve: hasAPIFile(`ssr`, plugin),\n options: plugin.pluginOptions,\n }\n })\n .filter(isResolvedSSR)\n\n const browserPlugins: Array<IPluginResolution> = flattenedPlugins\n .map(plugin => {\n return {\n resolve: hasAPIFile(`browser`, plugin),\n options: plugin.pluginOptions,\n }\n })\n .filter(isResolved)\n\n const browserPluginsRequires = browserPlugins\n .map(plugin => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativePluginPath = path.relative(siteDir, plugin.resolve)\n return `{\n plugin: require('${slash(relativePluginPath)}'),\n options: ${JSON.stringify(plugin.options)},\n }`\n })\n .join(`,`)\n\n const browserAPIRunner = `module.exports = [${browserPluginsRequires}]\\n`\n\n let sSRAPIRunner = ``\n\n try {\n sSRAPIRunner = fs.readFileSync(`${siteDir}/api-runner-ssr.js`, `utf-8`)\n } catch (err) {\n reporter.panic(`Failed to read ${siteDir}/api-runner-ssr.js`, err)\n }\n\n const ssrPluginsRequires = ssrPlugins\n .map(\n plugin =>\n `{\n name: '${plugin.name}',\n plugin: require('${plugin.resolve}'),\n options: ${JSON.stringify(plugin.options)},\n }`\n )\n .join(`,`)\n sSRAPIRunner = `var plugins = [${ssrPluginsRequires}]\\n${sSRAPIRunner}`\n\n fs.writeFileSync(\n `${siteDir}/api-runner-browser-plugins.js`,\n browserAPIRunner,\n `utf-8`\n )\n fs.writeFileSync(`${siteDir}/api-runner-ssr.js`, sSRAPIRunner, `utf-8`)\n\n activity.end()\n /**\n * Start the main bootstrap processes.\n */\n\n // onPreBootstrap\n activity = reporter.activityTimer(`onPreBootstrap`, {\n parentSpan,\n })\n activity.start()\n await apiRunnerNode(`onPreBootstrap`, {\n parentSpan: activity.span,\n })\n activity.end()\n\n // Track trailing slash option used in config\n telemetry.trackFeatureIsUsed(`trailingSlash:${state.config.trailingSlash}`)\n\n // Collect resolvable extensions and attach to program.\n const extensions = [`.mjs`, `.js`, `.jsx`, `.wasm`, `.json`]\n // Change to this being an action and plugins implement `onPreBootstrap`\n // for adding extensions.\n const apiResults = await apiRunnerNode(`resolvableExtensions`, {\n traceId: `initial-resolvableExtensions`,\n parentSpan,\n })\n\n store.dispatch({\n type: `SET_PROGRAM_EXTENSIONS`,\n payload: _.flattenDeep([extensions, apiResults]),\n })\n\n const workerPool = WorkerPool.create()\n\n return {\n store,\n workerPool,\n }\n}\n"],"file":"initialize.js"}
@@ -11,6 +11,8 @@ var _reportOnce = require("./report-once");
11
11
 
12
12
  var _constants = require("../constants");
13
13
 
14
+ var _datastore = require("../datastore");
15
+
14
16
  const pageConfigMap = new Map();
15
17
  /**
16
18
  * In develop IGatsbyPage["mode"] can change at any time, so as a general rule we need to resolve it
@@ -115,6 +117,8 @@ async function materializePageMode() {
115
117
  await new Promise(resolve => setImmediate(resolve));
116
118
  }
117
119
  }
120
+
121
+ await (0, _datastore.getDataStore)().ready();
118
122
  }
119
123
 
120
124
  async function preparePageTemplateConfigs(graphql) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/page-mode.ts"],"names":["pageConfigMap","Map","getPageMode","page","state","components","store","getState","component","get","componentPath","serverData","config","resolvePageMode","pageMode","undefined","pageConfigFn","componentChunkName","fsRouteParams","context","pageConfig","params","defer","path","materializePageMode","pages","dispatchCount","values","Error","action","type","payload","dispatch","Promise","resolve","setImmediate","preparePageTemplateConfigs","graphql","program","pageRendererPath","directory","ROUTES_DIRECTORY","pageRenderer","require","global","all","Array","from","map","componentInstance","getPageChunk","set"],"mappings":"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","sourcesContent":["import { store } from \"../redux\"\nimport {\n IGatsbyPage,\n IGatsbyState,\n IMaterializePageMode,\n PageMode,\n} from \"../redux/types\"\nimport { reportOnce } from \"./report-once\"\nimport { ROUTES_DIRECTORY } from \"../constants\"\nimport { Runner } from \"../bootstrap/create-graphql-runner\"\n\ntype IPageConfigFn = (arg: { params: Record<string, unknown> }) => {\n defer: boolean\n}\n\nconst pageConfigMap = new Map<string, IPageConfigFn>()\n\n/**\n * In develop IGatsbyPage[\"mode\"] can change at any time, so as a general rule we need to resolve it\n * every time from page component and IGatsbyPage[\"defer\"] value.\n *\n * IGatsbyPage[\"mode\"] is only reliable in engines and in `onPostBuild` hook.\n */\nexport function getPageMode(page: IGatsbyPage, state?: IGatsbyState): PageMode {\n const { components } = state ?? store.getState()\n\n // assume SSG until components are actually extracted\n const component = components.get(page.componentPath) ?? {\n serverData: false,\n config: false,\n }\n\n return resolvePageMode(page, component)\n}\n\nfunction resolvePageMode(\n page: IGatsbyPage,\n component: { serverData: boolean; config: boolean }\n): PageMode {\n let pageMode: PageMode | undefined = undefined\n if (component.serverData) {\n pageMode = `SSR`\n } else if (component.config) {\n const pageConfigFn = pageConfigMap.get(page.componentChunkName)\n if (!pageConfigFn) {\n // This is possible in warm builds when `component.config` was persisted but\n // `preparePageTemplateConfigs` hasn't been executed yet\n // TODO: if we move `mode` away from page and persist it in the state separately,\n // we can just return the old `mode` that should be in sync with `component.config`\n return `SSG`\n }\n\n const fsRouteParams = (\n typeof page.context[`__params`] === `object`\n ? page.context[`__params`]\n : {}\n ) as Record<string, unknown>\n\n const pageConfig = pageConfigFn({ params: fsRouteParams })\n if (typeof pageConfig.defer === `boolean`) {\n pageMode = pageConfig.defer ? `DSG` : `SSG`\n }\n }\n\n if (!pageMode) {\n pageMode = page.defer ? `DSG` : `SSG`\n }\n if (\n pageMode !== `SSG` &&\n (page.path === `/404.html` || page.path === `/500.html`)\n ) {\n reportOnce(\n `Status page \"${page.path}\" ignores page mode (\"${pageMode}\") and force sets it to SSG (this page can't be lazily rendered).`\n )\n pageMode = `SSG`\n }\n\n return pageMode\n}\n\n/**\n * Persist page.mode for SSR/DSG pages to ensure they work with `gatsby serve`\n *\n * TODO: ideally IGatsbyPage[\"mode\"] should not exist at all and instead we need a different entity\n * holding this information: an entity that is only created in the end of the build e.g. Route\n * then materializePageMode transforms to createRoutes\n */\nexport async function materializePageMode(): Promise<void> {\n const { pages, components } = store.getState()\n\n let dispatchCount = 0\n for (const page of pages.values()) {\n const component = components.get(page.componentPath)\n if (!component) {\n throw new Error(`Could not find matching component for page ${page.path}`)\n }\n const pageMode = resolvePageMode(page, component)\n\n // Do not materialize for SSG pages: saves some CPU time as `page.mode` === `SSG` by default when creating a page\n // and our pages are re-generated on each build, not persisted\n // (so no way to get DSG/SSR value from the previous build)\n if (pageMode !== `SSG`) {\n const action: IMaterializePageMode = {\n type: `MATERIALIZE_PAGE_MODE`,\n payload: { path: page.path, pageMode },\n }\n store.dispatch(action)\n }\n // Do not block task queue of the event loop for too long:\n if (dispatchCount++ % 100 === 0) {\n await new Promise(resolve => setImmediate(resolve))\n }\n }\n}\n\nexport async function preparePageTemplateConfigs(\n graphql: Runner\n): Promise<void> {\n const { program } = store.getState()\n const pageRendererPath = `${program.directory}/${ROUTES_DIRECTORY}render-page.js`\n\n const pageRenderer = require(pageRendererPath)\n global[`__gatsbyGraphql`] = graphql\n\n await Promise.all(\n Array.from(store.getState().components.values()).map(async component => {\n if (component.config) {\n const componentInstance = await pageRenderer.getPageChunk({\n componentChunkName: component.componentChunkName,\n })\n const pageConfigFn = await componentInstance.config()\n if (typeof pageConfigFn !== `function`) {\n throw new Error(\n `Unexpected result of config factory. Expected \"function\", got \"${typeof pageConfigFn}\".`\n )\n }\n\n pageConfigMap.set(component.componentChunkName, pageConfigFn)\n }\n })\n )\n delete global[`__gatsbyGraphql`]\n}\n"],"file":"page-mode.js"}
1
+ {"version":3,"sources":["../../src/utils/page-mode.ts"],"names":["pageConfigMap","Map","getPageMode","page","state","components","store","getState","component","get","componentPath","serverData","config","resolvePageMode","pageMode","undefined","pageConfigFn","componentChunkName","fsRouteParams","context","pageConfig","params","defer","path","materializePageMode","pages","dispatchCount","values","Error","action","type","payload","dispatch","Promise","resolve","setImmediate","ready","preparePageTemplateConfigs","graphql","program","pageRendererPath","directory","ROUTES_DIRECTORY","pageRenderer","require","global","all","Array","from","map","componentInstance","getPageChunk","set"],"mappings":"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","sourcesContent":["import { store } from \"../redux\"\nimport {\n IGatsbyPage,\n IGatsbyState,\n IMaterializePageMode,\n PageMode,\n} from \"../redux/types\"\nimport { reportOnce } from \"./report-once\"\nimport { ROUTES_DIRECTORY } from \"../constants\"\nimport { Runner } from \"../bootstrap/create-graphql-runner\"\nimport { getDataStore } from \"../datastore\"\n\ntype IPageConfigFn = (arg: { params: Record<string, unknown> }) => {\n defer: boolean\n}\n\nconst pageConfigMap = new Map<string, IPageConfigFn>()\n\n/**\n * In develop IGatsbyPage[\"mode\"] can change at any time, so as a general rule we need to resolve it\n * every time from page component and IGatsbyPage[\"defer\"] value.\n *\n * IGatsbyPage[\"mode\"] is only reliable in engines and in `onPostBuild` hook.\n */\nexport function getPageMode(page: IGatsbyPage, state?: IGatsbyState): PageMode {\n const { components } = state ?? store.getState()\n\n // assume SSG until components are actually extracted\n const component = components.get(page.componentPath) ?? {\n serverData: false,\n config: false,\n }\n\n return resolvePageMode(page, component)\n}\n\nfunction resolvePageMode(\n page: IGatsbyPage,\n component: { serverData: boolean; config: boolean }\n): PageMode {\n let pageMode: PageMode | undefined = undefined\n if (component.serverData) {\n pageMode = `SSR`\n } else if (component.config) {\n const pageConfigFn = pageConfigMap.get(page.componentChunkName)\n if (!pageConfigFn) {\n // This is possible in warm builds when `component.config` was persisted but\n // `preparePageTemplateConfigs` hasn't been executed yet\n // TODO: if we move `mode` away from page and persist it in the state separately,\n // we can just return the old `mode` that should be in sync with `component.config`\n return `SSG`\n }\n\n const fsRouteParams = (\n typeof page.context[`__params`] === `object`\n ? page.context[`__params`]\n : {}\n ) as Record<string, unknown>\n\n const pageConfig = pageConfigFn({ params: fsRouteParams })\n if (typeof pageConfig.defer === `boolean`) {\n pageMode = pageConfig.defer ? `DSG` : `SSG`\n }\n }\n\n if (!pageMode) {\n pageMode = page.defer ? `DSG` : `SSG`\n }\n if (\n pageMode !== `SSG` &&\n (page.path === `/404.html` || page.path === `/500.html`)\n ) {\n reportOnce(\n `Status page \"${page.path}\" ignores page mode (\"${pageMode}\") and force sets it to SSG (this page can't be lazily rendered).`\n )\n pageMode = `SSG`\n }\n\n return pageMode\n}\n\n/**\n * Persist page.mode for SSR/DSG pages to ensure they work with `gatsby serve`\n *\n * TODO: ideally IGatsbyPage[\"mode\"] should not exist at all and instead we need a different entity\n * holding this information: an entity that is only created in the end of the build e.g. Route\n * then materializePageMode transforms to createRoutes\n */\nexport async function materializePageMode(): Promise<void> {\n const { pages, components } = store.getState()\n\n let dispatchCount = 0\n for (const page of pages.values()) {\n const component = components.get(page.componentPath)\n if (!component) {\n throw new Error(`Could not find matching component for page ${page.path}`)\n }\n const pageMode = resolvePageMode(page, component)\n\n // Do not materialize for SSG pages: saves some CPU time as `page.mode` === `SSG` by default when creating a page\n // and our pages are re-generated on each build, not persisted\n // (so no way to get DSG/SSR value from the previous build)\n if (pageMode !== `SSG`) {\n const action: IMaterializePageMode = {\n type: `MATERIALIZE_PAGE_MODE`,\n payload: { path: page.path, pageMode },\n }\n store.dispatch(action)\n }\n // Do not block task queue of the event loop for too long:\n if (dispatchCount++ % 100 === 0) {\n await new Promise(resolve => setImmediate(resolve))\n }\n }\n await getDataStore().ready()\n}\n\nexport async function preparePageTemplateConfigs(\n graphql: Runner\n): Promise<void> {\n const { program } = store.getState()\n const pageRendererPath = `${program.directory}/${ROUTES_DIRECTORY}render-page.js`\n\n const pageRenderer = require(pageRendererPath)\n global[`__gatsbyGraphql`] = graphql\n\n await Promise.all(\n Array.from(store.getState().components.values()).map(async component => {\n if (component.config) {\n const componentInstance = await pageRenderer.getPageChunk({\n componentChunkName: component.componentChunkName,\n })\n const pageConfigFn = await componentInstance.config()\n if (typeof pageConfigFn !== `function`) {\n throw new Error(\n `Unexpected result of config factory. Expected \"function\", got \"${typeof pageConfigFn}\".`\n )\n }\n\n pageConfigMap.set(component.componentChunkName, pageConfigFn)\n }\n })\n )\n delete global[`__gatsbyGraphql`]\n}\n"],"file":"page-mode.js"}
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": "4.8.0-next.2",
4
+ "version": "4.8.1",
5
5
  "author": "Kyle Mathews <mathews.kyle@gmail.com>",
6
6
  "bin": {
7
7
  "gatsby": "./cli.js"
@@ -34,8 +34,8 @@
34
34
  "babel-plugin-add-module-exports": "^1.0.4",
35
35
  "babel-plugin-dynamic-import-node": "^2.3.3",
36
36
  "babel-plugin-lodash": "^3.3.4",
37
- "babel-plugin-remove-graphql-queries": "^4.8.0-next.0",
38
- "babel-preset-gatsby": "^2.8.0-next.0",
37
+ "babel-plugin-remove-graphql-queries": "^4.8.1",
38
+ "babel-preset-gatsby": "^2.8.1",
39
39
  "better-opn": "^2.1.1",
40
40
  "bluebird": "^3.7.2",
41
41
  "body-parser": "^1.19.0",
@@ -78,18 +78,18 @@
78
78
  "find-cache-dir": "^3.3.2",
79
79
  "fs-exists-cached": "1.0.0",
80
80
  "fs-extra": "^10.0.0",
81
- "gatsby-cli": "^4.8.0-next.2",
82
- "gatsby-core-utils": "^3.8.0-next.0",
83
- "gatsby-graphiql-explorer": "^2.8.0-next.0",
84
- "gatsby-legacy-polyfills": "^2.8.0-next.0",
85
- "gatsby-link": "^4.8.0-next.1",
86
- "gatsby-page-utils": "^2.8.0-next.0",
87
- "gatsby-plugin-page-creator": "^4.8.0-next.1",
88
- "gatsby-plugin-typescript": "^4.8.0-next.0",
89
- "gatsby-plugin-utils": "^3.2.0-next.1",
90
- "gatsby-react-router-scroll": "^5.8.0-next.0",
91
- "gatsby-telemetry": "^3.8.0-next.0",
92
- "gatsby-worker": "^1.8.0-next.0",
81
+ "gatsby-cli": "^4.8.1",
82
+ "gatsby-core-utils": "^3.8.1",
83
+ "gatsby-graphiql-explorer": "^2.8.0",
84
+ "gatsby-legacy-polyfills": "^2.8.0",
85
+ "gatsby-link": "^4.8.1",
86
+ "gatsby-page-utils": "^2.8.1",
87
+ "gatsby-plugin-page-creator": "^4.8.1",
88
+ "gatsby-plugin-typescript": "^4.8.1",
89
+ "gatsby-plugin-utils": "^3.2.0",
90
+ "gatsby-react-router-scroll": "^5.8.0",
91
+ "gatsby-telemetry": "^3.8.1",
92
+ "gatsby-worker": "^1.8.0",
93
93
  "glob": "^7.2.0",
94
94
  "got": "^11.8.2",
95
95
  "graphql": "^15.7.2",
@@ -176,11 +176,10 @@
176
176
  "@types/string-similarity": "^4.0.0",
177
177
  "@types/tmp": "^0.2.0",
178
178
  "@types/webpack-virtual-modules": "^0.1.1",
179
- "babel-preset-gatsby-package": "^2.8.0-next.0",
179
+ "babel-preset-gatsby-package": "^2.8.0",
180
180
  "copyfiles": "^2.3.0",
181
181
  "cross-env": "^7.0.3",
182
182
  "documentation": "^13.1.0",
183
- "enhanced-resolve": "^5.8.2",
184
183
  "react": "^16.12.0",
185
184
  "react-dom": "^16.12.0",
186
185
  "rimraf": "^3.0.2",
@@ -191,7 +190,7 @@
191
190
  "zipkin-transport-http": "^0.22.0"
192
191
  },
193
192
  "optionalDependencies": {
194
- "gatsby-sharp": "^0.2.0-next.1"
193
+ "gatsby-sharp": "^0.2.0"
195
194
  },
196
195
  "engines": {
197
196
  "node": ">=14.15.0"
@@ -263,5 +262,5 @@
263
262
  "yargs": {
264
263
  "boolean-negation": false
265
264
  },
266
- "gitHead": "76c89d8019a93fa825c6c909140e11d70f89cbcd"
265
+ "gitHead": "f365eda91877969165319381ec63f8a72216bc43"
267
266
  }