gatsby 3.14.1 → 3.14.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/dist/commands/build-html.d.ts +1 -0
- package/dist/commands/build-html.js +54 -4
- package/dist/commands/build-html.js.map +1 -1
- package/dist/utils/webpack-utils.js +0 -1
- package/dist/utils/webpack-utils.js.map +1 -1
- package/dist/utils/worker/child/render-html.js +48 -5
- package/dist/utils/worker/child/render-html.js.map +1 -1
- package/gatsby-admin-public/index.html +1 -1
- package/gatsby-admin-public/pages/index.html +1 -1
- package/gatsby-admin-public/plugins/index.html +1 -1
- package/gatsby-admin-public/recipe/index.html +1 -1
- package/gatsby-admin-public/recipes/index.html +1 -1
- package/package.json +3 -3
|
@@ -32,6 +32,7 @@ export declare const buildRenderer: (program: IProgram, stage: Stage, parentSpan
|
|
|
32
32
|
export declare const deleteRenderer: (rendererPath: string) => Promise<void>;
|
|
33
33
|
export interface IRenderHtmlResult {
|
|
34
34
|
unsafeBuiltinsUsageByPagePath: Record<string, Array<string>>;
|
|
35
|
+
previewErrors: Record<string, any>;
|
|
35
36
|
}
|
|
36
37
|
export declare const doBuildPages: (rendererPath: string, pagePaths: Array<string>, activity: IActivity, workerPool: GatsbyWorkerPool, stage: Stage) => Promise<void>;
|
|
37
38
|
export declare const buildHTML: ({ program, stage, pagePaths, activity, workerPool, }: {
|
|
@@ -38,6 +38,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
38
38
|
|
|
39
39
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
40
40
|
|
|
41
|
+
// TODO
|
|
42
|
+
const isPreview = process.env.GATSBY_IS_PREVIEW === `true`;
|
|
41
43
|
let devssrWebpackCompiler;
|
|
42
44
|
let devssrWebpackWatcher;
|
|
43
45
|
let needToRecompileSSRBundle = true;
|
|
@@ -198,6 +200,40 @@ const renderHTMLQueue = async (workerPool, activity, htmlComponentRendererPath,
|
|
|
198
200
|
sessionId
|
|
199
201
|
});
|
|
200
202
|
|
|
203
|
+
if (isPreview) {
|
|
204
|
+
const htmlRenderMeta = renderHTMLResult;
|
|
205
|
+
const seenErrors = new Set();
|
|
206
|
+
const errorMessages = new Map();
|
|
207
|
+
await Promise.all(Object.entries(htmlRenderMeta.previewErrors).map(async ([pagePath, error]) => {
|
|
208
|
+
if (!seenErrors.has(error.stack)) {
|
|
209
|
+
errorMessages.set(error.stack, {
|
|
210
|
+
pagePaths: [pagePath]
|
|
211
|
+
});
|
|
212
|
+
seenErrors.add(error.stack);
|
|
213
|
+
const prettyError = await (0, _errors.createErrorFromString)(error.stack, `${htmlComponentRendererPath}.map`);
|
|
214
|
+
const errorMessageStr = `${prettyError.stack}${prettyError.codeFrame ? `\n\n${prettyError.codeFrame}\n` : ``}`;
|
|
215
|
+
const errorMessage = errorMessages.get(error.stack);
|
|
216
|
+
errorMessage.errorMessage = errorMessageStr;
|
|
217
|
+
errorMessages.set(error.stack, errorMessage);
|
|
218
|
+
} else {
|
|
219
|
+
const errorMessage = errorMessages.get(error.stack);
|
|
220
|
+
errorMessage.pagePaths.push(pagePath);
|
|
221
|
+
errorMessages.set(error.stack, errorMessage);
|
|
222
|
+
}
|
|
223
|
+
}));
|
|
224
|
+
|
|
225
|
+
for (const value of errorMessages.values()) {
|
|
226
|
+
const errorMessage = `The following page(s) saw this error when building their HTML:\n\n${value.pagePaths.map(p => `- ${p}`).join(`\n`)}\n\n${value.errorMessage}`;
|
|
227
|
+
|
|
228
|
+
_reporter.default.error({
|
|
229
|
+
id: `95314`,
|
|
230
|
+
context: {
|
|
231
|
+
errorMessage
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
201
237
|
if (stage === `build-html`) {
|
|
202
238
|
const htmlRenderMeta = renderHTMLResult;
|
|
203
239
|
|
|
@@ -290,12 +326,26 @@ const doBuildPages = async (rendererPath, pagePaths, activity, workerPool, stage
|
|
|
290
326
|
if (error !== null && error !== void 0 && (_error$context = error.context) !== null && _error$context !== void 0 && _error$context.path) {
|
|
291
327
|
const pageData = await (0, _getPageData.getPageData)(error.context.path);
|
|
292
328
|
const truncatedPageData = truncateObjStrings(pageData);
|
|
293
|
-
const pageDataMessage = `Page data from page-data.json for the failed page "${error.context.path}": ${JSON.stringify(truncatedPageData, null, 2)}`;
|
|
329
|
+
const pageDataMessage = `Page data from page-data.json for the failed page "${error.context.path}": ${JSON.stringify(truncatedPageData, null, 2)}`; // This is our only error during preview so customize it a bit + add the
|
|
330
|
+
// pretty build error.
|
|
331
|
+
|
|
332
|
+
if (isPreview) {
|
|
333
|
+
_reporter.default.error({
|
|
334
|
+
id: `95314`,
|
|
335
|
+
context: {
|
|
336
|
+
pageData: pageDataMessage
|
|
337
|
+
},
|
|
338
|
+
error: buildError
|
|
339
|
+
});
|
|
340
|
+
} else {
|
|
341
|
+
_reporter.default.error(pageDataMessage);
|
|
342
|
+
}
|
|
343
|
+
} // Don't crash the builder when we're in preview-mode.
|
|
294
344
|
|
|
295
|
-
_reporter.default.error(pageDataMessage);
|
|
296
|
-
}
|
|
297
345
|
|
|
298
|
-
|
|
346
|
+
if (!isPreview) {
|
|
347
|
+
throw buildError;
|
|
348
|
+
}
|
|
299
349
|
}
|
|
300
350
|
}; // TODO remove in v4 - this could be a "public" api
|
|
301
351
|
|
|
@@ -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","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\"\nimport { processNodeManifests } from \"../utils/node-manifest\"\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 { toRegenerate, toDelete, 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 // TODO move to per page builds in _routes directory\n if (!program.keepPageRenderer && _CFLAGS_.GATSBY_MAJOR !== `4`) {\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 // we process node manifests in this location because we need to make sure all page-data.json files are written for gatsby as well as inc-builds (both call builHTMLPagesAndDeleteStaleArtifacts). Node manifests include a digest of the corresponding page-data.json file and at this point we can be sure page-data has been written out for the latest updates in gatsby build AND inc builds.\n await processNodeManifests()\n\n return { toRegenerate, toDelete }\n}\n"],"file":"build-html.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/build-html.ts"],"names":["isPreview","process","env","GATSBY_IS_PREVIEW","devssrWebpackCompiler","devssrWebpackWatcher","needToRecompileSSRBundle","getDevSSRWebpack","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","seenErrors","errorMessages","Map","all","Object","entries","previewErrors","pagePath","has","stack","set","pagePaths","add","prettyError","errorMessageStr","codeFrame","errorMessage","get","push","value","values","p","join","id","context","_pagePath","arrayOfUsages","unsafeBuiltinsUsageByPagePath","unsafeUsageStack","tick","length","size","console","warn","unsafeBuiltinUsedStack","warningMessage","BuildHTMLError","constructor","message","getOwnPropertyNames","forEach","key","truncateObjStrings","obj","doBuildPages","buildError","path","pageData","truncatedPageData","pageDataMessage","JSON","stringify","buildHTML","span","buildHTMLPagesAndDeleteStaleArtifacts","pageRenderer","buildSpan","buildUtils","markHtmlDirtyIfResultOfUsedStaticQueryChanged","toRegenerate","toDelete","toCleanupFromTrackedState","calcDirtyHtmlFiles","buildHTMLActivityProgress","createProgress","errorPath","ref","match","info","keepPageRenderer","publicDir","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\"\nimport { processNodeManifests } from \"../utils/node-manifest\"\n\ntype IActivity = any // TODO\n\nconst isPreview = process.env.GATSBY_IS_PREVIEW === `true`\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 previewErrors: Record<string, any>\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 (isPreview) {\n const htmlRenderMeta = renderHTMLResult as IRenderHtmlResult\n const seenErrors = new Set()\n const errorMessages = new Map()\n await Promise.all(\n Object.entries(htmlRenderMeta.previewErrors).map(\n async ([pagePath, error]) => {\n if (!seenErrors.has(error.stack)) {\n errorMessages.set(error.stack, {\n pagePaths: [pagePath],\n })\n seenErrors.add(error.stack)\n const prettyError = await createErrorFromString(\n error.stack,\n `${htmlComponentRendererPath}.map`\n )\n\n const errorMessageStr = `${prettyError.stack}${\n prettyError.codeFrame ? `\\n\\n${prettyError.codeFrame}\\n` : ``\n }`\n\n const errorMessage = errorMessages.get(error.stack)\n errorMessage.errorMessage = errorMessageStr\n errorMessages.set(error.stack, errorMessage)\n } else {\n const errorMessage = errorMessages.get(error.stack)\n errorMessage.pagePaths.push(pagePath)\n errorMessages.set(error.stack, errorMessage)\n }\n }\n )\n )\n\n for (const value of errorMessages.values()) {\n const errorMessage = `The following page(s) saw this error when building their HTML:\\n\\n${value.pagePaths\n .map(p => `- ${p}`)\n .join(`\\n`)}\\n\\n${value.errorMessage}`\n reporter.error({\n id: `95314`,\n context: { errorMessage },\n })\n }\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 // This is our only error during preview so customize it a bit + add the\n // pretty build error.\n if (isPreview) {\n reporter.error({\n id: `95314`,\n context: { pageData: pageDataMessage },\n error: buildError,\n })\n } else {\n reporter.error(pageDataMessage)\n }\n }\n\n // Don't crash the builder when we're in preview-mode.\n if (!isPreview) {\n throw buildError\n }\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 { toRegenerate, toDelete, 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 // TODO move to per page builds in _routes directory\n if (!program.keepPageRenderer && _CFLAGS_.GATSBY_MAJOR !== `4`) {\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 // we process node manifests in this location because we need to make sure all page-data.json files are written for gatsby as well as inc-builds (both call builHTMLPagesAndDeleteStaleArtifacts). Node manifests include a digest of the corresponding page-data.json file and at this point we can be sure page-data has been written out for the latest updates in gatsby build AND inc builds.\n await processNodeManifests()\n\n return { toRegenerate, toDelete }\n}\n"],"file":"build-html.js"}
|
|
@@ -488,7 +488,6 @@ const createWebpackUtils = (stage, program) => {
|
|
|
488
488
|
`cleanupAttrs`, `cleanupEnableBackground`, `cleanupIDs`, `cleanupListOfValues`, // Default: disabled
|
|
489
489
|
`cleanupNumericValues`, `collapseGroups`, `convertColors`, `convertPathData`, `convertStyleToAttrs`, // Default: disabled
|
|
490
490
|
`convertTransform`, `inlineStyles`, `mergePaths`, `minifyStyles`, `moveElemsAttrsToGroup`, `moveGroupAttrsToElems`, `prefixIds`, // Default: disabled
|
|
491
|
-
`removeAttrs`, // Default: disabled
|
|
492
491
|
`removeComments`, `removeDesc`, `removeDoctype`, `removeEditorsNSData`, `removeEmptyAttrs`, `removeEmptyContainers`, `removeEmptyText`, `removeHiddenElems`, `removeMetadata`, `removeNonInheritableGroupAttrs`, `removeOffCanvasPaths`, // Default: disabled
|
|
493
492
|
`removeRasterImages`, // Default: disabled
|
|
494
493
|
`removeScriptElement`, // Default: disabled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/webpack-utils.ts"],"names":["vendorRegex","createWebpackUtils","stage","program","assetRelativeRoot","supportedBrowsers","directory","PRODUCTION","includes","isSSR","jsxRuntimeExists","reactHasJsxRuntime","makeExternalOnly","original","options","rule","include","makeInternalOnly","exclude","loaders","json","loader","require","resolve","yaml","null","raw","style","miniCssExtract","moduleOptions","undefined","modules","restOptions","namedExport","MiniCssExtractPlugin","css","modulesOptions","auto","localIdentName","exportLocalsConvention","exportOnlyLocals","url","startsWith","sourceMap","postcss","plugins","overrideBrowserslist","postcssOpts","execute","postcssOptions","loaderContext","postCSSPlugins","autoprefixerPlugin","flexbox","find","plugin","postcssPlugin","unshift","flexbugs","file","name","limit","fallback","js","reactRuntime","cacheDirectory","path","join","rootDir","dependencies","rules","modulesThatUseGatsby","test","modulePath","some","module","type","use","configFile","compact","jsOptions","babelrc","presets","sourceMaps","cacheIdentifier","JSON","stringify","browerslist","gatsbyPreset","version","VENDORS_TO_NOT_POLYFILL","doNotPolyfillRegex","RegExp","fonts","images","media","miscAssets","browsers","importLoaders","filter","Boolean","internal","external","cssModules","builtinPlugins","minifyJs","terserOptions","TerserPlugin","ie8","mangle","safari10","parse","ecma","compress","output","parallel","Math","max","minifyCss","minimizerOptions","preset","svgo","full","CssMinimizerPlugin","fastRefresh","regExpToHack","ReactRefreshWebpackPlugin","overlay","sockIntegration","__dirname","extractText","moment","ignore","resourceRegExp","contextRegExp","extractStats","GatsbyWebpackStatsExtractor","eslintGraphqlSchemaReload","GatsbyWebpackEslintGraphqlSchemaReload","virtualModules","GatsbyWebpackVirtualModules","eslint","schema","extensions","VIRTUAL_MODULES_BASE_PATH","ESLintPlugin","eslintRequired","eslintRequiredConfig"],"mappings":"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","sourcesContent":["import * as path from \"path\"\nimport { RuleSetRule, WebpackPluginInstance } from \"webpack\"\nimport { GraphQLSchema } from \"graphql\"\nimport { Plugin as PostCSSPlugin } from \"postcss\"\nimport autoprefixer from \"autoprefixer\"\nimport flexbugs from \"postcss-flexbugs-fixes\"\nimport TerserPlugin from \"terser-webpack-plugin\"\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\"\nimport CssMinimizerPlugin from \"css-minimizer-webpack-plugin\"\nimport ReactRefreshWebpackPlugin from \"@pmmmwh/react-refresh-webpack-plugin\"\nimport { getBrowsersList } from \"./browserslist\"\nimport ESLintPlugin from \"eslint-webpack-plugin\"\nimport { cpuCoreCount } from \"gatsby-core-utils\"\nimport { GatsbyWebpackStatsExtractor } from \"./gatsby-webpack-stats-extractor\"\nimport { GatsbyWebpackEslintGraphqlSchemaReload } from \"./gatsby-webpack-eslint-graphql-schema-reload-plugin\"\nimport {\n GatsbyWebpackVirtualModules,\n VIRTUAL_MODULES_BASE_PATH,\n} from \"./gatsby-webpack-virtual-modules\"\n\nimport { builtinPlugins } from \"./webpack-plugins\"\nimport { IProgram, Stage } from \"../commands/types\"\nimport { eslintConfig, eslintRequiredConfig } from \"./eslint-config\"\n\ntype Loader = string | { loader: string; options?: { [name: string]: any } }\ntype LoaderResolver<T = Record<string, unknown>> = (options?: T) => Loader\n\ntype LoaderOptions = Record<string, any>\ntype RuleFactory<T = Record<string, unknown>> = (\n options?: T & LoaderOptions\n) => RuleSetRule\n\ntype ContextualRuleFactory<T = Record<string, unknown>> = RuleFactory<T> & {\n internal?: RuleFactory<T>\n external?: RuleFactory<T>\n}\n\ntype PluginFactory = (...args: any) => WebpackPluginInstance\n\ntype BuiltinPlugins = typeof builtinPlugins\n\ntype CSSModulesOptions =\n | boolean\n | string\n | {\n mode?:\n | \"local\"\n | \"global\"\n | \"pure\"\n | ((resourcePath: string) => \"local\" | \"global\" | \"pure\")\n auto?: boolean\n exportGlobals?: boolean\n localIdentName?: string\n localIdentContext?: string\n localIdentHashPrefix?: string\n namedExport?: boolean\n exportLocalsConvention?:\n | \"asIs\"\n | \"camelCaseOnly\"\n | \"camelCase\"\n | \"dashes\"\n | \"dashesOnly\"\n exportOnlyLocals?: boolean\n }\n\ntype MiniCSSExtractLoaderModuleOptions =\n | undefined\n | boolean\n | {\n namedExport?: boolean\n }\n/**\n * Utils that produce webpack `loader` objects\n */\ninterface ILoaderUtils {\n yaml: LoaderResolver\n style: LoaderResolver\n css: LoaderResolver<{\n url?: boolean | ((url: string, resourcePath: string) => boolean)\n import?:\n | boolean\n | ((url: string, media: string, resourcePath: string) => boolean)\n modules?: CSSModulesOptions\n sourceMap?: boolean\n importLoaders?: number\n esModule?: boolean\n }>\n postcss: LoaderResolver<{\n browsers?: Array<string>\n overrideBrowserslist?: Array<string>\n plugins?: Array<PostCSSPlugin> | ((loader: Loader) => Array<PostCSSPlugin>)\n }>\n\n file: LoaderResolver\n url: LoaderResolver\n js: LoaderResolver\n json: LoaderResolver\n null: LoaderResolver\n raw: LoaderResolver\n dependencies: LoaderResolver\n\n miniCssExtract: LoaderResolver\n imports?: LoaderResolver\n exports?: LoaderResolver\n}\n\ninterface IModuleThatUseGatsby {\n name: string\n path: string\n}\n\ntype CssLoaderModuleOption = boolean | Record<string, any> | string\n\n/**\n * Utils that produce webpack rule objects\n */\ninterface IRuleUtils {\n /**\n * Handles JavaScript compilation via babel\n */\n js: RuleFactory<{ modulesThatUseGatsby?: Array<IModuleThatUseGatsby> }>\n dependencies: RuleFactory<{\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n }>\n yaml: RuleFactory\n fonts: RuleFactory\n images: RuleFactory\n miscAssets: RuleFactory\n media: RuleFactory\n\n css: ContextualRuleFactory<{\n browsers?: Array<string>\n modules?: CssLoaderModuleOption\n }>\n cssModules: RuleFactory\n postcss: ContextualRuleFactory<{ overrideBrowserOptions: Array<string> }>\n\n eslint: (schema: GraphQLSchema) => RuleSetRule\n eslintRequired: () => RuleSetRule\n}\n\ntype PluginUtils = BuiltinPlugins & {\n extractText: PluginFactory\n uglify: PluginFactory\n moment: PluginFactory\n extractStats: PluginFactory\n minifyJs: PluginFactory\n minifyCss: PluginFactory\n fastRefresh: PluginFactory\n eslintGraphqlSchemaReload: PluginFactory\n virtualModules: PluginFactory\n eslint: PluginFactory\n eslintRequired: PluginFactory\n}\n\n/**\n * webpack atoms namespace\n */\ninterface IWebpackUtils {\n loaders: ILoaderUtils\n\n rules: IRuleUtils\n\n plugins: PluginUtils\n}\n\nconst vendorRegex = /(node_modules|bower_components)/\n\n/**\n * A factory method that produces an atoms namespace\n */\nexport const createWebpackUtils = (\n stage: Stage,\n program: IProgram\n): IWebpackUtils => {\n const assetRelativeRoot = `static/`\n const supportedBrowsers = getBrowsersList(program.directory)\n\n const PRODUCTION = !stage.includes(`develop`)\n\n const isSSR = stage.includes(`html`)\n\n const jsxRuntimeExists = reactHasJsxRuntime()\n const makeExternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.include = vendorRegex\n return rule\n }\n\n const makeInternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.exclude = vendorRegex\n return rule\n }\n\n const loaders: ILoaderUtils = {\n json: (options = {}) => {\n return {\n options,\n loader: require.resolve(`json-loader`),\n }\n },\n yaml: (options = {}) => {\n return {\n options,\n loader: require.resolve(`yaml-loader`),\n }\n },\n\n null: (options = {}) => {\n return {\n options,\n loader: require.resolve(`null-loader`),\n }\n },\n\n raw: (options = {}) => {\n return {\n options,\n loader: require.resolve(`raw-loader`),\n }\n },\n\n style: (options = {}) => {\n return {\n options,\n loader: require.resolve(`style-loader`),\n }\n },\n\n miniCssExtract: (\n options: {\n modules?: MiniCSSExtractLoaderModuleOptions\n } = {}\n ) => {\n let moduleOptions: MiniCSSExtractLoaderModuleOptions = undefined\n\n const { modules, ...restOptions } = options\n\n if (typeof modules === `boolean` && options.modules) {\n moduleOptions = {\n namedExport: true,\n }\n } else {\n moduleOptions = modules\n }\n\n return {\n loader: MiniCssExtractPlugin.loader,\n options: {\n modules: moduleOptions,\n ...restOptions,\n },\n }\n },\n\n css: (options = {}) => {\n let modulesOptions: CSSModulesOptions = false\n if (options.modules) {\n modulesOptions = {\n auto: undefined,\n namedExport: true,\n localIdentName: `[name]--[local]--[hash:base64:5]`,\n exportLocalsConvention: `dashesOnly`,\n exportOnlyLocals: isSSR,\n }\n\n if (typeof options.modules === `object`) {\n modulesOptions = {\n ...modulesOptions,\n ...options.modules,\n }\n }\n }\n\n return {\n loader: require.resolve(`css-loader`),\n options: {\n // Absolute urls (https or //) are not send to this function. Only resolvable paths absolute or relative ones.\n url: function (url: string): boolean {\n // When an url starts with /\n if (url.startsWith(`/`)) {\n return false\n }\n\n return true\n },\n sourceMap: !PRODUCTION,\n modules: modulesOptions,\n },\n }\n },\n\n postcss: (options = {}) => {\n const {\n plugins,\n overrideBrowserslist = supportedBrowsers,\n ...postcssOpts\n } = options\n\n return {\n loader: require.resolve(`postcss-loader`),\n options: {\n execute: false,\n sourceMap: !PRODUCTION,\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n postcssOptions: (loaderContext: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let postCSSPlugins: Array<PostCSSPlugin> = []\n if (plugins) {\n postCSSPlugins =\n typeof plugins === `function` ? plugins(loaderContext) : plugins\n }\n\n const autoprefixerPlugin = autoprefixer({\n overrideBrowserslist,\n flexbox: `no-2009`,\n ...((\n postCSSPlugins.find(\n plugin => plugin.postcssPlugin === `autoprefixer`\n ) as unknown as autoprefixer.ExportedAPI\n )?.options ?? {}),\n })\n\n postCSSPlugins.unshift(autoprefixerPlugin)\n postCSSPlugins.unshift(flexbugs)\n\n return {\n plugins: postCSSPlugins,\n ...postcssOpts,\n }\n },\n },\n }\n },\n\n file: (options = {}) => {\n return {\n loader: require.resolve(`file-loader`),\n options: {\n name: `${assetRelativeRoot}[name]-[hash].[ext]`,\n ...options,\n },\n }\n },\n\n url: (options = {}) => {\n return {\n loader: require.resolve(`url-loader`),\n options: {\n limit: 10000,\n name: `${assetRelativeRoot}[name]-[hash].[ext]`,\n fallback: require.resolve(`file-loader`),\n ...options,\n },\n }\n },\n\n js: options => {\n return {\n options: {\n stage,\n reactRuntime: jsxRuntimeExists ? `automatic` : `classic`,\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n rootDir: program.directory,\n },\n loader: require.resolve(`./babel-loader`),\n }\n },\n\n dependencies: options => {\n return {\n options: {\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n },\n loader: require.resolve(`babel-loader`),\n }\n },\n }\n\n /**\n * Rules\n */\n const rules = {} as IRuleUtils\n\n /**\n * JavaScript loader via babel, includes userland code\n * and packages that depend on `gatsby`\n */\n {\n const js = ({\n modulesThatUseGatsby = [],\n ...options\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n return {\n test: /\\.(js|mjs|jsx)$/,\n include: (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src so we can extract queries\n return modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n },\n type: `javascript/auto`,\n use: [\n loaders.js({\n ...options,\n configFile: true,\n compact: PRODUCTION,\n }),\n ],\n }\n }\n rules.js = js\n }\n\n /**\n * Node_modules JavaScript loader via babel\n * Excludes core-js & babel-runtime to speedup babel transpilation\n * Excludes modules that use Gatsby since the `rules.js` already transpiles those\n */\n {\n const dependencies = ({\n modulesThatUseGatsby = [],\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n const jsOptions = {\n babelrc: false,\n configFile: false,\n compact: false,\n presets: [\n [\n require.resolve(`babel-preset-gatsby/dependencies`),\n {\n stage,\n },\n ],\n ],\n // If an error happens in a package, it's possible to be\n // because it was compiled. Thus, we don't want the browser\n // debugger to show the original code. Instead, the code\n // being evaluated would be much more helpful.\n sourceMaps: false,\n\n cacheIdentifier: JSON.stringify({\n browerslist: supportedBrowsers,\n gatsbyPreset: require(`babel-preset-gatsby/package.json`).version,\n }),\n }\n\n // TODO REMOVE IN V3\n // a list of vendors we know we shouldn't polyfill (we should have set core-js to entry but we didn't so we have to do this)\n const VENDORS_TO_NOT_POLYFILL = [\n `@babel[\\\\\\\\/]runtime`,\n `@mikaelkristiansson[\\\\\\\\/]domready`,\n `@reach[\\\\\\\\/]router`,\n `babel-preset-gatsby`,\n `core-js`,\n `dom-helpers`,\n `gatsby-legacy-polyfills`,\n `gatsby-link`,\n `gatsby-react-router-scroll`,\n `invariant`,\n `lodash`,\n `mitt`,\n `prop-types`,\n `react-dom`,\n `react`,\n `regenerator-runtime`,\n `scheduler`,\n `scroll-behavior`,\n `shallow-compare`,\n `warning`,\n `webpack`,\n ]\n const doNotPolyfillRegex = new RegExp(\n `[\\\\\\\\/]node_modules[\\\\\\\\/](${VENDORS_TO_NOT_POLYFILL.join(\n `|`\n )})[\\\\\\\\/]`\n )\n\n return {\n test: /\\.(js|mjs)$/,\n exclude: (modulePath: string): boolean => {\n // If dep is user land code, exclude\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If dep uses Gatsby, exclude\n if (\n modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n ) {\n return true\n }\n\n return doNotPolyfillRegex.test(modulePath)\n },\n type: `javascript/auto`,\n use: [loaders.dependencies(jsOptions)],\n }\n }\n rules.dependencies = dependencies\n }\n\n rules.yaml = (): RuleSetRule => {\n return {\n test: /\\.ya?ml$/,\n type: `json`,\n use: [loaders.yaml()],\n }\n }\n\n /**\n * Font loader\n */\n rules.fonts = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(eot|otf|ttf|woff(2)?)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads image assets, inlines images via a data URI if they are below\n * the size threshold\n */\n rules.images = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(ico|svg|jpg|jpeg|png|gif|webp|avif)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads audio and video and inlines them via a data URI if they are below\n * the size threshold\n */\n rules.media = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(mp4|webm|ogv|wav|mp3|m4a|aac|oga|flac)$/,\n }\n }\n\n /**\n * Loads assets without inlining\n */\n rules.miscAssets = (): RuleSetRule => {\n return {\n use: [loaders.file()],\n test: /\\.pdf$/,\n }\n }\n\n /**\n * CSS style loader.\n */\n {\n const css: IRuleUtils[\"css\"] = (options = {}): RuleSetRule => {\n const { browsers, ...restOptions } = options\n const use = [\n !isSSR && loaders.miniCssExtract(restOptions),\n loaders.css({ ...restOptions, importLoaders: 1 }),\n loaders.postcss({ browsers }),\n ].filter(Boolean) as RuleSetRule[\"use\"]\n\n return {\n use,\n test: /\\.css$/,\n }\n }\n\n /**\n * CSS style loader, _excludes_ node_modules.\n */\n css.internal = makeInternalOnly(css)\n css.external = makeExternalOnly(css)\n\n const cssModules: IRuleUtils[\"cssModules\"] = (options): RuleSetRule => {\n const rule = css({ ...options, modules: true })\n delete rule.exclude\n rule.test = /\\.module\\.css$/\n return rule\n }\n\n rules.css = css\n rules.cssModules = cssModules\n }\n\n /**\n * PostCSS loader.\n */\n {\n const postcss: ContextualRuleFactory = (options): RuleSetRule => {\n return {\n test: /\\.css$/,\n use: [loaders.css({ importLoaders: 1 }), loaders.postcss(options)],\n }\n }\n\n /**\n * PostCSS loader, _excludes_ node_modules.\n */\n postcss.internal = makeInternalOnly(postcss)\n postcss.external = makeExternalOnly(postcss)\n rules.postcss = postcss\n }\n /**\n * cast rules to IRuleUtils\n */\n /**\n * Plugins\n */\n const plugins = { ...builtinPlugins } as PluginUtils\n\n plugins.minifyJs = ({\n terserOptions,\n ...options\n }: {\n terserOptions?: TerserPlugin.TerserPluginOptions\n } = {}): WebpackPluginInstance =>\n new TerserPlugin({\n exclude: /\\.min\\.js/,\n terserOptions: {\n ie8: false,\n mangle: {\n safari10: true,\n },\n parse: {\n ecma: 8,\n },\n compress: {\n ecma: 5,\n },\n output: {\n ecma: 5,\n },\n ...terserOptions,\n },\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.minifyCss = (\n options = {\n minimizerOptions: {\n preset: [\n `default`,\n {\n svgo: {\n full: true,\n plugins: [\n // potentially destructive plugins removed - see https://github.com/gatsbyjs/gatsby/issues/15629\n // use correct config format and remove plugins requiring specific params - see https://github.com/gatsbyjs/gatsby/issues/31619\n // List of default plugins and their defaults: https://github.com/svg/svgo#built-in-plugins\n // Last update 2021-08-17\n `cleanupAttrs`,\n `cleanupEnableBackground`,\n `cleanupIDs`,\n `cleanupListOfValues`, // Default: disabled\n `cleanupNumericValues`,\n `collapseGroups`,\n `convertColors`,\n `convertPathData`,\n `convertStyleToAttrs`, // Default: disabled\n `convertTransform`,\n `inlineStyles`,\n `mergePaths`,\n `minifyStyles`,\n `moveElemsAttrsToGroup`,\n `moveGroupAttrsToElems`,\n `prefixIds`, // Default: disabled\n `removeAttrs`, // Default: disabled\n `removeComments`,\n `removeDesc`,\n `removeDoctype`,\n `removeEditorsNSData`,\n `removeEmptyAttrs`,\n `removeEmptyContainers`,\n `removeEmptyText`,\n `removeHiddenElems`,\n `removeMetadata`,\n `removeNonInheritableGroupAttrs`,\n `removeOffCanvasPaths`, // Default: disabled\n `removeRasterImages`, // Default: disabled\n `removeScriptElement`, // Default: disabled\n `removeStyleElement`, // Default: disabled\n `removeTitle`,\n `removeUnknownsAndDefaults`,\n `removeUnusedNS`,\n `removeUselessDefs`,\n `removeUselessStrokeAndFill`,\n `removeXMLProcInst`,\n `reusePaths`, // Default: disabled\n `sortAttrs`, // Default: disabled\n ],\n },\n },\n ],\n },\n }\n ): CssMinimizerPlugin =>\n new CssMinimizerPlugin({\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.fastRefresh = ({ modulesThatUseGatsby }): WebpackPluginInstance => {\n const regExpToHack = /node_modules/\n regExpToHack.test = (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return false\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src because of shadowing\n return !modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n }\n\n return new ReactRefreshWebpackPlugin({\n overlay: {\n sockIntegration: `whm`,\n module: path.join(__dirname, `fast-refresh-module`),\n },\n // this is a bit hacky - exclude expect string or regexp or array of those\n // so this is tricking ReactRefreshWebpackPlugin with providing regexp with\n // overwritten .test method\n exclude: regExpToHack,\n })\n }\n\n plugins.extractText = (options: any): WebpackPluginInstance =>\n new MiniCssExtractPlugin({\n ...options,\n })\n\n plugins.moment = (): WebpackPluginInstance =>\n plugins.ignore({ resourceRegExp: /^\\.\\/locale$/, contextRegExp: /moment$/ })\n\n plugins.extractStats = (): GatsbyWebpackStatsExtractor =>\n new GatsbyWebpackStatsExtractor()\n\n plugins.eslintGraphqlSchemaReload =\n (): GatsbyWebpackEslintGraphqlSchemaReload =>\n new GatsbyWebpackEslintGraphqlSchemaReload()\n\n plugins.virtualModules = (): GatsbyWebpackVirtualModules =>\n new GatsbyWebpackVirtualModules()\n\n plugins.eslint = (schema: GraphQLSchema): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintConfig(schema, jsxRuntimeExists),\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n plugins.eslintRequired = (): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintRequiredConfig,\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n return {\n loaders,\n rules,\n plugins,\n }\n}\n\nexport function reactHasJsxRuntime(): boolean {\n // We've got some complains about the ecosystem not being ready for automatic so we disable it by default.\n // People can use a custom babelrc file to support it\n // try {\n // // React is shipping a new jsx runtime that is to be used with\n // // an option on @babel/preset-react called `runtime: automatic`\n // // Not every version of React has this jsx-runtime yet. Eventually,\n // // it will be backported to older versions of react and this check\n // // will become unnecessary.\n // // for now we also do the semver check until react 17 is more widely used\n // // const react = require(`react/package.json`)\n // // return (\n // // !!require.resolve(`react/jsx-runtime.js`) &&\n // // semver.major(react.version) >= 17\n // // )\n // } catch (e) {\n // // If the require.resolve throws, that means this version of React\n // // does not support the jsx runtime.\n // }\n\n return false\n}\n"],"file":"webpack-utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/webpack-utils.ts"],"names":["vendorRegex","createWebpackUtils","stage","program","assetRelativeRoot","supportedBrowsers","directory","PRODUCTION","includes","isSSR","jsxRuntimeExists","reactHasJsxRuntime","makeExternalOnly","original","options","rule","include","makeInternalOnly","exclude","loaders","json","loader","require","resolve","yaml","null","raw","style","miniCssExtract","moduleOptions","undefined","modules","restOptions","namedExport","MiniCssExtractPlugin","css","modulesOptions","auto","localIdentName","exportLocalsConvention","exportOnlyLocals","url","startsWith","sourceMap","postcss","plugins","overrideBrowserslist","postcssOpts","execute","postcssOptions","loaderContext","postCSSPlugins","autoprefixerPlugin","flexbox","find","plugin","postcssPlugin","unshift","flexbugs","file","name","limit","fallback","js","reactRuntime","cacheDirectory","path","join","rootDir","dependencies","rules","modulesThatUseGatsby","test","modulePath","some","module","type","use","configFile","compact","jsOptions","babelrc","presets","sourceMaps","cacheIdentifier","JSON","stringify","browerslist","gatsbyPreset","version","VENDORS_TO_NOT_POLYFILL","doNotPolyfillRegex","RegExp","fonts","images","media","miscAssets","browsers","importLoaders","filter","Boolean","internal","external","cssModules","builtinPlugins","minifyJs","terserOptions","TerserPlugin","ie8","mangle","safari10","parse","ecma","compress","output","parallel","Math","max","minifyCss","minimizerOptions","preset","svgo","full","CssMinimizerPlugin","fastRefresh","regExpToHack","ReactRefreshWebpackPlugin","overlay","sockIntegration","__dirname","extractText","moment","ignore","resourceRegExp","contextRegExp","extractStats","GatsbyWebpackStatsExtractor","eslintGraphqlSchemaReload","GatsbyWebpackEslintGraphqlSchemaReload","virtualModules","GatsbyWebpackVirtualModules","eslint","schema","extensions","VIRTUAL_MODULES_BASE_PATH","ESLintPlugin","eslintRequired","eslintRequiredConfig"],"mappings":"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","sourcesContent":["import * as path from \"path\"\nimport { RuleSetRule, WebpackPluginInstance } from \"webpack\"\nimport { GraphQLSchema } from \"graphql\"\nimport { Plugin as PostCSSPlugin } from \"postcss\"\nimport autoprefixer from \"autoprefixer\"\nimport flexbugs from \"postcss-flexbugs-fixes\"\nimport TerserPlugin from \"terser-webpack-plugin\"\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\"\nimport CssMinimizerPlugin from \"css-minimizer-webpack-plugin\"\nimport ReactRefreshWebpackPlugin from \"@pmmmwh/react-refresh-webpack-plugin\"\nimport { getBrowsersList } from \"./browserslist\"\nimport ESLintPlugin from \"eslint-webpack-plugin\"\nimport { cpuCoreCount } from \"gatsby-core-utils\"\nimport { GatsbyWebpackStatsExtractor } from \"./gatsby-webpack-stats-extractor\"\nimport { GatsbyWebpackEslintGraphqlSchemaReload } from \"./gatsby-webpack-eslint-graphql-schema-reload-plugin\"\nimport {\n GatsbyWebpackVirtualModules,\n VIRTUAL_MODULES_BASE_PATH,\n} from \"./gatsby-webpack-virtual-modules\"\n\nimport { builtinPlugins } from \"./webpack-plugins\"\nimport { IProgram, Stage } from \"../commands/types\"\nimport { eslintConfig, eslintRequiredConfig } from \"./eslint-config\"\n\ntype Loader = string | { loader: string; options?: { [name: string]: any } }\ntype LoaderResolver<T = Record<string, unknown>> = (options?: T) => Loader\n\ntype LoaderOptions = Record<string, any>\ntype RuleFactory<T = Record<string, unknown>> = (\n options?: T & LoaderOptions\n) => RuleSetRule\n\ntype ContextualRuleFactory<T = Record<string, unknown>> = RuleFactory<T> & {\n internal?: RuleFactory<T>\n external?: RuleFactory<T>\n}\n\ntype PluginFactory = (...args: any) => WebpackPluginInstance\n\ntype BuiltinPlugins = typeof builtinPlugins\n\ntype CSSModulesOptions =\n | boolean\n | string\n | {\n mode?:\n | \"local\"\n | \"global\"\n | \"pure\"\n | ((resourcePath: string) => \"local\" | \"global\" | \"pure\")\n auto?: boolean\n exportGlobals?: boolean\n localIdentName?: string\n localIdentContext?: string\n localIdentHashPrefix?: string\n namedExport?: boolean\n exportLocalsConvention?:\n | \"asIs\"\n | \"camelCaseOnly\"\n | \"camelCase\"\n | \"dashes\"\n | \"dashesOnly\"\n exportOnlyLocals?: boolean\n }\n\ntype MiniCSSExtractLoaderModuleOptions =\n | undefined\n | boolean\n | {\n namedExport?: boolean\n }\n/**\n * Utils that produce webpack `loader` objects\n */\ninterface ILoaderUtils {\n yaml: LoaderResolver\n style: LoaderResolver\n css: LoaderResolver<{\n url?: boolean | ((url: string, resourcePath: string) => boolean)\n import?:\n | boolean\n | ((url: string, media: string, resourcePath: string) => boolean)\n modules?: CSSModulesOptions\n sourceMap?: boolean\n importLoaders?: number\n esModule?: boolean\n }>\n postcss: LoaderResolver<{\n browsers?: Array<string>\n overrideBrowserslist?: Array<string>\n plugins?: Array<PostCSSPlugin> | ((loader: Loader) => Array<PostCSSPlugin>)\n }>\n\n file: LoaderResolver\n url: LoaderResolver\n js: LoaderResolver\n json: LoaderResolver\n null: LoaderResolver\n raw: LoaderResolver\n dependencies: LoaderResolver\n\n miniCssExtract: LoaderResolver\n imports?: LoaderResolver\n exports?: LoaderResolver\n}\n\ninterface IModuleThatUseGatsby {\n name: string\n path: string\n}\n\ntype CssLoaderModuleOption = boolean | Record<string, any> | string\n\n/**\n * Utils that produce webpack rule objects\n */\ninterface IRuleUtils {\n /**\n * Handles JavaScript compilation via babel\n */\n js: RuleFactory<{ modulesThatUseGatsby?: Array<IModuleThatUseGatsby> }>\n dependencies: RuleFactory<{\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n }>\n yaml: RuleFactory\n fonts: RuleFactory\n images: RuleFactory\n miscAssets: RuleFactory\n media: RuleFactory\n\n css: ContextualRuleFactory<{\n browsers?: Array<string>\n modules?: CssLoaderModuleOption\n }>\n cssModules: RuleFactory\n postcss: ContextualRuleFactory<{ overrideBrowserOptions: Array<string> }>\n\n eslint: (schema: GraphQLSchema) => RuleSetRule\n eslintRequired: () => RuleSetRule\n}\n\ntype PluginUtils = BuiltinPlugins & {\n extractText: PluginFactory\n uglify: PluginFactory\n moment: PluginFactory\n extractStats: PluginFactory\n minifyJs: PluginFactory\n minifyCss: PluginFactory\n fastRefresh: PluginFactory\n eslintGraphqlSchemaReload: PluginFactory\n virtualModules: PluginFactory\n eslint: PluginFactory\n eslintRequired: PluginFactory\n}\n\n/**\n * webpack atoms namespace\n */\ninterface IWebpackUtils {\n loaders: ILoaderUtils\n\n rules: IRuleUtils\n\n plugins: PluginUtils\n}\n\nconst vendorRegex = /(node_modules|bower_components)/\n\n/**\n * A factory method that produces an atoms namespace\n */\nexport const createWebpackUtils = (\n stage: Stage,\n program: IProgram\n): IWebpackUtils => {\n const assetRelativeRoot = `static/`\n const supportedBrowsers = getBrowsersList(program.directory)\n\n const PRODUCTION = !stage.includes(`develop`)\n\n const isSSR = stage.includes(`html`)\n\n const jsxRuntimeExists = reactHasJsxRuntime()\n const makeExternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.include = vendorRegex\n return rule\n }\n\n const makeInternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.exclude = vendorRegex\n return rule\n }\n\n const loaders: ILoaderUtils = {\n json: (options = {}) => {\n return {\n options,\n loader: require.resolve(`json-loader`),\n }\n },\n yaml: (options = {}) => {\n return {\n options,\n loader: require.resolve(`yaml-loader`),\n }\n },\n\n null: (options = {}) => {\n return {\n options,\n loader: require.resolve(`null-loader`),\n }\n },\n\n raw: (options = {}) => {\n return {\n options,\n loader: require.resolve(`raw-loader`),\n }\n },\n\n style: (options = {}) => {\n return {\n options,\n loader: require.resolve(`style-loader`),\n }\n },\n\n miniCssExtract: (\n options: {\n modules?: MiniCSSExtractLoaderModuleOptions\n } = {}\n ) => {\n let moduleOptions: MiniCSSExtractLoaderModuleOptions = undefined\n\n const { modules, ...restOptions } = options\n\n if (typeof modules === `boolean` && options.modules) {\n moduleOptions = {\n namedExport: true,\n }\n } else {\n moduleOptions = modules\n }\n\n return {\n loader: MiniCssExtractPlugin.loader,\n options: {\n modules: moduleOptions,\n ...restOptions,\n },\n }\n },\n\n css: (options = {}) => {\n let modulesOptions: CSSModulesOptions = false\n if (options.modules) {\n modulesOptions = {\n auto: undefined,\n namedExport: true,\n localIdentName: `[name]--[local]--[hash:base64:5]`,\n exportLocalsConvention: `dashesOnly`,\n exportOnlyLocals: isSSR,\n }\n\n if (typeof options.modules === `object`) {\n modulesOptions = {\n ...modulesOptions,\n ...options.modules,\n }\n }\n }\n\n return {\n loader: require.resolve(`css-loader`),\n options: {\n // Absolute urls (https or //) are not send to this function. Only resolvable paths absolute or relative ones.\n url: function (url: string): boolean {\n // When an url starts with /\n if (url.startsWith(`/`)) {\n return false\n }\n\n return true\n },\n sourceMap: !PRODUCTION,\n modules: modulesOptions,\n },\n }\n },\n\n postcss: (options = {}) => {\n const {\n plugins,\n overrideBrowserslist = supportedBrowsers,\n ...postcssOpts\n } = options\n\n return {\n loader: require.resolve(`postcss-loader`),\n options: {\n execute: false,\n sourceMap: !PRODUCTION,\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n postcssOptions: (loaderContext: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let postCSSPlugins: Array<PostCSSPlugin> = []\n if (plugins) {\n postCSSPlugins =\n typeof plugins === `function` ? plugins(loaderContext) : plugins\n }\n\n const autoprefixerPlugin = autoprefixer({\n overrideBrowserslist,\n flexbox: `no-2009`,\n ...((\n postCSSPlugins.find(\n plugin => plugin.postcssPlugin === `autoprefixer`\n ) as unknown as autoprefixer.ExportedAPI\n )?.options ?? {}),\n })\n\n postCSSPlugins.unshift(autoprefixerPlugin)\n postCSSPlugins.unshift(flexbugs)\n\n return {\n plugins: postCSSPlugins,\n ...postcssOpts,\n }\n },\n },\n }\n },\n\n file: (options = {}) => {\n return {\n loader: require.resolve(`file-loader`),\n options: {\n name: `${assetRelativeRoot}[name]-[hash].[ext]`,\n ...options,\n },\n }\n },\n\n url: (options = {}) => {\n return {\n loader: require.resolve(`url-loader`),\n options: {\n limit: 10000,\n name: `${assetRelativeRoot}[name]-[hash].[ext]`,\n fallback: require.resolve(`file-loader`),\n ...options,\n },\n }\n },\n\n js: options => {\n return {\n options: {\n stage,\n reactRuntime: jsxRuntimeExists ? `automatic` : `classic`,\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n rootDir: program.directory,\n },\n loader: require.resolve(`./babel-loader`),\n }\n },\n\n dependencies: options => {\n return {\n options: {\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n },\n loader: require.resolve(`babel-loader`),\n }\n },\n }\n\n /**\n * Rules\n */\n const rules = {} as IRuleUtils\n\n /**\n * JavaScript loader via babel, includes userland code\n * and packages that depend on `gatsby`\n */\n {\n const js = ({\n modulesThatUseGatsby = [],\n ...options\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n return {\n test: /\\.(js|mjs|jsx)$/,\n include: (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src so we can extract queries\n return modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n },\n type: `javascript/auto`,\n use: [\n loaders.js({\n ...options,\n configFile: true,\n compact: PRODUCTION,\n }),\n ],\n }\n }\n rules.js = js\n }\n\n /**\n * Node_modules JavaScript loader via babel\n * Excludes core-js & babel-runtime to speedup babel transpilation\n * Excludes modules that use Gatsby since the `rules.js` already transpiles those\n */\n {\n const dependencies = ({\n modulesThatUseGatsby = [],\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n const jsOptions = {\n babelrc: false,\n configFile: false,\n compact: false,\n presets: [\n [\n require.resolve(`babel-preset-gatsby/dependencies`),\n {\n stage,\n },\n ],\n ],\n // If an error happens in a package, it's possible to be\n // because it was compiled. Thus, we don't want the browser\n // debugger to show the original code. Instead, the code\n // being evaluated would be much more helpful.\n sourceMaps: false,\n\n cacheIdentifier: JSON.stringify({\n browerslist: supportedBrowsers,\n gatsbyPreset: require(`babel-preset-gatsby/package.json`).version,\n }),\n }\n\n // TODO REMOVE IN V3\n // a list of vendors we know we shouldn't polyfill (we should have set core-js to entry but we didn't so we have to do this)\n const VENDORS_TO_NOT_POLYFILL = [\n `@babel[\\\\\\\\/]runtime`,\n `@mikaelkristiansson[\\\\\\\\/]domready`,\n `@reach[\\\\\\\\/]router`,\n `babel-preset-gatsby`,\n `core-js`,\n `dom-helpers`,\n `gatsby-legacy-polyfills`,\n `gatsby-link`,\n `gatsby-react-router-scroll`,\n `invariant`,\n `lodash`,\n `mitt`,\n `prop-types`,\n `react-dom`,\n `react`,\n `regenerator-runtime`,\n `scheduler`,\n `scroll-behavior`,\n `shallow-compare`,\n `warning`,\n `webpack`,\n ]\n const doNotPolyfillRegex = new RegExp(\n `[\\\\\\\\/]node_modules[\\\\\\\\/](${VENDORS_TO_NOT_POLYFILL.join(\n `|`\n )})[\\\\\\\\/]`\n )\n\n return {\n test: /\\.(js|mjs)$/,\n exclude: (modulePath: string): boolean => {\n // If dep is user land code, exclude\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If dep uses Gatsby, exclude\n if (\n modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n ) {\n return true\n }\n\n return doNotPolyfillRegex.test(modulePath)\n },\n type: `javascript/auto`,\n use: [loaders.dependencies(jsOptions)],\n }\n }\n rules.dependencies = dependencies\n }\n\n rules.yaml = (): RuleSetRule => {\n return {\n test: /\\.ya?ml$/,\n type: `json`,\n use: [loaders.yaml()],\n }\n }\n\n /**\n * Font loader\n */\n rules.fonts = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(eot|otf|ttf|woff(2)?)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads image assets, inlines images via a data URI if they are below\n * the size threshold\n */\n rules.images = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(ico|svg|jpg|jpeg|png|gif|webp|avif)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads audio and video and inlines them via a data URI if they are below\n * the size threshold\n */\n rules.media = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(mp4|webm|ogv|wav|mp3|m4a|aac|oga|flac)$/,\n }\n }\n\n /**\n * Loads assets without inlining\n */\n rules.miscAssets = (): RuleSetRule => {\n return {\n use: [loaders.file()],\n test: /\\.pdf$/,\n }\n }\n\n /**\n * CSS style loader.\n */\n {\n const css: IRuleUtils[\"css\"] = (options = {}): RuleSetRule => {\n const { browsers, ...restOptions } = options\n const use = [\n !isSSR && loaders.miniCssExtract(restOptions),\n loaders.css({ ...restOptions, importLoaders: 1 }),\n loaders.postcss({ browsers }),\n ].filter(Boolean) as RuleSetRule[\"use\"]\n\n return {\n use,\n test: /\\.css$/,\n }\n }\n\n /**\n * CSS style loader, _excludes_ node_modules.\n */\n css.internal = makeInternalOnly(css)\n css.external = makeExternalOnly(css)\n\n const cssModules: IRuleUtils[\"cssModules\"] = (options): RuleSetRule => {\n const rule = css({ ...options, modules: true })\n delete rule.exclude\n rule.test = /\\.module\\.css$/\n return rule\n }\n\n rules.css = css\n rules.cssModules = cssModules\n }\n\n /**\n * PostCSS loader.\n */\n {\n const postcss: ContextualRuleFactory = (options): RuleSetRule => {\n return {\n test: /\\.css$/,\n use: [loaders.css({ importLoaders: 1 }), loaders.postcss(options)],\n }\n }\n\n /**\n * PostCSS loader, _excludes_ node_modules.\n */\n postcss.internal = makeInternalOnly(postcss)\n postcss.external = makeExternalOnly(postcss)\n rules.postcss = postcss\n }\n /**\n * cast rules to IRuleUtils\n */\n /**\n * Plugins\n */\n const plugins = { ...builtinPlugins } as PluginUtils\n\n plugins.minifyJs = ({\n terserOptions,\n ...options\n }: {\n terserOptions?: TerserPlugin.TerserPluginOptions\n } = {}): WebpackPluginInstance =>\n new TerserPlugin({\n exclude: /\\.min\\.js/,\n terserOptions: {\n ie8: false,\n mangle: {\n safari10: true,\n },\n parse: {\n ecma: 8,\n },\n compress: {\n ecma: 5,\n },\n output: {\n ecma: 5,\n },\n ...terserOptions,\n },\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.minifyCss = (\n options = {\n minimizerOptions: {\n preset: [\n `default`,\n {\n svgo: {\n full: true,\n plugins: [\n // potentially destructive plugins removed - see https://github.com/gatsbyjs/gatsby/issues/15629\n // use correct config format and remove plugins requiring specific params - see https://github.com/gatsbyjs/gatsby/issues/31619\n // List of default plugins and their defaults: https://github.com/svg/svgo#built-in-plugins\n // Last update 2021-08-17\n `cleanupAttrs`,\n `cleanupEnableBackground`,\n `cleanupIDs`,\n `cleanupListOfValues`, // Default: disabled\n `cleanupNumericValues`,\n `collapseGroups`,\n `convertColors`,\n `convertPathData`,\n `convertStyleToAttrs`, // Default: disabled\n `convertTransform`,\n `inlineStyles`,\n `mergePaths`,\n `minifyStyles`,\n `moveElemsAttrsToGroup`,\n `moveGroupAttrsToElems`,\n `prefixIds`, // Default: disabled\n `removeComments`,\n `removeDesc`,\n `removeDoctype`,\n `removeEditorsNSData`,\n `removeEmptyAttrs`,\n `removeEmptyContainers`,\n `removeEmptyText`,\n `removeHiddenElems`,\n `removeMetadata`,\n `removeNonInheritableGroupAttrs`,\n `removeOffCanvasPaths`, // Default: disabled\n `removeRasterImages`, // Default: disabled\n `removeScriptElement`, // Default: disabled\n `removeStyleElement`, // Default: disabled\n `removeTitle`,\n `removeUnknownsAndDefaults`,\n `removeUnusedNS`,\n `removeUselessDefs`,\n `removeUselessStrokeAndFill`,\n `removeXMLProcInst`,\n `reusePaths`, // Default: disabled\n `sortAttrs`, // Default: disabled\n ],\n },\n },\n ],\n },\n }\n ): CssMinimizerPlugin =>\n new CssMinimizerPlugin({\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.fastRefresh = ({ modulesThatUseGatsby }): WebpackPluginInstance => {\n const regExpToHack = /node_modules/\n regExpToHack.test = (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return false\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src because of shadowing\n return !modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n }\n\n return new ReactRefreshWebpackPlugin({\n overlay: {\n sockIntegration: `whm`,\n module: path.join(__dirname, `fast-refresh-module`),\n },\n // this is a bit hacky - exclude expect string or regexp or array of those\n // so this is tricking ReactRefreshWebpackPlugin with providing regexp with\n // overwritten .test method\n exclude: regExpToHack,\n })\n }\n\n plugins.extractText = (options: any): WebpackPluginInstance =>\n new MiniCssExtractPlugin({\n ...options,\n })\n\n plugins.moment = (): WebpackPluginInstance =>\n plugins.ignore({ resourceRegExp: /^\\.\\/locale$/, contextRegExp: /moment$/ })\n\n plugins.extractStats = (): GatsbyWebpackStatsExtractor =>\n new GatsbyWebpackStatsExtractor()\n\n plugins.eslintGraphqlSchemaReload =\n (): GatsbyWebpackEslintGraphqlSchemaReload =>\n new GatsbyWebpackEslintGraphqlSchemaReload()\n\n plugins.virtualModules = (): GatsbyWebpackVirtualModules =>\n new GatsbyWebpackVirtualModules()\n\n plugins.eslint = (schema: GraphQLSchema): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintConfig(schema, jsxRuntimeExists),\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n plugins.eslintRequired = (): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintRequiredConfig,\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n return {\n loaders,\n rules,\n plugins,\n }\n}\n\nexport function reactHasJsxRuntime(): boolean {\n // We've got some complains about the ecosystem not being ready for automatic so we disable it by default.\n // People can use a custom babelrc file to support it\n // try {\n // // React is shipping a new jsx runtime that is to be used with\n // // an option on @babel/preset-react called `runtime: automatic`\n // // Not every version of React has this jsx-runtime yet. Eventually,\n // // it will be backported to older versions of react and this check\n // // will become unnecessary.\n // // for now we also do the semver check until react 17 is more widely used\n // // const react = require(`react/package.json`)\n // // return (\n // // !!require.resolve(`react/jsx-runtime.js`) &&\n // // semver.major(react.version) >= 17\n // // )\n // } catch (e) {\n // // If the require.resolve throws, that means this version of React\n // // does not support the jsx runtime.\n // }\n\n return false\n}\n"],"file":"webpack-utils.js"}
|
|
@@ -13,6 +13,8 @@ var path = _interopRequireWildcard(require("path"));
|
|
|
13
13
|
|
|
14
14
|
var _gatsbyCoreUtils = require("gatsby-core-utils");
|
|
15
15
|
|
|
16
|
+
var _lodash = require("lodash");
|
|
17
|
+
|
|
16
18
|
var _clientAssetsForTemplate = require("../../client-assets-for-template");
|
|
17
19
|
|
|
18
20
|
var _staticQueryUtils = require("../../static-query-utils");
|
|
@@ -83,6 +85,22 @@ async function getResourcesForTemplate(pageData) {
|
|
|
83
85
|
return resources;
|
|
84
86
|
}
|
|
85
87
|
|
|
88
|
+
const truncateObjStrings = obj => {
|
|
89
|
+
// Recursively truncate strings nested in object
|
|
90
|
+
// These objs can be quite large, but we want to preserve each field
|
|
91
|
+
for (const key in obj) {
|
|
92
|
+
if (typeof obj[key] === `object` && obj[key] !== null) {
|
|
93
|
+
truncateObjStrings(obj[key]);
|
|
94
|
+
} else if (typeof obj[key] === `string`) {
|
|
95
|
+
obj[key] = (0, _lodash.truncate)(obj[key], {
|
|
96
|
+
length: 250
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return obj;
|
|
102
|
+
};
|
|
103
|
+
|
|
86
104
|
const renderHTMLProd = async ({
|
|
87
105
|
htmlComponentRendererPath,
|
|
88
106
|
paths,
|
|
@@ -90,7 +108,9 @@ const renderHTMLProd = async ({
|
|
|
90
108
|
sessionId
|
|
91
109
|
}) => {
|
|
92
110
|
const publicDir = join(process.cwd(), `public`);
|
|
93
|
-
const
|
|
111
|
+
const isPreview = process.env.GATSBY_IS_PREVIEW === `true`;
|
|
112
|
+
const unsafeBuiltinsUsageByPagePath = {};
|
|
113
|
+
const previewErrors = {}; // Check if we need to do setup and cache clearing. Within same session we can reuse memoized data,
|
|
94
114
|
// but it's not safe to reuse them in different sessions. Check description of `lastSessionId` for more details
|
|
95
115
|
|
|
96
116
|
if (sessionId !== lastSessionId) {
|
|
@@ -124,7 +144,7 @@ const renderHTMLProd = async ({
|
|
|
124
144
|
unsafeBuiltinsUsageByPagePath[pagePath] = unsafeBuiltinsUsage;
|
|
125
145
|
}
|
|
126
146
|
|
|
127
|
-
|
|
147
|
+
await _fsExtra.default.outputFile((0, _gatsbyCoreUtils.generateHtmlPath)(publicDir, pagePath), html);
|
|
128
148
|
} catch (e) {
|
|
129
149
|
if (e.unsafeBuiltinsUsage && e.unsafeBuiltinsUsage.length > 0) {
|
|
130
150
|
unsafeBuiltinsUsageByPagePath[pagePath] = e.unsafeBuiltinsUsage;
|
|
@@ -134,14 +154,37 @@ const renderHTMLProd = async ({
|
|
|
134
154
|
e.context = {
|
|
135
155
|
path: pagePath,
|
|
136
156
|
unsafeBuiltinsUsageByPagePath
|
|
137
|
-
};
|
|
138
|
-
|
|
157
|
+
}; // If we're in Preview-mode, write out a simple error html file.
|
|
158
|
+
|
|
159
|
+
if (isPreview) {
|
|
160
|
+
const pageData = await readPageData(publicDir, pagePath);
|
|
161
|
+
const truncatedPageData = truncateObjStrings(pageData);
|
|
162
|
+
const html = `<h1>Preview build error</h1>
|
|
163
|
+
<p>There was an error when building the preview page for this page ("${pagePath}").</p>
|
|
164
|
+
<h3>Error</h3>
|
|
165
|
+
<pre><code>${e.stack}</code></pre>
|
|
166
|
+
<h3>Page component id</h3>
|
|
167
|
+
<p><code>${pageData.componentChunkName}</code></p>
|
|
168
|
+
<h3>Page data</h3>
|
|
169
|
+
<pre><code>${JSON.stringify(truncatedPageData, null, 4)}</code></pre>`;
|
|
170
|
+
await _fsExtra.default.outputFile((0, _gatsbyCoreUtils.generateHtmlPath)(publicDir, pagePath), html);
|
|
171
|
+
previewErrors[pagePath] = {
|
|
172
|
+
e,
|
|
173
|
+
message: e.message,
|
|
174
|
+
code: e.code,
|
|
175
|
+
stack: e.stack,
|
|
176
|
+
name: e.name
|
|
177
|
+
};
|
|
178
|
+
} else {
|
|
179
|
+
throw e;
|
|
180
|
+
}
|
|
139
181
|
}
|
|
140
182
|
}, {
|
|
141
183
|
concurrency: 2
|
|
142
184
|
});
|
|
143
185
|
return {
|
|
144
|
-
unsafeBuiltinsUsageByPagePath
|
|
186
|
+
unsafeBuiltinsUsageByPagePath,
|
|
187
|
+
previewErrors
|
|
145
188
|
};
|
|
146
189
|
}; // TODO: remove when DEV_SSR is done
|
|
147
190
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/utils/worker/child/render-html.ts"],"names":["join","path","posix","lastSessionId","htmlComponentRenderer","webpackStats","resourcesForTemplateCache","Map","inFlightResourcesForTemplate","clearCaches","clear","readPageData","publicDir","pagePath","filePath","rawPageData","fs","readFile","JSON","parse","doGetResourcesForTemplate","pageData","scriptsAndStyles","componentChunkName","staticQueryContext","staticQueryHashes","getResourcesForTemplate","memoizedResourcesForTemplate","get","inFlight","doWorkPromise","set","resources","delete","renderHTMLProd","htmlComponentRendererPath","paths","envVars","sessionId","process","cwd","unsafeBuiltinsUsageByPagePath","forEach","key","value","env","require","global","unsafeBuiltinUsage","length","Bluebird","map","resourcesForTemplate","html","unsafeBuiltinsUsage","default","outputFile","e","context","concurrency","renderHTMLDev","outputDir","htmlString"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n\nimport fs from \"fs-extra\"\nimport Bluebird from \"bluebird\"\nimport * as path from \"path\"\nimport { generateHtmlPath, fixedPagePath } from \"gatsby-core-utils\"\n\nimport {\n readWebpackStats,\n getScriptsAndStylesForTemplate,\n clearCache as clearAssetsMappingCache,\n} from \"../../client-assets-for-template\"\nimport type { IPageDataWithQueryResult } from \"../../page-data\"\nimport type { IRenderHtmlResult } from \"../../../commands/build-html\"\nimport {\n clearStaticQueryCaches,\n IResourcesForTemplate,\n getStaticQueryContext,\n} from \"../../static-query-utils\"\n// we want to force posix-style joins, so Windows doesn't produce backslashes for urls\nconst { join } = path.posix\n\ndeclare global {\n namespace NodeJS {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Global {\n unsafeBuiltinUsage: Array<string> | undefined\n }\n }\n}\n\n/**\n * Used to track if renderHTMLProd / renderHTMLDev are called within same \"session\" (from same renderHTMLQueue call).\n * As long as sessionId remains the same we can rely on memoized/cached resources for templates, css file content for inlining and static query results.\n * If session changes we invalidate our memoization caches.\n */\nlet lastSessionId = 0\nlet htmlComponentRenderer\nlet webpackStats\n\nconst resourcesForTemplateCache = new Map<string, IResourcesForTemplate>()\nconst inFlightResourcesForTemplate = new Map<\n string,\n Promise<IResourcesForTemplate>\n>()\n\nfunction clearCaches(): void {\n clearStaticQueryCaches()\n resourcesForTemplateCache.clear()\n inFlightResourcesForTemplate.clear()\n\n clearAssetsMappingCache()\n}\n\nasync function readPageData(\n publicDir: string,\n pagePath: string\n): Promise<IPageDataWithQueryResult> {\n const filePath = join(\n publicDir,\n `page-data`,\n fixedPagePath(pagePath),\n `page-data.json`\n )\n const rawPageData = await fs.readFile(filePath, `utf-8`)\n\n return JSON.parse(rawPageData)\n}\n\nasync function doGetResourcesForTemplate(\n pageData: IPageDataWithQueryResult\n): Promise<IResourcesForTemplate> {\n const scriptsAndStyles = await getScriptsAndStylesForTemplate(\n pageData.componentChunkName,\n webpackStats\n )\n\n const { staticQueryContext } = await getStaticQueryContext(\n pageData.staticQueryHashes\n )\n\n return {\n staticQueryContext,\n ...scriptsAndStyles,\n }\n}\n\nasync function getResourcesForTemplate(\n pageData: IPageDataWithQueryResult\n): Promise<IResourcesForTemplate> {\n const memoizedResourcesForTemplate = resourcesForTemplateCache.get(\n pageData.componentChunkName\n )\n if (memoizedResourcesForTemplate) {\n return memoizedResourcesForTemplate\n }\n\n const inFlight = inFlightResourcesForTemplate.get(pageData.componentChunkName)\n if (inFlight) {\n return inFlight\n }\n\n const doWorkPromise = doGetResourcesForTemplate(pageData)\n inFlightResourcesForTemplate.set(pageData.componentChunkName, doWorkPromise)\n\n const resources = await doWorkPromise\n\n resourcesForTemplateCache.set(pageData.componentChunkName, resources)\n inFlightResourcesForTemplate.delete(pageData.componentChunkName)\n\n return resources\n}\n\nexport const renderHTMLProd = async ({\n htmlComponentRendererPath,\n paths,\n envVars,\n sessionId,\n}: {\n htmlComponentRendererPath: string\n paths: Array<string>\n envVars: Array<[string, string | undefined]>\n sessionId: number\n}): Promise<IRenderHtmlResult> => {\n const publicDir = join(process.cwd(), `public`)\n\n const unsafeBuiltinsUsageByPagePath = {}\n\n // Check if we need to do setup and cache clearing. Within same session we can reuse memoized data,\n // but it's not safe to reuse them in different sessions. Check description of `lastSessionId` for more details\n if (sessionId !== lastSessionId) {\n clearCaches()\n\n // This is being executed in child process, so we need to set some vars\n // for modules that aren't bundled by webpack.\n envVars.forEach(([key, value]) => (process.env[key] = value))\n\n htmlComponentRenderer = require(htmlComponentRendererPath)\n\n webpackStats = await readWebpackStats(publicDir)\n\n lastSessionId = sessionId\n\n if (global.unsafeBuiltinUsage && global.unsafeBuiltinUsage.length > 0) {\n unsafeBuiltinsUsageByPagePath[`__import_time__`] =\n global.unsafeBuiltinUsage\n }\n }\n\n await Bluebird.map(\n paths,\n async pagePath => {\n try {\n const pageData = await readPageData(publicDir, pagePath)\n const resourcesForTemplate = await getResourcesForTemplate(pageData)\n\n const { html, unsafeBuiltinsUsage } =\n await htmlComponentRenderer.default({\n pagePath,\n pageData,\n ...resourcesForTemplate,\n })\n\n if (unsafeBuiltinsUsage.length > 0) {\n unsafeBuiltinsUsageByPagePath[pagePath] = unsafeBuiltinsUsage\n }\n\n return fs.outputFile(generateHtmlPath(publicDir, pagePath), html)\n } catch (e) {\n if (e.unsafeBuiltinsUsage && e.unsafeBuiltinsUsage.length > 0) {\n unsafeBuiltinsUsageByPagePath[pagePath] = e.unsafeBuiltinsUsage\n }\n // add some context to error so we can display more helpful message\n e.context = {\n path: pagePath,\n unsafeBuiltinsUsageByPagePath,\n }\n throw e\n }\n },\n { concurrency: 2 }\n )\n\n return { unsafeBuiltinsUsageByPagePath }\n}\n\n// TODO: remove when DEV_SSR is done\nexport const renderHTMLDev = async ({\n htmlComponentRendererPath,\n paths,\n envVars,\n sessionId,\n}: {\n htmlComponentRendererPath: string\n paths: Array<string>\n envVars: Array<[string, string | undefined]>\n sessionId: number\n}): Promise<Array<unknown>> => {\n const outputDir = join(process.cwd(), `.cache`, `develop-html`)\n\n // Check if we need to do setup and cache clearing. Within same session we can reuse memoized data,\n // but it's not safe to reuse them in different sessions. Check description of `lastSessionId` for more details\n if (sessionId !== lastSessionId) {\n clearCaches()\n\n // This is being executed in child process, so we need to set some vars\n // for modules that aren't bundled by webpack.\n envVars.forEach(([key, value]) => (process.env[key] = value))\n\n htmlComponentRenderer = require(htmlComponentRendererPath)\n\n lastSessionId = sessionId\n }\n\n return Bluebird.map(\n paths,\n async pagePath => {\n try {\n const htmlString = await htmlComponentRenderer.default({\n pagePath,\n })\n return fs.outputFile(generateHtmlPath(outputDir, pagePath), htmlString)\n } catch (e) {\n // add some context to error so we can display more helpful message\n e.context = {\n path: pagePath,\n }\n throw e\n }\n },\n { concurrency: 2 }\n )\n}\n"],"file":"render-html.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/worker/child/render-html.ts"],"names":["join","path","posix","lastSessionId","htmlComponentRenderer","webpackStats","resourcesForTemplateCache","Map","inFlightResourcesForTemplate","clearCaches","clear","readPageData","publicDir","pagePath","filePath","rawPageData","fs","readFile","JSON","parse","doGetResourcesForTemplate","pageData","scriptsAndStyles","componentChunkName","staticQueryContext","staticQueryHashes","getResourcesForTemplate","memoizedResourcesForTemplate","get","inFlight","doWorkPromise","set","resources","delete","truncateObjStrings","obj","key","length","renderHTMLProd","htmlComponentRendererPath","paths","envVars","sessionId","process","cwd","isPreview","env","GATSBY_IS_PREVIEW","unsafeBuiltinsUsageByPagePath","previewErrors","forEach","value","require","global","unsafeBuiltinUsage","Bluebird","map","resourcesForTemplate","html","unsafeBuiltinsUsage","default","outputFile","e","context","truncatedPageData","stack","stringify","message","code","name","concurrency","renderHTMLDev","outputDir","htmlString"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n\nimport fs from \"fs-extra\"\nimport Bluebird from \"bluebird\"\nimport * as path from \"path\"\nimport { generateHtmlPath, fixedPagePath } from \"gatsby-core-utils\"\nimport { truncate } from \"lodash\"\n\nimport {\n readWebpackStats,\n getScriptsAndStylesForTemplate,\n clearCache as clearAssetsMappingCache,\n} from \"../../client-assets-for-template\"\nimport type { IPageDataWithQueryResult } from \"../../page-data\"\nimport type { IRenderHtmlResult } from \"../../../commands/build-html\"\nimport {\n clearStaticQueryCaches,\n IResourcesForTemplate,\n getStaticQueryContext,\n} from \"../../static-query-utils\"\n// we want to force posix-style joins, so Windows doesn't produce backslashes for urls\nconst { join } = path.posix\n\ndeclare global {\n namespace NodeJS {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Global {\n unsafeBuiltinUsage: Array<string> | undefined\n }\n }\n}\n\n/**\n * Used to track if renderHTMLProd / renderHTMLDev are called within same \"session\" (from same renderHTMLQueue call).\n * As long as sessionId remains the same we can rely on memoized/cached resources for templates, css file content for inlining and static query results.\n * If session changes we invalidate our memoization caches.\n */\nlet lastSessionId = 0\nlet htmlComponentRenderer\nlet webpackStats\n\nconst resourcesForTemplateCache = new Map<string, IResourcesForTemplate>()\nconst inFlightResourcesForTemplate = new Map<\n string,\n Promise<IResourcesForTemplate>\n>()\n\nfunction clearCaches(): void {\n clearStaticQueryCaches()\n resourcesForTemplateCache.clear()\n inFlightResourcesForTemplate.clear()\n\n clearAssetsMappingCache()\n}\n\nasync function readPageData(\n publicDir: string,\n pagePath: string\n): Promise<IPageDataWithQueryResult> {\n const filePath = join(\n publicDir,\n `page-data`,\n fixedPagePath(pagePath),\n `page-data.json`\n )\n const rawPageData = await fs.readFile(filePath, `utf-8`)\n\n return JSON.parse(rawPageData)\n}\n\nasync function doGetResourcesForTemplate(\n pageData: IPageDataWithQueryResult\n): Promise<IResourcesForTemplate> {\n const scriptsAndStyles = await getScriptsAndStylesForTemplate(\n pageData.componentChunkName,\n webpackStats\n )\n\n const { staticQueryContext } = await getStaticQueryContext(\n pageData.staticQueryHashes\n )\n\n return {\n staticQueryContext,\n ...scriptsAndStyles,\n }\n}\n\nasync function getResourcesForTemplate(\n pageData: IPageDataWithQueryResult\n): Promise<IResourcesForTemplate> {\n const memoizedResourcesForTemplate = resourcesForTemplateCache.get(\n pageData.componentChunkName\n )\n if (memoizedResourcesForTemplate) {\n return memoizedResourcesForTemplate\n }\n\n const inFlight = inFlightResourcesForTemplate.get(pageData.componentChunkName)\n if (inFlight) {\n return inFlight\n }\n\n const doWorkPromise = doGetResourcesForTemplate(pageData)\n inFlightResourcesForTemplate.set(pageData.componentChunkName, doWorkPromise)\n\n const resources = await doWorkPromise\n\n resourcesForTemplateCache.set(pageData.componentChunkName, resources)\n inFlightResourcesForTemplate.delete(pageData.componentChunkName)\n\n return resources\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` && obj[key] !== null) {\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 renderHTMLProd = async ({\n htmlComponentRendererPath,\n paths,\n envVars,\n sessionId,\n}: {\n htmlComponentRendererPath: string\n paths: Array<string>\n envVars: Array<[string, string | undefined]>\n sessionId: number\n}): Promise<IRenderHtmlResult> => {\n const publicDir = join(process.cwd(), `public`)\n const isPreview = process.env.GATSBY_IS_PREVIEW === `true`\n\n const unsafeBuiltinsUsageByPagePath = {}\n const previewErrors = {}\n\n // Check if we need to do setup and cache clearing. Within same session we can reuse memoized data,\n // but it's not safe to reuse them in different sessions. Check description of `lastSessionId` for more details\n if (sessionId !== lastSessionId) {\n clearCaches()\n\n // This is being executed in child process, so we need to set some vars\n // for modules that aren't bundled by webpack.\n envVars.forEach(([key, value]) => (process.env[key] = value))\n\n htmlComponentRenderer = require(htmlComponentRendererPath)\n\n webpackStats = await readWebpackStats(publicDir)\n\n lastSessionId = sessionId\n\n if (global.unsafeBuiltinUsage && global.unsafeBuiltinUsage.length > 0) {\n unsafeBuiltinsUsageByPagePath[`__import_time__`] =\n global.unsafeBuiltinUsage\n }\n }\n\n await Bluebird.map(\n paths,\n async pagePath => {\n try {\n const pageData = await readPageData(publicDir, pagePath)\n const resourcesForTemplate = await getResourcesForTemplate(pageData)\n\n const { html, unsafeBuiltinsUsage } =\n await htmlComponentRenderer.default({\n pagePath,\n pageData,\n ...resourcesForTemplate,\n })\n\n if (unsafeBuiltinsUsage.length > 0) {\n unsafeBuiltinsUsageByPagePath[pagePath] = unsafeBuiltinsUsage\n }\n\n await fs.outputFile(generateHtmlPath(publicDir, pagePath), html)\n } catch (e) {\n if (e.unsafeBuiltinsUsage && e.unsafeBuiltinsUsage.length > 0) {\n unsafeBuiltinsUsageByPagePath[pagePath] = e.unsafeBuiltinsUsage\n }\n // add some context to error so we can display more helpful message\n e.context = {\n path: pagePath,\n unsafeBuiltinsUsageByPagePath,\n }\n\n // If we're in Preview-mode, write out a simple error html file.\n if (isPreview) {\n const pageData = await readPageData(publicDir, pagePath)\n const truncatedPageData = truncateObjStrings(pageData)\n\n const html = `<h1>Preview build error</h1>\n <p>There was an error when building the preview page for this page (\"${pagePath}\").</p>\n <h3>Error</h3>\n <pre><code>${e.stack}</code></pre>\n <h3>Page component id</h3>\n <p><code>${pageData.componentChunkName}</code></p>\n <h3>Page data</h3>\n <pre><code>${JSON.stringify(truncatedPageData, null, 4)}</code></pre>`\n\n await fs.outputFile(generateHtmlPath(publicDir, pagePath), html)\n previewErrors[pagePath] = {\n e,\n message: e.message,\n code: e.code,\n stack: e.stack,\n name: e.name,\n }\n } else {\n throw e\n }\n }\n },\n { concurrency: 2 }\n )\n\n return { unsafeBuiltinsUsageByPagePath, previewErrors }\n}\n\n// TODO: remove when DEV_SSR is done\nexport const renderHTMLDev = async ({\n htmlComponentRendererPath,\n paths,\n envVars,\n sessionId,\n}: {\n htmlComponentRendererPath: string\n paths: Array<string>\n envVars: Array<[string, string | undefined]>\n sessionId: number\n}): Promise<Array<unknown>> => {\n const outputDir = join(process.cwd(), `.cache`, `develop-html`)\n\n // Check if we need to do setup and cache clearing. Within same session we can reuse memoized data,\n // but it's not safe to reuse them in different sessions. Check description of `lastSessionId` for more details\n if (sessionId !== lastSessionId) {\n clearCaches()\n\n // This is being executed in child process, so we need to set some vars\n // for modules that aren't bundled by webpack.\n envVars.forEach(([key, value]) => (process.env[key] = value))\n\n htmlComponentRenderer = require(htmlComponentRendererPath)\n\n lastSessionId = sessionId\n }\n\n return Bluebird.map(\n paths,\n async pagePath => {\n try {\n const htmlString = await htmlComponentRenderer.default({\n pagePath,\n })\n return fs.outputFile(generateHtmlPath(outputDir, pagePath), htmlString)\n } catch (e) {\n // add some context to error so we can display more helpful message\n e.context = {\n path: pagePath,\n }\n throw e\n }\n },\n { concurrency: 2 }\n )\n}\n"],"file":"render-html.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.2"/><title data-react-helmet="true"></title><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2"/><style>@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hjg.woff) format("woff");font-display:swap}</style><link as="script" rel="preload" href="/___admin/webpack-runtime-2478a6aa71d7fe140451.js"/><link as="script" rel="preload" href="/___admin/framework-b24cde22b86a9930317b.js"/><link as="script" rel="preload" href="/___admin/app-552da616a99bc886bb71.js"/><link as="script" rel="preload" href="/___admin/e2852b4470dcb2615e49edcd9de2a3c8119d4bec-fdf65cf14f60e302e2d6.js"/><link as="script" rel="preload" href="/___admin/c432bec7e9afb3443fd639df9e5f119e13575cf7-8db0534ff52e363cdb1d.js"/><link as="script" rel="preload" href="/___admin/854a7ef1f34af0aefbdfdd9304a0c00251662775-e2e8402c4d45f5fee48d.js"/><link as="script" rel="preload" href="/___admin/component---src-pages-index-tsx-ae7aa7efde37ccf72193.js"/><link as="fetch" rel="preload" href="/___admin/page-data/index/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/___admin/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="ict6so">body{background-color:#ffffff;}body color{header:#000000;primary:#36313d;secondary:#78757a;placeholder:#b7b5bd;}</style><style data-emotion-css="fw25na">*{box-sizing:border-box;}body{margin:0rem;background-color:var(--theme-ui-colors-grey-5,#fbfbfb);}</style><style data-emotion-css="1pf5xd">.css-1pf5xd{box-sizing:border-box;margin:0;min-width:0;color:primary;overflow:visible;}</style><svg viewBox="0 0 32 32" width="48" height="48" stroke-width="4" fill="none" stroke="currentcolor" role="img" class="css-1pf5xd"><title>Loading...</title><circle cx="16" cy="16" r="12" opacity="0.125"></circle><style data-emotion-css="wpcq6n animation-1q8eu9e">.css-wpcq6n{box-sizing:border-box;margin:0;min-width:0;-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-name:animation-1q8eu9e;animation-name:animation-1q8eu9e;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-duration:500ms;animation-duration:500ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;}@-webkit-keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}</style><circle cx="16" cy="16" r="12" stroke-dasharray="75.39822368615503" stroke-dashoffset="56.548667764616276" class="css-wpcq6n"></circle></svg></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-85cdcdc6d8017a8c93f4.js"],"app":["/app-552da616a99bc886bb71.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-ae7aa7efde37ccf72193.js"],"component---src-pages-pages-tsx":["/component---src-pages-pages-tsx-b4a6c93567ec792e0974.js"],"component---src-pages-plugins-tsx":["/component---src-pages-plugins-tsx-c2eb4db8168edfc87864.js"],"component---src-pages-recipe-js":["/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js"],"component---src-pages-recipes-tsx":["/component---src-pages-recipes-tsx-d347016863bb8d7ed197.js"]};/*]]>*/</script><script src="/___admin/polyfill-85cdcdc6d8017a8c93f4.js" nomodule=""></script><script src="/___admin/component---src-pages-index-tsx-ae7aa7efde37ccf72193.js" async=""></script><script src="/___admin/854a7ef1f34af0aefbdfdd9304a0c00251662775-e2e8402c4d45f5fee48d.js" async=""></script><script src="/___admin/c432bec7e9afb3443fd639df9e5f119e13575cf7-8db0534ff52e363cdb1d.js" async=""></script><script src="/___admin/e2852b4470dcb2615e49edcd9de2a3c8119d4bec-fdf65cf14f60e302e2d6.js" async=""></script><script src="/___admin/app-552da616a99bc886bb71.js" async=""></script><script src="/___admin/framework-b24cde22b86a9930317b.js" async=""></script><script src="/___admin/webpack-runtime-2478a6aa71d7fe140451.js" async=""></script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.2"/><title data-react-helmet="true"></title><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2"/><style>@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hjg.woff) format("woff");font-display:swap}</style><link as="script" rel="preload" href="/___admin/webpack-runtime-2478a6aa71d7fe140451.js"/><link as="script" rel="preload" href="/___admin/framework-b24cde22b86a9930317b.js"/><link as="script" rel="preload" href="/___admin/app-552da616a99bc886bb71.js"/><link as="script" rel="preload" href="/___admin/component---src-pages-pages-tsx-b4a6c93567ec792e0974.js"/><link as="fetch" rel="preload" href="/___admin/page-data/pages/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/___admin/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="ict6so">body{background-color:#ffffff;}body color{header:#000000;primary:#36313d;secondary:#78757a;placeholder:#b7b5bd;}</style><style data-emotion-css="fw25na">*{box-sizing:border-box;}body{margin:0rem;background-color:var(--theme-ui-colors-grey-5,#fbfbfb);}</style><style data-emotion-css="1pf5xd">.css-1pf5xd{box-sizing:border-box;margin:0;min-width:0;color:primary;overflow:visible;}</style><svg viewBox="0 0 32 32" width="48" height="48" stroke-width="4" fill="none" stroke="currentcolor" role="img" class="css-1pf5xd"><title>Loading...</title><circle cx="16" cy="16" r="12" opacity="0.125"></circle><style data-emotion-css="wpcq6n animation-1q8eu9e">.css-wpcq6n{box-sizing:border-box;margin:0;min-width:0;-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-name:animation-1q8eu9e;animation-name:animation-1q8eu9e;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-duration:500ms;animation-duration:500ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;}@-webkit-keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}</style><circle cx="16" cy="16" r="12" stroke-dasharray="75.39822368615503" stroke-dashoffset="56.548667764616276" class="css-wpcq6n"></circle></svg></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/pages/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-85cdcdc6d8017a8c93f4.js"],"app":["/app-552da616a99bc886bb71.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-ae7aa7efde37ccf72193.js"],"component---src-pages-pages-tsx":["/component---src-pages-pages-tsx-b4a6c93567ec792e0974.js"],"component---src-pages-plugins-tsx":["/component---src-pages-plugins-tsx-c2eb4db8168edfc87864.js"],"component---src-pages-recipe-js":["/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js"],"component---src-pages-recipes-tsx":["/component---src-pages-recipes-tsx-d347016863bb8d7ed197.js"]};/*]]>*/</script><script src="/___admin/polyfill-85cdcdc6d8017a8c93f4.js" nomodule=""></script><script src="/___admin/component---src-pages-pages-tsx-b4a6c93567ec792e0974.js" async=""></script><script src="/___admin/app-552da616a99bc886bb71.js" async=""></script><script src="/___admin/framework-b24cde22b86a9930317b.js" async=""></script><script src="/___admin/webpack-runtime-2478a6aa71d7fe140451.js" async=""></script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.2"/><title data-react-helmet="true"></title><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2"/><style>@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hjg.woff) format("woff");font-display:swap}</style><link as="script" rel="preload" href="/___admin/webpack-runtime-2478a6aa71d7fe140451.js"/><link as="script" rel="preload" href="/___admin/framework-b24cde22b86a9930317b.js"/><link as="script" rel="preload" href="/___admin/app-552da616a99bc886bb71.js"/><link as="script" rel="preload" href="/___admin/69bd6bf3-684a0eb07103ce2347bb.js"/><link as="script" rel="preload" href="/___admin/4c744e84-68fce5225c02bf5771b5.js"/><link as="script" rel="preload" href="/___admin/e2852b4470dcb2615e49edcd9de2a3c8119d4bec-fdf65cf14f60e302e2d6.js"/><link as="script" rel="preload" href="/___admin/c432bec7e9afb3443fd639df9e5f119e13575cf7-8db0534ff52e363cdb1d.js"/><link as="script" rel="preload" href="/___admin/784b2cee55c07b638f20445dec340adf9f1888a3-b2fc60100cf82df7f003.js"/><link as="script" rel="preload" href="/___admin/component---src-pages-plugins-tsx-c2eb4db8168edfc87864.js"/><link as="fetch" rel="preload" href="/___admin/page-data/plugins/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/___admin/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="ict6so">body{background-color:#ffffff;}body color{header:#000000;primary:#36313d;secondary:#78757a;placeholder:#b7b5bd;}</style><style data-emotion-css="fw25na">*{box-sizing:border-box;}body{margin:0rem;background-color:var(--theme-ui-colors-grey-5,#fbfbfb);}</style><style data-emotion-css="1pf5xd">.css-1pf5xd{box-sizing:border-box;margin:0;min-width:0;color:primary;overflow:visible;}</style><svg viewBox="0 0 32 32" width="48" height="48" stroke-width="4" fill="none" stroke="currentcolor" role="img" class="css-1pf5xd"><title>Loading...</title><circle cx="16" cy="16" r="12" opacity="0.125"></circle><style data-emotion-css="wpcq6n animation-1q8eu9e">.css-wpcq6n{box-sizing:border-box;margin:0;min-width:0;-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-name:animation-1q8eu9e;animation-name:animation-1q8eu9e;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-duration:500ms;animation-duration:500ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;}@-webkit-keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}</style><circle cx="16" cy="16" r="12" stroke-dasharray="75.39822368615503" stroke-dashoffset="56.548667764616276" class="css-wpcq6n"></circle></svg></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/plugins/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-85cdcdc6d8017a8c93f4.js"],"app":["/app-552da616a99bc886bb71.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-ae7aa7efde37ccf72193.js"],"component---src-pages-pages-tsx":["/component---src-pages-pages-tsx-b4a6c93567ec792e0974.js"],"component---src-pages-plugins-tsx":["/component---src-pages-plugins-tsx-c2eb4db8168edfc87864.js"],"component---src-pages-recipe-js":["/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js"],"component---src-pages-recipes-tsx":["/component---src-pages-recipes-tsx-d347016863bb8d7ed197.js"]};/*]]>*/</script><script src="/___admin/polyfill-85cdcdc6d8017a8c93f4.js" nomodule=""></script><script src="/___admin/component---src-pages-plugins-tsx-c2eb4db8168edfc87864.js" async=""></script><script src="/___admin/784b2cee55c07b638f20445dec340adf9f1888a3-b2fc60100cf82df7f003.js" async=""></script><script src="/___admin/c432bec7e9afb3443fd639df9e5f119e13575cf7-8db0534ff52e363cdb1d.js" async=""></script><script src="/___admin/e2852b4470dcb2615e49edcd9de2a3c8119d4bec-fdf65cf14f60e302e2d6.js" async=""></script><script src="/___admin/4c744e84-68fce5225c02bf5771b5.js" async=""></script><script src="/___admin/69bd6bf3-684a0eb07103ce2347bb.js" async=""></script><script src="/___admin/app-552da616a99bc886bb71.js" async=""></script><script src="/___admin/framework-b24cde22b86a9930317b.js" async=""></script><script src="/___admin/webpack-runtime-2478a6aa71d7fe140451.js" async=""></script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.2"/><title data-react-helmet="true"></title><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2"/><style>@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hjg.woff) format("woff");font-display:swap}</style><link as="script" rel="preload" href="/___admin/webpack-runtime-2478a6aa71d7fe140451.js"/><link as="script" rel="preload" href="/___admin/framework-b24cde22b86a9930317b.js"/><link as="script" rel="preload" href="/___admin/app-552da616a99bc886bb71.js"/><link as="script" rel="preload" href="/___admin/69bd6bf3-684a0eb07103ce2347bb.js"/><link as="script" rel="preload" href="/___admin/854a7ef1f34af0aefbdfdd9304a0c00251662775-e2e8402c4d45f5fee48d.js"/><link as="script" rel="preload" href="/___admin/784b2cee55c07b638f20445dec340adf9f1888a3-b2fc60100cf82df7f003.js"/><link as="script" rel="preload" href="/___admin/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js"/><link as="fetch" rel="preload" href="/___admin/page-data/recipe/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/___admin/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="ict6so">body{background-color:#ffffff;}body color{header:#000000;primary:#36313d;secondary:#78757a;placeholder:#b7b5bd;}</style><style data-emotion-css="fw25na">*{box-sizing:border-box;}body{margin:0rem;background-color:var(--theme-ui-colors-grey-5,#fbfbfb);}</style><style data-emotion-css="1pf5xd">.css-1pf5xd{box-sizing:border-box;margin:0;min-width:0;color:primary;overflow:visible;}</style><svg viewBox="0 0 32 32" width="48" height="48" stroke-width="4" fill="none" stroke="currentcolor" role="img" class="css-1pf5xd"><title>Loading...</title><circle cx="16" cy="16" r="12" opacity="0.125"></circle><style data-emotion-css="wpcq6n animation-1q8eu9e">.css-wpcq6n{box-sizing:border-box;margin:0;min-width:0;-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-name:animation-1q8eu9e;animation-name:animation-1q8eu9e;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-duration:500ms;animation-duration:500ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;}@-webkit-keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}</style><circle cx="16" cy="16" r="12" stroke-dasharray="75.39822368615503" stroke-dashoffset="56.548667764616276" class="css-wpcq6n"></circle></svg></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/recipe/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-85cdcdc6d8017a8c93f4.js"],"app":["/app-552da616a99bc886bb71.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-ae7aa7efde37ccf72193.js"],"component---src-pages-pages-tsx":["/component---src-pages-pages-tsx-b4a6c93567ec792e0974.js"],"component---src-pages-plugins-tsx":["/component---src-pages-plugins-tsx-c2eb4db8168edfc87864.js"],"component---src-pages-recipe-js":["/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js"],"component---src-pages-recipes-tsx":["/component---src-pages-recipes-tsx-d347016863bb8d7ed197.js"]};/*]]>*/</script><script src="/___admin/polyfill-85cdcdc6d8017a8c93f4.js" nomodule=""></script><script src="/___admin/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js" async=""></script><script src="/___admin/784b2cee55c07b638f20445dec340adf9f1888a3-b2fc60100cf82df7f003.js" async=""></script><script src="/___admin/854a7ef1f34af0aefbdfdd9304a0c00251662775-e2e8402c4d45f5fee48d.js" async=""></script><script src="/___admin/69bd6bf3-684a0eb07103ce2347bb.js" async=""></script><script src="/___admin/app-552da616a99bc886bb71.js" async=""></script><script src="/___admin/framework-b24cde22b86a9930317b.js" async=""></script><script src="/___admin/webpack-runtime-2478a6aa71d7fe140451.js" async=""></script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/___admin/styles.ac2d3128404ecdaeec67.css" data-identity="gatsby-global-css">/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}</style><meta name="generator" content="Gatsby 3.14.2"/><title data-react-helmet="true"></title><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2"/><style>@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hiA.woff2) format("woff2");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYAZ9hjg.woff) format("woff");font-display:swap}@font-face{font-family:Inter;font-style:normal;font-weight:800;src:url(/___admin/static/webfonts/s/inter/v3/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuDyYAZ9hjg.woff) format("woff");font-display:swap}</style><link as="script" rel="preload" href="/___admin/webpack-runtime-2478a6aa71d7fe140451.js"/><link as="script" rel="preload" href="/___admin/framework-b24cde22b86a9930317b.js"/><link as="script" rel="preload" href="/___admin/app-552da616a99bc886bb71.js"/><link as="script" rel="preload" href="/___admin/component---src-pages-recipes-tsx-d347016863bb8d7ed197.js"/><link as="fetch" rel="preload" href="/___admin/page-data/recipes/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/___admin/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><style data-emotion-css="ict6so">body{background-color:#ffffff;}body color{header:#000000;primary:#36313d;secondary:#78757a;placeholder:#b7b5bd;}</style><style data-emotion-css="fw25na">*{box-sizing:border-box;}body{margin:0rem;background-color:var(--theme-ui-colors-grey-5,#fbfbfb);}</style><style data-emotion-css="1pf5xd">.css-1pf5xd{box-sizing:border-box;margin:0;min-width:0;color:primary;overflow:visible;}</style><svg viewBox="0 0 32 32" width="48" height="48" stroke-width="4" fill="none" stroke="currentcolor" role="img" class="css-1pf5xd"><title>Loading...</title><circle cx="16" cy="16" r="12" opacity="0.125"></circle><style data-emotion-css="wpcq6n animation-1q8eu9e">.css-wpcq6n{box-sizing:border-box;margin:0;min-width:0;-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-name:animation-1q8eu9e;animation-name:animation-1q8eu9e;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-duration:500ms;animation-duration:500ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;}@-webkit-keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes animation-1q8eu9e{from{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}</style><circle cx="16" cy="16" r="12" stroke-dasharray="75.39822368615503" stroke-dashoffset="56.548667764616276" class="css-wpcq6n"></circle></svg></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/recipes/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-85cdcdc6d8017a8c93f4.js"],"app":["/app-552da616a99bc886bb71.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-ae7aa7efde37ccf72193.js"],"component---src-pages-pages-tsx":["/component---src-pages-pages-tsx-b4a6c93567ec792e0974.js"],"component---src-pages-plugins-tsx":["/component---src-pages-plugins-tsx-c2eb4db8168edfc87864.js"],"component---src-pages-recipe-js":["/component---src-pages-recipe-js-c33ae0ed3a512fe2bdb8.js"],"component---src-pages-recipes-tsx":["/component---src-pages-recipes-tsx-d347016863bb8d7ed197.js"]};/*]]>*/</script><script src="/___admin/polyfill-85cdcdc6d8017a8c93f4.js" nomodule=""></script><script src="/___admin/component---src-pages-recipes-tsx-d347016863bb8d7ed197.js" async=""></script><script src="/___admin/app-552da616a99bc886bb71.js" async=""></script><script src="/___admin/framework-b24cde22b86a9930317b.js" async=""></script><script src="/___admin/webpack-runtime-2478a6aa71d7fe140451.js" async=""></script></body></html>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gatsby",
|
|
3
3
|
"description": "Blazing fast modern site generator for React",
|
|
4
|
-
"version": "3.14.
|
|
4
|
+
"version": "3.14.2",
|
|
5
5
|
"author": "Kyle Mathews <mathews.kyle@gmail.com>",
|
|
6
6
|
"bin": {
|
|
7
7
|
"gatsby": "./cli.js"
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"find-cache-dir": "^3.3.1",
|
|
78
78
|
"fs-exists-cached": "1.0.0",
|
|
79
79
|
"fs-extra": "^10.0.0",
|
|
80
|
-
"gatsby-cli": "^3.14.
|
|
80
|
+
"gatsby-cli": "^3.14.1",
|
|
81
81
|
"gatsby-core-utils": "^2.14.0",
|
|
82
82
|
"gatsby-graphiql-explorer": "^1.14.0",
|
|
83
83
|
"gatsby-legacy-polyfills": "^1.14.0",
|
|
@@ -257,5 +257,5 @@
|
|
|
257
257
|
"yargs": {
|
|
258
258
|
"boolean-negation": false
|
|
259
259
|
},
|
|
260
|
-
"gitHead": "
|
|
260
|
+
"gitHead": "ea4fb54301b2cc5b5f52ef27ebe39cd70fffef33"
|
|
261
261
|
}
|