gatsby 3.10.0-next.6 → 3.10.2
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 +40 -0
- package/cache-dir/app.js +1 -1
- package/cache-dir/commonjs/app.js +1 -1
- package/dist/bootstrap/load-config-and-plugins.js +5 -0
- package/dist/bootstrap/load-config-and-plugins.js.map +1 -1
- package/dist/commands/build-html.js +9 -4
- package/dist/commands/build-html.js.map +1 -1
- package/dist/commands/build.js +12 -2
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/develop.js +12 -12
- package/dist/commands/develop.js.map +1 -1
- package/dist/schema/resolvers.js +1 -1
- package/dist/schema/resolvers.js.map +1 -1
- package/dist/services/run-page-queries.js +9 -3
- package/dist/services/run-page-queries.js.map +1 -1
- package/dist/services/run-static-queries.js +10 -3
- package/dist/services/run-static-queries.js.map +1 -1
- package/dist/utils/api-node-helpers-docs.js +10 -1
- package/dist/utils/api-node-helpers-docs.js.map +1 -1
- package/dist/utils/api-runner-node.js +4 -0
- package/dist/utils/api-runner-node.js.map +1 -1
- package/dist/utils/cache-lmdb.d.ts +16 -0
- package/dist/utils/cache-lmdb.js +80 -0
- package/dist/utils/cache-lmdb.js.map +1 -0
- package/dist/utils/cache.d.ts +1 -0
- package/dist/utils/cache.js +11 -0
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/flags.d.ts +7 -0
- package/dist/utils/flags.js +17 -5
- package/dist/utils/flags.js.map +1 -1
- package/dist/utils/get-cache.js +14 -3
- package/dist/utils/get-cache.js.map +1 -1
- package/dist/utils/handle-flags.d.ts +1 -0
- package/dist/utils/handle-flags.js +19 -2
- package/dist/utils/handle-flags.js.map +1 -1
- package/dist/utils/webpack.config.js +1 -1
- package/dist/utils/webpack.config.js.map +1 -1
- package/dist/utils/worker/child/queries.d.ts +4 -1
- package/dist/utils/worker/child/queries.js +19 -0
- package/dist/utils/worker/child/queries.js.map +1 -1
- package/dist/utils/worker/pool.js +17 -2
- package/dist/utils/worker/pool.js.map +1 -1
- package/gatsby-admin-public/app-7416363fd827487b167c.js.map +1 -1
- package/gatsby-admin-public/chunk-map.json +1 -1
- package/gatsby-admin-public/component---src-pages-recipe-js-9e01f3d3434a2f348a2c.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-ec82ae3845a81bcd97bd.js +2 -0
- package/gatsby-admin-public/polyfill-ec82ae3845a81bcd97bd.js.map +1 -0
- package/gatsby-admin-public/recipe/index.html +1 -1
- package/gatsby-admin-public/recipes/index.html +1 -1
- package/gatsby-admin-public/webpack.stats.json +1 -1
- package/index.d.ts +9 -0
- package/package.json +16 -16
- package/gatsby-admin-public/polyfill-6a067988206c3d85ff5f.js +0 -2
- package/gatsby-admin-public/polyfill-6a067988206c3d85ff5f.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,46 @@
|
|
|
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
|
+
## [3.10.2](https://github.com/gatsbyjs/gatsby/compare/gatsby@3.10.1...gatsby@3.10.2) (2021-07-26)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **gatsby:** correct pagination logic ([#32496](https://github.com/gatsbyjs/gatsby/issues/32496)) ([#32507](https://github.com/gatsbyjs/gatsby/issues/32507)) ([c6d370d](https://github.com/gatsbyjs/gatsby/commit/c6d370dbb4782b4a9851b202d231c6133fb12e4d)), closes [#32319](https://github.com/gatsbyjs/gatsby/issues/32319)
|
|
11
|
+
|
|
12
|
+
## [3.10.1](https://github.com/gatsbyjs/gatsby/compare/gatsby@3.10.0...gatsby@3.10.1) (2021-07-21)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- expose ".del" function on lmdb cache ([#32459](https://github.com/gatsbyjs/gatsby/issues/32459)) ([#32464](https://github.com/gatsbyjs/gatsby/issues/32464)) ([c01551e](https://github.com/gatsbyjs/gatsby/commit/c01551eb9e09cd8471daa1072e7dc99add89fea8))
|
|
17
|
+
|
|
18
|
+
# [3.10.0](https://github.com/gatsbyjs/gatsby/compare/gatsby@3.10.0-next.7...gatsby@3.10.0) (2021-07-20)
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
- **gatsby:** Add `directory` to GatsbyCacheLmdb ([#32391](https://github.com/gatsbyjs/gatsby/issues/32391)) ([#32421](https://github.com/gatsbyjs/gatsby/issues/32421)) ([3d5bf37](https://github.com/gatsbyjs/gatsby/commit/3d5bf372f9a96332216a45038118fb4438c1e298))
|
|
23
|
+
- **gatsby:** catch error from this.process.send ([#32356](https://github.com/gatsbyjs/gatsby/issues/32356)) ([#32387](https://github.com/gatsbyjs/gatsby/issues/32387)) ([0ae10bf](https://github.com/gatsbyjs/gatsby/commit/0ae10bf5dc87202deddb6f197631a2acba7f1cab))
|
|
24
|
+
- **gatsby:** correct hasNextPage pagination info when resultOffset is provided ([#32319](https://github.com/gatsbyjs/gatsby/issues/32319)) ([#32386](https://github.com/gatsbyjs/gatsby/issues/32386)) ([ba0050a](https://github.com/gatsbyjs/gatsby/commit/ba0050a637824477f7666ebf0564dafd94976589))
|
|
25
|
+
- **gatsby:** handle errors thrown when importing html renderer ([#32417](https://github.com/gatsbyjs/gatsby/issues/32417)) ([#32423](https://github.com/gatsbyjs/gatsby/issues/32423)) ([006788d](https://github.com/gatsbyjs/gatsby/commit/006788d5869ecbbad2a13f25986ad5c16b4cbe72))
|
|
26
|
+
- **gatsby,gatsby-plugin-image:** fix createRoot on React 18 ([#32378](https://github.com/gatsbyjs/gatsby/issues/32378)) ([#32420](https://github.com/gatsbyjs/gatsby/issues/32420)) ([1b45c7b](https://github.com/gatsbyjs/gatsby/commit/1b45c7b462343d7d96b4ec8b10ec00a16360a84a))
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
- **gatsby:** Add cache-lmdb implementation ([#32373](https://github.com/gatsbyjs/gatsby/issues/32373)) ([7897834](https://github.com/gatsbyjs/gatsby/commit/789783410878d562f1499c1915155135ac258d82))
|
|
31
|
+
- **gatsby:** Add webpack fs caching for development flag ([#32264](https://github.com/gatsbyjs/gatsby/issues/32264)) ([4f9a724](https://github.com/gatsbyjs/gatsby/commit/4f9a724b91ce35b0232952023eaecb8db448719d))
|
|
32
|
+
- **gatsby:** display message about unfit flags found in config ([#32394](https://github.com/gatsbyjs/gatsby/issues/32394)) ([#32424](https://github.com/gatsbyjs/gatsby/issues/32424)) ([7499b22](https://github.com/gatsbyjs/gatsby/commit/7499b2239684eeeefbbf9ce4430fc8c56239dbe8))
|
|
33
|
+
- **gatsby:** PQR: merge data dependencies from workers to the main process ([#32305](https://github.com/gatsbyjs/gatsby/issues/32305)) ([#32438](https://github.com/gatsbyjs/gatsby/issues/32438)) ([5982a17](https://github.com/gatsbyjs/gatsby/commit/5982a1781cf675f4e74920233424f5f39ce87630))
|
|
34
|
+
|
|
35
|
+
# [3.10.0-next.7](https://github.com/gatsbyjs/gatsby/compare/gatsby@3.10.0-next.6...gatsby@3.10.0-next.7) (2021-07-14)
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
- **gatsby:** Hide page/static queries activities for PQR ([#32361](https://github.com/gatsbyjs/gatsby/issues/32361)) ([d65de41](https://github.com/gatsbyjs/gatsby/commit/d65de413b8d0ad5720c46652936b44dda3f872c9))
|
|
40
|
+
- **gatsby:** shut down worker pool after html generation ([#32366](https://github.com/gatsbyjs/gatsby/issues/32366)) ([8cba0b9](https://github.com/gatsbyjs/gatsby/commit/8cba0b915cd0bd987675c4ed1839bbdaf39ae217))
|
|
41
|
+
|
|
42
|
+
### Features
|
|
43
|
+
|
|
44
|
+
- **gatsby:** restart worker pool after query running in workers ([#32365](https://github.com/gatsbyjs/gatsby/issues/32365)) ([b9236e1](https://github.com/gatsbyjs/gatsby/commit/b9236e16aac8c889c526571738c716cfb520043d))
|
|
45
|
+
|
|
6
46
|
# [3.10.0-next.6](https://github.com/gatsbyjs/gatsby/compare/gatsby@3.10.0-next.5...gatsby@3.10.0-next.6) (2021-07-14)
|
|
7
47
|
|
|
8
48
|
### Bug Fixes
|
package/cache-dir/app.js
CHANGED
|
@@ -194,7 +194,7 @@ apiRunnerAsync(`onClientEntry`).then(() => {
|
|
|
194
194
|
document.body.append(indicatorMountElement)
|
|
195
195
|
|
|
196
196
|
if (renderer === ReactDOM.hydrateRoot) {
|
|
197
|
-
|
|
197
|
+
ReactDOM.createRoot(indicatorMountElement).render(
|
|
198
198
|
<LoadingIndicatorEventHandler />
|
|
199
199
|
)
|
|
200
200
|
} else {
|
|
@@ -163,7 +163,7 @@ function notCalledFunction() {
|
|
|
163
163
|
document.body.append(indicatorMountElement);
|
|
164
164
|
|
|
165
165
|
if (renderer === _reactDom.default.hydrateRoot) {
|
|
166
|
-
|
|
166
|
+
_reactDom.default.createRoot(indicatorMountElement).render( /*#__PURE__*/_react.default.createElement(_loadingIndicator.LoadingIndicatorEventHandler, null));
|
|
167
167
|
} else {
|
|
168
168
|
_reactDom.default.render( /*#__PURE__*/_react.default.createElement(_loadingIndicator.LoadingIndicatorEventHandler, null), indicatorMountElement);
|
|
169
169
|
}
|
|
@@ -53,11 +53,16 @@ async function loadConfigAndPlugins({
|
|
|
53
53
|
const {
|
|
54
54
|
enabledConfigFlags,
|
|
55
55
|
unknownFlagMessage,
|
|
56
|
+
unfitFlagMessage,
|
|
56
57
|
message
|
|
57
58
|
} = (0, _handleFlags.default)(_flags.default, config.flags);
|
|
58
59
|
|
|
59
60
|
if (unknownFlagMessage !== ``) {
|
|
60
61
|
_reporter.default.warn(unknownFlagMessage);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (unfitFlagMessage !== ``) {
|
|
65
|
+
_reporter.default.warn(unfitFlagMessage);
|
|
61
66
|
} // set process.env for each flag
|
|
62
67
|
|
|
63
68
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bootstrap/load-config-and-plugins.ts"],"names":["loadConfigAndPlugins","siteDirectory","processFlags","configModule","configFilePath","config","reporter","panic","id","context","configName","enabledConfigFlags","unknownFlagMessage","message","availableFlags","flags","warn","forEach","flag","process","env","info","telemetryId","telemetry","trackFeatureIsUsed","plugins","rootDir","store","dispatch","internalActions","setSiteConfig","flattenedPlugins"],"mappings":";;;;;;;AAAA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,eAAeA,oBAAf,CAAoC;AACzCC,EAAAA,aADyC;AAEzCC,EAAAA,YAAY,GAAG;AAF0B,CAApC,EASJ;AACD;AACA,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAmC,MAAM,kCAC7CH,aAD6C,EAE5C,eAF4C,CAA/C;AAIA,MAAII,MAAM,GAAG,kCAAcF,YAAd,CAAb,CANC,CAQD;;AACA,MAAI,OAAOE,MAAP,KAAmB,UAAvB,EAAkC;AAChCC,sBAASC,KAAT,CAAe;AACbC,MAAAA,EAAE,EAAG,OADQ;AAEbC,MAAAA,OAAO,EAAE;AACPC,QAAAA,UAAU,EAAG,eADN;AAEPT,QAAAA;AAFO;AAFI,KAAf;AAOD;;AAED,MAAII,MAAM,IAAIH,YAAd,EAA4B;AAC1B;AACA,QAAIG,MAAJ,EAAY;AACV;AACA,YAAM;
|
|
1
|
+
{"version":3,"sources":["../../src/bootstrap/load-config-and-plugins.ts"],"names":["loadConfigAndPlugins","siteDirectory","processFlags","configModule","configFilePath","config","reporter","panic","id","context","configName","enabledConfigFlags","unknownFlagMessage","unfitFlagMessage","message","availableFlags","flags","warn","forEach","flag","process","env","info","telemetryId","telemetry","trackFeatureIsUsed","plugins","rootDir","store","dispatch","internalActions","setSiteConfig","flattenedPlugins"],"mappings":";;;;;;;AAAA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,eAAeA,oBAAf,CAAoC;AACzCC,EAAAA,aADyC;AAEzCC,EAAAA,YAAY,GAAG;AAF0B,CAApC,EASJ;AACD;AACA,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAmC,MAAM,kCAC7CH,aAD6C,EAE5C,eAF4C,CAA/C;AAIA,MAAII,MAAM,GAAG,kCAAcF,YAAd,CAAb,CANC,CAQD;;AACA,MAAI,OAAOE,MAAP,KAAmB,UAAvB,EAAkC;AAChCC,sBAASC,KAAT,CAAe;AACbC,MAAAA,EAAE,EAAG,OADQ;AAEbC,MAAAA,OAAO,EAAE;AACPC,QAAAA,UAAU,EAAG,eADN;AAEPT,QAAAA;AAFO;AAFI,KAAf;AAOD;;AAED,MAAII,MAAM,IAAIH,YAAd,EAA4B;AAC1B;AACA,QAAIG,MAAJ,EAAY;AACV;AACA,YAAM;AACJM,QAAAA,kBADI;AAEJC,QAAAA,kBAFI;AAGJC,QAAAA,gBAHI;AAIJC,QAAAA;AAJI,UAKF,0BAAYC,cAAZ,EAA4BV,MAAM,CAACW,KAAnC,CALJ;;AAOA,UAAIJ,kBAAkB,KAAM,EAA5B,EAA+B;AAC7BN,0BAASW,IAAT,CAAcL,kBAAd;AACD;;AACD,UAAIC,gBAAgB,KAAM,EAA1B,EAA6B;AAC3BP,0BAASW,IAAT,CAAcJ,gBAAd;AACD,OAdS,CAeV;;;AACAF,MAAAA,kBAAkB,CAACO,OAAnB,CAA2BC,IAAI,IAAI;AACjCC,QAAAA,OAAO,CAACC,GAAR,CAAYF,IAAI,CAACE,GAAjB,IAAyB,MAAzB;AACD,OAFD,EAhBU,CAoBV;;AACA,UAAIP,OAAO,KAAM,EAAjB,EAAoB;AAClBR,0BAASgB,IAAT,CAAcR,OAAd;AACD,OAvBS,CAyBV;;;AACAH,MAAAA,kBAAkB,CAACO,OAAnB,CAA2BC,IAAI,IAAI;AACjC,YAAIA,IAAI,CAACI,WAAT,EAAsB;AACpBC,mCAAUC,kBAAV,CAA6BN,IAAI,CAACI,WAAlC;AACD;AACF,OAJD,EA1BU,CAgCV;;AACA,UAAIlB,MAAM,CAACW,KAAX,EAAkB;AAChBQ,iCAAUC,kBAAV,CAA8B,aAA9B;AACD;AACF;AACF,GA1DA,CA4DD;;;AACA,MAAIpB,MAAJ,EAAY;AACV,UAAMqB,OAAO,GAAG,MAAM,yBAAWrB,MAAX,EAAmB;AACvCD,MAAAA,cADuC;AAEvCuB,MAAAA,OAAO,EAAE1B;AAF8B,KAAnB,CAAtB;AAIAI,IAAAA,MAAM,GAAGqB,OAAO,CAACrB,MAAjB;AACD;;AAEDuB,eAAMC,QAAN,CAAeC,yBAAgBC,aAAhB,CAA8B1B,MAA9B,CAAf;;AAEA,QAAM2B,gBAAgB,GAAG,MAAM,8BAAY3B,MAAZ,EAAoBJ,aAApB,CAA/B;AAEA,SAAO;AAAEI,IAAAA,MAAF;AAAU2B,IAAAA;AAAV,GAAP;AACD","sourcesContent":["import reporter from \"gatsby-cli/lib/reporter\"\nimport telemetry from \"gatsby-telemetry\"\n\nimport { IFlattenedPlugin } from \"./load-plugins/types\"\n\nimport { preferDefault } from \"../bootstrap/prefer-default\"\nimport { getConfigFile } from \"../bootstrap/get-config-file\"\nimport { loadPlugins } from \"../bootstrap/load-plugins\"\nimport { internalActions } from \"../redux/actions\"\nimport loadThemes from \"../bootstrap/load-themes\"\nimport { store } from \"../redux\"\nimport handleFlags from \"../utils/handle-flags\"\nimport availableFlags from \"../utils/flags\"\n\nexport async function loadConfigAndPlugins({\n siteDirectory,\n processFlags = false,\n}: {\n siteDirectory: string\n processFlags?: boolean\n}): Promise<{\n config: any\n flattenedPlugins: Array<IFlattenedPlugin>\n}> {\n // Try opening the site's gatsby-config.js file.\n const { configModule, configFilePath } = await getConfigFile(\n siteDirectory,\n `gatsby-config`\n )\n let config = preferDefault(configModule)\n\n // The root config cannot be exported as a function, only theme configs\n if (typeof config === `function`) {\n reporter.panic({\n id: `10126`,\n context: {\n configName: `gatsby-config`,\n siteDirectory,\n },\n })\n }\n\n if (config && processFlags) {\n // Setup flags\n if (config) {\n // Get flags\n const {\n enabledConfigFlags,\n unknownFlagMessage,\n unfitFlagMessage,\n message,\n } = handleFlags(availableFlags, config.flags)\n\n if (unknownFlagMessage !== ``) {\n reporter.warn(unknownFlagMessage)\n }\n if (unfitFlagMessage !== ``) {\n reporter.warn(unfitFlagMessage)\n }\n // set process.env for each flag\n enabledConfigFlags.forEach(flag => {\n process.env[flag.env] = `true`\n })\n\n // Print out message.\n if (message !== ``) {\n reporter.info(message)\n }\n\n // track usage of feature\n enabledConfigFlags.forEach(flag => {\n if (flag.telemetryId) {\n telemetry.trackFeatureIsUsed(flag.telemetryId)\n }\n })\n\n // Track the usage of config.flags\n if (config.flags) {\n telemetry.trackFeatureIsUsed(`ConfigFlags`)\n }\n }\n }\n\n // theme gatsby configs can be functions or objects\n if (config) {\n const plugins = await loadThemes(config, {\n configFilePath,\n rootDir: siteDirectory,\n })\n config = plugins.config\n }\n\n store.dispatch(internalActions.setSiteConfig(config))\n\n const flattenedPlugins = await loadPlugins(config, siteDirectory)\n\n return { config, flattenedPlugins }\n}\n"],"file":"load-config-and-plugins.js"}
|
|
@@ -279,14 +279,19 @@ const doBuildPages = async (rendererPath, pagePaths, activity, workerPool, stage
|
|
|
279
279
|
try {
|
|
280
280
|
await renderHTMLQueue(workerPool, activity, rendererPath, pagePaths, stage);
|
|
281
281
|
} catch (error) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
const pageDataMessage = `Page data from page-data.json for the failed page "${error.context.path}": ${JSON.stringify(truncatedPageData, null, 2)}`;
|
|
282
|
+
var _error$context;
|
|
283
|
+
|
|
285
284
|
const prettyError = await (0, _errors.createErrorFromString)(error.stack, `${rendererPath}.map`);
|
|
286
285
|
const buildError = new BuildHTMLError(prettyError);
|
|
287
286
|
buildError.context = error.context;
|
|
288
287
|
|
|
289
|
-
|
|
288
|
+
if (error !== null && error !== void 0 && (_error$context = error.context) !== null && _error$context !== void 0 && _error$context.path) {
|
|
289
|
+
const pageData = await (0, _getPageData.getPageData)(error.context.path);
|
|
290
|
+
const truncatedPageData = truncateObjStrings(pageData);
|
|
291
|
+
const pageDataMessage = `Page data from page-data.json for the failed page "${error.context.path}": ${JSON.stringify(truncatedPageData, null, 2)}`;
|
|
292
|
+
|
|
293
|
+
_reporter.default.error(pageDataMessage);
|
|
294
|
+
}
|
|
290
295
|
|
|
291
296
|
throw buildError;
|
|
292
297
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/build-html.ts"],"names":["devssrWebpackCompiler","devssrWebpackWatcher","needToRecompileSSRBundle","getDevSSRWebpack","process","env","gatsby_executing_command","Error","oldHash","newHash","runWebpack","compilerConfig","stage","directory","parentSpan","Bluebird","resolve","reject","GATSBY_EXPERIMENTAL_DEV_SSR","compiler","run","err","stats","activity","GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE","reporter","activityTimer","start","waitForCompilerClose","Promise","close","error","end","hooks","invalid","tap","watch","ignored","emitter","emit","suspend","hash","restartWorker","require","doBuildRenderer","webpackConfig","hasErrors","panic","compilation","errors","store","getState","html","ssrCompilationHash","dispatch","type","payload","rendererPath","buildRenderer","program","config","deleteRenderer","fs","remove","e","renderHTMLQueue","workerPool","htmlComponentRendererPath","pages","Stage","BuildHTML","envVars","NODE_ENV","gatsby_log_level","segments","sessionId","Date","now","renderHTML","single","renderHTMLProd","renderHTMLDev","uniqueUnsafeBuiltinUsedStacks","Set","map","pageSegment","renderHTMLResult","paths","htmlRenderMeta","_pagePath","arrayOfUsages","Object","entries","unsafeBuiltinsUsageByPagePath","unsafeUsageStack","add","tick","length","context","size","console","warn","unsafeBuiltinUsedStack","prettyError","warningMessage","stack","codeFrame","BuildHTMLError","constructor","message","getOwnPropertyNames","forEach","key","truncateObjStrings","obj","doBuildPages","pagePaths","pageData","path","truncatedPageData","pageDataMessage","JSON","stringify","buildError","buildHTML","span","buildHTMLPagesAndDeleteStaleArtifacts","pageRenderer","buildSpan","buildUtils","markHtmlDirtyIfResultOfUsedStaticQueryChanged","toRegenerate","toDelete","toCleanupFromTrackedState","calcDirtyHtmlFiles","buildHTMLActivityProgress","createProgress","id","errorPath","ref","match","info","keepPageRenderer","publicDir","join","deletePageDataActivityTimer","removePageFiles"],"mappings":"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","sourcesContent":["import Bluebird from \"bluebird\"\nimport fs from \"fs-extra\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { createErrorFromString } from \"gatsby-cli/lib/reporter/errors\"\nimport { chunk, truncate } from \"lodash\"\nimport webpack, { Stats } from \"webpack\"\nimport * as path from \"path\"\n\nimport { emitter, store } from \"../redux\"\nimport { IWebpackWatchingPauseResume } from \"../utils/start-server\"\nimport webpackConfig from \"../utils/webpack.config\"\nimport { structureWebpackErrors } from \"../utils/webpack-error-utils\"\nimport * as buildUtils from \"./build-utils\"\nimport { getPageData } from \"../utils/get-page-data\"\n\nimport { Span } from \"opentracing\"\nimport { IProgram, Stage } from \"./types\"\nimport { PackageJson } from \"../..\"\nimport type { GatsbyWorkerPool } from \"../utils/worker/pool\"\nimport { IPageDataWithQueryResult } from \"../utils/page-data\"\n\ntype IActivity = any // TODO\n\nexport interface IBuildArgs extends IProgram {\n directory: string\n sitePackageJson: PackageJson\n prefixPaths: boolean\n noUglify: boolean\n logPages: boolean\n writeToFile: boolean\n profile: boolean\n graphqlTracing: boolean\n openTracingConfigFile: string\n keepPageRenderer: boolean\n}\n\nlet devssrWebpackCompiler: webpack.Compiler\nlet devssrWebpackWatcher: IWebpackWatchingPauseResume\nlet needToRecompileSSRBundle = true\nexport const getDevSSRWebpack = (): {\n devssrWebpackWatcher: IWebpackWatchingPauseResume\n devssrWebpackCompiler: webpack.Compiler\n needToRecompileSSRBundle: boolean\n} => {\n if (process.env.gatsby_executing_command !== `develop`) {\n throw new Error(`This function can only be called in development`)\n }\n\n return {\n devssrWebpackWatcher,\n devssrWebpackCompiler,\n needToRecompileSSRBundle,\n }\n}\n\nlet oldHash = ``\nlet newHash = ``\nconst runWebpack = (\n compilerConfig,\n stage: Stage,\n directory,\n parentSpan?: Span\n): Bluebird<{\n stats: Stats\n waitForCompilerClose: Promise<void>\n}> =>\n new Bluebird((resolve, reject) => {\n if (!process.env.GATSBY_EXPERIMENTAL_DEV_SSR || stage === `build-html`) {\n const compiler = webpack(compilerConfig)\n compiler.run((err, stats) => {\n let activity\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {\n activity = reporter.activityTimer(\n `Caching HTML renderer compilation`,\n { parentSpan }\n )\n activity.start()\n }\n\n const waitForCompilerClose = new Promise<void>((resolve, reject) => {\n compiler.close(error => {\n if (activity) {\n activity.end()\n }\n\n if (error) {\n return reject(error)\n }\n return resolve()\n })\n })\n\n if (err) {\n return reject(err)\n } else {\n return resolve({ stats: stats as Stats, waitForCompilerClose })\n }\n })\n } else if (\n process.env.GATSBY_EXPERIMENTAL_DEV_SSR &&\n stage === `develop-html`\n ) {\n devssrWebpackCompiler = webpack(compilerConfig)\n devssrWebpackCompiler.hooks.invalid.tap(`ssr file invalidation`, () => {\n needToRecompileSSRBundle = true\n })\n devssrWebpackWatcher = devssrWebpackCompiler.watch(\n {\n ignored: /node_modules/,\n },\n (err, stats) => {\n needToRecompileSSRBundle = false\n emitter.emit(`DEV_SSR_COMPILATION_DONE`)\n devssrWebpackWatcher.suspend()\n\n if (err) {\n return reject(err)\n } else {\n newHash = stats?.hash || ``\n\n const {\n restartWorker,\n } = require(`../utils/dev-ssr/render-dev-html`)\n // Make sure we use the latest version during development\n if (oldHash !== `` && newHash !== oldHash) {\n restartWorker(`${directory}/public/render-page.js`)\n }\n\n oldHash = newHash\n\n return resolve({\n stats: stats as Stats,\n waitForCompilerClose: Promise.resolve(),\n })\n }\n }\n ) as IWebpackWatchingPauseResume\n }\n })\n\nconst doBuildRenderer = async (\n { directory }: IProgram,\n webpackConfig: webpack.Configuration,\n stage: Stage,\n parentSpan?: Span\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { stats, waitForCompilerClose } = await runWebpack(\n webpackConfig,\n stage,\n directory,\n parentSpan\n )\n if (stats.hasErrors()) {\n reporter.panic(structureWebpackErrors(stage, stats.compilation.errors))\n }\n\n if (\n stage === `build-html` &&\n store.getState().html.ssrCompilationHash !== stats.hash\n ) {\n store.dispatch({\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`,\n payload: stats.hash as string,\n })\n }\n\n // render-page.js is hard coded in webpack.config\n return {\n rendererPath: `${directory}/public/render-page.js`,\n waitForCompilerClose,\n }\n}\n\nexport const buildRenderer = async (\n program: IProgram,\n stage: Stage,\n parentSpan?: IActivity\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { directory } = program\n const config = await webpackConfig(program, directory, stage, null, {\n parentSpan,\n })\n\n return doBuildRenderer(program, config, stage, parentSpan)\n}\n\nexport const deleteRenderer = async (rendererPath: string): Promise<void> => {\n try {\n await fs.remove(rendererPath)\n await fs.remove(`${rendererPath}.map`)\n } catch (e) {\n // This function will fail on Windows with no further consequences.\n }\n}\n\nexport interface IRenderHtmlResult {\n unsafeBuiltinsUsageByPagePath: Record<string, Array<string>>\n}\n\nconst renderHTMLQueue = async (\n workerPool: GatsbyWorkerPool,\n activity: IActivity,\n htmlComponentRendererPath: string,\n pages: Array<string>,\n stage: Stage = Stage.BuildHTML\n): Promise<void> => {\n // We need to only pass env vars that are set programmatically in gatsby-cli\n // to child process. Other vars will be picked up from environment.\n const envVars: Array<[string, string | undefined]> = [\n [`NODE_ENV`, process.env.NODE_ENV],\n [`gatsby_executing_command`, process.env.gatsby_executing_command],\n [`gatsby_log_level`, process.env.gatsby_log_level],\n ]\n\n const segments = chunk(pages, 50)\n\n const sessionId = Date.now()\n\n const renderHTML =\n stage === `build-html`\n ? workerPool.single.renderHTMLProd\n : workerPool.single.renderHTMLDev\n\n const uniqueUnsafeBuiltinUsedStacks = new Set<string>()\n\n try {\n await Bluebird.map(segments, async pageSegment => {\n const renderHTMLResult = await renderHTML({\n envVars,\n htmlComponentRendererPath,\n paths: pageSegment,\n sessionId,\n })\n\n if (stage === `build-html`) {\n const htmlRenderMeta = renderHTMLResult as IRenderHtmlResult\n store.dispatch({\n type: `HTML_GENERATED`,\n payload: pageSegment,\n })\n\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n htmlRenderMeta.unsafeBuiltinsUsageByPagePath\n )) {\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n\n if (activity && activity.tick) {\n activity.tick(pageSegment.length)\n }\n })\n } catch (e) {\n if (e?.context?.unsafeBuiltinsUsageByPagePath) {\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n e.context.unsafeBuiltinsUsageByPagePath\n )) {\n // @ts-ignore TS doesn't know arrayOfUsages is Iterable\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n throw e\n } finally {\n if (uniqueUnsafeBuiltinUsedStacks.size > 0) {\n console.warn(\n `Unsafe builtin method was used, future builds will need to rebuild all pages`\n )\n store.dispatch({\n type: `SSR_USED_UNSAFE_BUILTIN`,\n })\n }\n\n for (const unsafeBuiltinUsedStack of uniqueUnsafeBuiltinUsedStacks) {\n const prettyError = await createErrorFromString(\n unsafeBuiltinUsedStack,\n `${htmlComponentRendererPath}.map`\n )\n\n const warningMessage = `${prettyError.stack}${\n prettyError.codeFrame ? `\\n\\n${prettyError.codeFrame}\\n` : ``\n }`\n\n reporter.warn(warningMessage)\n }\n }\n}\n\nclass BuildHTMLError extends Error {\n codeFrame = ``\n context?: {\n path: string\n }\n\n constructor(error: Error) {\n super(error.message)\n\n // We must use getOwnProperty because keys like `stack` are not enumerable,\n // but we want to copy over the entire error\n Object.getOwnPropertyNames(error).forEach(key => {\n this[key] = error[key]\n })\n }\n}\n\nconst truncateObjStrings = (obj): IPageDataWithQueryResult => {\n // Recursively truncate strings nested in object\n // These objs can be quite large, but we want to preserve each field\n for (const key in obj) {\n if (typeof obj[key] === `object`) {\n truncateObjStrings(obj[key])\n } else if (typeof obj[key] === `string`) {\n obj[key] = truncate(obj[key], { length: 250 })\n }\n }\n\n return obj\n}\n\nexport const doBuildPages = async (\n rendererPath: string,\n pagePaths: Array<string>,\n activity: IActivity,\n workerPool: GatsbyWorkerPool,\n stage: Stage\n): Promise<void> => {\n try {\n await renderHTMLQueue(workerPool, activity, rendererPath, pagePaths, stage)\n } catch (error) {\n const pageData = await getPageData(error.context.path)\n const truncatedPageData = truncateObjStrings(pageData)\n\n const pageDataMessage = `Page data from page-data.json for the failed page \"${\n error.context.path\n }\": ${JSON.stringify(truncatedPageData, null, 2)}`\n\n const prettyError = await createErrorFromString(\n error.stack,\n `${rendererPath}.map`\n )\n\n const buildError = new BuildHTMLError(prettyError)\n buildError.context = error.context\n\n reporter.error(pageDataMessage)\n throw buildError\n }\n}\n\n// TODO remove in v4 - this could be a \"public\" api\nexport const buildHTML = async ({\n program,\n stage,\n pagePaths,\n activity,\n workerPool,\n}: {\n program: IProgram\n stage: Stage\n pagePaths: Array<string>\n activity: IActivity\n workerPool: GatsbyWorkerPool\n}): Promise<void> => {\n const { rendererPath } = await buildRenderer(program, stage, activity.span)\n await doBuildPages(rendererPath, pagePaths, activity, workerPool, stage)\n await deleteRenderer(rendererPath)\n}\n\nexport async function buildHTMLPagesAndDeleteStaleArtifacts({\n pageRenderer,\n workerPool,\n buildSpan,\n program,\n}: {\n pageRenderer: string\n workerPool: GatsbyWorkerPool\n buildSpan?: Span\n program: IBuildArgs\n}): Promise<{\n toRegenerate: Array<string>\n toDelete: Array<string>\n}> {\n buildUtils.markHtmlDirtyIfResultOfUsedStaticQueryChanged()\n\n const {\n toRegenerate,\n toDelete,\n toCleanupFromTrackedState,\n } = buildUtils.calcDirtyHtmlFiles(store.getState())\n\n store.dispatch({\n type: `HTML_TRACKED_PAGES_CLEANUP`,\n payload: toCleanupFromTrackedState,\n })\n\n if (toRegenerate.length > 0) {\n const buildHTMLActivityProgress = reporter.createProgress(\n `Building static HTML for pages`,\n toRegenerate.length,\n 0,\n {\n parentSpan: buildSpan,\n }\n )\n buildHTMLActivityProgress.start()\n try {\n await doBuildPages(\n pageRenderer,\n toRegenerate,\n buildHTMLActivityProgress,\n workerPool,\n Stage.BuildHTML\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 } else {\n reporter.info(`There are no new or changed html files to build.`)\n }\n\n if (!program.keepPageRenderer) {\n try {\n await deleteRenderer(pageRenderer)\n } catch (err) {\n // pass through\n }\n }\n\n if (toDelete.length > 0) {\n const publicDir = path.join(program.directory, `public`)\n const deletePageDataActivityTimer = reporter.activityTimer(\n `Delete previous page data`\n )\n deletePageDataActivityTimer.start()\n await buildUtils.removePageFiles(publicDir, toDelete)\n\n deletePageDataActivityTimer.end()\n }\n\n return { toRegenerate, toDelete }\n}\n"],"file":"build-html.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/build-html.ts"],"names":["devssrWebpackCompiler","devssrWebpackWatcher","needToRecompileSSRBundle","getDevSSRWebpack","process","env","gatsby_executing_command","Error","oldHash","newHash","runWebpack","compilerConfig","stage","directory","parentSpan","Bluebird","resolve","reject","GATSBY_EXPERIMENTAL_DEV_SSR","compiler","run","err","stats","activity","GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE","reporter","activityTimer","start","waitForCompilerClose","Promise","close","error","end","hooks","invalid","tap","watch","ignored","emitter","emit","suspend","hash","restartWorker","require","doBuildRenderer","webpackConfig","hasErrors","panic","compilation","errors","store","getState","html","ssrCompilationHash","dispatch","type","payload","rendererPath","buildRenderer","program","config","deleteRenderer","fs","remove","e","renderHTMLQueue","workerPool","htmlComponentRendererPath","pages","Stage","BuildHTML","envVars","NODE_ENV","gatsby_log_level","segments","sessionId","Date","now","renderHTML","single","renderHTMLProd","renderHTMLDev","uniqueUnsafeBuiltinUsedStacks","Set","map","pageSegment","renderHTMLResult","paths","htmlRenderMeta","_pagePath","arrayOfUsages","Object","entries","unsafeBuiltinsUsageByPagePath","unsafeUsageStack","add","tick","length","context","size","console","warn","unsafeBuiltinUsedStack","prettyError","warningMessage","stack","codeFrame","BuildHTMLError","constructor","message","getOwnPropertyNames","forEach","key","truncateObjStrings","obj","doBuildPages","pagePaths","buildError","path","pageData","truncatedPageData","pageDataMessage","JSON","stringify","buildHTML","span","buildHTMLPagesAndDeleteStaleArtifacts","pageRenderer","buildSpan","buildUtils","markHtmlDirtyIfResultOfUsedStaticQueryChanged","toRegenerate","toDelete","toCleanupFromTrackedState","calcDirtyHtmlFiles","buildHTMLActivityProgress","createProgress","id","errorPath","ref","match","info","keepPageRenderer","publicDir","join","deletePageDataActivityTimer","removePageFiles"],"mappings":"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","sourcesContent":["import Bluebird from \"bluebird\"\nimport fs from \"fs-extra\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { createErrorFromString } from \"gatsby-cli/lib/reporter/errors\"\nimport { chunk, truncate } from \"lodash\"\nimport webpack, { Stats } from \"webpack\"\nimport * as path from \"path\"\n\nimport { emitter, store } from \"../redux\"\nimport { IWebpackWatchingPauseResume } from \"../utils/start-server\"\nimport webpackConfig from \"../utils/webpack.config\"\nimport { structureWebpackErrors } from \"../utils/webpack-error-utils\"\nimport * as buildUtils from \"./build-utils\"\nimport { getPageData } from \"../utils/get-page-data\"\n\nimport { Span } from \"opentracing\"\nimport { IProgram, Stage } from \"./types\"\nimport { PackageJson } from \"../..\"\nimport type { GatsbyWorkerPool } from \"../utils/worker/pool\"\nimport { IPageDataWithQueryResult } from \"../utils/page-data\"\n\ntype IActivity = any // TODO\n\nexport interface IBuildArgs extends IProgram {\n directory: string\n sitePackageJson: PackageJson\n prefixPaths: boolean\n noUglify: boolean\n logPages: boolean\n writeToFile: boolean\n profile: boolean\n graphqlTracing: boolean\n openTracingConfigFile: string\n keepPageRenderer: boolean\n}\n\nlet devssrWebpackCompiler: webpack.Compiler\nlet devssrWebpackWatcher: IWebpackWatchingPauseResume\nlet needToRecompileSSRBundle = true\nexport const getDevSSRWebpack = (): {\n devssrWebpackWatcher: IWebpackWatchingPauseResume\n devssrWebpackCompiler: webpack.Compiler\n needToRecompileSSRBundle: boolean\n} => {\n if (process.env.gatsby_executing_command !== `develop`) {\n throw new Error(`This function can only be called in development`)\n }\n\n return {\n devssrWebpackWatcher,\n devssrWebpackCompiler,\n needToRecompileSSRBundle,\n }\n}\n\nlet oldHash = ``\nlet newHash = ``\nconst runWebpack = (\n compilerConfig,\n stage: Stage,\n directory,\n parentSpan?: Span\n): Bluebird<{\n stats: Stats\n waitForCompilerClose: Promise<void>\n}> =>\n new Bluebird((resolve, reject) => {\n if (!process.env.GATSBY_EXPERIMENTAL_DEV_SSR || stage === `build-html`) {\n const compiler = webpack(compilerConfig)\n compiler.run((err, stats) => {\n let activity\n if (process.env.GATSBY_EXPERIMENTAL_PRESERVE_WEBPACK_CACHE) {\n activity = reporter.activityTimer(\n `Caching HTML renderer compilation`,\n { parentSpan }\n )\n activity.start()\n }\n\n const waitForCompilerClose = new Promise<void>((resolve, reject) => {\n compiler.close(error => {\n if (activity) {\n activity.end()\n }\n\n if (error) {\n return reject(error)\n }\n return resolve()\n })\n })\n\n if (err) {\n return reject(err)\n } else {\n return resolve({ stats: stats as Stats, waitForCompilerClose })\n }\n })\n } else if (\n process.env.GATSBY_EXPERIMENTAL_DEV_SSR &&\n stage === `develop-html`\n ) {\n devssrWebpackCompiler = webpack(compilerConfig)\n devssrWebpackCompiler.hooks.invalid.tap(`ssr file invalidation`, () => {\n needToRecompileSSRBundle = true\n })\n devssrWebpackWatcher = devssrWebpackCompiler.watch(\n {\n ignored: /node_modules/,\n },\n (err, stats) => {\n needToRecompileSSRBundle = false\n emitter.emit(`DEV_SSR_COMPILATION_DONE`)\n devssrWebpackWatcher.suspend()\n\n if (err) {\n return reject(err)\n } else {\n newHash = stats?.hash || ``\n\n const {\n restartWorker,\n } = require(`../utils/dev-ssr/render-dev-html`)\n // Make sure we use the latest version during development\n if (oldHash !== `` && newHash !== oldHash) {\n restartWorker(`${directory}/public/render-page.js`)\n }\n\n oldHash = newHash\n\n return resolve({\n stats: stats as Stats,\n waitForCompilerClose: Promise.resolve(),\n })\n }\n }\n ) as IWebpackWatchingPauseResume\n }\n })\n\nconst doBuildRenderer = async (\n { directory }: IProgram,\n webpackConfig: webpack.Configuration,\n stage: Stage,\n parentSpan?: Span\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { stats, waitForCompilerClose } = await runWebpack(\n webpackConfig,\n stage,\n directory,\n parentSpan\n )\n if (stats.hasErrors()) {\n reporter.panic(structureWebpackErrors(stage, stats.compilation.errors))\n }\n\n if (\n stage === `build-html` &&\n store.getState().html.ssrCompilationHash !== stats.hash\n ) {\n store.dispatch({\n type: `SET_SSR_WEBPACK_COMPILATION_HASH`,\n payload: stats.hash as string,\n })\n }\n\n // render-page.js is hard coded in webpack.config\n return {\n rendererPath: `${directory}/public/render-page.js`,\n waitForCompilerClose,\n }\n}\n\nexport const buildRenderer = async (\n program: IProgram,\n stage: Stage,\n parentSpan?: IActivity\n): Promise<{ rendererPath: string; waitForCompilerClose }> => {\n const { directory } = program\n const config = await webpackConfig(program, directory, stage, null, {\n parentSpan,\n })\n\n return doBuildRenderer(program, config, stage, parentSpan)\n}\n\nexport const deleteRenderer = async (rendererPath: string): Promise<void> => {\n try {\n await fs.remove(rendererPath)\n await fs.remove(`${rendererPath}.map`)\n } catch (e) {\n // This function will fail on Windows with no further consequences.\n }\n}\n\nexport interface IRenderHtmlResult {\n unsafeBuiltinsUsageByPagePath: Record<string, Array<string>>\n}\n\nconst renderHTMLQueue = async (\n workerPool: GatsbyWorkerPool,\n activity: IActivity,\n htmlComponentRendererPath: string,\n pages: Array<string>,\n stage: Stage = Stage.BuildHTML\n): Promise<void> => {\n // We need to only pass env vars that are set programmatically in gatsby-cli\n // to child process. Other vars will be picked up from environment.\n const envVars: Array<[string, string | undefined]> = [\n [`NODE_ENV`, process.env.NODE_ENV],\n [`gatsby_executing_command`, process.env.gatsby_executing_command],\n [`gatsby_log_level`, process.env.gatsby_log_level],\n ]\n\n const segments = chunk(pages, 50)\n\n const sessionId = Date.now()\n\n const renderHTML =\n stage === `build-html`\n ? workerPool.single.renderHTMLProd\n : workerPool.single.renderHTMLDev\n\n const uniqueUnsafeBuiltinUsedStacks = new Set<string>()\n\n try {\n await Bluebird.map(segments, async pageSegment => {\n const renderHTMLResult = await renderHTML({\n envVars,\n htmlComponentRendererPath,\n paths: pageSegment,\n sessionId,\n })\n\n if (stage === `build-html`) {\n const htmlRenderMeta = renderHTMLResult as IRenderHtmlResult\n store.dispatch({\n type: `HTML_GENERATED`,\n payload: pageSegment,\n })\n\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n htmlRenderMeta.unsafeBuiltinsUsageByPagePath\n )) {\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n\n if (activity && activity.tick) {\n activity.tick(pageSegment.length)\n }\n })\n } catch (e) {\n if (e?.context?.unsafeBuiltinsUsageByPagePath) {\n for (const [_pagePath, arrayOfUsages] of Object.entries(\n e.context.unsafeBuiltinsUsageByPagePath\n )) {\n // @ts-ignore TS doesn't know arrayOfUsages is Iterable\n for (const unsafeUsageStack of arrayOfUsages) {\n uniqueUnsafeBuiltinUsedStacks.add(unsafeUsageStack)\n }\n }\n }\n throw e\n } finally {\n if (uniqueUnsafeBuiltinUsedStacks.size > 0) {\n console.warn(\n `Unsafe builtin method was used, future builds will need to rebuild all pages`\n )\n store.dispatch({\n type: `SSR_USED_UNSAFE_BUILTIN`,\n })\n }\n\n for (const unsafeBuiltinUsedStack of uniqueUnsafeBuiltinUsedStacks) {\n const prettyError = await createErrorFromString(\n unsafeBuiltinUsedStack,\n `${htmlComponentRendererPath}.map`\n )\n\n const warningMessage = `${prettyError.stack}${\n prettyError.codeFrame ? `\\n\\n${prettyError.codeFrame}\\n` : ``\n }`\n\n reporter.warn(warningMessage)\n }\n }\n}\n\nclass BuildHTMLError extends Error {\n codeFrame = ``\n context?: {\n path: string\n }\n\n constructor(error: Error) {\n super(error.message)\n\n // We must use getOwnProperty because keys like `stack` are not enumerable,\n // but we want to copy over the entire error\n Object.getOwnPropertyNames(error).forEach(key => {\n this[key] = error[key]\n })\n }\n}\n\nconst truncateObjStrings = (obj): IPageDataWithQueryResult => {\n // Recursively truncate strings nested in object\n // These objs can be quite large, but we want to preserve each field\n for (const key in obj) {\n if (typeof obj[key] === `object`) {\n truncateObjStrings(obj[key])\n } else if (typeof obj[key] === `string`) {\n obj[key] = truncate(obj[key], { length: 250 })\n }\n }\n\n return obj\n}\n\nexport const doBuildPages = async (\n rendererPath: string,\n pagePaths: Array<string>,\n activity: IActivity,\n workerPool: GatsbyWorkerPool,\n stage: Stage\n): Promise<void> => {\n try {\n await renderHTMLQueue(workerPool, activity, rendererPath, pagePaths, stage)\n } catch (error) {\n const prettyError = await createErrorFromString(\n error.stack,\n `${rendererPath}.map`\n )\n\n const buildError = new BuildHTMLError(prettyError)\n buildError.context = error.context\n\n if (error?.context?.path) {\n const pageData = await getPageData(error.context.path)\n const truncatedPageData = truncateObjStrings(pageData)\n\n const pageDataMessage = `Page data from page-data.json for the failed page \"${\n error.context.path\n }\": ${JSON.stringify(truncatedPageData, null, 2)}`\n\n reporter.error(pageDataMessage)\n }\n\n throw buildError\n }\n}\n\n// TODO remove in v4 - this could be a \"public\" api\nexport const buildHTML = async ({\n program,\n stage,\n pagePaths,\n activity,\n workerPool,\n}: {\n program: IProgram\n stage: Stage\n pagePaths: Array<string>\n activity: IActivity\n workerPool: GatsbyWorkerPool\n}): Promise<void> => {\n const { rendererPath } = await buildRenderer(program, stage, activity.span)\n await doBuildPages(rendererPath, pagePaths, activity, workerPool, stage)\n await deleteRenderer(rendererPath)\n}\n\nexport async function buildHTMLPagesAndDeleteStaleArtifacts({\n pageRenderer,\n workerPool,\n buildSpan,\n program,\n}: {\n pageRenderer: string\n workerPool: GatsbyWorkerPool\n buildSpan?: Span\n program: IBuildArgs\n}): Promise<{\n toRegenerate: Array<string>\n toDelete: Array<string>\n}> {\n buildUtils.markHtmlDirtyIfResultOfUsedStaticQueryChanged()\n\n const {\n toRegenerate,\n toDelete,\n toCleanupFromTrackedState,\n } = buildUtils.calcDirtyHtmlFiles(store.getState())\n\n store.dispatch({\n type: `HTML_TRACKED_PAGES_CLEANUP`,\n payload: toCleanupFromTrackedState,\n })\n\n if (toRegenerate.length > 0) {\n const buildHTMLActivityProgress = reporter.createProgress(\n `Building static HTML for pages`,\n toRegenerate.length,\n 0,\n {\n parentSpan: buildSpan,\n }\n )\n buildHTMLActivityProgress.start()\n try {\n await doBuildPages(\n pageRenderer,\n toRegenerate,\n buildHTMLActivityProgress,\n workerPool,\n Stage.BuildHTML\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 } else {\n reporter.info(`There are no new or changed html files to build.`)\n }\n\n if (!program.keepPageRenderer) {\n try {\n await deleteRenderer(pageRenderer)\n } catch (err) {\n // pass through\n }\n }\n\n if (toDelete.length > 0) {\n const publicDir = path.join(program.directory, `public`)\n const deletePageDataActivityTimer = reporter.activityTimer(\n `Delete previous page data`\n )\n deletePageDataActivityTimer.start()\n await buildUtils.removePageFiles(publicDir, toDelete)\n\n deletePageDataActivityTimer.end()\n }\n\n return { toRegenerate, toDelete }\n}\n"],"file":"build-html.js"}
|
package/dist/commands/build.js
CHANGED
|
@@ -110,9 +110,11 @@ module.exports = async function build(program) {
|
|
|
110
110
|
} = await (0, _services.calculateDirtyQueries)({
|
|
111
111
|
store: _redux.store
|
|
112
112
|
});
|
|
113
|
+
let waitForWorkerPoolRestart = Promise.resolve();
|
|
113
114
|
|
|
114
115
|
if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {
|
|
115
116
|
await (0, _pool.runQueriesInWorkersQueue)(workerPool, queryIds);
|
|
117
|
+
waitForWorkerPoolRestart = workerPool.restart();
|
|
116
118
|
} else {
|
|
117
119
|
await (0, _services.runStaticQueries)({
|
|
118
120
|
queryIds,
|
|
@@ -224,6 +226,7 @@ module.exports = async function build(program) {
|
|
|
224
226
|
buildSSRBundleActivityProgress.end();
|
|
225
227
|
}
|
|
226
228
|
|
|
229
|
+
await waitForWorkerPoolRestart;
|
|
227
230
|
const {
|
|
228
231
|
toRegenerate,
|
|
229
232
|
toDelete
|
|
@@ -233,6 +236,7 @@ module.exports = async function build(program) {
|
|
|
233
236
|
workerPool,
|
|
234
237
|
buildSpan
|
|
235
238
|
});
|
|
239
|
+
const waitWorkerPoolEnd = Promise.all(workerPool.end());
|
|
236
240
|
|
|
237
241
|
_gatsbyTelemetry.default.addSiteMeasurement(`BUILD_END`, {
|
|
238
242
|
pagesCount: toRegenerate.length,
|
|
@@ -253,7 +257,14 @@ module.exports = async function build(program) {
|
|
|
253
257
|
postBuildActivityTimer.end(); // Wait for any jobs that were started in onPostBuild
|
|
254
258
|
// This could occur due to queries being run which invoke sharp for instance
|
|
255
259
|
|
|
256
|
-
await (0, _waitUntilJobsComplete.waitUntilAllJobsComplete)();
|
|
260
|
+
await (0, _waitUntilJobsComplete.waitUntilAllJobsComplete)();
|
|
261
|
+
|
|
262
|
+
try {
|
|
263
|
+
await waitWorkerPoolEnd;
|
|
264
|
+
} catch (e) {
|
|
265
|
+
_reporter.default.warn(`Error when closing WorkerPool: ${e.message}`);
|
|
266
|
+
} // Make sure we saved the latest state so we have all jobs cached
|
|
267
|
+
|
|
257
268
|
|
|
258
269
|
await db.saveState();
|
|
259
270
|
await Promise.all([waitForCompilerClose, waitForCompilerCloseBuildHtml]);
|
|
@@ -262,7 +273,6 @@ module.exports = async function build(program) {
|
|
|
262
273
|
|
|
263
274
|
buildSpan.finish();
|
|
264
275
|
await (0, _tracer.stopTracer)();
|
|
265
|
-
workerPool.end();
|
|
266
276
|
buildActivity.end();
|
|
267
277
|
|
|
268
278
|
if (program.logPages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/build.ts"],"names":["module","exports","build","program","process","env","VERBOSE","verbose","report","setVerbose","profile","warn","name","sitePackageJson","sitePath","directory","lastRun","Date","now","pid","publicDir","path","join","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","gatsbyNodeGraphQLFunction","workerPool","parentSpan","graphqlRunner","GraphQLRunner","store","collectStats","graphqlTracing","queryIds","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","graphql","buildActivityTimer","activityTimer","stats","waitForCompilerClose","result","hasWarnings","rawMessages","toJson","moduleTrace","warnings","err","panic","Stage","BuildJavascript","end","webpackCompilationHash","hash","getState","appDataUtil","exists","dispatch","type","payload","rewriteActivityTimer","write","isTrackingEnabled","bundleSizes","assets","filter","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","actions","setProgramStatus","db","saveState","buildSSRBundleActivityProgress","pageRenderer","waitForCompilerCloseBuildHtml","BuildHTML","rendererPath","toRegenerate","toDelete","pagesCount","length","totalPagesCount","pages","postBuildActivityTimer","Promise","all","info","uptime","finish","logPages","writeToFile","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\"\nimport { updateSiteMetadata, isTruthy } 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 { runQueriesInWorkersQueue } from \"../utils/worker/pool\"\n\nmodule.exports = async function build(program: IBuildArgs): Promise<void> {\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 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`, {\n exitCode: exitCode as number | undefined,\n })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n const { gatsbyNodeGraphQLFunction, workerPool } = 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 if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {\n await runQueriesInWorkersQueue(workerPool, queryIds)\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 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 let waitForCompilerClose\n try {\n const result = await buildProductionBundle(program, buildActivityTimer.span)\n stats = result.stats\n waitForCompilerClose = result.waitForCompilerClose\n\n if (stats.hasWarnings()) {\n const rawMessages = stats.toJson({ moduleTrace: false })\n reportWebpackWarnings(rawMessages.warnings, report)\n }\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\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 (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 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 const buildSSRBundleActivityProgress = report.activityTimer(\n `Building HTML renderer`,\n { parentSpan: buildSpan }\n )\n buildSSRBundleActivityProgress.start()\n let pageRenderer = ``\n let waitForCompilerCloseBuildHtml\n try {\n const result = await buildRenderer(program, Stage.BuildHTML, buildSpan)\n pageRenderer = result.rendererPath\n waitForCompilerCloseBuildHtml = result.waitForCompilerClose\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildHTML, err))\n } finally {\n buildSSRBundleActivityProgress.end()\n }\n\n const {\n toRegenerate,\n toDelete,\n } = await buildHTMLPagesAndDeleteStaleArtifacts({\n program,\n pageRenderer,\n workerPool,\n buildSpan,\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 })\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 // 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 // Make sure we saved the latest state so we have all jobs cached\n await db.saveState()\n\n await Promise.all([waitForCompilerClose, waitForCompilerCloseBuildHtml])\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 (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","process","env","VERBOSE","verbose","report","setVerbose","profile","warn","name","sitePackageJson","sitePath","directory","lastRun","Date","now","pid","publicDir","path","join","openTracingConfigFile","buildActivity","phantomActivity","start","telemetry","trackCli","exitCode","buildSpan","span","setTag","gatsbyNodeGraphQLFunction","workerPool","parentSpan","graphqlRunner","GraphQLRunner","store","collectStats","graphqlTracing","queryIds","waitForWorkerPoolRestart","Promise","resolve","GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING","restart","graphql","buildActivityTimer","activityTimer","stats","waitForCompilerClose","result","hasWarnings","rawMessages","toJson","moduleTrace","warnings","err","panic","Stage","BuildJavascript","end","webpackCompilationHash","hash","getState","appDataUtil","exists","dispatch","type","payload","rewriteActivityTimer","write","isTrackingEnabled","bundleSizes","assets","filter","asset","endsWith","map","size","pageDataSizes","pageDataStats","values","addSiteMeasurement","bundleStats","aggregateStats","queryStats","getStats","actions","setProgramStatus","db","saveState","buildSSRBundleActivityProgress","pageRenderer","waitForCompilerCloseBuildHtml","BuildHTML","rendererPath","toRegenerate","toDelete","waitWorkerPoolEnd","all","pagesCount","length","totalPagesCount","pages","postBuildActivityTimer","e","message","info","uptime","finish","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 { updateSiteMetadata, isTruthy } 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 { runQueriesInWorkersQueue } from \"../utils/worker/pool\"\n\nmodule.exports = async function build(program: IBuildArgs): Promise<void> {\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 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`, {\n exitCode: exitCode as number | undefined,\n })\n })\n\n const buildSpan = buildActivity.span\n buildSpan.setTag(`directory`, program.directory)\n\n const { gatsbyNodeGraphQLFunction, workerPool } = 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 let waitForWorkerPoolRestart = Promise.resolve()\n if (process.env.GATSBY_EXPERIMENTAL_PARALLEL_QUERY_RUNNING) {\n await runQueriesInWorkersQueue(workerPool, queryIds)\n waitForWorkerPoolRestart = workerPool.restart()\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 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 let waitForCompilerClose\n try {\n const result = await buildProductionBundle(program, buildActivityTimer.span)\n stats = result.stats\n waitForCompilerClose = result.waitForCompilerClose\n\n if (stats.hasWarnings()) {\n const rawMessages = stats.toJson({ moduleTrace: false })\n reportWebpackWarnings(rawMessages.warnings, report)\n }\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildJavascript, err))\n } finally {\n buildActivityTimer.end()\n }\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 (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 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 const buildSSRBundleActivityProgress = report.activityTimer(\n `Building HTML renderer`,\n { parentSpan: buildSpan }\n )\n buildSSRBundleActivityProgress.start()\n let pageRenderer = ``\n let waitForCompilerCloseBuildHtml\n try {\n const result = await buildRenderer(program, Stage.BuildHTML, buildSpan)\n pageRenderer = result.rendererPath\n waitForCompilerCloseBuildHtml = result.waitForCompilerClose\n } catch (err) {\n buildActivityTimer.panic(structureWebpackErrors(Stage.BuildHTML, err))\n } finally {\n buildSSRBundleActivityProgress.end()\n }\n\n await waitForWorkerPoolRestart\n const {\n toRegenerate,\n toDelete,\n } = await buildHTMLPagesAndDeleteStaleArtifacts({\n program,\n pageRenderer,\n workerPool,\n buildSpan,\n })\n const waitWorkerPoolEnd = Promise.all(workerPool.end())\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 })\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 // 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 await Promise.all([waitForCompilerClose, waitForCompilerCloseBuildHtml])\n\n report.info(`Done building in ${process.uptime()} sec`)\n\n buildSpan.finish()\n await stopTracer()\n buildActivity.end()\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"}
|
package/dist/commands/develop.js
CHANGED
|
@@ -133,20 +133,20 @@ class ControllableScript {
|
|
|
133
133
|
|
|
134
134
|
this.isRunning = false;
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
try {
|
|
137
|
+
if (signal) {
|
|
138
138
|
this.process.kill(signal);
|
|
139
|
-
}
|
|
140
|
-
|
|
139
|
+
} else {
|
|
140
|
+
this.process.send({
|
|
141
|
+
type: `COMMAND`,
|
|
142
|
+
action: {
|
|
143
|
+
type: `EXIT`,
|
|
144
|
+
payload: code
|
|
145
|
+
}
|
|
146
|
+
});
|
|
141
147
|
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
type: `COMMAND`,
|
|
145
|
-
action: {
|
|
146
|
-
type: `EXIT`,
|
|
147
|
-
payload: code
|
|
148
|
-
}
|
|
149
|
-
});
|
|
148
|
+
} catch (err) {// Ignore error if process has crashed or already quit.
|
|
149
|
+
// Ref: https://github.com/gatsbyjs/gatsby/issues/28011#issuecomment-877302917
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
return new Promise(resolve => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/develop.ts"],"names":["requireUncached","file","require","cache","resolve","e","doesConfigChangeRequireRestart","lastConfig","newConfig","replacer","_","v","RegExp","toString","oldConfigString","JSON","stringify","siteMetadata","newConfigString","getDebugPort","port","getDebugInfo","program","Object","prototype","hasOwnProperty","call","inspect","break","inspectBrk","ControllableScript","constructor","script","debugInfo","start","args","tmpFileName","tmp","tmpNameSync","tmpdir","path","join","process","cwd","fs","outputFileSync","isRunning","push","execa","node","env","stdio","stop","signal","code","Error","kill","err","send","type","action","payload","Promise","on","removeAllListeners","undefined","onMessage","callback","onExit","msg","isRestarting","REGEX_IP","module","exports","parseInt","developProcessPath","telemetryServerPath","message","exit","proxyPort","rootFile","directory","statusServerPort","developPort","telemetryServerPort","all","INTERNAL_STATUS_PORT","https","reporter","panic","sslHost","host","test","ssl","name","caFile","certFile","keyFile","proxy","targetPort","developProcess","telemetryServerProcess","unlocks","statusUnlock","developUnlock","telemetryUnlock","sitePackageJson","sitePath","pid","lastRun","Date","now","data","console","error","concat","statusServer","createServer","http","listen","io","SocketIO","cors","origin","cookie","handleChildProcessIPC","emit","serveSite","socket","respond","serveRestartingScreen","files","watcher","chokidar","watch","filePath","basename","warn","dirtyFile","shutdownServices","_code","services","close","server","forEach","unlock","catch","then"],"mappings":"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","sourcesContent":["// NOTE(@mxstbr): Do not use the reporter in this file, as that has side-effects on import which break structured logging\nimport path from \"path\"\nimport http from \"http\"\nimport https from \"https\"\nimport tmp from \"tmp\"\nimport { ChildProcess } from \"child_process\"\nimport execa from \"execa\"\nimport chokidar from \"chokidar\"\nimport getRandomPort from \"detect-port\"\nimport { detectPortInUseAndPrompt } from \"../utils/detect-port-in-use-and-prompt\"\nimport { Server as SocketIO } from \"socket.io\"\nimport fs from \"fs-extra\"\nimport onExit from \"signal-exit\"\nimport {\n isCI,\n slash,\n createServiceLock,\n getService,\n updateSiteMetadata,\n UnlockFn,\n} from \"gatsby-core-utils\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { getSslCert } from \"../utils/get-ssl-cert\"\nimport { IProxyControls, startDevelopProxy } from \"../utils/develop-proxy\"\nimport { IProgram, IDebugInfo } from \"./types\"\nimport { flush as telemetryFlush } from \"gatsby-telemetry\"\n\n// Adapted from https://stackoverflow.com/a/16060619\nconst requireUncached = (file: string): any => {\n try {\n delete require.cache[require.resolve(file)]\n } catch (e) {\n return null\n }\n\n try {\n return require(file)\n } catch (e) {\n return null\n }\n}\n\n// Heuristics for gatsby-config.js, as not all changes to it require a full restart to take effect\nconst doesConfigChangeRequireRestart = (\n lastConfig: Record<string, any>,\n newConfig: Record<string, any>\n): boolean => {\n // Ignore changes to siteMetadata\n const replacer = (_, v): string | void => {\n if (typeof v === `function` || v instanceof RegExp) {\n return v.toString()\n } else {\n return v\n }\n }\n\n const oldConfigString = JSON.stringify(\n { ...lastConfig, siteMetadata: null },\n replacer\n )\n const newConfigString = JSON.stringify(\n { ...newConfig, siteMetadata: null },\n replacer\n )\n\n if (oldConfigString === newConfigString) return false\n\n return true\n}\n\n// Return a user-supplied port otherwise the default Node.js debugging port\nconst getDebugPort = (port?: number): number => port ?? 9229\n\nexport const getDebugInfo = (program: IProgram): IDebugInfo | null => {\n if (Object.prototype.hasOwnProperty.call(program, `inspect`)) {\n return {\n port: getDebugPort(program.inspect),\n break: false,\n }\n } else if (Object.prototype.hasOwnProperty.call(program, `inspectBrk`)) {\n return {\n port: getDebugPort(program.inspectBrk),\n break: true,\n }\n } else {\n return null\n }\n}\n\nclass ControllableScript {\n private process?: ChildProcess\n private script\n private debugInfo: IDebugInfo | null\n public isRunning\n constructor(script, debugInfo: IDebugInfo | null) {\n this.script = script\n this.debugInfo = debugInfo\n }\n start(): void {\n const args: Array<string> = []\n const tmpFileName = tmp.tmpNameSync({\n tmpdir: path.join(process.cwd(), `.cache`),\n })\n fs.outputFileSync(tmpFileName, this.script)\n this.isRunning = true\n // Passing --inspect isn't necessary for the child process to launch a port but it allows some editors to automatically attach\n if (this.debugInfo) {\n if (this.debugInfo.break) {\n args.push(`--inspect-brk=${this.debugInfo.port}`)\n } else {\n args.push(`--inspect=${this.debugInfo.port}`)\n }\n }\n\n this.process = execa.node(tmpFileName, args, {\n env: process.env,\n stdio: [`inherit`, `inherit`, `inherit`, `ipc`],\n })\n }\n async stop(\n signal: NodeJS.Signals | null = null,\n code?: number\n ): Promise<void> {\n if (!this.process) {\n throw new Error(`Trying to stop the process before starting it`)\n }\n\n this.isRunning = false\n if (signal) {\n try {\n this.process.kill(signal)\n } catch (err) {\n // Ignore error if process has crashed\n // Ref: https://github.com/gatsbyjs/gatsby/issues/28011#issuecomment-877302917\n }\n } else {\n this.process.send({\n type: `COMMAND`,\n action: {\n type: `EXIT`,\n payload: code,\n },\n })\n }\n\n return new Promise(resolve => {\n if (!this.process) {\n throw new Error(`Trying to stop the process before starting it`)\n }\n\n this.process.on(`exit`, () => {\n if (this.process) {\n this.process.removeAllListeners()\n }\n this.process = undefined\n resolve()\n })\n })\n }\n onMessage(callback: (msg: any) => void): void {\n if (!this.process) {\n throw new Error(`Trying to attach message handler before process started`)\n }\n this.process.on(`message`, callback)\n }\n onExit(\n callback: (code: number | null, signal: NodeJS.Signals | null) => void\n ): void {\n if (!this.process) {\n throw new Error(`Trying to attach exit handler before process started`)\n }\n this.process.on(`exit`, callback)\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n send(msg: any): void {\n if (!this.process) {\n throw new Error(`Trying to send a message before process started`)\n }\n\n this.process.send(msg)\n }\n}\n\nlet isRestarting\n\n// checks if a string is a valid ip\nconst REGEX_IP = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/\n\nmodule.exports = async (program: IProgram): Promise<void> => {\n // In some cases, port can actually be a string. But our codebase is expecting it to be a number.\n // So we want to early just force it to a number to ensure we always act on a correct type.\n program.port = parseInt(program.port + ``, 10)\n const developProcessPath = slash(require.resolve(`./develop-process`))\n const telemetryServerPath = slash(\n require.resolve(`../utils/telemetry-server`)\n )\n\n try {\n program.port = await detectPortInUseAndPrompt(program.port)\n } catch (e) {\n if (e.message === `USER_REJECTED`) {\n process.exit(0)\n }\n\n throw e\n }\n\n // Run the actual develop server on a random port, and the proxy on the program port\n // which users will access\n const proxyPort = program.port\n const debugInfo = getDebugInfo(program)\n\n const rootFile = (file: string): string => path.join(program.directory, file)\n\n // Require gatsby-config.js before accessing process.env, to enable the user to change\n // environment variables from the config file.\n let lastConfig = requireUncached(rootFile(`gatsby-config.js`))\n\n // INTERNAL_STATUS_PORT allows for setting the websocket port used for monitoring\n // when the browser should prompt the user to restart the develop process.\n // This port is randomized by default and in most cases should never be required to configure.\n // It is exposed for environments where port access needs to be explicit, such as with Docker.\n // As the port is meant for internal usage only, any attempt to interface with features\n // it exposes via third-party software is not supported.\n const [\n statusServerPort,\n developPort,\n telemetryServerPort,\n ] = await Promise.all([\n getRandomPort(process.env.INTERNAL_STATUS_PORT),\n getRandomPort(),\n getRandomPort(),\n ])\n\n // In order to enable custom ssl, --cert-file --key-file and -https flags must all be\n // used together\n if ((program[`cert-file`] || program[`key-file`]) && !program.https) {\n reporter.panic(\n `for custom ssl --https, --cert-file, and --key-file must be used together`\n )\n }\n\n // Check if https is enabled, then create or get SSL cert.\n // Certs are named 'devcert' and issued to the host.\n // NOTE(@mxstbr): We mutate program.ssl _after_ passing it\n // to the develop process controllable script above because\n // that would mean we double SSL browser => proxy => server\n if (program.https) {\n const sslHost =\n program.host === `0.0.0.0` || program.host === `::`\n ? `localhost`\n : program.host\n\n if (REGEX_IP.test(sslHost)) {\n reporter.panic(\n `You're trying to generate a ssl certificate for an IP (${sslHost}). Please use a hostname instead.`\n )\n }\n\n const ssl = await getSslCert({\n name: sslHost,\n caFile: program[`ca-file`],\n certFile: program[`cert-file`],\n keyFile: program[`key-file`],\n directory: program.directory,\n })\n\n if (ssl) {\n program.ssl = ssl\n }\n }\n\n // NOTE(@mxstbr): We need to start the develop proxy before the develop process to ensure\n // codesandbox detects the right port to expose by default\n const proxy = startDevelopProxy({\n proxyPort: proxyPort,\n targetPort: developPort,\n program,\n })\n\n const developProcess = new ControllableScript(\n `\n const cmd = require(${JSON.stringify(developProcessPath)});\n const args = ${JSON.stringify({\n ...program,\n port: developPort,\n proxyPort,\n // Don't pass SSL options down to the develop process, it should always use HTTP\n ssl: null,\n debugInfo,\n })};\n cmd(args);\n `,\n debugInfo\n )\n\n const telemetryServerProcess = new ControllableScript(\n `require(${JSON.stringify(telemetryServerPath)}).default(${JSON.stringify(\n telemetryServerPort\n )})`,\n null\n )\n\n let unlocks: Array<UnlockFn | null> = []\n if (!isCI()) {\n const statusUnlock = await createServiceLock(\n program.directory,\n `developstatusserver`,\n {\n port: statusServerPort,\n }\n )\n const developUnlock = await createServiceLock(\n program.directory,\n `developproxy`,\n {\n port: proxyPort,\n }\n )\n const telemetryUnlock = await createServiceLock(\n program.directory,\n `telemetryserver`,\n {\n port: telemetryServerPort,\n }\n )\n await updateSiteMetadata({\n name: program.sitePackageJson.name,\n sitePath: program.directory,\n pid: process.pid,\n lastRun: Date.now(),\n })\n\n if (!statusUnlock || !developUnlock) {\n const data = await getService(program.directory, `developproxy`)\n const port = data?.port || 8000\n console.error(\n `Looks like develop for this site is already running, can you visit ${\n program.ssl ? `https:` : `http:`\n }//localhost:${port} ? If it is not, try again in five seconds!`\n )\n process.exit(1)\n }\n\n unlocks = unlocks.concat([statusUnlock, developUnlock, telemetryUnlock])\n }\n\n const statusServer = program.ssl\n ? https.createServer(program.ssl)\n : http.createServer()\n statusServer.listen(statusServerPort)\n\n const io = new SocketIO(statusServer, {\n // whitelist all (https://github.com/expressjs/cors#configuration-options)\n cors: {\n origin: true,\n },\n cookie: true,\n })\n\n const handleChildProcessIPC = (msg): void => {\n if (msg.type === `HEARTBEAT`) return\n if (process.send) {\n // Forward IPC\n process.send(msg)\n }\n\n io.emit(`structured-log`, msg)\n\n if (\n msg.type === `LOG_ACTION` &&\n msg.action.type === `SET_STATUS` &&\n msg.action.payload === `SUCCESS`\n ) {\n proxy.serveSite()\n }\n }\n\n io.on(`connection`, socket => {\n socket.on(`develop:restart`, async respond => {\n isRestarting = true\n proxy.serveRestartingScreen()\n // respond() responds to the client, which in our case prompts it to reload the page to show the restarting screen\n if (respond) respond(`develop:is-starting`)\n await developProcess.stop()\n developProcess.start()\n developProcess.onMessage(handleChildProcessIPC)\n isRestarting = false\n })\n })\n\n developProcess.start()\n developProcess.onMessage(handleChildProcessIPC)\n\n telemetryServerProcess.start()\n\n // Plugins can call `process.exit` which would be sent to `develop-process` (child process)\n // This needs to be propagated back to the parent process\n developProcess.onExit(\n (code: number | null, signal: NodeJS.Signals | null) => {\n try {\n telemetryFlush()\n } catch (e) {\n // nop\n }\n if (isRestarting) return\n if (signal !== null) {\n process.kill(process.pid, signal)\n return\n }\n if (code !== null) {\n process.exit(code)\n }\n\n // This should not happen:\n // https://nodejs.org/api/child_process.html#child_process_event_exit\n // The 'exit' event is emitted after the child process ends. If the process\n // exited, code is the final exit code of the process, otherwise null.\n // If the process terminated due to receipt of a signal, signal is the\n // string name of the signal, otherwise null. One of the two will always be\n // non - null.\n //\n // but just in case let do non-zero exit, because we are in situation\n // we don't expect to be possible\n process.exit(1)\n }\n )\n\n const files = [rootFile(`gatsby-config.js`), rootFile(`gatsby-node.js`)]\n let watcher: chokidar.FSWatcher\n\n if (!isCI()) {\n watcher = chokidar.watch(files).on(`change`, filePath => {\n const file = path.basename(filePath)\n\n if (file === `gatsby-config.js`) {\n const newConfig = requireUncached(rootFile(`gatsby-config.js`))\n\n if (!doesConfigChangeRequireRestart(lastConfig, newConfig)) {\n lastConfig = newConfig\n return\n }\n\n lastConfig = newConfig\n }\n\n console.warn(\n `develop process needs to be restarted to apply the changes to ${file}`\n )\n io.emit(`structured-log`, {\n type: `LOG_ACTION`,\n action: {\n type: `DEVELOP`,\n payload: `RESTART_REQUIRED`,\n dirtyFile: file,\n },\n })\n })\n }\n\n // route ipc messaging to the original develop process\n process.on(`message`, msg => {\n developProcess.send(msg)\n })\n\n process.on(`SIGINT`, async () => {\n await shutdownServices(\n {\n developProcess,\n telemetryServerProcess,\n unlocks,\n statusServer,\n proxy,\n watcher,\n },\n `SIGINT`\n )\n\n process.exit(0)\n })\n\n process.on(`SIGTERM`, async () => {\n await shutdownServices(\n {\n developProcess,\n telemetryServerProcess,\n unlocks,\n statusServer,\n proxy,\n watcher,\n },\n `SIGTERM`\n )\n\n process.exit(0)\n })\n\n onExit((_code, signal) => {\n shutdownServices(\n {\n developProcess,\n telemetryServerProcess,\n unlocks,\n statusServer,\n proxy,\n watcher,\n },\n signal as NodeJS.Signals\n )\n })\n}\n\ninterface IShutdownServicesOptions {\n statusServer: https.Server | http.Server\n developProcess: ControllableScript\n proxy: IProxyControls\n unlocks: Array<UnlockFn | null>\n watcher: chokidar.FSWatcher\n telemetryServerProcess: ControllableScript\n}\n\nfunction shutdownServices(\n {\n statusServer,\n developProcess,\n proxy,\n unlocks,\n watcher,\n telemetryServerProcess,\n }: IShutdownServicesOptions,\n signal: NodeJS.Signals\n): Promise<void> {\n try {\n telemetryFlush()\n } catch (e) {\n // nop\n }\n const services = [\n developProcess.stop(signal),\n telemetryServerProcess.stop(),\n watcher?.close(),\n new Promise(resolve => statusServer.close(resolve)),\n new Promise(resolve => proxy.server.close(resolve)),\n ]\n\n unlocks.forEach(unlock => {\n if (unlock) {\n services.push(unlock())\n }\n })\n\n return Promise.all(services)\n .catch(() => {})\n .then(() => {})\n}\n"],"file":"develop.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/develop.ts"],"names":["requireUncached","file","require","cache","resolve","e","doesConfigChangeRequireRestart","lastConfig","newConfig","replacer","_","v","RegExp","toString","oldConfigString","JSON","stringify","siteMetadata","newConfigString","getDebugPort","port","getDebugInfo","program","Object","prototype","hasOwnProperty","call","inspect","break","inspectBrk","ControllableScript","constructor","script","debugInfo","start","args","tmpFileName","tmp","tmpNameSync","tmpdir","path","join","process","cwd","fs","outputFileSync","isRunning","push","execa","node","env","stdio","stop","signal","code","Error","kill","send","type","action","payload","err","Promise","on","removeAllListeners","undefined","onMessage","callback","onExit","msg","isRestarting","REGEX_IP","module","exports","parseInt","developProcessPath","telemetryServerPath","message","exit","proxyPort","rootFile","directory","statusServerPort","developPort","telemetryServerPort","all","INTERNAL_STATUS_PORT","https","reporter","panic","sslHost","host","test","ssl","name","caFile","certFile","keyFile","proxy","targetPort","developProcess","telemetryServerProcess","unlocks","statusUnlock","developUnlock","telemetryUnlock","sitePackageJson","sitePath","pid","lastRun","Date","now","data","console","error","concat","statusServer","createServer","http","listen","io","SocketIO","cors","origin","cookie","handleChildProcessIPC","emit","serveSite","socket","respond","serveRestartingScreen","files","watcher","chokidar","watch","filePath","basename","warn","dirtyFile","shutdownServices","_code","services","close","server","forEach","unlock","catch","then"],"mappings":"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","sourcesContent":["// NOTE(@mxstbr): Do not use the reporter in this file, as that has side-effects on import which break structured logging\nimport path from \"path\"\nimport http from \"http\"\nimport https from \"https\"\nimport tmp from \"tmp\"\nimport { ChildProcess } from \"child_process\"\nimport execa from \"execa\"\nimport chokidar from \"chokidar\"\nimport getRandomPort from \"detect-port\"\nimport { detectPortInUseAndPrompt } from \"../utils/detect-port-in-use-and-prompt\"\nimport { Server as SocketIO } from \"socket.io\"\nimport fs from \"fs-extra\"\nimport onExit from \"signal-exit\"\nimport {\n isCI,\n slash,\n createServiceLock,\n getService,\n updateSiteMetadata,\n UnlockFn,\n} from \"gatsby-core-utils\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { getSslCert } from \"../utils/get-ssl-cert\"\nimport { IProxyControls, startDevelopProxy } from \"../utils/develop-proxy\"\nimport { IProgram, IDebugInfo } from \"./types\"\nimport { flush as telemetryFlush } from \"gatsby-telemetry\"\n\n// Adapted from https://stackoverflow.com/a/16060619\nconst requireUncached = (file: string): any => {\n try {\n delete require.cache[require.resolve(file)]\n } catch (e) {\n return null\n }\n\n try {\n return require(file)\n } catch (e) {\n return null\n }\n}\n\n// Heuristics for gatsby-config.js, as not all changes to it require a full restart to take effect\nconst doesConfigChangeRequireRestart = (\n lastConfig: Record<string, any>,\n newConfig: Record<string, any>\n): boolean => {\n // Ignore changes to siteMetadata\n const replacer = (_, v): string | void => {\n if (typeof v === `function` || v instanceof RegExp) {\n return v.toString()\n } else {\n return v\n }\n }\n\n const oldConfigString = JSON.stringify(\n { ...lastConfig, siteMetadata: null },\n replacer\n )\n const newConfigString = JSON.stringify(\n { ...newConfig, siteMetadata: null },\n replacer\n )\n\n if (oldConfigString === newConfigString) return false\n\n return true\n}\n\n// Return a user-supplied port otherwise the default Node.js debugging port\nconst getDebugPort = (port?: number): number => port ?? 9229\n\nexport const getDebugInfo = (program: IProgram): IDebugInfo | null => {\n if (Object.prototype.hasOwnProperty.call(program, `inspect`)) {\n return {\n port: getDebugPort(program.inspect),\n break: false,\n }\n } else if (Object.prototype.hasOwnProperty.call(program, `inspectBrk`)) {\n return {\n port: getDebugPort(program.inspectBrk),\n break: true,\n }\n } else {\n return null\n }\n}\n\nclass ControllableScript {\n private process?: ChildProcess\n private script\n private debugInfo: IDebugInfo | null\n public isRunning\n constructor(script, debugInfo: IDebugInfo | null) {\n this.script = script\n this.debugInfo = debugInfo\n }\n start(): void {\n const args: Array<string> = []\n const tmpFileName = tmp.tmpNameSync({\n tmpdir: path.join(process.cwd(), `.cache`),\n })\n fs.outputFileSync(tmpFileName, this.script)\n this.isRunning = true\n // Passing --inspect isn't necessary for the child process to launch a port but it allows some editors to automatically attach\n if (this.debugInfo) {\n if (this.debugInfo.break) {\n args.push(`--inspect-brk=${this.debugInfo.port}`)\n } else {\n args.push(`--inspect=${this.debugInfo.port}`)\n }\n }\n\n this.process = execa.node(tmpFileName, args, {\n env: process.env,\n stdio: [`inherit`, `inherit`, `inherit`, `ipc`],\n })\n }\n async stop(\n signal: NodeJS.Signals | null = null,\n code?: number\n ): Promise<void> {\n if (!this.process) {\n throw new Error(`Trying to stop the process before starting it`)\n }\n\n this.isRunning = false\n try {\n if (signal) {\n this.process.kill(signal)\n } else {\n this.process.send({\n type: `COMMAND`,\n action: {\n type: `EXIT`,\n payload: code,\n },\n })\n }\n } catch (err) {\n // Ignore error if process has crashed or already quit.\n // Ref: https://github.com/gatsbyjs/gatsby/issues/28011#issuecomment-877302917\n }\n\n return new Promise(resolve => {\n if (!this.process) {\n throw new Error(`Trying to stop the process before starting it`)\n }\n\n this.process.on(`exit`, () => {\n if (this.process) {\n this.process.removeAllListeners()\n }\n this.process = undefined\n resolve()\n })\n })\n }\n onMessage(callback: (msg: any) => void): void {\n if (!this.process) {\n throw new Error(`Trying to attach message handler before process started`)\n }\n this.process.on(`message`, callback)\n }\n onExit(\n callback: (code: number | null, signal: NodeJS.Signals | null) => void\n ): void {\n if (!this.process) {\n throw new Error(`Trying to attach exit handler before process started`)\n }\n this.process.on(`exit`, callback)\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n send(msg: any): void {\n if (!this.process) {\n throw new Error(`Trying to send a message before process started`)\n }\n\n this.process.send(msg)\n }\n}\n\nlet isRestarting\n\n// checks if a string is a valid ip\nconst REGEX_IP = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/\n\nmodule.exports = async (program: IProgram): Promise<void> => {\n // In some cases, port can actually be a string. But our codebase is expecting it to be a number.\n // So we want to early just force it to a number to ensure we always act on a correct type.\n program.port = parseInt(program.port + ``, 10)\n const developProcessPath = slash(require.resolve(`./develop-process`))\n const telemetryServerPath = slash(\n require.resolve(`../utils/telemetry-server`)\n )\n\n try {\n program.port = await detectPortInUseAndPrompt(program.port)\n } catch (e) {\n if (e.message === `USER_REJECTED`) {\n process.exit(0)\n }\n\n throw e\n }\n\n // Run the actual develop server on a random port, and the proxy on the program port\n // which users will access\n const proxyPort = program.port\n const debugInfo = getDebugInfo(program)\n\n const rootFile = (file: string): string => path.join(program.directory, file)\n\n // Require gatsby-config.js before accessing process.env, to enable the user to change\n // environment variables from the config file.\n let lastConfig = requireUncached(rootFile(`gatsby-config.js`))\n\n // INTERNAL_STATUS_PORT allows for setting the websocket port used for monitoring\n // when the browser should prompt the user to restart the develop process.\n // This port is randomized by default and in most cases should never be required to configure.\n // It is exposed for environments where port access needs to be explicit, such as with Docker.\n // As the port is meant for internal usage only, any attempt to interface with features\n // it exposes via third-party software is not supported.\n const [\n statusServerPort,\n developPort,\n telemetryServerPort,\n ] = await Promise.all([\n getRandomPort(process.env.INTERNAL_STATUS_PORT),\n getRandomPort(),\n getRandomPort(),\n ])\n\n // In order to enable custom ssl, --cert-file --key-file and -https flags must all be\n // used together\n if ((program[`cert-file`] || program[`key-file`]) && !program.https) {\n reporter.panic(\n `for custom ssl --https, --cert-file, and --key-file must be used together`\n )\n }\n\n // Check if https is enabled, then create or get SSL cert.\n // Certs are named 'devcert' and issued to the host.\n // NOTE(@mxstbr): We mutate program.ssl _after_ passing it\n // to the develop process controllable script above because\n // that would mean we double SSL browser => proxy => server\n if (program.https) {\n const sslHost =\n program.host === `0.0.0.0` || program.host === `::`\n ? `localhost`\n : program.host\n\n if (REGEX_IP.test(sslHost)) {\n reporter.panic(\n `You're trying to generate a ssl certificate for an IP (${sslHost}). Please use a hostname instead.`\n )\n }\n\n const ssl = await getSslCert({\n name: sslHost,\n caFile: program[`ca-file`],\n certFile: program[`cert-file`],\n keyFile: program[`key-file`],\n directory: program.directory,\n })\n\n if (ssl) {\n program.ssl = ssl\n }\n }\n\n // NOTE(@mxstbr): We need to start the develop proxy before the develop process to ensure\n // codesandbox detects the right port to expose by default\n const proxy = startDevelopProxy({\n proxyPort: proxyPort,\n targetPort: developPort,\n program,\n })\n\n const developProcess = new ControllableScript(\n `\n const cmd = require(${JSON.stringify(developProcessPath)});\n const args = ${JSON.stringify({\n ...program,\n port: developPort,\n proxyPort,\n // Don't pass SSL options down to the develop process, it should always use HTTP\n ssl: null,\n debugInfo,\n })};\n cmd(args);\n `,\n debugInfo\n )\n\n const telemetryServerProcess = new ControllableScript(\n `require(${JSON.stringify(telemetryServerPath)}).default(${JSON.stringify(\n telemetryServerPort\n )})`,\n null\n )\n\n let unlocks: Array<UnlockFn | null> = []\n if (!isCI()) {\n const statusUnlock = await createServiceLock(\n program.directory,\n `developstatusserver`,\n {\n port: statusServerPort,\n }\n )\n const developUnlock = await createServiceLock(\n program.directory,\n `developproxy`,\n {\n port: proxyPort,\n }\n )\n const telemetryUnlock = await createServiceLock(\n program.directory,\n `telemetryserver`,\n {\n port: telemetryServerPort,\n }\n )\n await updateSiteMetadata({\n name: program.sitePackageJson.name,\n sitePath: program.directory,\n pid: process.pid,\n lastRun: Date.now(),\n })\n\n if (!statusUnlock || !developUnlock) {\n const data = await getService(program.directory, `developproxy`)\n const port = data?.port || 8000\n console.error(\n `Looks like develop for this site is already running, can you visit ${\n program.ssl ? `https:` : `http:`\n }//localhost:${port} ? If it is not, try again in five seconds!`\n )\n process.exit(1)\n }\n\n unlocks = unlocks.concat([statusUnlock, developUnlock, telemetryUnlock])\n }\n\n const statusServer = program.ssl\n ? https.createServer(program.ssl)\n : http.createServer()\n statusServer.listen(statusServerPort)\n\n const io = new SocketIO(statusServer, {\n // whitelist all (https://github.com/expressjs/cors#configuration-options)\n cors: {\n origin: true,\n },\n cookie: true,\n })\n\n const handleChildProcessIPC = (msg): void => {\n if (msg.type === `HEARTBEAT`) return\n if (process.send) {\n // Forward IPC\n process.send(msg)\n }\n\n io.emit(`structured-log`, msg)\n\n if (\n msg.type === `LOG_ACTION` &&\n msg.action.type === `SET_STATUS` &&\n msg.action.payload === `SUCCESS`\n ) {\n proxy.serveSite()\n }\n }\n\n io.on(`connection`, socket => {\n socket.on(`develop:restart`, async respond => {\n isRestarting = true\n proxy.serveRestartingScreen()\n // respond() responds to the client, which in our case prompts it to reload the page to show the restarting screen\n if (respond) respond(`develop:is-starting`)\n await developProcess.stop()\n developProcess.start()\n developProcess.onMessage(handleChildProcessIPC)\n isRestarting = false\n })\n })\n\n developProcess.start()\n developProcess.onMessage(handleChildProcessIPC)\n\n telemetryServerProcess.start()\n\n // Plugins can call `process.exit` which would be sent to `develop-process` (child process)\n // This needs to be propagated back to the parent process\n developProcess.onExit(\n (code: number | null, signal: NodeJS.Signals | null) => {\n try {\n telemetryFlush()\n } catch (e) {\n // nop\n }\n if (isRestarting) return\n if (signal !== null) {\n process.kill(process.pid, signal)\n return\n }\n if (code !== null) {\n process.exit(code)\n }\n\n // This should not happen:\n // https://nodejs.org/api/child_process.html#child_process_event_exit\n // The 'exit' event is emitted after the child process ends. If the process\n // exited, code is the final exit code of the process, otherwise null.\n // If the process terminated due to receipt of a signal, signal is the\n // string name of the signal, otherwise null. One of the two will always be\n // non - null.\n //\n // but just in case let do non-zero exit, because we are in situation\n // we don't expect to be possible\n process.exit(1)\n }\n )\n\n const files = [rootFile(`gatsby-config.js`), rootFile(`gatsby-node.js`)]\n let watcher: chokidar.FSWatcher\n\n if (!isCI()) {\n watcher = chokidar.watch(files).on(`change`, filePath => {\n const file = path.basename(filePath)\n\n if (file === `gatsby-config.js`) {\n const newConfig = requireUncached(rootFile(`gatsby-config.js`))\n\n if (!doesConfigChangeRequireRestart(lastConfig, newConfig)) {\n lastConfig = newConfig\n return\n }\n\n lastConfig = newConfig\n }\n\n console.warn(\n `develop process needs to be restarted to apply the changes to ${file}`\n )\n io.emit(`structured-log`, {\n type: `LOG_ACTION`,\n action: {\n type: `DEVELOP`,\n payload: `RESTART_REQUIRED`,\n dirtyFile: file,\n },\n })\n })\n }\n\n // route ipc messaging to the original develop process\n process.on(`message`, msg => {\n developProcess.send(msg)\n })\n\n process.on(`SIGINT`, async () => {\n await shutdownServices(\n {\n developProcess,\n telemetryServerProcess,\n unlocks,\n statusServer,\n proxy,\n watcher,\n },\n `SIGINT`\n )\n\n process.exit(0)\n })\n\n process.on(`SIGTERM`, async () => {\n await shutdownServices(\n {\n developProcess,\n telemetryServerProcess,\n unlocks,\n statusServer,\n proxy,\n watcher,\n },\n `SIGTERM`\n )\n\n process.exit(0)\n })\n\n onExit((_code, signal) => {\n shutdownServices(\n {\n developProcess,\n telemetryServerProcess,\n unlocks,\n statusServer,\n proxy,\n watcher,\n },\n signal as NodeJS.Signals\n )\n })\n}\n\ninterface IShutdownServicesOptions {\n statusServer: https.Server | http.Server\n developProcess: ControllableScript\n proxy: IProxyControls\n unlocks: Array<UnlockFn | null>\n watcher: chokidar.FSWatcher\n telemetryServerProcess: ControllableScript\n}\n\nfunction shutdownServices(\n {\n statusServer,\n developProcess,\n proxy,\n unlocks,\n watcher,\n telemetryServerProcess,\n }: IShutdownServicesOptions,\n signal: NodeJS.Signals\n): Promise<void> {\n try {\n telemetryFlush()\n } catch (e) {\n // nop\n }\n const services = [\n developProcess.stop(signal),\n telemetryServerProcess.stop(),\n watcher?.close(),\n new Promise(resolve => statusServer.close(resolve)),\n new Promise(resolve => proxy.server.close(resolve)),\n ]\n\n unlocks.forEach(unlock => {\n if (unlock) {\n services.push(unlock())\n }\n })\n\n return Promise.all(services)\n .catch(() => {})\n .then(() => {})\n}\n"],"file":"develop.js"}
|
package/dist/schema/resolvers.js
CHANGED
|
@@ -57,7 +57,7 @@ function findManyPaginated(typeName) {
|
|
|
57
57
|
// (for previous/next node and also to detect if there is a previous/next page)
|
|
58
58
|
|
|
59
59
|
const skip = typeof args.skip === `number` ? Math.max(0, args.skip - 1) : 0;
|
|
60
|
-
const limit = typeof args.limit === `number` ? args.limit +
|
|
60
|
+
const limit = typeof args.limit === `number` ? args.limit + 2 : undefined;
|
|
61
61
|
const extendedArgs = { ...args,
|
|
62
62
|
group: group || [],
|
|
63
63
|
distinct: distinct || [],
|