gatsby 3.14.0 → 3.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -103,19 +103,21 @@ function createQueue({
103
103
  const job = createJobFn(state, queryId);
104
104
 
105
105
  if (!job) {
106
- cb(null, undefined);
106
+ setImmediate(() => cb(null, undefined));
107
107
  return;
108
108
  }
109
109
 
110
110
  (0, _queryRunner.queryRunner)(graphqlRunner, job, activity === null || activity === void 0 ? void 0 : activity.span).then(result => {
111
111
  if (activity.tick) {
112
112
  activity.tick();
113
- }
113
+ } // Note: we need setImmediate to ensure garbage collection has a chance
114
+ // to get started during query running
115
+
114
116
 
115
- cb(null, {
117
+ setImmediate(() => cb(null, {
116
118
  job,
117
119
  result
118
- });
120
+ }));
119
121
  }).catch(error => {
120
122
  cb(error);
121
123
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query/index.ts"],"names":["process","env","GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY","console","info","concurrency","Number","calcDirtyQueryIds","state","trackedQueries","trackedComponents","deletedQueries","queries","queriesWithBabelErrors","Set","component","values","errors","FLAG_ERROR_EXTRACTION","queryId","pages","add","dirtyQueryIds","query","has","dirty","push","groupQueryIds","queryIds","grouped","_","groupBy","p","slice","store","getState","staticQueryIds","static","pageQueryIds","page","map","path","get","filter","Boolean","createQueue","createJobFn","activity","graphqlRunner","graphqlTracing","GraphQLRunner","worker","cb","job","undefined","span","then","result","tick","catch","error","processQueries","onQueryDone","Promise","resolve","reject","fastQueue","forEach","err","res","kill","idle","drain","createStaticQueryJob","staticQueryComponents","hash","id","componentPath","isPage","context","onDevelopStaticQueryDone","websocketManager","emitStaticQueryData","processStaticQueries","NODE_ENV","processPageQueries","processedQueries","createPageQueryJob","components"],"mappings":"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","sourcesContent":["import _ from \"lodash\"\nimport fastq from \"fastq\"\nimport { IProgressReporter } from \"gatsby-cli/lib/reporter/reporter-progress\"\nimport { store } from \"../redux\"\nimport { IGatsbyPage, IGatsbyState } from \"../redux/types\"\nimport { hasFlag, FLAG_ERROR_EXTRACTION } from \"../redux/reducers/queries\"\nimport { IQueryJob, queryRunner } from \"./query-runner\"\nimport {\n IStaticQueryResult,\n websocketManager,\n} from \"../utils/websocket-manager\"\nimport { GraphQLRunner } from \"./graphql-runner\"\nimport { IGroupedQueryIds } from \"../services\"\n\nif (process.env.GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY) {\n console.info(\n `GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY: Running with concurrency set to \\`${process.env.GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY}\\``\n )\n}\n\nconst concurrency =\n Number(process.env.GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY) || 4\n\n/**\n * Calculates the set of dirty query IDs (page.paths, or staticQuery.id's).\n *\n * Dirty state is tracked in `queries` reducer, here we simply filter\n * them from all tracked queries.\n */\nexport function calcDirtyQueryIds(state: IGatsbyState): Array<string> {\n const { trackedQueries, trackedComponents, deletedQueries } = state.queries\n\n const queriesWithBabelErrors = new Set()\n for (const component of trackedComponents.values()) {\n if (hasFlag(component.errors, FLAG_ERROR_EXTRACTION)) {\n for (const queryId of component.pages) {\n queriesWithBabelErrors.add(queryId)\n }\n }\n }\n // Note: trackedQueries contains both - page and static query ids\n const dirtyQueryIds: Array<string> = []\n for (const [queryId, query] of trackedQueries) {\n if (deletedQueries.has(queryId)) {\n continue\n }\n if (query.dirty > 0 && !queriesWithBabelErrors.has(queryId)) {\n dirtyQueryIds.push(queryId)\n }\n }\n return dirtyQueryIds\n}\n\nexport { calcDirtyQueryIds as calcInitialDirtyQueryIds }\n\n/**\n * Groups queryIds by whether they are static or page queries.\n */\nexport function groupQueryIds(queryIds: Array<string>): IGroupedQueryIds {\n const grouped = _.groupBy(queryIds, p =>\n p.slice(0, 4) === `sq--` ? `static` : `page`\n )\n\n const { pages } = store.getState()\n\n return {\n staticQueryIds: grouped?.static || [],\n pageQueryIds:\n grouped?.page\n ?.map(path => pages.get(path) as IGatsbyPage)\n ?.filter(Boolean) || [],\n }\n}\n\nfunction createQueue<QueryIDType>({\n createJobFn,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n}: {\n createJobFn: (\n state: IGatsbyState,\n queryId: QueryIDType\n ) => IQueryJob | undefined\n state: IGatsbyState\n activity: IProgressReporter\n graphqlRunner: GraphQLRunner\n graphqlTracing: boolean\n}): fastq.queue<QueryIDType, any> {\n if (!graphqlRunner) {\n graphqlRunner = new GraphQLRunner(store, { graphqlTracing })\n }\n state = state || store.getState()\n\n function worker(queryId: QueryIDType, cb): void {\n const job = createJobFn(state, queryId)\n if (!job) {\n cb(null, undefined)\n return\n }\n queryRunner(graphqlRunner, job, activity?.span)\n .then(result => {\n if (activity.tick) {\n activity.tick()\n }\n cb(null, { job, result })\n })\n .catch(error => {\n cb(error)\n })\n }\n // Note: fastq.promise version is much slower\n return fastq(worker, concurrency)\n}\n\nasync function processQueries<QueryIDType>({\n queryIds,\n createJobFn,\n onQueryDone,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n}: {\n queryIds: Array<QueryIDType>\n createJobFn: (\n state: IGatsbyState,\n queryId: QueryIDType\n ) => IQueryJob | undefined\n onQueryDone:\n | (({ job, result }: { job: IQueryJob; result: unknown }) => void)\n | undefined\n state: IGatsbyState\n activity: IProgressReporter\n graphqlRunner: GraphQLRunner\n graphqlTracing: boolean\n}): Promise<void> {\n return new Promise((resolve, reject) => {\n const fastQueue = createQueue({\n createJobFn,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n })\n\n queryIds.forEach((queryId: QueryIDType) => {\n fastQueue.push(queryId, (err, res) => {\n if (err) {\n fastQueue.kill()\n reject(err)\n return\n }\n if (res && onQueryDone) {\n onQueryDone(res)\n }\n })\n })\n\n if (!fastQueue.idle()) {\n fastQueue.drain = (): any => resolve()\n } else {\n resolve()\n }\n })\n}\n\nfunction createStaticQueryJob(\n state: IGatsbyState,\n queryId: string\n): IQueryJob | undefined {\n const component = state.staticQueryComponents.get(queryId)\n\n if (!component) {\n return undefined\n }\n\n const { hash, id, query, componentPath } = component\n\n return {\n id: queryId,\n query,\n isPage: false,\n hash,\n componentPath,\n context: { path: id },\n }\n}\n\nfunction onDevelopStaticQueryDone({\n job,\n result,\n}: {\n job: IQueryJob\n result: IStaticQueryResult[\"result\"]\n}): void {\n if (!job.hash) {\n return\n }\n\n websocketManager.emitStaticQueryData({\n result,\n id: job.hash,\n })\n}\n\nexport async function processStaticQueries(\n queryIds: IGroupedQueryIds[\"staticQueryIds\"],\n { state, activity, graphqlRunner, graphqlTracing }\n): Promise<void> {\n return processQueries<string>({\n queryIds,\n createJobFn: createStaticQueryJob,\n onQueryDone:\n process.env.NODE_ENV === `production`\n ? undefined\n : onDevelopStaticQueryDone,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n })\n}\n\nexport async function processPageQueries(\n queryIds: IGroupedQueryIds[\"pageQueryIds\"],\n { state, activity, graphqlRunner, graphqlTracing }\n): Promise<void> {\n const processedQueries = await processQueries<IGatsbyPage>({\n queryIds,\n createJobFn: createPageQueryJob,\n onQueryDone: undefined,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n })\n\n return processedQueries\n}\n\nfunction createPageQueryJob(\n state: IGatsbyState,\n page: IGatsbyPage\n): IQueryJob | undefined {\n const component = state.components.get(page.componentPath)\n\n if (!component) {\n return undefined\n }\n\n const { path, componentPath, context } = page\n const { query } = component\n\n return {\n id: path,\n query,\n isPage: true,\n componentPath,\n context: {\n ...page,\n ...context,\n },\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/query/index.ts"],"names":["process","env","GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY","console","info","concurrency","Number","calcDirtyQueryIds","state","trackedQueries","trackedComponents","deletedQueries","queries","queriesWithBabelErrors","Set","component","values","errors","FLAG_ERROR_EXTRACTION","queryId","pages","add","dirtyQueryIds","query","has","dirty","push","groupQueryIds","queryIds","grouped","_","groupBy","p","slice","store","getState","staticQueryIds","static","pageQueryIds","page","map","path","get","filter","Boolean","createQueue","createJobFn","activity","graphqlRunner","graphqlTracing","GraphQLRunner","worker","cb","job","setImmediate","undefined","span","then","result","tick","catch","error","processQueries","onQueryDone","Promise","resolve","reject","fastQueue","forEach","err","res","kill","idle","drain","createStaticQueryJob","staticQueryComponents","hash","id","componentPath","isPage","context","onDevelopStaticQueryDone","websocketManager","emitStaticQueryData","processStaticQueries","NODE_ENV","processPageQueries","processedQueries","createPageQueryJob","components"],"mappings":"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","sourcesContent":["import _ from \"lodash\"\nimport fastq from \"fastq\"\nimport { IProgressReporter } from \"gatsby-cli/lib/reporter/reporter-progress\"\nimport { store } from \"../redux\"\nimport { IGatsbyPage, IGatsbyState } from \"../redux/types\"\nimport { hasFlag, FLAG_ERROR_EXTRACTION } from \"../redux/reducers/queries\"\nimport { IQueryJob, queryRunner } from \"./query-runner\"\nimport {\n IStaticQueryResult,\n websocketManager,\n} from \"../utils/websocket-manager\"\nimport { GraphQLRunner } from \"./graphql-runner\"\nimport { IGroupedQueryIds } from \"../services\"\n\nif (process.env.GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY) {\n console.info(\n `GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY: Running with concurrency set to \\`${process.env.GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY}\\``\n )\n}\n\nconst concurrency =\n Number(process.env.GATSBY_EXPERIMENTAL_QUERY_CONCURRENCY) || 4\n\n/**\n * Calculates the set of dirty query IDs (page.paths, or staticQuery.id's).\n *\n * Dirty state is tracked in `queries` reducer, here we simply filter\n * them from all tracked queries.\n */\nexport function calcDirtyQueryIds(state: IGatsbyState): Array<string> {\n const { trackedQueries, trackedComponents, deletedQueries } = state.queries\n\n const queriesWithBabelErrors = new Set()\n for (const component of trackedComponents.values()) {\n if (hasFlag(component.errors, FLAG_ERROR_EXTRACTION)) {\n for (const queryId of component.pages) {\n queriesWithBabelErrors.add(queryId)\n }\n }\n }\n // Note: trackedQueries contains both - page and static query ids\n const dirtyQueryIds: Array<string> = []\n for (const [queryId, query] of trackedQueries) {\n if (deletedQueries.has(queryId)) {\n continue\n }\n if (query.dirty > 0 && !queriesWithBabelErrors.has(queryId)) {\n dirtyQueryIds.push(queryId)\n }\n }\n return dirtyQueryIds\n}\n\nexport { calcDirtyQueryIds as calcInitialDirtyQueryIds }\n\n/**\n * Groups queryIds by whether they are static or page queries.\n */\nexport function groupQueryIds(queryIds: Array<string>): IGroupedQueryIds {\n const grouped = _.groupBy(queryIds, p =>\n p.slice(0, 4) === `sq--` ? `static` : `page`\n )\n\n const { pages } = store.getState()\n\n return {\n staticQueryIds: grouped?.static || [],\n pageQueryIds:\n grouped?.page\n ?.map(path => pages.get(path) as IGatsbyPage)\n ?.filter(Boolean) || [],\n }\n}\n\nfunction createQueue<QueryIDType>({\n createJobFn,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n}: {\n createJobFn: (\n state: IGatsbyState,\n queryId: QueryIDType\n ) => IQueryJob | undefined\n state: IGatsbyState\n activity: IProgressReporter\n graphqlRunner: GraphQLRunner\n graphqlTracing: boolean\n}): fastq.queue<QueryIDType, any> {\n if (!graphqlRunner) {\n graphqlRunner = new GraphQLRunner(store, { graphqlTracing })\n }\n state = state || store.getState()\n\n function worker(queryId: QueryIDType, cb): void {\n const job = createJobFn(state, queryId)\n if (!job) {\n setImmediate(() => cb(null, undefined))\n return\n }\n queryRunner(graphqlRunner, job, activity?.span)\n .then(result => {\n if (activity.tick) {\n activity.tick()\n }\n // Note: we need setImmediate to ensure garbage collection has a chance\n // to get started during query running\n setImmediate(() => cb(null, { job, result }))\n })\n .catch(error => {\n cb(error)\n })\n }\n // Note: fastq.promise version is much slower\n return fastq(worker, concurrency)\n}\n\nasync function processQueries<QueryIDType>({\n queryIds,\n createJobFn,\n onQueryDone,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n}: {\n queryIds: Array<QueryIDType>\n createJobFn: (\n state: IGatsbyState,\n queryId: QueryIDType\n ) => IQueryJob | undefined\n onQueryDone:\n | (({ job, result }: { job: IQueryJob; result: unknown }) => void)\n | undefined\n state: IGatsbyState\n activity: IProgressReporter\n graphqlRunner: GraphQLRunner\n graphqlTracing: boolean\n}): Promise<void> {\n return new Promise((resolve, reject) => {\n const fastQueue = createQueue({\n createJobFn,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n })\n\n queryIds.forEach((queryId: QueryIDType) => {\n fastQueue.push(queryId, (err, res) => {\n if (err) {\n fastQueue.kill()\n reject(err)\n return\n }\n if (res && onQueryDone) {\n onQueryDone(res)\n }\n })\n })\n\n if (!fastQueue.idle()) {\n fastQueue.drain = (): any => resolve()\n } else {\n resolve()\n }\n })\n}\n\nfunction createStaticQueryJob(\n state: IGatsbyState,\n queryId: string\n): IQueryJob | undefined {\n const component = state.staticQueryComponents.get(queryId)\n\n if (!component) {\n return undefined\n }\n\n const { hash, id, query, componentPath } = component\n\n return {\n id: queryId,\n query,\n isPage: false,\n hash,\n componentPath,\n context: { path: id },\n }\n}\n\nfunction onDevelopStaticQueryDone({\n job,\n result,\n}: {\n job: IQueryJob\n result: IStaticQueryResult[\"result\"]\n}): void {\n if (!job.hash) {\n return\n }\n\n websocketManager.emitStaticQueryData({\n result,\n id: job.hash,\n })\n}\n\nexport async function processStaticQueries(\n queryIds: IGroupedQueryIds[\"staticQueryIds\"],\n { state, activity, graphqlRunner, graphqlTracing }\n): Promise<void> {\n return processQueries<string>({\n queryIds,\n createJobFn: createStaticQueryJob,\n onQueryDone:\n process.env.NODE_ENV === `production`\n ? undefined\n : onDevelopStaticQueryDone,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n })\n}\n\nexport async function processPageQueries(\n queryIds: IGroupedQueryIds[\"pageQueryIds\"],\n { state, activity, graphqlRunner, graphqlTracing }\n): Promise<void> {\n const processedQueries = await processQueries<IGatsbyPage>({\n queryIds,\n createJobFn: createPageQueryJob,\n onQueryDone: undefined,\n state,\n activity,\n graphqlRunner,\n graphqlTracing,\n })\n\n return processedQueries\n}\n\nfunction createPageQueryJob(\n state: IGatsbyState,\n page: IGatsbyPage\n): IQueryJob | undefined {\n const component = state.components.get(page.componentPath)\n\n if (!component) {\n return undefined\n }\n\n const { path, componentPath, context } = page\n const { query } = component\n\n return {\n id: path,\n query,\n isPage: true,\n componentPath,\n context: {\n ...page,\n ...context,\n },\n }\n}\n"],"file":"index.js"}
@@ -190,7 +190,7 @@ async function flush(parentSpan) {
190
190
 
191
191
  if ((0, _queries.hasFlag)(query.dirty, _queries.FLAG_DIRTY_NEW_PAGE)) {
192
192
  // query results are not written yet
193
- process.nextTick(() => cb(null, true));
193
+ setImmediate(() => cb(null, true));
194
194
  return;
195
195
  }
196
196
  } // In develop we rely on QUERY_ON_DEMAND so we just go through
@@ -218,11 +218,11 @@ async function flush(parentSpan) {
218
218
  payload: {
219
219
  page: pagePath
220
220
  }
221
- }); // `process.nextTick` below is a workaround against stack overflow
221
+ }); // `setImmediate` below is a workaround against stack overflow
222
222
  // occurring when there are many non-SSG pages
223
223
 
224
224
 
225
- process.nextTick(() => cb(null, true));
225
+ setImmediate(() => cb(null, true));
226
226
  return;
227
227
  }, 25);
228
228
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/page-data.ts"],"names":["readPageData","publicDir","pagePath","filePath","rawPageData","fs","readFile","JSON","parse","removePageData","existsSync","remove","Promise","resolve","pageDataExists","lmdbPageQueryResultsCache","getLMDBPageQueryResultsCache","GatsbyCacheLmdbImpl","require","default","name","encoding","init","savePageQueryResultsPromise","waitUntilPageQueryResultsAreStored","savePageQueryResult","programDir","stringifiedResult","set","pageQueryResultsPath","path","join","replace","outputFile","readPageQueryResult","get","Error","writePageData","pageData","result","outputFilePath","body","pageDataSize","Buffer","byteLength","store","dispatch","type","payload","size","pageDataHash","isFlushPending","isFlushing","isFlushEnqueued","flush","parentSpan","pendingPageDataWrites","pages","program","staticQueriesByTemplate","queries","getState","isBuild","_","pagePaths","writePageDataActivity","reporter","createProgress","id","start","flushQueue","cb","page","process","env","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","query","trackedQueries","dirty","FLAG_DIRTY_NEW_PAGE","nextTick","mode","staticQueryHashes","componentPath","directory","tick","websocketManager","emitPageData","push","idle","drain","end","enqueueFlush","handleStalePageData","pathExists","activity","activityTimer","pageDataFilesFromPreviousBuilds","reject","results","Set","stream","on","data","add","e","expectedPageDataFiles","forEach","deletionPromises","pageDataFilePath","has","all"],"mappings":"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","sourcesContent":["import { walkStream as fsWalkStream, Entry } from \"@nodelib/fs.walk\"\nimport fs from \"fs-extra\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport fastq from \"fastq\"\nimport path from \"path\"\nimport { createContentDigest, generatePageDataPath } from \"gatsby-core-utils\"\nimport { websocketManager } from \"./websocket-manager\"\nimport { isWebpackStatusPending } from \"./webpack-status\"\nimport { store } from \"../redux\"\nimport { hasFlag, FLAG_DIRTY_NEW_PAGE } from \"../redux/reducers/queries\"\nimport { isLmdbStore } from \"../datastore\"\nimport type GatsbyCacheLmdb from \"./cache-lmdb\"\nimport {\n constructPageDataString,\n reverseFixedPagePath,\n IPageData,\n} from \"./page-data-helpers\"\nimport { Span } from \"opentracing\"\n\nexport { reverseFixedPagePath }\n\nimport { IExecutionResult } from \"../query/types\"\n\nexport interface IPageDataWithQueryResult extends IPageData {\n result: IExecutionResult\n}\n\nexport async function readPageData(\n publicDir: string,\n pagePath: string\n): Promise<IPageDataWithQueryResult> {\n const filePath = generatePageDataPath(publicDir, pagePath)\n const rawPageData = await fs.readFile(filePath, `utf-8`)\n\n return JSON.parse(rawPageData)\n}\n\nexport async function removePageData(\n publicDir: string,\n pagePath: string\n): Promise<void> {\n const filePath = generatePageDataPath(publicDir, pagePath)\n\n if (fs.existsSync(filePath)) {\n return await fs.remove(filePath)\n }\n\n return Promise.resolve()\n}\n\nexport function pageDataExists(publicDir: string, pagePath: string): boolean {\n return fs.existsSync(generatePageDataPath(publicDir, pagePath))\n}\n\nlet lmdbPageQueryResultsCache: GatsbyCacheLmdb\nfunction getLMDBPageQueryResultsCache(): GatsbyCacheLmdb {\n if (!lmdbPageQueryResultsCache) {\n const GatsbyCacheLmdbImpl = require(`./cache-lmdb`).default\n lmdbPageQueryResultsCache = new GatsbyCacheLmdbImpl({\n name: `internal-tmp-query-results`,\n encoding: `string`,\n }).init()\n }\n return lmdbPageQueryResultsCache\n}\n\nlet savePageQueryResultsPromise = Promise.resolve()\n\nexport function waitUntilPageQueryResultsAreStored(): Promise<void> {\n return savePageQueryResultsPromise\n}\n\nexport async function savePageQueryResult(\n programDir: string,\n pagePath: string,\n stringifiedResult: string\n): Promise<void> {\n if (isLmdbStore()) {\n savePageQueryResultsPromise = getLMDBPageQueryResultsCache().set(\n pagePath,\n stringifiedResult\n ) as Promise<void>\n } else {\n const pageQueryResultsPath = path.join(\n programDir,\n `.cache`,\n `json`,\n `${pagePath.replace(/\\//g, `_`)}.json`\n )\n await fs.outputFile(pageQueryResultsPath, stringifiedResult)\n }\n}\n\nexport async function readPageQueryResult(\n publicDir: string,\n pagePath: string\n): Promise<string | Buffer> {\n if (isLmdbStore()) {\n const stringifiedResult = await getLMDBPageQueryResultsCache().get(pagePath)\n if (typeof stringifiedResult === `string`) {\n return stringifiedResult\n }\n throw new Error(`Couldn't find temp query result for \"${pagePath}\".`)\n } else {\n const pageQueryResultsPath = path.join(\n publicDir,\n `..`,\n `.cache`,\n `json`,\n `${pagePath.replace(/\\//g, `_`)}.json`\n )\n return fs.readFile(pageQueryResultsPath)\n }\n}\n\nexport async function writePageData(\n publicDir: string,\n pageData: IPageData\n): Promise<string> {\n const result = await readPageQueryResult(publicDir, pageData.path)\n\n const outputFilePath = generatePageDataPath(publicDir, pageData.path)\n\n const body = constructPageDataString(pageData, result)\n\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const pageDataSize = Buffer.byteLength(body) / 1000\n\n store.dispatch({\n type: `ADD_PAGE_DATA_STATS`,\n payload: {\n pagePath: pageData.path,\n filePath: outputFilePath,\n size: pageDataSize,\n pageDataHash: createContentDigest(body),\n },\n })\n\n await fs.outputFile(outputFilePath, body)\n return body\n}\n\nlet isFlushPending = false\nlet isFlushing = false\n\nexport function isFlushEnqueued(): boolean {\n return isFlushPending\n}\n\nexport async function flush(parentSpan?: Span): Promise<void> {\n if (isFlushing) {\n // We're already in the middle of a flush\n return\n }\n await waitUntilPageQueryResultsAreStored()\n isFlushPending = false\n isFlushing = true\n const {\n pendingPageDataWrites,\n pages,\n program,\n staticQueriesByTemplate,\n queries,\n } = store.getState()\n const isBuild = program?._?.[0] !== `develop`\n\n const { pagePaths } = pendingPageDataWrites\n const writePageDataActivity = reporter.createProgress(\n `Writing page-data.json files to public directory`,\n pagePaths.size,\n 0,\n { id: `write-page-data-public-directory`, parentSpan }\n )\n writePageDataActivity.start()\n\n const flushQueue = fastq(async (pagePath, cb) => {\n const page = pages.get(pagePath)\n\n // It's a gloomy day in Bombay, let me tell you a short story...\n // Once upon a time, writing page-data.json files were atomic\n // After this change (#24808), they are not and this means that\n // between adding a pending write for a page and actually flushing\n // them, a page might not exist anymore щ(゚Д゚щ)\n // This is why we need this check\n if (page) {\n if (!isBuild && process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n // check if already did run query for this page\n // with query-on-demand we might have pending page-data write due to\n // changes in static queries assigned to page template, but we might not\n // have query result for it\n const query = queries.trackedQueries.get(page.path)\n if (!query) {\n // this should not happen ever\n throw new Error(\n `We have a page, but we don't have registered query for it (???)`\n )\n }\n\n if (hasFlag(query.dirty, FLAG_DIRTY_NEW_PAGE)) {\n // query results are not written yet\n process.nextTick(() => cb(null, true))\n return\n }\n }\n\n // In develop we rely on QUERY_ON_DEMAND so we just go through\n // In build we only build these page-json for SSG pages\n if (\n _CFLAGS_.GATSBY_MAJOR !== `4` ||\n !isBuild ||\n (isBuild && page.mode === `SSG`)\n ) {\n const staticQueryHashes =\n staticQueriesByTemplate.get(page.componentPath) || []\n\n const result = await writePageData(\n path.join(program.directory, `public`),\n {\n ...page,\n staticQueryHashes,\n }\n )\n\n writePageDataActivity.tick()\n\n if (!isBuild) {\n websocketManager.emitPageData({\n id: pagePath,\n result: JSON.parse(result) as IPageDataWithQueryResult,\n })\n }\n }\n }\n\n store.dispatch({\n type: `CLEAR_PENDING_PAGE_DATA_WRITE`,\n payload: {\n page: pagePath,\n },\n })\n\n // `process.nextTick` below is a workaround against stack overflow\n // occurring when there are many non-SSG pages\n process.nextTick(() => cb(null, true))\n return\n }, 25)\n\n for (const pagePath of pagePaths) {\n flushQueue.push(pagePath, () => {})\n }\n\n if (!flushQueue.idle()) {\n await new Promise(resolve => {\n flushQueue.drain = resolve as () => unknown\n })\n }\n\n writePageDataActivity.end()\n\n isFlushing = false\n\n return\n}\n\nexport function enqueueFlush(parentSpan?: Span): void {\n if (isWebpackStatusPending()) {\n isFlushPending = true\n } else {\n flush(parentSpan)\n }\n}\n\nexport async function handleStalePageData(parentSpan: Span): Promise<void> {\n if (!(await fs.pathExists(`public/page-data`))) {\n return\n }\n\n // public directory might have stale page-data files from previous builds\n // we get the list of those and compare against expected page-data files\n // and remove ones that shouldn't be there anymore\n\n const activity = reporter.activityTimer(`Cleaning up stale page-data`, {\n parentSpan,\n })\n activity.start()\n\n const pageDataFilesFromPreviousBuilds = await new Promise<Set<string>>(\n (resolve, reject) => {\n const results = new Set<string>()\n\n const stream = fsWalkStream(`public/page-data`)\n\n stream.on(`data`, (data: Entry) => {\n if (data.name === `page-data.json`) {\n results.add(data.path)\n }\n })\n\n stream.on(`error`, e => {\n reject(e)\n })\n\n stream.on(`end`, () => resolve(results))\n }\n )\n\n const expectedPageDataFiles = new Set<string>()\n store.getState().pages.forEach(page => {\n expectedPageDataFiles.add(generatePageDataPath(`public`, page.path))\n })\n\n const deletionPromises: Array<Promise<void>> = []\n pageDataFilesFromPreviousBuilds.forEach(pageDataFilePath => {\n if (!expectedPageDataFiles.has(pageDataFilePath)) {\n deletionPromises.push(fs.remove(pageDataFilePath))\n }\n })\n\n await Promise.all(deletionPromises)\n\n activity.end()\n}\n"],"file":"page-data.js"}
1
+ {"version":3,"sources":["../../src/utils/page-data.ts"],"names":["readPageData","publicDir","pagePath","filePath","rawPageData","fs","readFile","JSON","parse","removePageData","existsSync","remove","Promise","resolve","pageDataExists","lmdbPageQueryResultsCache","getLMDBPageQueryResultsCache","GatsbyCacheLmdbImpl","require","default","name","encoding","init","savePageQueryResultsPromise","waitUntilPageQueryResultsAreStored","savePageQueryResult","programDir","stringifiedResult","set","pageQueryResultsPath","path","join","replace","outputFile","readPageQueryResult","get","Error","writePageData","pageData","result","outputFilePath","body","pageDataSize","Buffer","byteLength","store","dispatch","type","payload","size","pageDataHash","isFlushPending","isFlushing","isFlushEnqueued","flush","parentSpan","pendingPageDataWrites","pages","program","staticQueriesByTemplate","queries","getState","isBuild","_","pagePaths","writePageDataActivity","reporter","createProgress","id","start","flushQueue","cb","page","process","env","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","query","trackedQueries","dirty","FLAG_DIRTY_NEW_PAGE","setImmediate","mode","staticQueryHashes","componentPath","directory","tick","websocketManager","emitPageData","push","idle","drain","end","enqueueFlush","handleStalePageData","pathExists","activity","activityTimer","pageDataFilesFromPreviousBuilds","reject","results","Set","stream","on","data","add","e","expectedPageDataFiles","forEach","deletionPromises","pageDataFilePath","has","all"],"mappings":"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","sourcesContent":["import { walkStream as fsWalkStream, Entry } from \"@nodelib/fs.walk\"\nimport fs from \"fs-extra\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport fastq from \"fastq\"\nimport path from \"path\"\nimport { createContentDigest, generatePageDataPath } from \"gatsby-core-utils\"\nimport { websocketManager } from \"./websocket-manager\"\nimport { isWebpackStatusPending } from \"./webpack-status\"\nimport { store } from \"../redux\"\nimport { hasFlag, FLAG_DIRTY_NEW_PAGE } from \"../redux/reducers/queries\"\nimport { isLmdbStore } from \"../datastore\"\nimport type GatsbyCacheLmdb from \"./cache-lmdb\"\nimport {\n constructPageDataString,\n reverseFixedPagePath,\n IPageData,\n} from \"./page-data-helpers\"\nimport { Span } from \"opentracing\"\n\nexport { reverseFixedPagePath }\n\nimport { IExecutionResult } from \"../query/types\"\n\nexport interface IPageDataWithQueryResult extends IPageData {\n result: IExecutionResult\n}\n\nexport async function readPageData(\n publicDir: string,\n pagePath: string\n): Promise<IPageDataWithQueryResult> {\n const filePath = generatePageDataPath(publicDir, pagePath)\n const rawPageData = await fs.readFile(filePath, `utf-8`)\n\n return JSON.parse(rawPageData)\n}\n\nexport async function removePageData(\n publicDir: string,\n pagePath: string\n): Promise<void> {\n const filePath = generatePageDataPath(publicDir, pagePath)\n\n if (fs.existsSync(filePath)) {\n return await fs.remove(filePath)\n }\n\n return Promise.resolve()\n}\n\nexport function pageDataExists(publicDir: string, pagePath: string): boolean {\n return fs.existsSync(generatePageDataPath(publicDir, pagePath))\n}\n\nlet lmdbPageQueryResultsCache: GatsbyCacheLmdb\nfunction getLMDBPageQueryResultsCache(): GatsbyCacheLmdb {\n if (!lmdbPageQueryResultsCache) {\n const GatsbyCacheLmdbImpl = require(`./cache-lmdb`).default\n lmdbPageQueryResultsCache = new GatsbyCacheLmdbImpl({\n name: `internal-tmp-query-results`,\n encoding: `string`,\n }).init()\n }\n return lmdbPageQueryResultsCache\n}\n\nlet savePageQueryResultsPromise = Promise.resolve()\n\nexport function waitUntilPageQueryResultsAreStored(): Promise<void> {\n return savePageQueryResultsPromise\n}\n\nexport async function savePageQueryResult(\n programDir: string,\n pagePath: string,\n stringifiedResult: string\n): Promise<void> {\n if (isLmdbStore()) {\n savePageQueryResultsPromise = getLMDBPageQueryResultsCache().set(\n pagePath,\n stringifiedResult\n ) as Promise<void>\n } else {\n const pageQueryResultsPath = path.join(\n programDir,\n `.cache`,\n `json`,\n `${pagePath.replace(/\\//g, `_`)}.json`\n )\n await fs.outputFile(pageQueryResultsPath, stringifiedResult)\n }\n}\n\nexport async function readPageQueryResult(\n publicDir: string,\n pagePath: string\n): Promise<string | Buffer> {\n if (isLmdbStore()) {\n const stringifiedResult = await getLMDBPageQueryResultsCache().get(pagePath)\n if (typeof stringifiedResult === `string`) {\n return stringifiedResult\n }\n throw new Error(`Couldn't find temp query result for \"${pagePath}\".`)\n } else {\n const pageQueryResultsPath = path.join(\n publicDir,\n `..`,\n `.cache`,\n `json`,\n `${pagePath.replace(/\\//g, `_`)}.json`\n )\n return fs.readFile(pageQueryResultsPath)\n }\n}\n\nexport async function writePageData(\n publicDir: string,\n pageData: IPageData\n): Promise<string> {\n const result = await readPageQueryResult(publicDir, pageData.path)\n\n const outputFilePath = generatePageDataPath(publicDir, pageData.path)\n\n const body = constructPageDataString(pageData, result)\n\n // transform asset size to kB (from bytes) to fit 64 bit to numbers\n const pageDataSize = Buffer.byteLength(body) / 1000\n\n store.dispatch({\n type: `ADD_PAGE_DATA_STATS`,\n payload: {\n pagePath: pageData.path,\n filePath: outputFilePath,\n size: pageDataSize,\n pageDataHash: createContentDigest(body),\n },\n })\n\n await fs.outputFile(outputFilePath, body)\n return body\n}\n\nlet isFlushPending = false\nlet isFlushing = false\n\nexport function isFlushEnqueued(): boolean {\n return isFlushPending\n}\n\nexport async function flush(parentSpan?: Span): Promise<void> {\n if (isFlushing) {\n // We're already in the middle of a flush\n return\n }\n await waitUntilPageQueryResultsAreStored()\n isFlushPending = false\n isFlushing = true\n const {\n pendingPageDataWrites,\n pages,\n program,\n staticQueriesByTemplate,\n queries,\n } = store.getState()\n const isBuild = program?._?.[0] !== `develop`\n\n const { pagePaths } = pendingPageDataWrites\n const writePageDataActivity = reporter.createProgress(\n `Writing page-data.json files to public directory`,\n pagePaths.size,\n 0,\n { id: `write-page-data-public-directory`, parentSpan }\n )\n writePageDataActivity.start()\n\n const flushQueue = fastq(async (pagePath, cb) => {\n const page = pages.get(pagePath)\n\n // It's a gloomy day in Bombay, let me tell you a short story...\n // Once upon a time, writing page-data.json files were atomic\n // After this change (#24808), they are not and this means that\n // between adding a pending write for a page and actually flushing\n // them, a page might not exist anymore щ(゚Д゚щ)\n // This is why we need this check\n if (page) {\n if (!isBuild && process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n // check if already did run query for this page\n // with query-on-demand we might have pending page-data write due to\n // changes in static queries assigned to page template, but we might not\n // have query result for it\n const query = queries.trackedQueries.get(page.path)\n if (!query) {\n // this should not happen ever\n throw new Error(\n `We have a page, but we don't have registered query for it (???)`\n )\n }\n\n if (hasFlag(query.dirty, FLAG_DIRTY_NEW_PAGE)) {\n // query results are not written yet\n setImmediate(() => cb(null, true))\n return\n }\n }\n\n // In develop we rely on QUERY_ON_DEMAND so we just go through\n // In build we only build these page-json for SSG pages\n if (\n _CFLAGS_.GATSBY_MAJOR !== `4` ||\n !isBuild ||\n (isBuild && page.mode === `SSG`)\n ) {\n const staticQueryHashes =\n staticQueriesByTemplate.get(page.componentPath) || []\n\n const result = await writePageData(\n path.join(program.directory, `public`),\n {\n ...page,\n staticQueryHashes,\n }\n )\n\n writePageDataActivity.tick()\n\n if (!isBuild) {\n websocketManager.emitPageData({\n id: pagePath,\n result: JSON.parse(result) as IPageDataWithQueryResult,\n })\n }\n }\n }\n\n store.dispatch({\n type: `CLEAR_PENDING_PAGE_DATA_WRITE`,\n payload: {\n page: pagePath,\n },\n })\n\n // `setImmediate` below is a workaround against stack overflow\n // occurring when there are many non-SSG pages\n setImmediate(() => cb(null, true))\n return\n }, 25)\n\n for (const pagePath of pagePaths) {\n flushQueue.push(pagePath, () => {})\n }\n\n if (!flushQueue.idle()) {\n await new Promise(resolve => {\n flushQueue.drain = resolve as () => unknown\n })\n }\n\n writePageDataActivity.end()\n\n isFlushing = false\n\n return\n}\n\nexport function enqueueFlush(parentSpan?: Span): void {\n if (isWebpackStatusPending()) {\n isFlushPending = true\n } else {\n flush(parentSpan)\n }\n}\n\nexport async function handleStalePageData(parentSpan: Span): Promise<void> {\n if (!(await fs.pathExists(`public/page-data`))) {\n return\n }\n\n // public directory might have stale page-data files from previous builds\n // we get the list of those and compare against expected page-data files\n // and remove ones that shouldn't be there anymore\n\n const activity = reporter.activityTimer(`Cleaning up stale page-data`, {\n parentSpan,\n })\n activity.start()\n\n const pageDataFilesFromPreviousBuilds = await new Promise<Set<string>>(\n (resolve, reject) => {\n const results = new Set<string>()\n\n const stream = fsWalkStream(`public/page-data`)\n\n stream.on(`data`, (data: Entry) => {\n if (data.name === `page-data.json`) {\n results.add(data.path)\n }\n })\n\n stream.on(`error`, e => {\n reject(e)\n })\n\n stream.on(`end`, () => resolve(results))\n }\n )\n\n const expectedPageDataFiles = new Set<string>()\n store.getState().pages.forEach(page => {\n expectedPageDataFiles.add(generatePageDataPath(`public`, page.path))\n })\n\n const deletionPromises: Array<Promise<void>> = []\n pageDataFilesFromPreviousBuilds.forEach(pageDataFilePath => {\n if (!expectedPageDataFiles.has(pageDataFilePath)) {\n deletionPromises.push(fs.remove(pageDataFilePath))\n }\n })\n\n await Promise.all(deletionPromises)\n\n activity.end()\n}\n"],"file":"page-data.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.0"/><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
+ <!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"/><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.0"/><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
+ <!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"/><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.0"/><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
+ <!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"/><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.0"/><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
+ <!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"/><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.0"/><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>
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"/><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.0",
4
+ "version": "3.14.1",
5
5
  "author": "Kyle Mathews <mathews.kyle@gmail.com>",
6
6
  "bin": {
7
7
  "gatsby": "./cli.js"
@@ -257,5 +257,5 @@
257
257
  "yargs": {
258
258
  "boolean-negation": false
259
259
  },
260
- "gitHead": "f3f1bbc4b75e4ede40500e899449820c958a72ff"
260
+ "gitHead": "e10b2b93d49c8318deffe5e6a0168ab03f997766"
261
261
  }