gatsby 2.24.83 → 2.24.84
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 +6 -0
- package/dist/commands/build.js +3 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/clean.js +3 -1
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/develop-process.js +3 -1
- package/dist/commands/develop-process.js.map +1 -1
- package/dist/utils/feedback.js +76 -9
- package/dist/utils/feedback.js.map +1 -1
- package/gatsby-admin-public/4c744e84-58cfdb9534713ac5b3be.js.map +1 -1
- package/gatsby-admin-public/69bd6bf3-2e3faf95de57e73bd9fd.js.map +1 -1
- package/gatsby-admin-public/854a7ef1f34af0aefbdfdd9304a0c00251662775-94bfe5efaf16d4c0295d.js.map +1 -1
- package/gatsby-admin-public/{app-c6dec4ff2c0b39c590ec.js → app-24012633b07b1166037e.js} +2 -2
- package/gatsby-admin-public/{app-c6dec4ff2c0b39c590ec.js.LICENSE.txt → app-24012633b07b1166037e.js.LICENSE.txt} +0 -0
- package/gatsby-admin-public/app-24012633b07b1166037e.js.map +1 -0
- package/gatsby-admin-public/c432bec7e9afb3443fd639df9e5f119e13575cf7-544e1c920df427399be1.js.map +1 -1
- package/gatsby-admin-public/chunk-map.json +1 -1
- package/gatsby-admin-public/component---src-pages-index-tsx-d4eccfe1d5cb27bf0eb6.js.map +1 -1
- package/gatsby-admin-public/component---src-pages-plugins-tsx-90c91befb06ea49e2e86.js.map +1 -1
- package/gatsby-admin-public/{component---src-pages-recipe-js-8aff53212bfd3395d488.js → component---src-pages-recipe-js-186fe5b47d9269c02a73.js} +1 -1
- package/gatsby-admin-public/component---src-pages-recipe-js-186fe5b47d9269c02a73.js.map +1 -0
- package/gatsby-admin-public/e2852b4470dcb2615e49edcd9de2a3c8119d4bec-6389f7fcd9614c42010f.js.map +1 -1
- package/gatsby-admin-public/framework-485671be9482847aa52d.js.map +1 -1
- package/gatsby-admin-public/index.html +1 -1
- package/gatsby-admin-public/page-data/app-data.json +1 -1
- package/gatsby-admin-public/pages/index.html +1 -1
- package/gatsby-admin-public/plugins/index.html +1 -1
- package/gatsby-admin-public/polyfill-36a60d09f576c87d22d9.js.map +1 -1
- package/gatsby-admin-public/recipe/index.html +1 -1
- package/gatsby-admin-public/recipes/index.html +1 -1
- package/gatsby-admin-public/{webpack-runtime-ea03111cee9b419b0a66.js → webpack-runtime-b8c88965f68e81670ad4.js} +2 -2
- package/gatsby-admin-public/{webpack-runtime-ea03111cee9b419b0a66.js.map → webpack-runtime-b8c88965f68e81670ad4.js.map} +1 -1
- package/gatsby-admin-public/webpack.stats.json +1 -1
- package/index.d.ts +0 -2
- package/package.json +4 -4
- package/gatsby-admin-public/app-c6dec4ff2c0b39c590ec.js.map +0 -1
- package/gatsby-admin-public/component---src-pages-recipe-js-8aff53212bfd3395d488.js.map +0 -1
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
|
+
## [2.24.84](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.83...gatsby@2.24.84) (2020-10-21)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- duplicate types to solve circular dependency ([#27578](https://github.com/gatsbyjs/gatsby/issues/27578)) ([029ec48](https://github.com/gatsbyjs/gatsby/commit/029ec489a271ddeb7ad3fa174bd536c1b38db246))
|
|
11
|
+
|
|
6
12
|
## [2.24.83](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.82...gatsby@2.24.83) (2020-10-20)
|
|
7
13
|
|
|
8
14
|
### Bug Fixes
|
package/dist/commands/build.js
CHANGED
|
@@ -320,7 +320,9 @@ module.exports = async function build(program) {
|
|
|
320
320
|
_reporter.default.info(`.cache/deletedPages.txt created`);
|
|
321
321
|
}
|
|
322
322
|
|
|
323
|
-
if (await (0, _feedback.
|
|
323
|
+
if (await (0, _feedback.userGetsSevenDayFeedback)()) {
|
|
324
|
+
(0, _feedback.showSevenDayFeedbackRequest)();
|
|
325
|
+
} else if (await (0, _feedback.userPassesFeedbackRequestHeuristic)()) {
|
|
324
326
|
(0, _feedback.showFeedbackRequest)();
|
|
325
327
|
}
|
|
326
328
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/build.ts"],"names":["cachedPageData","cachedWebpackCompilationHash","process","env","GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES","pageData","webpackCompilationHash","module","exports","build","program","report","setVerbose","verbose","profile","warn","name","sitePackageJson","sitePath","directory","lastRun","Date","now","pid","publicDir","path","join","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","gatsbyNodeGraphQLFunction","parentSpan","graphqlRunner","GraphQLRunner","store","collectStats","graphqlTracing","queryIds","graphql","buildActivityTimer","activityTimer","stats","err","panic","Stage","BuildJavascript","end","workerPool","WorkerPool","create","hash","getState","appDataUtil","exists","dispatch","type","payload","rewriteActivityTimer","write","pages","forEach","_value","key","has","boundActionCreators","removePageData","id","isTrackingEnabled","bundleSizes","toJson","assets","filter","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","setProgramStatus","db","saveState","pagePaths","keys","buildUtils","getChangedPageDataKeys","info","stripIndent","buildHTMLActivityProgress","createProgress","length","stage","BuildHTML","activity","context","errorPath","ref","match","message","error","deletedPageKeys","deletePageDataActivityTimer","collectRemovedPageData","removePageFiles","postBuildActivityTimer","uptime","finish","argv","includes","createdFilesPath","resolve","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\"\n\nimport { buildHTML } 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 db from \"../db\"\nimport { store, readState } from \"../redux\"\nimport * as appDataUtil from \"../utils/app-data\"\nimport { flush as flushPendingPageDataWrites } from \"../utils/page-data\"\nimport * as WorkerPool from \"../utils/worker/pool\"\nimport { structureWebpackErrors } from \"../utils/webpack-error-utils\"\nimport {\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n} from \"../utils/feedback\"\nimport * as buildUtils from \"./build-utils\"\nimport { boundActionCreators } from \"../redux/actions\"\nimport { waitUntilAllJobsComplete } from \"../utils/wait-until-jobs-complete\"\nimport { IProgram, Stage } from \"./types\"\nimport { PackageJson } from \"../..\"\nimport {\n calculateDirtyQueries,\n runStaticQueries,\n runPageQueries,\n writeOutRequires,\n} from \"../services\"\nimport {\n markWebpackStatusAsPending,\n markWebpackStatusAsDone,\n} from \"../utils/webpack-status\"\nimport { updateSiteMetadata } from \"gatsby-core-utils\"\n\nlet cachedPageData\nlet cachedWebpackCompilationHash\nif (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n const { pageData, webpackCompilationHash } = readState()\n // extract only data that we need to reuse and let v8 garbage collect rest of state\n cachedPageData = pageData\n cachedWebpackCompilationHash = webpackCompilationHash\n}\n\ninterface IBuildArgs extends IProgram {\n directory: string\n sitePackageJson: PackageJson\n prefixPaths: boolean\n noUglify: boolean\n profile: boolean\n graphqlTracing: boolean\n openTracingConfigFile: string\n}\n\nmodule.exports = async function build(program: IBuildArgs): Promise<void> {\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 updateSiteMetadata({\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 initTracer(program.openTracingConfigFile)\n const buildActivity = report.phantomActivity(`build`)\n buildActivity.start()\n\n telemetry.trackCli(`BUILD_START`)\n signalExit(exitCode => {\n telemetry.trackCli(`BUILD_END`, { exitCode })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n const { gatsbyNodeGraphQLFunction } = await bootstrap({\n program,\n parentSpan: buildSpan,\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 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 await writeOutRequires({\n store,\n parentSpan: buildSpan,\n })\n\n await apiRunnerNode(`onPreBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n\n // Copy files from the static directory to\n // an equivalent static directory within public.\n copyStaticDirs()\n\n const buildActivityTimer = report.activityTimer(\n `Building production JavaScript and CSS bundles`,\n { parentSpan: buildSpan }\n )\n buildActivityTimer.start()\n let stats\n try {\n stats = await buildProductionBundle(program, buildActivityTimer.span)\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\n\n const workerPool = WorkerPool.create()\n\n const webpackCompilationHash = stats.hash\n if (\n webpackCompilationHash !== store.getState().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)\n\n rewriteActivityTimer.end()\n }\n\n await flushPendingPageDataWrites()\n markWebpackStatusAsDone()\n\n if (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n const { pages } = store.getState()\n if (cachedPageData) {\n cachedPageData.forEach((_value, key) => {\n if (!pages.has(key)) {\n boundActionCreators.removePageData({\n id: key,\n })\n }\n })\n }\n }\n\n if (telemetry.isTrackingEnabled()) {\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const bundleSizes = stats\n .toJson({ assets: true })\n .assets.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 boundActionCreators.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 let pagePaths = [...store.getState().pages.keys()]\n\n // Rebuild subset of pages if user opt into GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES\n // if there were no source files (for example components, static queries, etc) changes since last build, otherwise rebuild all pages\n if (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n if (\n cachedWebpackCompilationHash === store.getState().webpackCompilationHash\n ) {\n pagePaths = buildUtils.getChangedPageDataKeys(\n store.getState(),\n cachedPageData\n )\n } else if (cachedWebpackCompilationHash) {\n report.info(\n report.stripIndent(`\n One or more of your source files have changed since the last time you ran Gatsby. All\n pages will be rebuilt.\n `)\n )\n }\n }\n\n const buildHTMLActivityProgress = report.createProgress(\n `Building static HTML for pages`,\n pagePaths.length,\n 0,\n {\n parentSpan: buildSpan,\n }\n )\n buildHTMLActivityProgress.start()\n try {\n await buildHTML({\n program,\n stage: Stage.BuildHTML,\n pagePaths,\n activity: buildHTMLActivityProgress,\n workerPool,\n })\n } catch (err) {\n let id = `95313` // TODO: verify error IDs exist\n const context = {\n errorPath: err.context && err.context.path,\n ref: ``,\n }\n\n const match = err.message.match(\n /ReferenceError: (window|document|localStorage|navigator|alert|location) is not defined/i\n )\n if (match && match[1]) {\n id = `95312`\n context.ref = match[1]\n }\n\n buildHTMLActivityProgress.panic({\n id,\n context,\n error: err,\n })\n }\n buildHTMLActivityProgress.end()\n\n let deletedPageKeys: Array<string> = []\n if (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n const deletePageDataActivityTimer = report.activityTimer(\n `Delete previous page data`\n )\n deletePageDataActivityTimer.start()\n deletedPageKeys = buildUtils.collectRemovedPageData(\n store.getState(),\n cachedPageData\n )\n await buildUtils.removePageFiles(publicDir, deletedPageKeys)\n\n deletePageDataActivityTimer.end()\n }\n\n const postBuildActivityTimer = report.activityTimer(`onPostBuild`, {\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.start()\n await apiRunnerNode(`onPostBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.end()\n\n // Make sure we saved the latest state so we have all jobs cached\n await db.saveState()\n\n report.info(`Done building in ${process.uptime()} sec`)\n\n buildSpan.finish()\n await stopTracer()\n workerPool.end()\n buildActivity.end()\n\n if (\n process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES &&\n process.argv.includes(`--log-pages`)\n ) {\n if (pagePaths.length) {\n report.info(\n `Built pages:\\n${pagePaths\n .map(path => `Updated page: ${path}`)\n .join(`\\n`)}`\n )\n }\n\n if (deletedPageKeys.length) {\n report.info(\n `Deleted pages:\\n${deletedPageKeys\n .map(path => `Deleted page: ${path}`)\n .join(`\\n`)}`\n )\n }\n }\n\n if (\n process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES &&\n process.argv.includes(`--write-to-file`)\n ) {\n const createdFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `newPages.txt`\n )\n const createdFilesContent = pagePaths.length\n ? `${pagePaths.join(`\\n`)}\\n`\n : ``\n\n const deletedFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `deletedPages.txt`\n )\n const deletedFilesContent = deletedPageKeys.length\n ? `${deletedPageKeys.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 if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n}\n"],"file":"build.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/build.ts"],"names":["cachedPageData","cachedWebpackCompilationHash","process","env","GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES","pageData","webpackCompilationHash","module","exports","build","program","report","setVerbose","verbose","profile","warn","name","sitePackageJson","sitePath","directory","lastRun","Date","now","pid","publicDir","path","join","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","gatsbyNodeGraphQLFunction","parentSpan","graphqlRunner","GraphQLRunner","store","collectStats","graphqlTracing","queryIds","graphql","buildActivityTimer","activityTimer","stats","err","panic","Stage","BuildJavascript","end","workerPool","WorkerPool","create","hash","getState","appDataUtil","exists","dispatch","type","payload","rewriteActivityTimer","write","pages","forEach","_value","key","has","boundActionCreators","removePageData","id","isTrackingEnabled","bundleSizes","toJson","assets","filter","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","setProgramStatus","db","saveState","pagePaths","keys","buildUtils","getChangedPageDataKeys","info","stripIndent","buildHTMLActivityProgress","createProgress","length","stage","BuildHTML","activity","context","errorPath","ref","match","message","error","deletedPageKeys","deletePageDataActivityTimer","collectRemovedPageData","removePageFiles","postBuildActivityTimer","uptime","finish","argv","includes","createdFilesPath","resolve","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\"\n\nimport { buildHTML } 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 db from \"../db\"\nimport { store, readState } from \"../redux\"\nimport * as appDataUtil from \"../utils/app-data\"\nimport { flush as flushPendingPageDataWrites } from \"../utils/page-data\"\nimport * as WorkerPool from \"../utils/worker/pool\"\nimport { structureWebpackErrors } from \"../utils/webpack-error-utils\"\nimport {\n userGetsSevenDayFeedback,\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n showSevenDayFeedbackRequest,\n} from \"../utils/feedback\"\nimport * as buildUtils from \"./build-utils\"\nimport { boundActionCreators } from \"../redux/actions\"\nimport { waitUntilAllJobsComplete } from \"../utils/wait-until-jobs-complete\"\nimport { IProgram, Stage } from \"./types\"\nimport { PackageJson } from \"../..\"\nimport {\n calculateDirtyQueries,\n runStaticQueries,\n runPageQueries,\n writeOutRequires,\n} from \"../services\"\nimport {\n markWebpackStatusAsPending,\n markWebpackStatusAsDone,\n} from \"../utils/webpack-status\"\nimport { updateSiteMetadata } from \"gatsby-core-utils\"\n\nlet cachedPageData\nlet cachedWebpackCompilationHash\nif (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n const { pageData, webpackCompilationHash } = readState()\n // extract only data that we need to reuse and let v8 garbage collect rest of state\n cachedPageData = pageData\n cachedWebpackCompilationHash = webpackCompilationHash\n}\n\ninterface IBuildArgs extends IProgram {\n directory: string\n sitePackageJson: PackageJson\n prefixPaths: boolean\n noUglify: boolean\n profile: boolean\n graphqlTracing: boolean\n openTracingConfigFile: string\n}\n\nmodule.exports = async function build(program: IBuildArgs): Promise<void> {\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 updateSiteMetadata({\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 initTracer(program.openTracingConfigFile)\n const buildActivity = report.phantomActivity(`build`)\n buildActivity.start()\n\n telemetry.trackCli(`BUILD_START`)\n signalExit(exitCode => {\n telemetry.trackCli(`BUILD_END`, { exitCode })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n const { gatsbyNodeGraphQLFunction } = await bootstrap({\n program,\n parentSpan: buildSpan,\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 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 await writeOutRequires({\n store,\n parentSpan: buildSpan,\n })\n\n await apiRunnerNode(`onPreBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n\n // Copy files from the static directory to\n // an equivalent static directory within public.\n copyStaticDirs()\n\n const buildActivityTimer = report.activityTimer(\n `Building production JavaScript and CSS bundles`,\n { parentSpan: buildSpan }\n )\n buildActivityTimer.start()\n let stats\n try {\n stats = await buildProductionBundle(program, buildActivityTimer.span)\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\n\n const workerPool = WorkerPool.create()\n\n const webpackCompilationHash = stats.hash\n if (\n webpackCompilationHash !== store.getState().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)\n\n rewriteActivityTimer.end()\n }\n\n await flushPendingPageDataWrites()\n markWebpackStatusAsDone()\n\n if (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n const { pages } = store.getState()\n if (cachedPageData) {\n cachedPageData.forEach((_value, key) => {\n if (!pages.has(key)) {\n boundActionCreators.removePageData({\n id: key,\n })\n }\n })\n }\n }\n\n if (telemetry.isTrackingEnabled()) {\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const bundleSizes = stats\n .toJson({ assets: true })\n .assets.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 boundActionCreators.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 let pagePaths = [...store.getState().pages.keys()]\n\n // Rebuild subset of pages if user opt into GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES\n // if there were no source files (for example components, static queries, etc) changes since last build, otherwise rebuild all pages\n if (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n if (\n cachedWebpackCompilationHash === store.getState().webpackCompilationHash\n ) {\n pagePaths = buildUtils.getChangedPageDataKeys(\n store.getState(),\n cachedPageData\n )\n } else if (cachedWebpackCompilationHash) {\n report.info(\n report.stripIndent(`\n One or more of your source files have changed since the last time you ran Gatsby. All\n pages will be rebuilt.\n `)\n )\n }\n }\n\n const buildHTMLActivityProgress = report.createProgress(\n `Building static HTML for pages`,\n pagePaths.length,\n 0,\n {\n parentSpan: buildSpan,\n }\n )\n buildHTMLActivityProgress.start()\n try {\n await buildHTML({\n program,\n stage: Stage.BuildHTML,\n pagePaths,\n activity: buildHTMLActivityProgress,\n workerPool,\n })\n } catch (err) {\n let id = `95313` // TODO: verify error IDs exist\n const context = {\n errorPath: err.context && err.context.path,\n ref: ``,\n }\n\n const match = err.message.match(\n /ReferenceError: (window|document|localStorage|navigator|alert|location) is not defined/i\n )\n if (match && match[1]) {\n id = `95312`\n context.ref = match[1]\n }\n\n buildHTMLActivityProgress.panic({\n id,\n context,\n error: err,\n })\n }\n buildHTMLActivityProgress.end()\n\n let deletedPageKeys: Array<string> = []\n if (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n const deletePageDataActivityTimer = report.activityTimer(\n `Delete previous page data`\n )\n deletePageDataActivityTimer.start()\n deletedPageKeys = buildUtils.collectRemovedPageData(\n store.getState(),\n cachedPageData\n )\n await buildUtils.removePageFiles(publicDir, deletedPageKeys)\n\n deletePageDataActivityTimer.end()\n }\n\n const postBuildActivityTimer = report.activityTimer(`onPostBuild`, {\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.start()\n await apiRunnerNode(`onPostBuild`, {\n graphql: gatsbyNodeGraphQLFunction,\n parentSpan: buildSpan,\n })\n postBuildActivityTimer.end()\n\n // Make sure we saved the latest state so we have all jobs cached\n await db.saveState()\n\n report.info(`Done building in ${process.uptime()} sec`)\n\n buildSpan.finish()\n await stopTracer()\n workerPool.end()\n buildActivity.end()\n\n if (\n process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES &&\n process.argv.includes(`--log-pages`)\n ) {\n if (pagePaths.length) {\n report.info(\n `Built pages:\\n${pagePaths\n .map(path => `Updated page: ${path}`)\n .join(`\\n`)}`\n )\n }\n\n if (deletedPageKeys.length) {\n report.info(\n `Deleted pages:\\n${deletedPageKeys\n .map(path => `Deleted page: ${path}`)\n .join(`\\n`)}`\n )\n }\n }\n\n if (\n process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES &&\n process.argv.includes(`--write-to-file`)\n ) {\n const createdFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `newPages.txt`\n )\n const createdFilesContent = pagePaths.length\n ? `${pagePaths.join(`\\n`)}\\n`\n : ``\n\n const deletedFilesPath = path.resolve(\n `${program.directory}/.cache`,\n `deletedPages.txt`\n )\n const deletedFilesContent = deletedPageKeys.length\n ? `${deletedPageKeys.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 if (await userGetsSevenDayFeedback()) {\n showSevenDayFeedbackRequest()\n } else if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n}\n"],"file":"build.js"}
|
package/dist/commands/clean.js
CHANGED
|
@@ -25,7 +25,9 @@ module.exports = async function clean(program) {
|
|
|
25
25
|
await Promise.all(directories.map(dir => _fsExtra.default.remove(_path.default.join(directory, dir))));
|
|
26
26
|
report.info(`Successfully deleted directories`);
|
|
27
27
|
|
|
28
|
-
if (await (0, _feedback.
|
|
28
|
+
if (await (0, _feedback.userGetsSevenDayFeedback)()) {
|
|
29
|
+
(0, _feedback.showSevenDayFeedbackRequest)();
|
|
30
|
+
} else if (await (0, _feedback.userPassesFeedbackRequestHeuristic)()) {
|
|
29
31
|
(0, _feedback.showFeedbackRequest)();
|
|
30
32
|
}
|
|
31
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/clean.ts"],"names":["module","exports","clean","program","directory","report","directories","name","filter","Boolean","info","join","Promise","all","map","dir","fs","remove","path"],"mappings":";;;;AAAA;;AACA;;AACA;;AAEA;;
|
|
1
|
+
{"version":3,"sources":["../../src/commands/clean.ts"],"names":["module","exports","clean","program","directory","report","directories","name","filter","Boolean","info","join","Promise","all","map","dir","fs","remove","path"],"mappings":";;;;AAAA;;AACA;;AACA;;AAEA;;AAQAA,MAAM,CAACC,OAAP,GAAiB,eAAeC,KAAf,CAAqBC,OAArB,EAAuD;AACtE,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,MAAwBF,OAA9B;AAEA,QAAMG,WAAW,GAAG,CACjB,QADiB,EAEjB,QAFiB,EAGlB;AACA,6BAAa;AACXC,IAAAA,IAAI,EAAG;AADI,GAAb,CAJkB,EAOlB,2BAAa;AACXA,IAAAA,IAAI,EAAG;AADI,GAAb,CAPkB,EAUlBC,MAVkB,CAUXC,OAVW,CAApB;AAYAJ,EAAAA,MAAM,CAACK,IAAP,CAAa,YAAWJ,WAAW,CAACK,IAAZ,CAAkB,IAAlB,CAAuB,EAA/C;AAEA,QAAMC,OAAO,CAACC,GAAR,CACJP,WAAW,CAACQ,GAAZ,CAAgBC,GAAG,IAAIC,iBAAGC,MAAH,CAAUC,cAAKP,IAAL,CAAUP,SAAV,EAAqBW,GAArB,CAAV,CAAvB,CADI,CAAN;AAIAV,EAAAA,MAAM,CAACK,IAAP,CAAa,kCAAb;;AAEA,MAAI,MAAM,yCAAV,EAAsC;AACpC;AACD,GAFD,MAEO,IAAI,MAAM,mDAAV,EAAgD;AACrD;AACD;AACF,CA5BD","sourcesContent":["import fs from \"fs-extra\"\nimport path from \"path\"\nimport findCacheDir from \"find-cache-dir\"\n\nimport {\n userGetsSevenDayFeedback,\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n showSevenDayFeedbackRequest,\n} from \"../utils/feedback\"\nimport { IProgram } from \"./types\"\n\nmodule.exports = async function clean(program: IProgram): Promise<void> {\n const { directory, report } = program\n\n const directories = [\n `.cache`,\n `public`,\n // Ensure we clean babel loader cache\n findCacheDir({\n name: `babel-loader`,\n }),\n findCacheDir({\n name: `terser-webpack-plugin`,\n }),\n ].filter(Boolean)\n\n report.info(`Deleting ${directories.join(`, `)}`)\n\n await Promise.all(\n directories.map(dir => fs.remove(path.join(directory, dir)))\n )\n\n report.info(`Successfully deleted directories`)\n\n if (await userGetsSevenDayFeedback()) {\n showSevenDayFeedbackRequest()\n } else if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n}\n"],"file":"clean.js"}
|
|
@@ -91,7 +91,9 @@ module.exports = async program => {
|
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
process.on(`SIGINT`, async () => {
|
|
94
|
-
if (await (0, _feedback.
|
|
94
|
+
if (await (0, _feedback.userGetsSevenDayFeedback)()) {
|
|
95
|
+
(0, _feedback.showSevenDayFeedbackRequest)();
|
|
96
|
+
} else if (await (0, _feedback.userPassesFeedbackRequestHeuristic)()) {
|
|
95
97
|
(0, _feedback.showFeedbackRequest)();
|
|
96
98
|
}
|
|
97
99
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/develop-process.ts"],"names":["tracer","setTimeout","process","send","setInterval","type","telemetry","trackCli","siteMeasurements","pagesCount","store","getState","pages","size","on","msg","action","exit","payload","openDebuggerPort","debugInfo","break","inspector","open","port","undefined","module","exports","program","reporter","setVerbose","verbose","env","GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES","panic","chalk","yellow","cyan","openTracingConfigFile","pendingActivity","id","startBackgroundUpdate","parseInt","e","message","app","parentSpan","startSpan","machine","developMachine","withContext","service","start"],"mappings":";;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../../src/commands/develop-process.ts"],"names":["tracer","setTimeout","process","send","setInterval","type","telemetry","trackCli","siteMeasurements","pagesCount","store","getState","pages","size","on","msg","action","exit","payload","openDebuggerPort","debugInfo","break","inspector","open","port","undefined","module","exports","program","reporter","setVerbose","verbose","env","GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES","panic","chalk","yellow","cyan","openTracingConfigFile","pendingActivity","id","startBackgroundUpdate","parseInt","e","message","app","parentSpan","startSpan","machine","developMachine","withContext","service","start"],"mappings":"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","sourcesContent":["import { syncStaticDir } from \"../utils/get-static-dir\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport chalk from \"chalk\"\nimport telemetry from \"gatsby-telemetry\"\nimport express from \"express\"\nimport inspector from \"inspector\"\nimport { initTracer } from \"../utils/tracer\"\nimport { detectPortInUseAndPrompt } from \"../utils/detect-port-in-use-and-prompt\"\nimport onExit from \"signal-exit\"\nimport {\n userGetsSevenDayFeedback,\n userPassesFeedbackRequestHeuristic,\n showFeedbackRequest,\n showSevenDayFeedbackRequest,\n} from \"../utils/feedback\"\nimport { markWebpackStatusAsPending } from \"../utils/webpack-status\"\nimport { store } from \"../redux\"\n\nimport { IProgram, IDebugInfo } from \"./types\"\nimport { interpret } from \"xstate\"\nimport { globalTracer } from \"opentracing\"\nimport { developMachine } from \"../state-machines/develop\"\nimport { logTransitions } from \"../utils/state-machine-logging\"\n\nconst tracer = globalTracer()\n\n// const isInteractive = process.stdout.isTTY\n\n// Watch the static directory and copy files to public as they're added or\n// changed. Wait 10 seconds so copying doesn't interfere with the regular\n// bootstrap.\nsetTimeout(() => {\n syncStaticDir()\n}, 10000)\n\n// Time for another story...\n// When the parent process is killed by SIGKILL, Node doesm't kill spawned child processes\n// Hence, we peiodically send a heart beat to the parent to check if it is still alive\n// This will crash with Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed\n// and kill the orphaned child process as a result\nif (process.send) {\n setInterval(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n process.send!({\n type: `HEARTBEAT`,\n })\n }, 1000)\n}\n\nonExit(() => {\n telemetry.trackCli(`DEVELOP_STOP`, {\n siteMeasurements: {\n pagesCount: store.getState().pages.size,\n },\n })\n})\n\nprocess.on(`message`, msg => {\n if (msg.type === `COMMAND` && msg.action.type === `EXIT`) {\n process.exit(msg.action.payload)\n }\n})\n\ninterface IDevelopArgs extends IProgram {\n debugInfo: IDebugInfo | null\n}\n\nconst openDebuggerPort = (debugInfo: IDebugInfo): void => {\n if (debugInfo.break) {\n inspector.open(debugInfo.port, undefined, true)\n // eslint-disable-next-line no-debugger\n debugger\n } else {\n inspector.open(debugInfo.port)\n }\n}\n\nmodule.exports = async (program: IDevelopArgs): Promise<void> => {\n reporter.setVerbose(program.verbose)\n\n if (program.debugInfo) {\n openDebuggerPort(program.debugInfo)\n }\n\n // We want to prompt the feedback request when users quit develop\n // assuming they pass the heuristic check to know they are a user\n // we want to request feedback from, and we're not annoying them.\n process.on(\n `SIGINT`,\n async (): Promise<void> => {\n if (await userGetsSevenDayFeedback()) {\n showSevenDayFeedbackRequest()\n } else if (await userPassesFeedbackRequestHeuristic()) {\n showFeedbackRequest()\n }\n process.exit(0)\n }\n )\n\n if (process.env.GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES) {\n reporter.panic(\n `The flag ${chalk.yellow(\n `GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES`\n )} is not available with ${chalk.cyan(\n `gatsby develop`\n )}, please retry using ${chalk.cyan(`gatsby build`)}`\n )\n }\n initTracer(program.openTracingConfigFile)\n markWebpackStatusAsPending()\n reporter.pendingActivity({ id: `webpack-develop` })\n telemetry.trackCli(`DEVELOP_START`)\n telemetry.startBackgroundUpdate()\n\n const port =\n typeof program.port === `string` ? parseInt(program.port, 10) : program.port\n\n try {\n program.port = await detectPortInUseAndPrompt(port)\n } catch (e) {\n if (e.message === `USER_REJECTED`) {\n process.exit(0)\n }\n\n throw e\n }\n\n const app = express()\n const parentSpan = tracer.startSpan(`bootstrap`)\n\n const machine = developMachine.withContext({\n program,\n parentSpan,\n app,\n })\n\n const service = interpret(machine)\n\n if (program.verbose) {\n logTransitions(service)\n }\n\n service.start()\n}\n"],"file":"develop-process.js"}
|
package/dist/utils/feedback.js
CHANGED
|
@@ -5,18 +5,24 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
6
|
exports.setFeedbackDisabledValue = setFeedbackDisabledValue;
|
|
7
7
|
exports.showFeedbackRequest = showFeedbackRequest;
|
|
8
|
+
exports.showSevenDayFeedbackRequest = showSevenDayFeedbackRequest;
|
|
8
9
|
exports.userPassesFeedbackRequestHeuristic = userPassesFeedbackRequestHeuristic;
|
|
10
|
+
exports.userGetsSevenDayFeedback = userGetsSevenDayFeedback;
|
|
9
11
|
|
|
10
12
|
var _reporter = _interopRequireDefault(require("gatsby-cli/lib/reporter"));
|
|
11
13
|
|
|
12
14
|
var _gatsbyCoreUtils = require("gatsby-core-utils");
|
|
13
15
|
|
|
16
|
+
var _gatsbyTelemetry = require("gatsby-telemetry");
|
|
17
|
+
|
|
14
18
|
var _latestVersion = _interopRequireDefault(require("latest-version"));
|
|
15
19
|
|
|
16
20
|
var _getDayOfYear = _interopRequireDefault(require("date-fns/getDayOfYear"));
|
|
17
21
|
|
|
18
22
|
const feedbackKey = `feedback.disabled`;
|
|
19
|
-
const lastDateKey = `feedback.lastRequestDate`;
|
|
23
|
+
const lastDateKey = `feedback.lastRequestDate`;
|
|
24
|
+
const firstDateKey = `feedback.firstCheckDate`;
|
|
25
|
+
const sevenDayKey = `feedback.sevenDayFeedbackDate`; // This function is designed to be used by `gatsby feedback --disable`
|
|
20
26
|
// and `gatsby feedback --enable`. This key is used to determine
|
|
21
27
|
// if a user is allowed to be solicited for feedback
|
|
22
28
|
|
|
@@ -27,12 +33,26 @@ function setFeedbackDisabledValue(enabled) {
|
|
|
27
33
|
|
|
28
34
|
function showFeedbackRequest() {
|
|
29
35
|
(0, _gatsbyCoreUtils.getConfigStore)().set(lastDateKey, Date.now());
|
|
36
|
+
(0, _gatsbyTelemetry.trackCli)(`SHOW_FEEDBACK_LINK`, {
|
|
37
|
+
name: `https://gatsby.dev/feedback`
|
|
38
|
+
});
|
|
30
39
|
|
|
31
40
|
_reporter.default.log(`\n\nHello! Will you help Gatsby improve by taking a four question survey?\nIt takes less than five minutes and your ideas and feedback will be very helpful.`);
|
|
32
41
|
|
|
33
42
|
_reporter.default.log(`\nGive us your feedback here: https://gatsby.dev/feedback\n\n`);
|
|
34
43
|
}
|
|
35
44
|
|
|
45
|
+
function showSevenDayFeedbackRequest() {
|
|
46
|
+
(0, _gatsbyCoreUtils.getConfigStore)().set(sevenDayKey, Date.now());
|
|
47
|
+
(0, _gatsbyTelemetry.trackCli)(`SHOW_SEVEN_DAY_FEEDBACK_LINK`, {
|
|
48
|
+
name: `https://gatsby.dev/feedback-survey`
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
_reporter.default.log(`\n\nHi there! Will you tell us about how you're learning Gatsby? \nIt takes less than 5 minutes and your feedback will help us make installing and using Gatsby so much better.`);
|
|
52
|
+
|
|
53
|
+
_reporter.default.log(`\nGive us your feedback here: https://gatsby.dev/feedback-survey\n\n`);
|
|
54
|
+
}
|
|
55
|
+
|
|
36
56
|
const randomChanceToBeTrue = () => {
|
|
37
57
|
// This is spreading the request volume over the quarter.
|
|
38
58
|
// We are grabbing a randomNumber within the spread of a first day
|
|
@@ -59,15 +79,9 @@ async function userPassesFeedbackRequestHeuristic() {
|
|
|
59
79
|
|
|
60
80
|
if (!randomlyPassingHeuristic) {
|
|
61
81
|
return false;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if ((0, _gatsbyCoreUtils.getConfigStore)().get(feedbackKey) === true) {
|
|
66
|
-
return false;
|
|
67
|
-
} // Heuristic 3
|
|
82
|
+
}
|
|
68
83
|
|
|
69
|
-
|
|
70
|
-
if (process.env.GATSBY_FEEDBACK_DISABLED === `1`) {
|
|
84
|
+
if (isFeedbackDisabled()) {
|
|
71
85
|
return false;
|
|
72
86
|
} // Heuristic 4
|
|
73
87
|
|
|
@@ -84,6 +98,19 @@ async function userPassesFeedbackRequestHeuristic() {
|
|
|
84
98
|
if (lastDate > threeMonthsAgo) {
|
|
85
99
|
return false;
|
|
86
100
|
}
|
|
101
|
+
} // we don't want to give them this survey right after the seven day feedback survey
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
const sevenDayFeedback = (0, _gatsbyCoreUtils.getConfigStore)().get(sevenDayKey);
|
|
105
|
+
|
|
106
|
+
if (sevenDayFeedback) {
|
|
107
|
+
const sevenDayDate = new Date(sevenDayFeedback);
|
|
108
|
+
const threeMonthsAgo = new Date();
|
|
109
|
+
threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3);
|
|
110
|
+
|
|
111
|
+
if (sevenDayDate > threeMonthsAgo) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
87
114
|
} // Heuristic 5
|
|
88
115
|
|
|
89
116
|
|
|
@@ -109,6 +136,46 @@ async function userPassesFeedbackRequestHeuristic() {
|
|
|
109
136
|
// for feedback
|
|
110
137
|
|
|
111
138
|
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function isFeedbackDisabled() {
|
|
143
|
+
// Heuristic 2
|
|
144
|
+
if ((0, _gatsbyCoreUtils.getConfigStore)().get(feedbackKey) === true) {
|
|
145
|
+
return true;
|
|
146
|
+
} // Heuristic 3
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
if (process.env.GATSBY_FEEDBACK_DISABLED === `1`) {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if ((0, _gatsbyCoreUtils.isCI)()) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
async function userGetsSevenDayFeedback() {
|
|
161
|
+
if (isFeedbackDisabled()) return false;
|
|
162
|
+
if ((0, _gatsbyCoreUtils.getConfigStore)().get(sevenDayKey)) return false;
|
|
163
|
+
const firstDateValue = (0, _gatsbyCoreUtils.getConfigStore)().get(firstDateKey);
|
|
164
|
+
|
|
165
|
+
if (!firstDateValue) {
|
|
166
|
+
(0, _gatsbyCoreUtils.getConfigStore)().set(firstDateKey, Date.now()); // set this for the first time
|
|
167
|
+
|
|
168
|
+
return false;
|
|
169
|
+
} else {
|
|
170
|
+
const lastDate = new Date(firstDateValue);
|
|
171
|
+
const sevenDaysAgo = new Date();
|
|
172
|
+
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
|
173
|
+
|
|
174
|
+
if (lastDate > sevenDaysAgo) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
112
179
|
return true;
|
|
113
180
|
}
|
|
114
181
|
//# sourceMappingURL=feedback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/feedback.ts"],"names":["feedbackKey","lastDateKey","setFeedbackDisabledValue","enabled","set","showFeedbackRequest","Date","now","report","log","randomChanceToBeTrue","currentQuarter","Math","floor","getMonth","randomNumber","random","randomNumberWithinQuarter","userPassesFeedbackRequestHeuristic","randomlyPassingHeuristic","get","process","env","GATSBY_FEEDBACK_DISABLED","lastDateValue","lastDate","threeMonthsAgo","setMonth","versionPoints","split","latestVersionPoints","e","versionsMatchOnMajorAndMinor"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA,MAAMA,WAAW,GAAI,mBAArB;AACA,MAAMC,WAAW,GAAI,0BAArB,C,CAEA;AACA;AACA;;AACO,SAASC,wBAAT,CAAkCC,OAAlC,EAA0D;AAC/D,yCAAiBC,GAAjB,CAAqBJ,WAArB,EAAkCG,OAAlC;AACD,C,CAED;;;AACO,SAASE,mBAAT,GAAqC;AAC1C,yCAAiBD,GAAjB,CAAqBH,WAArB,EAAkCK,IAAI,CAACC,GAAL,EAAlC;;AACAC,oBAAOC,GAAP,CACG,8JADH;;AAGAD,oBAAOC,GAAP,CAAY,+DAAZ;AACD;;AAED,MAAMC,oBAAoB,GAAG,MAAe;AAC1C;AACA;AACA;AACA,QAAMC,cAAc,GAAGC,IAAI,CAACC,KAAL,CAAW,CAAC,IAAIP,IAAJ,GAAWQ,QAAX,KAAwB,CAAzB,IAA8B,CAAzC,CAAvB;AACA,QAAMC,YAAY,GAAGH,IAAI,CAACC,KAAL,CACnBD,IAAI,CAACI,MAAL,OACE;AACC,OAAK,CAFR,CADmB,CAArB;AAKA,QAAMC,yBAAyB,GAAGF,YAAY,GAAG,KAAK,CAAL,IAAUJ,cAAc,GAAG,CAA3B,CAAjD;AAEA,SAAOM,yBAAyB,KAAK,2BAAa,IAAIX,IAAJ,EAAb,CAArC;AACD,CAbD,C,CAeA;AACA;AACA;AACA;AACA;AACA;;;AACO,eAAeY,kCAAf,GAAsE;AAC3E;AACA;AACA;AACA;AACA,QAAMC,wBAAwB,GAC5BT,oBAAoB,MACpBA,oBAAoB,EADpB,IAEAA,oBAAoB,EAFpB,IAGAA,oBAAoB,EAHpB,IAIAA,oBAAoB,EALtB;;AAOA,MAAI,CAACS,wBAAL,EAA+B;AAC7B,WAAO,KAAP;AACD,GAd0E,CAgB3E;;;AACA,MAAI,uCAAiBC,GAAjB,CAAqBpB,WAArB,MAAsC,IAA1C,EAAgD;AAC9C,WAAO,KAAP;AACD,GAnB0E,CAqB3E;;;AACA,MAAIqB,OAAO,CAACC,GAAR,CAAYC,wBAAZ,KAA0C,GAA9C,EAAkD;AAChD,WAAO,KAAP;AACD,GAxB0E,CA0B3E;;;AACA,QAAMC,aAAa,GAAG,uCAAiBJ,GAAjB,CAAqBnB,WAArB,CAAtB,CA3B2E,CA4B3E;AACA;AACA;;AACA,MAAIuB,aAAJ,EAAmB;AACjB,UAAMC,QAAQ,GAAG,IAAInB,IAAJ,CAASkB,aAAT,CAAjB;AACA,UAAME,cAAc,GAAG,IAAIpB,IAAJ,EAAvB;AACAoB,IAAAA,cAAc,CAACC,QAAf,CAAwBD,cAAc,CAACZ,QAAf,KAA4B,CAApD;;AAEA,QAAIW,QAAQ,GAAGC,cAAf,EAA+B;AAC7B,aAAO,KAAP;AACD;AACF,GAvC0E,CAyC3E;;;AACA,QAAME,aAAa,GAAG,yCAAmBC,KAAnB,CAA0B,GAA1B,CAAtB;AACA,MAAIC,mBAAkC,GAAG,EAAzC;;AACA,MAAI;AACFA,IAAAA,mBAAmB,GAAG,CAAC,MAAM,4BAAe,QAAf,CAAP,EAAgCD,KAAhC,CAAuC,GAAvC,CAAtB;AACD,GAFD,CAEE,OAAOE,CAAP,EAAU,CACV;AACA;AACA;AACA;AACD,GAnD0E,CAqD3E;AACA;AACA;;;AACA,QAAMC,4BAA4B,GAChCJ,aAAa,CAAC,CAAD,CAAb,KAAqBE,mBAAmB,CAAC,CAAD,CAAxC,IACAF,aAAa,CAAC,CAAD,CAAb,KAAqBE,mBAAmB,CAAC,CAAD,CAF1C;;AAIA,MAAIE,4BAA4B,KAAK,KAArC,EAA4C;AAC1C,WAAO,KAAP;AACD,GA9D0E,CAgE3E;AACA;;;AACA,SAAO,IAAP;AACD","sourcesContent":["import report from \"gatsby-cli/lib/reporter\"\nimport { getConfigStore, getGatsbyVersion } from \"gatsby-core-utils\"\nimport latestVersion from \"latest-version\"\nimport getDayOfYear from \"date-fns/getDayOfYear\"\n\nconst feedbackKey = `feedback.disabled`\nconst lastDateKey = `feedback.lastRequestDate`\n\n// This function is designed to be used by `gatsby feedback --disable`\n// and `gatsby feedback --enable`. This key is used to determine\n// if a user is allowed to be solicited for feedback\nexport function setFeedbackDisabledValue(enabled: boolean): void {\n getConfigStore().set(feedbackKey, enabled)\n}\n\n// Print the feedback request to the user\nexport function showFeedbackRequest(): void {\n getConfigStore().set(lastDateKey, Date.now())\n report.log(\n `\\n\\nHello! Will you help Gatsby improve by taking a four question survey?\\nIt takes less than five minutes and your ideas and feedback will be very helpful.`\n )\n report.log(`\\nGive us your feedback here: https://gatsby.dev/feedback\\n\\n`)\n}\n\nconst randomChanceToBeTrue = (): boolean => {\n // This is spreading the request volume over the quarter.\n // We are grabbing a randomNumber within the spread of a first day\n // of a quarter, to the last day\n const currentQuarter = Math.floor((new Date().getMonth() + 3) / 3)\n const randomNumber = Math.floor(\n Math.random() *\n // One quarter year in days (roughly)\n (30 * 3)\n )\n const randomNumberWithinQuarter = randomNumber + 30 * 3 * (currentQuarter - 1)\n\n return randomNumberWithinQuarter === getDayOfYear(new Date())\n}\n\n// We are only showing feedback requests to users in if they pass a few checks:\n// 1. They pass a Math.random() check. This is a skateboard version of not sending out all requests in one day.\n// 2. They haven't disabled the feedback mechanism\n// 3. They don't have the environment variable to disable feedback present\n// 4. It's been at least 3 months since the last feedback request\n// 5. They are on the most recent version of Gatsby\nexport async function userPassesFeedbackRequestHeuristic(): Promise<boolean> {\n // Heuristic 1\n // We originally wrote this to have a single chance of hitting.\n // We wanted to up the chance by 5x, so this is our crude - temporary -\n // way of giving the user 5 chances to passing.\n const randomlyPassingHeuristic =\n randomChanceToBeTrue() ||\n randomChanceToBeTrue() ||\n randomChanceToBeTrue() ||\n randomChanceToBeTrue() ||\n randomChanceToBeTrue()\n\n if (!randomlyPassingHeuristic) {\n return false\n }\n\n // Heuristic 2\n if (getConfigStore().get(feedbackKey) === true) {\n return false\n }\n\n // Heuristic 3\n if (process.env.GATSBY_FEEDBACK_DISABLED === `1`) {\n return false\n }\n\n // Heuristic 4\n const lastDateValue = getConfigStore().get(lastDateKey)\n // 4.a if the user has never received the feedback request, this is undefined\n // Which is effectively a pass, because it's been ~infinity~ since they last\n // received a request from us.\n if (lastDateValue) {\n const lastDate = new Date(lastDateValue)\n const threeMonthsAgo = new Date()\n threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3)\n\n if (lastDate > threeMonthsAgo) {\n return false\n }\n }\n\n // Heuristic 5\n const versionPoints = getGatsbyVersion().split(`.`)\n let latestVersionPoints: Array<string> = []\n try {\n latestVersionPoints = (await latestVersion(`gatsby`)).split(`.`)\n } catch (e) {\n // do nothing.\n // if the request fails, then we should just not show the feedback request\n // because this in theory could happen often and we don't want to be spammy.\n // In this case, we are guaranteed to have `versionsMatchOnMajorAndMinor` === false\n }\n\n // Since we push versions very frequently. So thinking that users will\n // be on the latest patch is potentially unrealistic. So we are just\n // comparing on major and minor version points.\n const versionsMatchOnMajorAndMinor =\n versionPoints[0] === latestVersionPoints[0] &&\n versionPoints[1] === latestVersionPoints[1]\n\n if (versionsMatchOnMajorAndMinor === false) {\n return false\n }\n\n // If all of the above passed, then the user is able to be prompted\n // for feedback\n return true\n}\n"],"file":"feedback.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/feedback.ts"],"names":["feedbackKey","lastDateKey","firstDateKey","sevenDayKey","setFeedbackDisabledValue","enabled","set","showFeedbackRequest","Date","now","name","report","log","showSevenDayFeedbackRequest","randomChanceToBeTrue","currentQuarter","Math","floor","getMonth","randomNumber","random","randomNumberWithinQuarter","userPassesFeedbackRequestHeuristic","randomlyPassingHeuristic","isFeedbackDisabled","lastDateValue","get","lastDate","threeMonthsAgo","setMonth","sevenDayFeedback","sevenDayDate","versionPoints","split","latestVersionPoints","e","versionsMatchOnMajorAndMinor","process","env","GATSBY_FEEDBACK_DISABLED","userGetsSevenDayFeedback","firstDateValue","sevenDaysAgo","setDate","getDate"],"mappings":"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","sourcesContent":["import report from \"gatsby-cli/lib/reporter\"\nimport { getConfigStore, getGatsbyVersion, isCI } from \"gatsby-core-utils\"\nimport { trackCli } from \"gatsby-telemetry\"\nimport latestVersion from \"latest-version\"\nimport getDayOfYear from \"date-fns/getDayOfYear\"\n\nconst feedbackKey = `feedback.disabled`\nconst lastDateKey = `feedback.lastRequestDate`\nconst firstDateKey = `feedback.firstCheckDate`\nconst sevenDayKey = `feedback.sevenDayFeedbackDate`\n\n// This function is designed to be used by `gatsby feedback --disable`\n// and `gatsby feedback --enable`. This key is used to determine\n// if a user is allowed to be solicited for feedback\nexport function setFeedbackDisabledValue(enabled: boolean): void {\n getConfigStore().set(feedbackKey, enabled)\n}\n\n// Print the feedback request to the user\nexport function showFeedbackRequest(): void {\n getConfigStore().set(lastDateKey, Date.now())\n trackCli(`SHOW_FEEDBACK_LINK`, {\n name: `https://gatsby.dev/feedback`,\n })\n report.log(\n `\\n\\nHello! Will you help Gatsby improve by taking a four question survey?\\nIt takes less than five minutes and your ideas and feedback will be very helpful.`\n )\n report.log(`\\nGive us your feedback here: https://gatsby.dev/feedback\\n\\n`)\n}\n\nexport function showSevenDayFeedbackRequest(): void {\n getConfigStore().set(sevenDayKey, Date.now())\n trackCli(`SHOW_SEVEN_DAY_FEEDBACK_LINK`, {\n name: `https://gatsby.dev/feedback-survey`,\n })\n report.log(\n `\\n\\nHi there! Will you tell us about how you're learning Gatsby? \\nIt takes less than 5 minutes and your feedback will help us make installing and using Gatsby so much better.`\n )\n report.log(\n `\\nGive us your feedback here: https://gatsby.dev/feedback-survey\\n\\n`\n )\n}\n\nconst randomChanceToBeTrue = (): boolean => {\n // This is spreading the request volume over the quarter.\n // We are grabbing a randomNumber within the spread of a first day\n // of a quarter, to the last day\n const currentQuarter = Math.floor((new Date().getMonth() + 3) / 3)\n const randomNumber = Math.floor(\n Math.random() *\n // One quarter year in days (roughly)\n (30 * 3)\n )\n const randomNumberWithinQuarter = randomNumber + 30 * 3 * (currentQuarter - 1)\n\n return randomNumberWithinQuarter === getDayOfYear(new Date())\n}\n\n// We are only showing feedback requests to users in if they pass a few checks:\n// 1. They pass a Math.random() check. This is a skateboard version of not sending out all requests in one day.\n// 2. They haven't disabled the feedback mechanism\n// 3. They don't have the environment variable to disable feedback present\n// 4. It's been at least 3 months since the last feedback request\n// 5. They are on the most recent version of Gatsby\nexport async function userPassesFeedbackRequestHeuristic(): Promise<boolean> {\n // Heuristic 1\n // We originally wrote this to have a single chance of hitting.\n // We wanted to up the chance by 5x, so this is our crude - temporary -\n // way of giving the user 5 chances to passing.\n const randomlyPassingHeuristic =\n randomChanceToBeTrue() ||\n randomChanceToBeTrue() ||\n randomChanceToBeTrue() ||\n randomChanceToBeTrue() ||\n randomChanceToBeTrue()\n\n if (!randomlyPassingHeuristic) {\n return false\n }\n\n if (isFeedbackDisabled()) {\n return false\n }\n\n // Heuristic 4\n const lastDateValue = getConfigStore().get(lastDateKey)\n // 4.a if the user has never received the feedback request, this is undefined\n // Which is effectively a pass, because it's been ~infinity~ since they last\n // received a request from us.\n if (lastDateValue) {\n const lastDate = new Date(lastDateValue)\n const threeMonthsAgo = new Date()\n threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3)\n\n if (lastDate > threeMonthsAgo) {\n return false\n }\n }\n\n // we don't want to give them this survey right after the seven day feedback survey\n const sevenDayFeedback = getConfigStore().get(sevenDayKey)\n if (sevenDayFeedback) {\n const sevenDayDate = new Date(sevenDayFeedback)\n const threeMonthsAgo = new Date()\n threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3)\n\n if (sevenDayDate > threeMonthsAgo) {\n return false\n }\n }\n\n // Heuristic 5\n const versionPoints = getGatsbyVersion().split(`.`)\n let latestVersionPoints: Array<string> = []\n try {\n latestVersionPoints = (await latestVersion(`gatsby`)).split(`.`)\n } catch (e) {\n // do nothing.\n // if the request fails, then we should just not show the feedback request\n // because this in theory could happen often and we don't want to be spammy.\n // In this case, we are guaranteed to have `versionsMatchOnMajorAndMinor` === false\n }\n\n // Since we push versions very frequently. So thinking that users will\n // be on the latest patch is potentially unrealistic. So we are just\n // comparing on major and minor version points.\n const versionsMatchOnMajorAndMinor =\n versionPoints[0] === latestVersionPoints[0] &&\n versionPoints[1] === latestVersionPoints[1]\n\n if (versionsMatchOnMajorAndMinor === false) {\n return false\n }\n\n // If all of the above passed, then the user is able to be prompted\n // for feedback\n return true\n}\n\nfunction isFeedbackDisabled(): boolean {\n // Heuristic 2\n if (getConfigStore().get(feedbackKey) === true) {\n return true\n }\n\n // Heuristic 3\n if (process.env.GATSBY_FEEDBACK_DISABLED === `1`) {\n return true\n }\n\n if (isCI()) {\n return true\n }\n\n return false\n}\n\nexport async function userGetsSevenDayFeedback(): Promise<boolean> {\n if (isFeedbackDisabled()) return false\n\n if (getConfigStore().get(sevenDayKey)) return false\n\n const firstDateValue = getConfigStore().get(firstDateKey)\n\n if (!firstDateValue) {\n getConfigStore().set(firstDateKey, Date.now()) // set this for the first time\n return false\n } else {\n const lastDate = new Date(firstDateValue)\n const sevenDaysAgo = new Date()\n sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7)\n\n if (lastDate > sevenDaysAgo) {\n return false\n }\n }\n return true\n}\n"],"file":"feedback.js"}
|