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.
- package/dist/query/index.js +6 -4
- package/dist/query/index.js.map +1 -1
- package/dist/utils/page-data.js +3 -3
- package/dist/utils/page-data.js.map +1 -1
- package/gatsby-admin-public/index.html +1 -1
- package/gatsby-admin-public/pages/index.html +1 -1
- package/gatsby-admin-public/plugins/index.html +1 -1
- package/gatsby-admin-public/recipe/index.html +1 -1
- package/gatsby-admin-public/recipes/index.html +1 -1
- package/package.json +2 -2
package/dist/query/index.js
CHANGED
|
@@ -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
|
});
|
package/dist/query/index.js.map
CHANGED
|
@@ -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":";;;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAIA;;AAGA,IAAIA,OAAO,CAACC,GAAR,CAAYC,qCAAhB,EAAuD;AACrDC,EAAAA,OAAO,CAACC,IAAR,CACG,4EAA2EJ,OAAO,CAACC,GAAR,CAAYC,qCAAsC,IADhI;AAGD;;AAED,MAAMG,WAAW,GACfC,MAAM,CAACN,OAAO,CAACC,GAAR,CAAYC,qCAAb,CAAN,IAA6D,CAD/D;AAGA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASK,iBAAT,CAA2BC,KAA3B,EAA+D;AACpE,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,iBAAlB;AAAqCC,IAAAA;AAArC,MAAwDH,KAAK,CAACI,OAApE;AAEA,QAAMC,sBAAsB,GAAG,IAAIC,GAAJ,EAA/B;;AACA,OAAK,MAAMC,SAAX,IAAwBL,iBAAiB,CAACM,MAAlB,EAAxB,EAAoD;AAClD,QAAI,sBAAQD,SAAS,CAACE,MAAlB,EAA0BC,8BAA1B,CAAJ,EAAsD;AACpD,WAAK,MAAMC,OAAX,IAAsBJ,SAAS,CAACK,KAAhC,EAAuC;AACrCP,QAAAA,sBAAsB,CAACQ,GAAvB,CAA2BF,OAA3B;AACD;AACF;AACF,GAVmE,CAWpE;;;AACA,QAAMG,aAA4B,GAAG,EAArC;;AACA,OAAK,MAAM,CAACH,OAAD,EAAUI,KAAV,CAAX,IAA+Bd,cAA/B,EAA+C;AAC7C,QAAIE,cAAc,CAACa,GAAf,CAAmBL,OAAnB,CAAJ,EAAiC;AAC/B;AACD;;AACD,QAAII,KAAK,CAACE,KAAN,GAAc,CAAd,IAAmB,CAACZ,sBAAsB,CAACW,GAAvB,CAA2BL,OAA3B,CAAxB,EAA6D;AAC3DG,MAAAA,aAAa,CAACI,IAAd,CAAmBP,OAAnB;AACD;AACF;;AACD,SAAOG,aAAP;AACD;;AAID;AACA;AACA;AACO,SAASK,aAAT,CAAuBC,QAAvB,EAAkE;AAAA;;AACvE,QAAMC,OAAO,GAAGC,gBAAEC,OAAF,CAAUH,QAAV,EAAoBI,CAAC,IACnCA,CAAC,CAACC,KAAF,CAAQ,CAAR,EAAW,CAAX,MAAmB,MAAnB,GAA4B,QAA5B,GAAuC,MADzB,CAAhB;;AAIA,QAAM;AAAEb,IAAAA;AAAF,MAAYc,aAAMC,QAAN,EAAlB;;AAEA,SAAO;AACLC,IAAAA,cAAc,EAAE,CAAAP,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEQ,MAAT,KAAmB,EAD9B;AAELC,IAAAA,YAAY,EACV,CAAAT,OAAO,SAAP,IAAAA,OAAO,WAAP,6BAAAA,OAAO,CAAEU,IAAT,qFACIC,GADJ,CACQC,IAAI,IAAIrB,KAAK,CAACsB,GAAN,CAAUD,IAAV,CADhB,yEAEIE,MAFJ,CAEWC,OAFX,MAEuB;AALpB,GAAP;AAOD;;AAED,SAASC,WAAT,CAAkC;AAChCC,EAAAA,WADgC;AAEhCtC,EAAAA,KAFgC;AAGhCuC,EAAAA,QAHgC;AAIhCC,EAAAA,aAJgC;AAKhCC,EAAAA;AALgC,CAAlC,EAekC;AAChC,MAAI,CAACD,aAAL,EAAoB;AAClBA,IAAAA,aAAa,GAAG,IAAIE,4BAAJ,CAAkBhB,YAAlB,EAAyB;AAAEe,MAAAA;AAAF,KAAzB,CAAhB;AACD;;AACDzC,EAAAA,KAAK,GAAGA,KAAK,IAAI0B,aAAMC,QAAN,EAAjB;;AAEA,WAASgB,MAAT,CAAgBhC,OAAhB,EAAsCiC,EAAtC,EAAgD;AAC9C,UAAMC,GAAG,GAAGP,WAAW,CAACtC,KAAD,EAAQW,OAAR,CAAvB;;AACA,QAAI,CAACkC,GAAL,EAAU;AACRC,MAAAA,YAAY,CAAC,MAAMF,EAAE,CAAC,IAAD,EAAOG,SAAP,CAAT,CAAZ;AACA;AACD;;AACD,kCAAYP,aAAZ,EAA2BK,GAA3B,EAAgCN,QAAhC,aAAgCA,QAAhC,uBAAgCA,QAAQ,CAAES,IAA1C,EACGC,IADH,CACQC,MAAM,IAAI;AACd,UAAIX,QAAQ,CAACY,IAAb,EAAmB;AACjBZ,QAAAA,QAAQ,CAACY,IAAT;AACD,OAHa,CAId;AACA;;;AACAL,MAAAA,YAAY,CAAC,MAAMF,EAAE,CAAC,IAAD,EAAO;AAAEC,QAAAA,GAAF;AAAOK,QAAAA;AAAP,OAAP,CAAT,CAAZ;AACD,KARH,EASGE,KATH,CASSC,KAAK,IAAI;AACdT,MAAAA,EAAE,CAACS,KAAD,CAAF;AACD,KAXH;AAYD,GAxB+B,CAyBhC;;;AACA,SAAO,oBAAMV,MAAN,EAAc9C,WAAd,CAAP;AACD;;AAED,eAAeyD,cAAf,CAA2C;AACzClC,EAAAA,QADyC;AAEzCkB,EAAAA,WAFyC;AAGzCiB,EAAAA,WAHyC;AAIzCvD,EAAAA,KAJyC;AAKzCuC,EAAAA,QALyC;AAMzCC,EAAAA,aANyC;AAOzCC,EAAAA;AAPyC,CAA3C,EAqBkB;AAChB,SAAO,IAAIe,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,UAAMC,SAAS,GAAGtB,WAAW,CAAC;AAC5BC,MAAAA,WAD4B;AAE5BtC,MAAAA,KAF4B;AAG5BuC,MAAAA,QAH4B;AAI5BC,MAAAA,aAJ4B;AAK5BC,MAAAA;AAL4B,KAAD,CAA7B;AAQArB,IAAAA,QAAQ,CAACwC,OAAT,CAAkBjD,OAAD,IAA0B;AACzCgD,MAAAA,SAAS,CAACzC,IAAV,CAAeP,OAAf,EAAwB,CAACkD,GAAD,EAAMC,GAAN,KAAc;AACpC,YAAID,GAAJ,EAAS;AACPF,UAAAA,SAAS,CAACI,IAAV;AACAL,UAAAA,MAAM,CAACG,GAAD,CAAN;AACA;AACD;;AACD,YAAIC,GAAG,IAAIP,WAAX,EAAwB;AACtBA,UAAAA,WAAW,CAACO,GAAD,CAAX;AACD;AACF,OATD;AAUD,KAXD;;AAaA,QAAI,CAACH,SAAS,CAACK,IAAV,EAAL,EAAuB;AACrBL,MAAAA,SAAS,CAACM,KAAV,GAAkB,MAAWR,OAAO,EAApC;AACD,KAFD,MAEO;AACLA,MAAAA,OAAO;AACR;AACF,GA3BM,CAAP;AA4BD;;AAED,SAASS,oBAAT,CACElE,KADF,EAEEW,OAFF,EAGyB;AACvB,QAAMJ,SAAS,GAAGP,KAAK,CAACmE,qBAAN,CAA4BjC,GAA5B,CAAgCvB,OAAhC,CAAlB;;AAEA,MAAI,CAACJ,SAAL,EAAgB;AACd,WAAOwC,SAAP;AACD;;AAED,QAAM;AAAEqB,IAAAA,IAAF;AAAQC,IAAAA,EAAR;AAAYtD,IAAAA,KAAZ;AAAmBuD,IAAAA;AAAnB,MAAqC/D,SAA3C;AAEA,SAAO;AACL8D,IAAAA,EAAE,EAAE1D,OADC;AAELI,IAAAA,KAFK;AAGLwD,IAAAA,MAAM,EAAE,KAHH;AAILH,IAAAA,IAJK;AAKLE,IAAAA,aALK;AAMLE,IAAAA,OAAO,EAAE;AAAEvC,MAAAA,IAAI,EAAEoC;AAAR;AANJ,GAAP;AAQD;;AAED,SAASI,wBAAT,CAAkC;AAChC5B,EAAAA,GADgC;AAEhCK,EAAAA;AAFgC,CAAlC,EAMS;AACP,MAAI,CAACL,GAAG,CAACuB,IAAT,EAAe;AACb;AACD;;AAEDM,qCAAiBC,mBAAjB,CAAqC;AACnCzB,IAAAA,MADmC;AAEnCmB,IAAAA,EAAE,EAAExB,GAAG,CAACuB;AAF2B,GAArC;AAID;;AAEM,eAAeQ,oBAAf,CACLxD,QADK,EAEL;AAAEpB,EAAAA,KAAF;AAASuC,EAAAA,QAAT;AAAmBC,EAAAA,aAAnB;AAAkCC,EAAAA;AAAlC,CAFK,EAGU;AACf,SAAOa,cAAc,CAAS;AAC5BlC,IAAAA,QAD4B;AAE5BkB,IAAAA,WAAW,EAAE4B,oBAFe;AAG5BX,IAAAA,WAAW,EACT/D,OAAO,CAACC,GAAR,CAAYoF,QAAZ,KAA0B,YAA1B,GACI9B,SADJ,GAEI0B,wBANsB;AAO5BzE,IAAAA,KAP4B;AAQ5BuC,IAAAA,QAR4B;AAS5BC,IAAAA,aAT4B;AAU5BC,IAAAA;AAV4B,GAAT,CAArB;AAYD;;AAEM,eAAeqC,kBAAf,CACL1D,QADK,EAEL;AAAEpB,EAAAA,KAAF;AAASuC,EAAAA,QAAT;AAAmBC,EAAAA,aAAnB;AAAkCC,EAAAA;AAAlC,CAFK,EAGU;AACf,QAAMsC,gBAAgB,GAAG,MAAMzB,cAAc,CAAc;AACzDlC,IAAAA,QADyD;AAEzDkB,IAAAA,WAAW,EAAE0C,kBAF4C;AAGzDzB,IAAAA,WAAW,EAAER,SAH4C;AAIzD/C,IAAAA,KAJyD;AAKzDuC,IAAAA,QALyD;AAMzDC,IAAAA,aANyD;AAOzDC,IAAAA;AAPyD,GAAd,CAA7C;AAUA,SAAOsC,gBAAP;AACD;;AAED,SAASC,kBAAT,CACEhF,KADF,EAEE+B,IAFF,EAGyB;AACvB,QAAMxB,SAAS,GAAGP,KAAK,CAACiF,UAAN,CAAiB/C,GAAjB,CAAqBH,IAAI,CAACuC,aAA1B,CAAlB;;AAEA,MAAI,CAAC/D,SAAL,EAAgB;AACd,WAAOwC,SAAP;AACD;;AAED,QAAM;AAAEd,IAAAA,IAAF;AAAQqC,IAAAA,aAAR;AAAuBE,IAAAA;AAAvB,MAAmCzC,IAAzC;AACA,QAAM;AAAEhB,IAAAA;AAAF,MAAYR,SAAlB;AAEA,SAAO;AACL8D,IAAAA,EAAE,EAAEpC,IADC;AAELlB,IAAAA,KAFK;AAGLwD,IAAAA,MAAM,EAAE,IAHH;AAILD,IAAAA,aAJK;AAKLE,IAAAA,OAAO,EAAE,EACP,GAAGzC,IADI;AAEP,SAAGyC;AAFI;AALJ,GAAP;AAUD","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"}
|
package/dist/utils/page-data.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
}); // `
|
|
221
|
+
}); // `setImmediate` below is a workaround against stack overflow
|
|
222
222
|
// occurring when there are many non-SSG pages
|
|
223
223
|
|
|
224
224
|
|
|
225
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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": "
|
|
260
|
+
"gitHead": "e10b2b93d49c8318deffe5e6a0168ab03f997766"
|
|
261
261
|
}
|