gatsby 3.14.0-drupal-next.74 → 3.14.0-drupal-next.80
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/redux/reducers/components.js +4 -1
- package/dist/redux/reducers/components.js.map +1 -1
- package/dist/redux/reducers/html.js +4 -1
- package/dist/redux/reducers/html.js.map +1 -1
- package/dist/redux/reducers/index.js +4 -0
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/queries.js +4 -1
- package/dist/redux/reducers/queries.js.map +1 -1
- package/dist/redux/reducers/tick.js +29 -0
- package/dist/redux/reducers/tick.js.map +1 -0
- package/dist/utils/api-runner-node.js +3 -1
- package/dist/utils/api-runner-node.js.map +1 -1
- package/dist/utils/source-nodes.js +48 -1
- package/dist/utils/source-nodes.js.map +1 -1
- package/package.json +2 -2
- package/dist/internal-plugins/prod-404-500/gatsby-node.js +0 -51
- package/dist/internal-plugins/prod-404-500/gatsby-node.js.map +0 -1
- package/dist/internal-plugins/prod-404-500/index.js +0 -3
- package/dist/internal-plugins/prod-404-500/index.js.map +0 -1
- package/dist/query/graphql-errors-codeframe.js +0 -23
- package/dist/query/graphql-errors-codeframe.js.map +0 -1
- package/dist/utils/clear-require-cache.js +0 -32
- package/dist/utils/clear-require-cache.js.map +0 -1
- package/dist/utils/engine-context.js +0 -25
- package/dist/utils/engine-context.js.map +0 -1
- package/dist/utils/normalize-path.js +0 -15
- package/dist/utils/normalize-path.js.map +0 -1
- package/dist/utils/page-mode.js +0 -146
- package/dist/utils/page-mode.js.map +0 -1
- package/dist/utils/report-once.js +0 -25
- package/dist/utils/report-once.js.map +0 -1
- package/dist/utils/validate-engines/child.js +0 -87
- package/dist/utils/validate-engines/child.js.map +0 -1
- package/dist/utils/validate-engines/index.js +0 -25
- package/dist/utils/validate-engines/index.js.map +0 -1
- package/dist/utils/webpack/bundle.js +0 -47
- package/dist/utils/webpack/bundle.js.map +0 -1
- package/dist/utils/webpack/plugins/cache-folder-resolver.js +0 -48
- package/dist/utils/webpack/plugins/cache-folder-resolver.js.map +0 -1
- package/dist/utils/webpack/plugins/corejs-resolver.js +0 -74
- package/dist/utils/webpack/plugins/corejs-resolver.js.map +0 -1
- package/dist/utils/webpack/plugins/force-css-hmr-for-edge-cases.js +0 -103
- package/dist/utils/webpack/plugins/force-css-hmr-for-edge-cases.js.map +0 -1
- package/dist/utils/webpack/plugins/static-query-mapper.js +0 -218
- package/dist/utils/webpack/plugins/static-query-mapper.js.map +0 -1
- package/dist/utils/webpack/plugins/webpack-logging.js +0 -61
- package/dist/utils/webpack/plugins/webpack-logging.js.map +0 -1
|
@@ -45,7 +45,10 @@ const componentsReducer = (state = new Map(), action) => {
|
|
|
45
45
|
{
|
|
46
46
|
action.payload.componentPath = (0, _normalizePath.default)(action.payload.componentPath);
|
|
47
47
|
const component = state.get(action.payload.componentPath);
|
|
48
|
-
|
|
48
|
+
|
|
49
|
+
if (!component) {
|
|
50
|
+
console.log(`QUERY_EXTRACTED`, component, action);
|
|
51
|
+
}
|
|
49
52
|
|
|
50
53
|
if (component) {
|
|
51
54
|
component.query = action.payload.query;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/reducers/components.ts"],"names":["programStatus","componentsReducer","state","Map","action","type","payload","componentPath","component","get","componentChunkName","query","pages","Set","isInBootstrap","add","path","set","console","log","delete"],"mappings":";;;;;;;AAAA;;AAGA,IAAIA,aAAa,GAAI,eAArB,C,CAEA;AACA;;AACO,MAAMC,iBAAiB,GAAG,CAC/BC,KAAiC,GAAG,IAAIC,GAAJ,EADL,EAE/BC,MAF+B,KAGA;AAC/B,UAAQA,MAAM,CAACC,IAAf;AACE,SAAM,cAAN;AACE,aAAO,IAAIF,GAAJ,EAAP;;AACF,SAAM,oBAAN;AACEH,MAAAA,aAAa,GAAGI,MAAM,CAACE,OAAvB;AACA,aAAOJ,KAAP;;AACF,SAAM,aAAN;AAAoB;AAClBE,QAAAA,MAAM,CAACE,OAAP,CAAeC,aAAf,GAA+B,4BAAUH,MAAM,CAACE,OAAP,CAAeE,SAAzB,CAA/B,CADkB,CAElB;;AACA,YAAIA,SAAS,GAAGN,KAAK,CAACO,GAAN,CAAUL,MAAM,CAACE,OAAP,CAAeC,aAAzB,CAAhB;;AACA,YAAI,CAACC,SAAL,EAAgB;AACdA,UAAAA,SAAS,GAAG;AACVD,YAAAA,aAAa,EAAEH,MAAM,CAACE,OAAP,CAAeC,aADpB;AAEVG,YAAAA,kBAAkB,EAAEN,MAAM,CAACE,OAAP,CAAeI,kBAFzB;AAGVC,YAAAA,KAAK,EAAG,EAHE;AAIVC,YAAAA,KAAK,EAAE,IAAIC,GAAJ,EAJG;AAKVC,YAAAA,aAAa,EAAE;AALL,WAAZ;AAOD;;AACDN,QAAAA,SAAS,CAACI,KAAV,CAAgBG,GAAhB,CAAoBX,MAAM,CAACE,OAAP,CAAeU,IAAnC;AACAR,QAAAA,SAAS,CAACM,aAAV,GAA0Bd,aAAa,KAAM,eAA7C;AACAE,QAAAA,KAAK,CAACe,GAAN,CAAUb,MAAM,CAACE,OAAP,CAAeC,aAAzB,EAAwCC,SAAxC;AACA,eAAON,KAAP;AACD;;AACD,SAAM,iBAAN;AAAwB;AACtBE,QAAAA,MAAM,CAACE,OAAP,CAAeC,aAAf,GAA+B,4BAAUH,MAAM,CAACE,OAAP,CAAeC,aAAzB,CAA/B;AACA,cAAMC,SAAS,GAAGN,KAAK,CAACO,GAAN,CAAUL,MAAM,CAACE,OAAP,CAAeC,aAAzB,CAAlB;
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/reducers/components.ts"],"names":["programStatus","componentsReducer","state","Map","action","type","payload","componentPath","component","get","componentChunkName","query","pages","Set","isInBootstrap","add","path","set","console","log","delete"],"mappings":";;;;;;;AAAA;;AAGA,IAAIA,aAAa,GAAI,eAArB,C,CAEA;AACA;;AACO,MAAMC,iBAAiB,GAAG,CAC/BC,KAAiC,GAAG,IAAIC,GAAJ,EADL,EAE/BC,MAF+B,KAGA;AAC/B,UAAQA,MAAM,CAACC,IAAf;AACE,SAAM,cAAN;AACE,aAAO,IAAIF,GAAJ,EAAP;;AACF,SAAM,oBAAN;AACEH,MAAAA,aAAa,GAAGI,MAAM,CAACE,OAAvB;AACA,aAAOJ,KAAP;;AACF,SAAM,aAAN;AAAoB;AAClBE,QAAAA,MAAM,CAACE,OAAP,CAAeC,aAAf,GAA+B,4BAAUH,MAAM,CAACE,OAAP,CAAeE,SAAzB,CAA/B,CADkB,CAElB;;AACA,YAAIA,SAAS,GAAGN,KAAK,CAACO,GAAN,CAAUL,MAAM,CAACE,OAAP,CAAeC,aAAzB,CAAhB;;AACA,YAAI,CAACC,SAAL,EAAgB;AACdA,UAAAA,SAAS,GAAG;AACVD,YAAAA,aAAa,EAAEH,MAAM,CAACE,OAAP,CAAeC,aADpB;AAEVG,YAAAA,kBAAkB,EAAEN,MAAM,CAACE,OAAP,CAAeI,kBAFzB;AAGVC,YAAAA,KAAK,EAAG,EAHE;AAIVC,YAAAA,KAAK,EAAE,IAAIC,GAAJ,EAJG;AAKVC,YAAAA,aAAa,EAAE;AALL,WAAZ;AAOD;;AACDN,QAAAA,SAAS,CAACI,KAAV,CAAgBG,GAAhB,CAAoBX,MAAM,CAACE,OAAP,CAAeU,IAAnC;AACAR,QAAAA,SAAS,CAACM,aAAV,GAA0Bd,aAAa,KAAM,eAA7C;AACAE,QAAAA,KAAK,CAACe,GAAN,CAAUb,MAAM,CAACE,OAAP,CAAeC,aAAzB,EAAwCC,SAAxC;AACA,eAAON,KAAP;AACD;;AACD,SAAM,iBAAN;AAAwB;AACtBE,QAAAA,MAAM,CAACE,OAAP,CAAeC,aAAf,GAA+B,4BAAUH,MAAM,CAACE,OAAP,CAAeC,aAAzB,CAA/B;AACA,cAAMC,SAAS,GAAGN,KAAK,CAACO,GAAN,CAAUL,MAAM,CAACE,OAAP,CAAeC,aAAzB,CAAlB;;AAEA,YAAI,CAACC,SAAL,EAAgB;AACdU,UAAAA,OAAO,CAACC,GAAR,CAAa,iBAAb,EAA+BX,SAA/B,EAA0CJ,MAA1C;AACD;;AAED,YAAII,SAAJ,EAAe;AACbA,UAAAA,SAAS,CAACG,KAAV,GAAkBP,MAAM,CAACE,OAAP,CAAeK,KAAjC;AACAT,UAAAA,KAAK,CAACe,GAAN,CAAUb,MAAM,CAACE,OAAP,CAAeC,aAAzB,EAAwCC,SAAxC;AACD;;AACD,eAAON,KAAP;AACD;;AACD,SAAM,mCAAN;AAA0C;AACxCE,QAAAA,MAAM,CAACE,OAAP,CAAeC,aAAf,GAA+B,4BAAUH,MAAM,CAACE,OAAP,CAAeC,aAAzB,CAA/B;AACAL,QAAAA,KAAK,CAACkB,MAAN,CAAahB,MAAM,CAACE,OAAP,CAAeC,aAA5B;AACA,eAAOL,KAAP;AACD;;AACD,SAAM,aAAN;AAAoB;AAClB,cAAMM,SAAS,GAAGN,KAAK,CAACO,GAAN,CAAU,4BAAUL,MAAM,CAACE,OAAP,CAAeE,SAAzB,CAAV,CAAlB;AACAA,QAAAA,SAAS,CAACI,KAAV,CAAgBQ,MAAhB,CAAuBhB,MAAM,CAACE,OAAP,CAAeU,IAAtC;AACA,eAAOd,KAAP;AACD;AA/CH;;AAkDA,SAAOA,KAAP;AACD,CAvDM","sourcesContent":["import normalize from \"./normalize-path\"\nimport { IGatsbyState, ActionsUnion } from \"../types\"\n\nlet programStatus = `BOOTSTRAPPING`\n\n// TODO: replace usages of this reducer with queries.trackedComponents\n// It is here merely for compatibility.\nexport const componentsReducer = (\n state: IGatsbyState[\"components\"] = new Map(),\n action: ActionsUnion\n): IGatsbyState[\"components\"] => {\n switch (action.type) {\n case `DELETE_CACHE`:\n return new Map()\n case `SET_PROGRAM_STATUS`:\n programStatus = action.payload\n return state\n case `CREATE_PAGE`: {\n action.payload.componentPath = normalize(action.payload.component)\n // Create XState service.\n let component = state.get(action.payload.componentPath)\n if (!component) {\n component = {\n componentPath: action.payload.componentPath,\n componentChunkName: action.payload.componentChunkName,\n query: ``,\n pages: new Set(),\n isInBootstrap: true,\n }\n }\n component.pages.add(action.payload.path)\n component.isInBootstrap = programStatus === `BOOTSTRAPPING`\n state.set(action.payload.componentPath, component)\n return state\n }\n case `QUERY_EXTRACTED`: {\n action.payload.componentPath = normalize(action.payload.componentPath)\n const component = state.get(action.payload.componentPath)!\n\n if (!component) {\n console.log(`QUERY_EXTRACTED`, component, action)\n }\n\n if (component) {\n component.query = action.payload.query\n state.set(action.payload.componentPath, component)\n }\n return state\n }\n case `REMOVE_STATIC_QUERIES_BY_TEMPLATE`: {\n action.payload.componentPath = normalize(action.payload.componentPath)\n state.delete(action.payload.componentPath)\n return state\n }\n case `DELETE_PAGE`: {\n const component = state.get(normalize(action.payload.component))!\n component.pages.delete(action.payload.path)\n return state\n }\n }\n\n return state\n}\n"],"file":"components.js"}
|
|
@@ -76,7 +76,10 @@ function htmlReducer(state = initialState(), action) {
|
|
|
76
76
|
const htmlFile = state.trackedHtmlFiles.get(path);
|
|
77
77
|
|
|
78
78
|
if (!htmlFile) {
|
|
79
|
-
|
|
79
|
+
console.log({
|
|
80
|
+
payload: action.payload
|
|
81
|
+
}, state.trackedHtmlFiles.get(path.slice(0, -1)), state.trackedHtmlFiles); // invariant
|
|
82
|
+
|
|
80
83
|
throw new Error(`[html reducer] how can I delete page that wasn't created (?)`);
|
|
81
84
|
}
|
|
82
85
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/reducers/html.ts"],"names":["FLAG_DIRTY_CLEARED_CACHE","FLAG_DIRTY_NEW_PAGE","FLAG_DIRTY_PAGE_DATA_CHANGED","FLAG_DIRTY_STATIC_QUERY_FIRST_RUN","FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED","FLAG_DIRTY_BROWSER_COMPILATION_HASH","FLAG_DIRTY_SSR_COMPILATION_HASH","initialState","trackedHtmlFiles","Map","browserCompilationHash","ssrCompilationHash","trackedStaticQueryResults","unsafeBuiltinWasUsedInSSR","htmlReducer","state","action","type","cacheIsCorrupt","clear","forEach","htmlFile","isDeleted","dirty","path","payload","get","pageDataHash","set","Error","isPage","staticQueryResult","queryHash","staticQueryResultHash","resultHash","pagePath","delete","pages","staticQueryHash","staticQueryHashes"],"mappings":"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","sourcesContent":["import {\n ActionsUnion,\n IGatsbyState,\n IHtmlFileState,\n IStaticQueryResultState,\n} from \"../types\"\n\nconst FLAG_DIRTY_CLEARED_CACHE = 0b0000001\nconst FLAG_DIRTY_NEW_PAGE = 0b0000010\nconst FLAG_DIRTY_PAGE_DATA_CHANGED = 0b0000100\nconst FLAG_DIRTY_STATIC_QUERY_FIRST_RUN = 0b0001000\nconst FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED = 0b0010000\nconst FLAG_DIRTY_BROWSER_COMPILATION_HASH = 0b0100000\nconst FLAG_DIRTY_SSR_COMPILATION_HASH = 0b1000000\n\ntype PagePath = string\n\nfunction initialState(): IGatsbyState[\"html\"] {\n return {\n trackedHtmlFiles: new Map<PagePath, IHtmlFileState>(),\n browserCompilationHash: ``,\n ssrCompilationHash: ``,\n trackedStaticQueryResults: new Map<string, IStaticQueryResultState>(),\n unsafeBuiltinWasUsedInSSR: false,\n }\n}\n\nexport function htmlReducer(\n state: IGatsbyState[\"html\"] = initialState(),\n action: ActionsUnion\n): IGatsbyState[\"html\"] {\n switch (action.type) {\n case `DELETE_CACHE`: {\n if (action.cacheIsCorrupt) {\n // `public` doesn't exist so we can start fresh\n return initialState()\n } else {\n // we can't just clear the cache here - we want to keep track of pages, so we mark them all as \"deleted\"\n // if they are recreated \"isDeleted\" flag will be removed\n state.browserCompilationHash = ``\n state.ssrCompilationHash = ``\n state.trackedStaticQueryResults.clear()\n state.unsafeBuiltinWasUsedInSSR = false\n state.trackedHtmlFiles.forEach(htmlFile => {\n htmlFile.isDeleted = true\n // there was a change somewhere, so just in case we mark those files are dirty as well\n htmlFile.dirty |= FLAG_DIRTY_CLEARED_CACHE\n })\n return state\n }\n }\n\n case `CREATE_PAGE`: {\n // CREATE_PAGE can be called even if page already exist, so we only want to do anything\n // if we don't track given page yet or if page is marked as deleted\n const { path } = action.payload\n\n let htmlFile = state.trackedHtmlFiles.get(path)\n if (!htmlFile) {\n htmlFile = {\n dirty: FLAG_DIRTY_NEW_PAGE,\n isDeleted: false,\n pageDataHash: ``,\n }\n state.trackedHtmlFiles.set(path, htmlFile)\n } else if (htmlFile.isDeleted) {\n // page was recreated so we remove `isDeleted` flag\n // TBD if dirtiness need to change\n htmlFile.isDeleted = false\n }\n\n return state\n }\n\n case `DELETE_PAGE`: {\n const { path } = action.payload\n const htmlFile = state.trackedHtmlFiles.get(path)\n\n if (!htmlFile) {\n // invariant\n throw new Error(\n `[html reducer] how can I delete page that wasn't created (?)`\n )\n }\n\n htmlFile.isDeleted = true\n // TBD if dirtiness need to change\n return state\n }\n\n case `PAGE_QUERY_RUN`: {\n // Despite action name, this action is actually emitted for both page and static queries.\n // In here we actually only care about static query result (particularly its hash).\n // We don't care about page query result because we don't actually use page query result\n // directly when generating html. We care about page-data (which contains page query result).\n // Handling of page-data that transitively handles page query result is done in handler for\n // `ADD_PAGE_DATA_STATS` action.\n if (!action.payload.isPage) {\n // static query case\n let staticQueryResult = state.trackedStaticQueryResults.get(\n action.payload.queryHash\n )\n if (!staticQueryResult) {\n staticQueryResult = {\n dirty: FLAG_DIRTY_STATIC_QUERY_FIRST_RUN,\n staticQueryResultHash: action.payload.resultHash,\n }\n state.trackedStaticQueryResults.set(\n action.payload.queryHash,\n staticQueryResult\n )\n } else if (\n staticQueryResult.staticQueryResultHash !== action.payload.resultHash\n ) {\n staticQueryResult.dirty |= FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED\n staticQueryResult.staticQueryResultHash = action.payload.resultHash\n }\n }\n\n return state\n }\n case `ADD_PAGE_DATA_STATS`: {\n const htmlFile = state.trackedHtmlFiles.get(action.payload.pagePath)\n if (!htmlFile) {\n // invariant\n throw new Error(\n `[html reducer] I received event that query for a page finished running, but I'm not aware of the page it ran for (?)`\n )\n }\n\n if (htmlFile.pageDataHash !== action.payload.pageDataHash) {\n htmlFile.pageDataHash = action.payload.pageDataHash\n htmlFile.dirty |= FLAG_DIRTY_PAGE_DATA_CHANGED\n }\n return state\n }\n\n case `SET_WEBPACK_COMPILATION_HASH`: {\n if (state.browserCompilationHash !== action.payload) {\n state.browserCompilationHash = action.payload\n state.trackedHtmlFiles.forEach(htmlFile => {\n htmlFile.dirty |= FLAG_DIRTY_BROWSER_COMPILATION_HASH\n })\n }\n return state\n }\n\n case `SET_SSR_WEBPACK_COMPILATION_HASH`: {\n if (state.ssrCompilationHash !== action.payload) {\n state.ssrCompilationHash = action.payload\n // we will mark every html file as dirty, so we can safely reset\n // unsafeBuiltinWasUsedInSSR flag, which might be set again if\n // ssr bundle continue to use those\n state.unsafeBuiltinWasUsedInSSR = false\n state.trackedHtmlFiles.forEach(htmlFile => {\n htmlFile.dirty |= FLAG_DIRTY_SSR_COMPILATION_HASH\n })\n }\n return state\n }\n\n case `HTML_REMOVED`: {\n state.trackedHtmlFiles.delete(action.payload)\n return state\n }\n\n case `HTML_TRACKED_PAGES_CLEANUP`: {\n // this is to cleanup variants of page paths that don't result in artifacts deletion\n // but page path should be pruned for cases like page changing path from \"/foo\" to \"/foo/\" (or vice versa)\n // where produced artifacts filenames are the same and we don't want to delete them after building,\n // but we still want to cleanup state here.\n for (const path of action.payload) {\n state.trackedHtmlFiles.delete(path)\n }\n return state\n }\n\n case `HTML_GENERATED`: {\n for (const path of action.payload) {\n const htmlFile = state.trackedHtmlFiles.get(path)\n if (htmlFile) {\n htmlFile.dirty = 0\n }\n }\n\n return state\n }\n\n case `HTML_MARK_DIRTY_BECAUSE_STATIC_QUERY_RESULT_CHANGED`: {\n // mark pages as dirty\n for (const path of action.payload.pages) {\n const htmlFile = state.trackedHtmlFiles.get(path)\n if (htmlFile) {\n htmlFile.dirty |= FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED\n }\n }\n\n // mark static queries as not dirty anymore (we flushed their dirtiness into pages)\n for (const staticQueryHash of action.payload.staticQueryHashes) {\n const staticQueryResult =\n state.trackedStaticQueryResults.get(staticQueryHash)\n if (staticQueryResult) {\n staticQueryResult.dirty = 0\n }\n }\n return state\n }\n\n case `SSR_USED_UNSAFE_BUILTIN`: {\n state.unsafeBuiltinWasUsedInSSR = true\n return state\n }\n }\n return state\n}\n"],"file":"html.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/reducers/html.ts"],"names":["FLAG_DIRTY_CLEARED_CACHE","FLAG_DIRTY_NEW_PAGE","FLAG_DIRTY_PAGE_DATA_CHANGED","FLAG_DIRTY_STATIC_QUERY_FIRST_RUN","FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED","FLAG_DIRTY_BROWSER_COMPILATION_HASH","FLAG_DIRTY_SSR_COMPILATION_HASH","initialState","trackedHtmlFiles","Map","browserCompilationHash","ssrCompilationHash","trackedStaticQueryResults","unsafeBuiltinWasUsedInSSR","htmlReducer","state","action","type","cacheIsCorrupt","clear","forEach","htmlFile","isDeleted","dirty","path","payload","get","pageDataHash","set","console","log","slice","Error","isPage","staticQueryResult","queryHash","staticQueryResultHash","resultHash","pagePath","delete","pages","staticQueryHash","staticQueryHashes"],"mappings":";;;;AAOA,MAAMA,wBAAwB,GAAG,SAAjC;AACA,MAAMC,mBAAmB,GAAG,SAA5B;AACA,MAAMC,4BAA4B,GAAG,SAArC;AACA,MAAMC,iCAAiC,GAAG,SAA1C;AACA,MAAMC,sCAAsC,GAAG,SAA/C;AACA,MAAMC,mCAAmC,GAAG,SAA5C;AACA,MAAMC,+BAA+B,GAAG,SAAxC;;AAIA,SAASC,YAAT,GAA8C;AAC5C,SAAO;AACLC,IAAAA,gBAAgB,EAAE,IAAIC,GAAJ,EADb;AAELC,IAAAA,sBAAsB,EAAG,EAFpB;AAGLC,IAAAA,kBAAkB,EAAG,EAHhB;AAILC,IAAAA,yBAAyB,EAAE,IAAIH,GAAJ,EAJtB;AAKLI,IAAAA,yBAAyB,EAAE;AALtB,GAAP;AAOD;;AAEM,SAASC,WAAT,CACLC,KAA2B,GAAGR,YAAY,EADrC,EAELS,MAFK,EAGiB;AACtB,UAAQA,MAAM,CAACC,IAAf;AACE,SAAM,cAAN;AAAqB;AACnB,YAAID,MAAM,CAACE,cAAX,EAA2B;AACzB;AACA,iBAAOX,YAAY,EAAnB;AACD,SAHD,MAGO;AACL;AACA;AACAQ,UAAAA,KAAK,CAACL,sBAAN,GAAgC,EAAhC;AACAK,UAAAA,KAAK,CAACJ,kBAAN,GAA4B,EAA5B;AACAI,UAAAA,KAAK,CAACH,yBAAN,CAAgCO,KAAhC;AACAJ,UAAAA,KAAK,CAACF,yBAAN,GAAkC,KAAlC;AACAE,UAAAA,KAAK,CAACP,gBAAN,CAAuBY,OAAvB,CAA+BC,QAAQ,IAAI;AACzCA,YAAAA,QAAQ,CAACC,SAAT,GAAqB,IAArB,CADyC,CAEzC;;AACAD,YAAAA,QAAQ,CAACE,KAAT,IAAkBvB,wBAAlB;AACD,WAJD;AAKA,iBAAOe,KAAP;AACD;AACF;;AAED,SAAM,aAAN;AAAoB;AAClB;AACA;AACA,cAAM;AAAES,UAAAA;AAAF,YAAWR,MAAM,CAACS,OAAxB;AAEA,YAAIJ,QAAQ,GAAGN,KAAK,CAACP,gBAAN,CAAuBkB,GAAvB,CAA2BF,IAA3B,CAAf;;AACA,YAAI,CAACH,QAAL,EAAe;AACbA,UAAAA,QAAQ,GAAG;AACTE,YAAAA,KAAK,EAAEtB,mBADE;AAETqB,YAAAA,SAAS,EAAE,KAFF;AAGTK,YAAAA,YAAY,EAAG;AAHN,WAAX;AAKAZ,UAAAA,KAAK,CAACP,gBAAN,CAAuBoB,GAAvB,CAA2BJ,IAA3B,EAAiCH,QAAjC;AACD,SAPD,MAOO,IAAIA,QAAQ,CAACC,SAAb,EAAwB;AAC7B;AACA;AACAD,UAAAA,QAAQ,CAACC,SAAT,GAAqB,KAArB;AACD;;AAED,eAAOP,KAAP;AACD;;AAED,SAAM,aAAN;AAAoB;AAClB,cAAM;AAAES,UAAAA;AAAF,YAAWR,MAAM,CAACS,OAAxB;AACA,cAAMJ,QAAQ,GAAGN,KAAK,CAACP,gBAAN,CAAuBkB,GAAvB,CAA2BF,IAA3B,CAAjB;;AAEA,YAAI,CAACH,QAAL,EAAe;AACbQ,UAAAA,OAAO,CAACC,GAAR,CACE;AAAEL,YAAAA,OAAO,EAAET,MAAM,CAACS;AAAlB,WADF,EAEEV,KAAK,CAACP,gBAAN,CAAuBkB,GAAvB,CAA2BF,IAAI,CAACO,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAA3B,CAFF,EAGEhB,KAAK,CAACP,gBAHR,EADa,CAMb;;AACA,gBAAM,IAAIwB,KAAJ,CACH,8DADG,CAAN;AAGD;;AAEDX,QAAAA,QAAQ,CAACC,SAAT,GAAqB,IAArB,CAhBkB,CAiBlB;;AACA,eAAOP,KAAP;AACD;;AAED,SAAM,gBAAN;AAAuB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,YAAI,CAACC,MAAM,CAACS,OAAP,CAAeQ,MAApB,EAA4B;AAC1B;AACA,cAAIC,iBAAiB,GAAGnB,KAAK,CAACH,yBAAN,CAAgCc,GAAhC,CACtBV,MAAM,CAACS,OAAP,CAAeU,SADO,CAAxB;;AAGA,cAAI,CAACD,iBAAL,EAAwB;AACtBA,YAAAA,iBAAiB,GAAG;AAClBX,cAAAA,KAAK,EAAEpB,iCADW;AAElBiC,cAAAA,qBAAqB,EAAEpB,MAAM,CAACS,OAAP,CAAeY;AAFpB,aAApB;AAIAtB,YAAAA,KAAK,CAACH,yBAAN,CAAgCgB,GAAhC,CACEZ,MAAM,CAACS,OAAP,CAAeU,SADjB,EAEED,iBAFF;AAID,WATD,MASO,IACLA,iBAAiB,CAACE,qBAAlB,KAA4CpB,MAAM,CAACS,OAAP,CAAeY,UADtD,EAEL;AACAH,YAAAA,iBAAiB,CAACX,KAAlB,IAA2BnB,sCAA3B;AACA8B,YAAAA,iBAAiB,CAACE,qBAAlB,GAA0CpB,MAAM,CAACS,OAAP,CAAeY,UAAzD;AACD;AACF;;AAED,eAAOtB,KAAP;AACD;;AACD,SAAM,qBAAN;AAA4B;AAC1B,cAAMM,QAAQ,GAAGN,KAAK,CAACP,gBAAN,CAAuBkB,GAAvB,CAA2BV,MAAM,CAACS,OAAP,CAAea,QAA1C,CAAjB;;AACA,YAAI,CAACjB,QAAL,EAAe;AACb;AACA,gBAAM,IAAIW,KAAJ,CACH,sHADG,CAAN;AAGD;;AAED,YAAIX,QAAQ,CAACM,YAAT,KAA0BX,MAAM,CAACS,OAAP,CAAeE,YAA7C,EAA2D;AACzDN,UAAAA,QAAQ,CAACM,YAAT,GAAwBX,MAAM,CAACS,OAAP,CAAeE,YAAvC;AACAN,UAAAA,QAAQ,CAACE,KAAT,IAAkBrB,4BAAlB;AACD;;AACD,eAAOa,KAAP;AACD;;AAED,SAAM,8BAAN;AAAqC;AACnC,YAAIA,KAAK,CAACL,sBAAN,KAAiCM,MAAM,CAACS,OAA5C,EAAqD;AACnDV,UAAAA,KAAK,CAACL,sBAAN,GAA+BM,MAAM,CAACS,OAAtC;AACAV,UAAAA,KAAK,CAACP,gBAAN,CAAuBY,OAAvB,CAA+BC,QAAQ,IAAI;AACzCA,YAAAA,QAAQ,CAACE,KAAT,IAAkBlB,mCAAlB;AACD,WAFD;AAGD;;AACD,eAAOU,KAAP;AACD;;AAED,SAAM,kCAAN;AAAyC;AACvC,YAAIA,KAAK,CAACJ,kBAAN,KAA6BK,MAAM,CAACS,OAAxC,EAAiD;AAC/CV,UAAAA,KAAK,CAACJ,kBAAN,GAA2BK,MAAM,CAACS,OAAlC,CAD+C,CAE/C;AACA;AACA;;AACAV,UAAAA,KAAK,CAACF,yBAAN,GAAkC,KAAlC;AACAE,UAAAA,KAAK,CAACP,gBAAN,CAAuBY,OAAvB,CAA+BC,QAAQ,IAAI;AACzCA,YAAAA,QAAQ,CAACE,KAAT,IAAkBjB,+BAAlB;AACD,WAFD;AAGD;;AACD,eAAOS,KAAP;AACD;;AAED,SAAM,cAAN;AAAqB;AACnBA,QAAAA,KAAK,CAACP,gBAAN,CAAuB+B,MAAvB,CAA8BvB,MAAM,CAACS,OAArC;AACA,eAAOV,KAAP;AACD;;AAED,SAAM,4BAAN;AAAmC;AACjC;AACA;AACA;AACA;AACA,aAAK,MAAMS,IAAX,IAAmBR,MAAM,CAACS,OAA1B,EAAmC;AACjCV,UAAAA,KAAK,CAACP,gBAAN,CAAuB+B,MAAvB,CAA8Bf,IAA9B;AACD;;AACD,eAAOT,KAAP;AACD;;AAED,SAAM,gBAAN;AAAuB;AACrB,aAAK,MAAMS,IAAX,IAAmBR,MAAM,CAACS,OAA1B,EAAmC;AACjC,gBAAMJ,QAAQ,GAAGN,KAAK,CAACP,gBAAN,CAAuBkB,GAAvB,CAA2BF,IAA3B,CAAjB;;AACA,cAAIH,QAAJ,EAAc;AACZA,YAAAA,QAAQ,CAACE,KAAT,GAAiB,CAAjB;AACD;AACF;;AAED,eAAOR,KAAP;AACD;;AAED,SAAM,qDAAN;AAA4D;AAC1D;AACA,aAAK,MAAMS,IAAX,IAAmBR,MAAM,CAACS,OAAP,CAAee,KAAlC,EAAyC;AACvC,gBAAMnB,QAAQ,GAAGN,KAAK,CAACP,gBAAN,CAAuBkB,GAAvB,CAA2BF,IAA3B,CAAjB;;AACA,cAAIH,QAAJ,EAAc;AACZA,YAAAA,QAAQ,CAACE,KAAT,IAAkBnB,sCAAlB;AACD;AACF,SAPyD,CAS1D;;;AACA,aAAK,MAAMqC,eAAX,IAA8BzB,MAAM,CAACS,OAAP,CAAeiB,iBAA7C,EAAgE;AAC9D,gBAAMR,iBAAiB,GACrBnB,KAAK,CAACH,yBAAN,CAAgCc,GAAhC,CAAoCe,eAApC,CADF;;AAEA,cAAIP,iBAAJ,EAAuB;AACrBA,YAAAA,iBAAiB,CAACX,KAAlB,GAA0B,CAA1B;AACD;AACF;;AACD,eAAOR,KAAP;AACD;;AAED,SAAM,yBAAN;AAAgC;AAC9BA,QAAAA,KAAK,CAACF,yBAAN,GAAkC,IAAlC;AACA,eAAOE,KAAP;AACD;AAzLH;;AA2LA,SAAOA,KAAP;AACD","sourcesContent":["import {\n ActionsUnion,\n IGatsbyState,\n IHtmlFileState,\n IStaticQueryResultState,\n} from \"../types\"\n\nconst FLAG_DIRTY_CLEARED_CACHE = 0b0000001\nconst FLAG_DIRTY_NEW_PAGE = 0b0000010\nconst FLAG_DIRTY_PAGE_DATA_CHANGED = 0b0000100\nconst FLAG_DIRTY_STATIC_QUERY_FIRST_RUN = 0b0001000\nconst FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED = 0b0010000\nconst FLAG_DIRTY_BROWSER_COMPILATION_HASH = 0b0100000\nconst FLAG_DIRTY_SSR_COMPILATION_HASH = 0b1000000\n\ntype PagePath = string\n\nfunction initialState(): IGatsbyState[\"html\"] {\n return {\n trackedHtmlFiles: new Map<PagePath, IHtmlFileState>(),\n browserCompilationHash: ``,\n ssrCompilationHash: ``,\n trackedStaticQueryResults: new Map<string, IStaticQueryResultState>(),\n unsafeBuiltinWasUsedInSSR: false,\n }\n}\n\nexport function htmlReducer(\n state: IGatsbyState[\"html\"] = initialState(),\n action: ActionsUnion\n): IGatsbyState[\"html\"] {\n switch (action.type) {\n case `DELETE_CACHE`: {\n if (action.cacheIsCorrupt) {\n // `public` doesn't exist so we can start fresh\n return initialState()\n } else {\n // we can't just clear the cache here - we want to keep track of pages, so we mark them all as \"deleted\"\n // if they are recreated \"isDeleted\" flag will be removed\n state.browserCompilationHash = ``\n state.ssrCompilationHash = ``\n state.trackedStaticQueryResults.clear()\n state.unsafeBuiltinWasUsedInSSR = false\n state.trackedHtmlFiles.forEach(htmlFile => {\n htmlFile.isDeleted = true\n // there was a change somewhere, so just in case we mark those files are dirty as well\n htmlFile.dirty |= FLAG_DIRTY_CLEARED_CACHE\n })\n return state\n }\n }\n\n case `CREATE_PAGE`: {\n // CREATE_PAGE can be called even if page already exist, so we only want to do anything\n // if we don't track given page yet or if page is marked as deleted\n const { path } = action.payload\n\n let htmlFile = state.trackedHtmlFiles.get(path)\n if (!htmlFile) {\n htmlFile = {\n dirty: FLAG_DIRTY_NEW_PAGE,\n isDeleted: false,\n pageDataHash: ``,\n }\n state.trackedHtmlFiles.set(path, htmlFile)\n } else if (htmlFile.isDeleted) {\n // page was recreated so we remove `isDeleted` flag\n // TBD if dirtiness need to change\n htmlFile.isDeleted = false\n }\n\n return state\n }\n\n case `DELETE_PAGE`: {\n const { path } = action.payload\n const htmlFile = state.trackedHtmlFiles.get(path)\n\n if (!htmlFile) {\n console.log(\n { payload: action.payload },\n state.trackedHtmlFiles.get(path.slice(0, -1)),\n state.trackedHtmlFiles\n )\n // invariant\n throw new Error(\n `[html reducer] how can I delete page that wasn't created (?)`\n )\n }\n\n htmlFile.isDeleted = true\n // TBD if dirtiness need to change\n return state\n }\n\n case `PAGE_QUERY_RUN`: {\n // Despite action name, this action is actually emitted for both page and static queries.\n // In here we actually only care about static query result (particularly its hash).\n // We don't care about page query result because we don't actually use page query result\n // directly when generating html. We care about page-data (which contains page query result).\n // Handling of page-data that transitively handles page query result is done in handler for\n // `ADD_PAGE_DATA_STATS` action.\n if (!action.payload.isPage) {\n // static query case\n let staticQueryResult = state.trackedStaticQueryResults.get(\n action.payload.queryHash\n )\n if (!staticQueryResult) {\n staticQueryResult = {\n dirty: FLAG_DIRTY_STATIC_QUERY_FIRST_RUN,\n staticQueryResultHash: action.payload.resultHash,\n }\n state.trackedStaticQueryResults.set(\n action.payload.queryHash,\n staticQueryResult\n )\n } else if (\n staticQueryResult.staticQueryResultHash !== action.payload.resultHash\n ) {\n staticQueryResult.dirty |= FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED\n staticQueryResult.staticQueryResultHash = action.payload.resultHash\n }\n }\n\n return state\n }\n case `ADD_PAGE_DATA_STATS`: {\n const htmlFile = state.trackedHtmlFiles.get(action.payload.pagePath)\n if (!htmlFile) {\n // invariant\n throw new Error(\n `[html reducer] I received event that query for a page finished running, but I'm not aware of the page it ran for (?)`\n )\n }\n\n if (htmlFile.pageDataHash !== action.payload.pageDataHash) {\n htmlFile.pageDataHash = action.payload.pageDataHash\n htmlFile.dirty |= FLAG_DIRTY_PAGE_DATA_CHANGED\n }\n return state\n }\n\n case `SET_WEBPACK_COMPILATION_HASH`: {\n if (state.browserCompilationHash !== action.payload) {\n state.browserCompilationHash = action.payload\n state.trackedHtmlFiles.forEach(htmlFile => {\n htmlFile.dirty |= FLAG_DIRTY_BROWSER_COMPILATION_HASH\n })\n }\n return state\n }\n\n case `SET_SSR_WEBPACK_COMPILATION_HASH`: {\n if (state.ssrCompilationHash !== action.payload) {\n state.ssrCompilationHash = action.payload\n // we will mark every html file as dirty, so we can safely reset\n // unsafeBuiltinWasUsedInSSR flag, which might be set again if\n // ssr bundle continue to use those\n state.unsafeBuiltinWasUsedInSSR = false\n state.trackedHtmlFiles.forEach(htmlFile => {\n htmlFile.dirty |= FLAG_DIRTY_SSR_COMPILATION_HASH\n })\n }\n return state\n }\n\n case `HTML_REMOVED`: {\n state.trackedHtmlFiles.delete(action.payload)\n return state\n }\n\n case `HTML_TRACKED_PAGES_CLEANUP`: {\n // this is to cleanup variants of page paths that don't result in artifacts deletion\n // but page path should be pruned for cases like page changing path from \"/foo\" to \"/foo/\" (or vice versa)\n // where produced artifacts filenames are the same and we don't want to delete them after building,\n // but we still want to cleanup state here.\n for (const path of action.payload) {\n state.trackedHtmlFiles.delete(path)\n }\n return state\n }\n\n case `HTML_GENERATED`: {\n for (const path of action.payload) {\n const htmlFile = state.trackedHtmlFiles.get(path)\n if (htmlFile) {\n htmlFile.dirty = 0\n }\n }\n\n return state\n }\n\n case `HTML_MARK_DIRTY_BECAUSE_STATIC_QUERY_RESULT_CHANGED`: {\n // mark pages as dirty\n for (const path of action.payload.pages) {\n const htmlFile = state.trackedHtmlFiles.get(path)\n if (htmlFile) {\n htmlFile.dirty |= FLAG_DIRTY_STATIC_QUERY_RESULT_CHANGED\n }\n }\n\n // mark static queries as not dirty anymore (we flushed their dirtiness into pages)\n for (const staticQueryHash of action.payload.staticQueryHashes) {\n const staticQueryResult =\n state.trackedStaticQueryResults.get(staticQueryHash)\n if (staticQueryResult) {\n staticQueryResult.dirty = 0\n }\n }\n return state\n }\n\n case `SSR_USED_UNSAFE_BUILTIN`: {\n state.unsafeBuiltinWasUsedInSSR = true\n return state\n }\n }\n return state\n}\n"],"file":"html.js"}
|
|
@@ -26,6 +26,10 @@ var _definitions = require("./definitions");
|
|
|
26
26
|
|
|
27
27
|
exports.definitions = _definitions.definitionsReducer;
|
|
28
28
|
|
|
29
|
+
var _tick = require("./tick");
|
|
30
|
+
|
|
31
|
+
exports.tick = _tick.tickReducer;
|
|
32
|
+
|
|
29
33
|
var _staticQueryComponents = require("./static-query-components");
|
|
30
34
|
|
|
31
35
|
exports.staticQueryComponents = _staticQueryComponents.staticQueryComponentsReducer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/reducers/index.ts"],"names":[],"mappings":";;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA","sourcesContent":["import { nodesReducer } from \"./nodes\"\nimport { reducer as logReducer } from \"gatsby-cli/lib/reporter/redux/reducer\"\nimport { pagesReducer } from \"./pages\"\nimport { redirectsReducer } from \"./redirects\"\nimport { schemaReducer } from \"./schema\"\nimport { definitionsReducer } from \"./definitions\"\nimport { staticQueryComponentsReducer } from \"./static-query-components\"\nimport { statusReducer } from \"./status\"\nimport { webpackReducer } from \"./webpack\"\nimport { webpackCompilationHashReducer } from \"./webpack-compilation-hash\"\nimport { configReducer } from \"./config\"\nimport { lastActionReducer } from \"./last-action\"\nimport { jobsV2Reducer } from \"./jobsv2\"\nimport { pageDataStatsReducer } from \"./page-data-stats\"\nimport { componentsReducer } from \"./components\"\nimport { babelrcReducer } from \"./babelrc\"\nimport { jobsReducer } from \"./jobs\"\nimport { nodesByTypeReducer } from \"./nodes-by-type\"\nimport { programReducer } from \"./program\"\nimport { resolvedNodesCacheReducer } from \"./resolved-nodes\"\nimport { nodesTouchedReducer } from \"./nodes-touched\"\nimport { flattenedPluginsReducer } from \"./flattened-plugins\"\nimport { pendingPageDataWritesReducer } from \"./pending-page-data-writes\"\nimport { schemaCustomizationReducer } from \"./schema-customization\"\nimport { inferenceMetadataReducer } from \"./inference-metadata\"\nimport { staticQueriesByTemplateReducer } from \"./static-queries-by-template\"\nimport { queriesReducer } from \"./queries\"\nimport { visitedPagesReducer } from \"./visited-page\"\nimport { htmlReducer } from \"./html\"\nimport { functionsReducer } from \"./functions\"\nimport { nodeManifestReducer } from \"./node-manifest\"\n\n/**\n * @property exports.nodesTouched Set<string>\n */\nexport {\n definitionsReducer as definitions,\n programReducer as program,\n nodesReducer as nodes,\n nodesByTypeReducer as nodesByType,\n resolvedNodesCacheReducer as resolvedNodesCache,\n nodesTouchedReducer as nodesTouched,\n lastActionReducer as lastAction,\n flattenedPluginsReducer as flattenedPlugins,\n configReducer as config,\n schemaReducer as schema,\n pagesReducer as pages,\n visitedPagesReducer as visitedPages,\n statusReducer as status,\n componentsReducer as components,\n staticQueryComponentsReducer as staticQueryComponents,\n jobsReducer as jobs,\n jobsV2Reducer as jobsV2,\n webpackReducer as webpack,\n webpackCompilationHashReducer as webpackCompilationHash,\n redirectsReducer as redirects,\n babelrcReducer as babelrc,\n schemaCustomizationReducer as schemaCustomization,\n logReducer as logs,\n inferenceMetadataReducer as inferenceMetadata,\n pageDataStatsReducer as pageDataStats,\n pendingPageDataWritesReducer as pendingPageDataWrites,\n staticQueriesByTemplateReducer as staticQueriesByTemplate,\n queriesReducer as queries,\n htmlReducer as html,\n functionsReducer as functions,\n nodeManifestReducer as nodeManifests,\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/reducers/index.ts"],"names":[],"mappings":";;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA","sourcesContent":["import { nodesReducer } from \"./nodes\"\nimport { reducer as logReducer } from \"gatsby-cli/lib/reporter/redux/reducer\"\nimport { pagesReducer } from \"./pages\"\nimport { redirectsReducer } from \"./redirects\"\nimport { schemaReducer } from \"./schema\"\nimport { definitionsReducer } from \"./definitions\"\nimport { tickReducer } from \"./tick\"\nimport { staticQueryComponentsReducer } from \"./static-query-components\"\nimport { statusReducer } from \"./status\"\nimport { webpackReducer } from \"./webpack\"\nimport { webpackCompilationHashReducer } from \"./webpack-compilation-hash\"\nimport { configReducer } from \"./config\"\nimport { lastActionReducer } from \"./last-action\"\nimport { jobsV2Reducer } from \"./jobsv2\"\nimport { pageDataStatsReducer } from \"./page-data-stats\"\nimport { componentsReducer } from \"./components\"\nimport { babelrcReducer } from \"./babelrc\"\nimport { jobsReducer } from \"./jobs\"\nimport { nodesByTypeReducer } from \"./nodes-by-type\"\nimport { programReducer } from \"./program\"\nimport { resolvedNodesCacheReducer } from \"./resolved-nodes\"\nimport { nodesTouchedReducer } from \"./nodes-touched\"\nimport { flattenedPluginsReducer } from \"./flattened-plugins\"\nimport { pendingPageDataWritesReducer } from \"./pending-page-data-writes\"\nimport { schemaCustomizationReducer } from \"./schema-customization\"\nimport { inferenceMetadataReducer } from \"./inference-metadata\"\nimport { staticQueriesByTemplateReducer } from \"./static-queries-by-template\"\nimport { queriesReducer } from \"./queries\"\nimport { visitedPagesReducer } from \"./visited-page\"\nimport { htmlReducer } from \"./html\"\nimport { functionsReducer } from \"./functions\"\nimport { nodeManifestReducer } from \"./node-manifest\"\n\n/**\n * @property exports.nodesTouched Set<string>\n */\nexport {\n definitionsReducer as definitions,\n programReducer as program,\n nodesReducer as nodes,\n nodesByTypeReducer as nodesByType,\n resolvedNodesCacheReducer as resolvedNodesCache,\n nodesTouchedReducer as nodesTouched,\n lastActionReducer as lastAction,\n flattenedPluginsReducer as flattenedPlugins,\n configReducer as config,\n schemaReducer as schema,\n pagesReducer as pages,\n visitedPagesReducer as visitedPages,\n statusReducer as status,\n componentsReducer as components,\n staticQueryComponentsReducer as staticQueryComponents,\n jobsReducer as jobs,\n tickReducer as tick,\n jobsV2Reducer as jobsV2,\n webpackReducer as webpack,\n webpackCompilationHashReducer as webpackCompilationHash,\n redirectsReducer as redirects,\n babelrcReducer as babelrc,\n schemaCustomizationReducer as schemaCustomization,\n logReducer as logs,\n inferenceMetadataReducer as inferenceMetadata,\n pageDataStatsReducer as pageDataStats,\n pendingPageDataWritesReducer as pendingPageDataWrites,\n staticQueriesByTemplateReducer as staticQueriesByTemplate,\n queriesReducer as queries,\n htmlReducer as html,\n functionsReducer as functions,\n nodeManifestReducer as nodeManifests,\n}\n"],"file":"index.js"}
|
|
@@ -128,7 +128,10 @@ function queriesReducer(state = initialState(), action) {
|
|
|
128
128
|
query
|
|
129
129
|
} = action.payload;
|
|
130
130
|
const component = registerComponent(state, componentPath);
|
|
131
|
-
|
|
131
|
+
|
|
132
|
+
if (!component) {
|
|
133
|
+
console.log(`reducers/queries`, component, action);
|
|
134
|
+
}
|
|
132
135
|
|
|
133
136
|
if (component) {
|
|
134
137
|
if (hasFlag(component.errors, FLAG_ERROR_EXTRACTION)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/redux/reducers/queries.ts"],"names":["FLAG_DIRTY_NEW_PAGE","FLAG_DIRTY_TEXT","FLAG_DIRTY_DATA","FLAG_DIRTY_PAGE_CONTEXT","FLAG_ERROR_EXTRACTION","FLAG_RUNNING_INFLIGHT","initialState","byNode","Map","byConnection","queryNodes","trackedQueries","trackedComponents","deletedQueries","Set","dirtyQueriesListToEmitViaWebsocket","initialQueryState","dirty","running","initialComponentState","componentPath","query","pages","errors","queriesReducer","state","action","type","console","log","path","payload","get","contextModified","registerQuery","setFlag","trackDirtyQuery","registerComponent","add","delete","apiName","queryId","component","values","clearNodeDependencies","clearConnectionDependencies","clear","hasFlag","set","id","forEach","nodeId","connection","addNodeDependency","addConnectionDependency","node","queriesByNode","queriesByConnection","internal","assertCorrectWorkerState","mergeWorkerDataDependencies","allFlags","flag","nodeQueries","queryIds","queryNodeIds","process","env","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","push","workerStateChunk","queryState","queryStateChunk","keys","queries","connectionName","workerId","size","Error"],"mappings":"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","sourcesContent":["import {\n ActionsUnion,\n IComponentState,\n IGatsbyState,\n IQueryState,\n} from \"../types\"\n\ntype QueryId = string // page query path or static query id\ntype ComponentPath = string\ntype NodeId = string\ntype ConnectionName = string\n\nexport const FLAG_DIRTY_NEW_PAGE = 0b0001\nexport const FLAG_DIRTY_TEXT = 0b0010\nexport const FLAG_DIRTY_DATA = 0b0100\nexport const FLAG_DIRTY_PAGE_CONTEXT = 0b1000\n\nexport const FLAG_ERROR_EXTRACTION = 0b0001\n\nexport const FLAG_RUNNING_INFLIGHT = 0b0001\n\nconst initialState = (): IGatsbyState[\"queries\"] => {\n return {\n byNode: new Map<NodeId, Set<QueryId>>(),\n byConnection: new Map<ConnectionName, Set<QueryId>>(),\n queryNodes: new Map<QueryId, Set<NodeId>>(),\n trackedQueries: new Map<QueryId, IQueryState>(),\n trackedComponents: new Map<ComponentPath, IComponentState>(),\n deletedQueries: new Set<QueryId>(),\n dirtyQueriesListToEmitViaWebsocket: [],\n }\n}\n\nconst initialQueryState = (): IQueryState => {\n return {\n dirty: -1, // unknown, must be set right after init\n running: 0,\n }\n}\n\nconst initialComponentState = (): IComponentState => {\n return {\n componentPath: ``,\n query: ``,\n pages: new Set<QueryId>(),\n errors: 0,\n // TODO: staticQueries: new Set<QueryId>()\n }\n}\n\n/**\n * Tracks query dirtiness. Dirty queries are queries that:\n *\n * - depend on nodes or node collections (via `actions.createPageDependency`) that have changed.\n * - have been recently extracted (or their query text has changed)\n * - belong to newly created pages (or pages with modified context)\n *\n * Dirty queries must be re-ran.\n */\nexport function queriesReducer(\n state: IGatsbyState[\"queries\"] = initialState(),\n action: ActionsUnion\n): IGatsbyState[\"queries\"] {\n switch (action.type) {\n case `DELETE_CACHE`:\n return initialState()\n\n case `DELETE_QUERIES_CACHE`:\n console.log(`deleting query cache`)\n return initialState()\n\n case `CREATE_PAGE`: {\n const { path, componentPath } = action.payload\n let query = state.trackedQueries.get(path)\n if (!query || action.contextModified) {\n query = registerQuery(state, path)\n query.dirty = setFlag(\n query.dirty,\n action.contextModified ? FLAG_DIRTY_PAGE_CONTEXT : FLAG_DIRTY_NEW_PAGE\n )\n state = trackDirtyQuery(state, path)\n }\n registerComponent(state, componentPath).pages.add(path)\n state.deletedQueries.delete(path)\n return state\n }\n case `DELETE_PAGE`: {\n // Don't actually remove the page query from trackedQueries, just mark it as \"deleted\". Why?\n // We promote a technique of a consecutive deletePage/createPage calls in onCreatePage hook,\n // see https://www.gatsbyjs.com/docs/creating-and-modifying-pages/#pass-context-to-pages\n // If we remove a query and then re-add, it will be marked as dirty.\n // This is OK for cold cache but with warm cache we will re-run all of those queries (unnecessarily).\n // We will reconcile the state after createPages API call and actually delete those queries.\n state.deletedQueries.add(action.payload.path)\n return state\n }\n case `API_FINISHED`: {\n if (action.payload.apiName !== `createPages`) {\n return state\n }\n for (const queryId of state.deletedQueries) {\n for (const component of state.trackedComponents.values()) {\n component.pages.delete(queryId)\n }\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n state.trackedQueries.delete(queryId)\n }\n state.deletedQueries.clear()\n return state\n }\n case `QUERY_EXTRACTED`: {\n // Note: this action is called even in case of\n // extraction error or missing query (with query === ``)\n // TODO: use hash instead of a query text\n const { componentPath, query } = action.payload\n const component = registerComponent(state, componentPath)\n console.log(`reducers/queries`, component, action)\n if (component) {\n if (hasFlag(component.errors, FLAG_ERROR_EXTRACTION)) {\n return state\n }\n if (component.query !== query) {\n // Invalidate all pages associated with a component when query text changes\n for (const queryId of component.pages) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n state = trackDirtyQuery(state, queryId)\n }\n }\n component.query = query\n }\n }\n return state\n }\n case `QUERY_EXTRACTION_GRAPHQL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_SUCCESS`: {\n const { componentPath } = action.payload\n const component = registerComponent(state, componentPath)\n const set = action.type !== `QUERY_EXTRACTION_BABEL_SUCCESS`\n component.errors = setFlag(component.errors, FLAG_ERROR_EXTRACTION, set)\n return state\n }\n case `REPLACE_STATIC_QUERY`: {\n // Only called when static query text has changed, so no need to compare\n // TODO: unify the behavior?\n const query = registerQuery(state, action.payload.id)\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n // static queries are not on demand, so skipping tracking which\n // queries were marked dirty recently\n // state = trackDirtyQuery(state, action.payload.id)\n state.deletedQueries.delete(action.payload.id)\n return state\n }\n case `REMOVE_STATIC_QUERY`: {\n state.deletedQueries.add(action.payload)\n return state\n }\n case `CREATE_COMPONENT_DEPENDENCY`: {\n action.payload.forEach(({ path: queryId, nodeId, connection }) => {\n if (nodeId) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n if (connection) {\n state = addConnectionDependency(state, queryId, connection)\n }\n })\n\n return state\n }\n case `QUERY_START`: {\n // Reset data dependencies as they will be updated when running the query\n const { path } = action.payload\n state = clearNodeDependencies(state, path)\n state = clearConnectionDependencies(state, path)\n const query = state.trackedQueries.get(path)\n if (query) {\n query.running = setFlag(query.running, FLAG_RUNNING_INFLIGHT)\n }\n return state\n }\n case `CREATE_NODE`:\n case `DELETE_NODE`: {\n const node = action.payload\n if (!node) {\n return state\n }\n const queriesByNode = state.byNode.get(node.id) ?? []\n const queriesByConnection =\n state.byConnection.get(node.internal.type) ?? []\n\n for (const queryId of queriesByNode) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n for (const queryId of queriesByConnection) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n return state\n }\n case `PAGE_QUERY_RUN`: {\n const { path } = action.payload\n const query = registerQuery(state, path)\n query.dirty = 0\n query.running = 0 // TODO: also\n return state\n }\n case `SET_PROGRAM_STATUS`: {\n if (action.payload === `BOOTSTRAP_FINISHED`) {\n // Reset the running state (as it could've been persisted)\n for (const [, query] of state.trackedQueries) {\n query.running = 0\n }\n // Reset list of dirty queries (this is used only to notify runtime and it could've been persisted)\n state.dirtyQueriesListToEmitViaWebsocket = []\n }\n return state\n }\n case `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`: {\n state.dirtyQueriesListToEmitViaWebsocket = []\n return state\n }\n case `MERGE_WORKER_QUERY_STATE`: {\n assertCorrectWorkerState(action.payload)\n\n state = mergeWorkerDataDependencies(state, action.payload)\n return state\n }\n default:\n return state\n }\n}\n\nfunction setFlag(allFlags: number, flag: number, set = true): number {\n if (allFlags < 0) {\n allFlags = 0\n }\n return set ? allFlags | flag : allFlags & ~flag\n}\n\nexport function hasFlag(allFlags: number, flag: number): boolean {\n return allFlags >= 0 && (allFlags & flag) > 0\n}\n\nfunction addNodeDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n nodeId: NodeId\n): IGatsbyState[\"queries\"] {\n // Perf: using two-side maps.\n // Without additional `queryNodes` map we would have to loop through\n // all existing nodes in `clearNodeDependencies` to delete node <-> query dependency\n let nodeQueries = state.byNode.get(nodeId)\n if (!nodeQueries) {\n nodeQueries = new Set<QueryId>()\n state.byNode.set(nodeId, nodeQueries)\n }\n let queryNodes = state.queryNodes.get(queryId)\n if (!queryNodes) {\n queryNodes = new Set<NodeId>()\n state.queryNodes.set(queryId, queryNodes)\n }\n nodeQueries.add(queryId)\n queryNodes.add(nodeId)\n return state\n}\n\nfunction addConnectionDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n connection: ConnectionName\n): IGatsbyState[\"queries\"] {\n // Note: not using two-side maps for connections as associated overhead\n // for small number of elements is greater then benefits, so no perf. gains\n let queryIds = state.byConnection.get(connection)\n if (!queryIds) {\n queryIds = new Set()\n state.byConnection.set(connection, queryIds)\n }\n queryIds.add(queryId)\n return state\n}\n\nfunction clearNodeDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n const queryNodeIds = state.queryNodes.get(queryId) ?? new Set()\n for (const nodeId of queryNodeIds) {\n const nodeQueries = state.byNode.get(nodeId)\n if (nodeQueries) {\n nodeQueries.delete(queryId)\n }\n }\n return state\n}\n\nfunction clearConnectionDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n for (const [, queryIds] of state.byConnection) {\n queryIds.delete(queryId)\n }\n return state\n}\n\nfunction registerQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IQueryState {\n let query = state.trackedQueries.get(queryId)\n if (!query) {\n query = initialQueryState()\n state.trackedQueries.set(queryId, query)\n }\n return query\n}\n\nfunction registerComponent(\n state: IGatsbyState[\"queries\"],\n componentPath: string\n): IComponentState {\n let component = state.trackedComponents.get(componentPath)\n if (!component) {\n component = initialComponentState()\n component.componentPath = componentPath\n state.trackedComponents.set(componentPath, component)\n }\n return component\n}\n\nfunction trackDirtyQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n if (process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n state.dirtyQueriesListToEmitViaWebsocket.push(queryId)\n }\n\n return state\n}\n\ninterface IWorkerStateChunk {\n workerId: number\n queryStateChunk: IGatsbyState[\"queries\"]\n}\n\nfunction mergeWorkerDataDependencies(\n state: IGatsbyState[\"queries\"],\n workerStateChunk: IWorkerStateChunk\n): IGatsbyState[\"queries\"] {\n const queryState = workerStateChunk.queryStateChunk\n\n // First clear data dependencies for all queries tracked by worker\n for (const queryId of queryState.trackedQueries.keys()) {\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n }\n\n // Now re-add all data deps from worker\n for (const [nodeId, queries] of queryState.byNode) {\n for (const queryId of queries) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n }\n for (const [connectionName, queries] of queryState.byConnection) {\n for (const queryId of queries) {\n state = addConnectionDependency(state, queryId, connectionName)\n }\n }\n return state\n}\n\nfunction assertCorrectWorkerState({\n queryStateChunk,\n workerId,\n}: IWorkerStateChunk): void {\n if (queryStateChunk.deletedQueries.size !== 0) {\n throw new Error(\n `Assertion failed: workerState.deletedQueries.size === 0 (worker #${workerId})`\n )\n }\n if (queryStateChunk.trackedComponents.size !== 0) {\n throw new Error(\n `Assertion failed: queryStateChunk.trackedComponents.size === 0 (worker #${workerId})`\n )\n }\n for (const query of queryStateChunk.trackedQueries.values()) {\n if (query.dirty) {\n throw new Error(\n `Assertion failed: all worker queries are not dirty (worker #${workerId})`\n )\n }\n if (query.running) {\n throw new Error(\n `Assertion failed: all worker queries are not running (worker #${workerId})`\n )\n }\n }\n}\n"],"file":"queries.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/reducers/queries.ts"],"names":["FLAG_DIRTY_NEW_PAGE","FLAG_DIRTY_TEXT","FLAG_DIRTY_DATA","FLAG_DIRTY_PAGE_CONTEXT","FLAG_ERROR_EXTRACTION","FLAG_RUNNING_INFLIGHT","initialState","byNode","Map","byConnection","queryNodes","trackedQueries","trackedComponents","deletedQueries","Set","dirtyQueriesListToEmitViaWebsocket","initialQueryState","dirty","running","initialComponentState","componentPath","query","pages","errors","queriesReducer","state","action","type","console","log","path","payload","get","contextModified","registerQuery","setFlag","trackDirtyQuery","registerComponent","add","delete","apiName","queryId","component","values","clearNodeDependencies","clearConnectionDependencies","clear","hasFlag","set","id","forEach","nodeId","connection","addNodeDependency","addConnectionDependency","node","queriesByNode","queriesByConnection","internal","assertCorrectWorkerState","mergeWorkerDataDependencies","allFlags","flag","nodeQueries","queryIds","queryNodeIds","process","env","GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND","push","workerStateChunk","queryState","queryStateChunk","keys","queries","connectionName","workerId","size","Error"],"mappings":"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","sourcesContent":["import {\n ActionsUnion,\n IComponentState,\n IGatsbyState,\n IQueryState,\n} from \"../types\"\n\ntype QueryId = string // page query path or static query id\ntype ComponentPath = string\ntype NodeId = string\ntype ConnectionName = string\n\nexport const FLAG_DIRTY_NEW_PAGE = 0b0001\nexport const FLAG_DIRTY_TEXT = 0b0010\nexport const FLAG_DIRTY_DATA = 0b0100\nexport const FLAG_DIRTY_PAGE_CONTEXT = 0b1000\n\nexport const FLAG_ERROR_EXTRACTION = 0b0001\n\nexport const FLAG_RUNNING_INFLIGHT = 0b0001\n\nconst initialState = (): IGatsbyState[\"queries\"] => {\n return {\n byNode: new Map<NodeId, Set<QueryId>>(),\n byConnection: new Map<ConnectionName, Set<QueryId>>(),\n queryNodes: new Map<QueryId, Set<NodeId>>(),\n trackedQueries: new Map<QueryId, IQueryState>(),\n trackedComponents: new Map<ComponentPath, IComponentState>(),\n deletedQueries: new Set<QueryId>(),\n dirtyQueriesListToEmitViaWebsocket: [],\n }\n}\n\nconst initialQueryState = (): IQueryState => {\n return {\n dirty: -1, // unknown, must be set right after init\n running: 0,\n }\n}\n\nconst initialComponentState = (): IComponentState => {\n return {\n componentPath: ``,\n query: ``,\n pages: new Set<QueryId>(),\n errors: 0,\n // TODO: staticQueries: new Set<QueryId>()\n }\n}\n\n/**\n * Tracks query dirtiness. Dirty queries are queries that:\n *\n * - depend on nodes or node collections (via `actions.createPageDependency`) that have changed.\n * - have been recently extracted (or their query text has changed)\n * - belong to newly created pages (or pages with modified context)\n *\n * Dirty queries must be re-ran.\n */\nexport function queriesReducer(\n state: IGatsbyState[\"queries\"] = initialState(),\n action: ActionsUnion\n): IGatsbyState[\"queries\"] {\n switch (action.type) {\n case `DELETE_CACHE`:\n return initialState()\n\n case `DELETE_QUERIES_CACHE`:\n console.log(`deleting query cache`)\n return initialState()\n\n case `CREATE_PAGE`: {\n const { path, componentPath } = action.payload\n let query = state.trackedQueries.get(path)\n if (!query || action.contextModified) {\n query = registerQuery(state, path)\n query.dirty = setFlag(\n query.dirty,\n action.contextModified ? FLAG_DIRTY_PAGE_CONTEXT : FLAG_DIRTY_NEW_PAGE\n )\n state = trackDirtyQuery(state, path)\n }\n registerComponent(state, componentPath).pages.add(path)\n state.deletedQueries.delete(path)\n return state\n }\n case `DELETE_PAGE`: {\n // Don't actually remove the page query from trackedQueries, just mark it as \"deleted\". Why?\n // We promote a technique of a consecutive deletePage/createPage calls in onCreatePage hook,\n // see https://www.gatsbyjs.com/docs/creating-and-modifying-pages/#pass-context-to-pages\n // If we remove a query and then re-add, it will be marked as dirty.\n // This is OK for cold cache but with warm cache we will re-run all of those queries (unnecessarily).\n // We will reconcile the state after createPages API call and actually delete those queries.\n state.deletedQueries.add(action.payload.path)\n return state\n }\n case `API_FINISHED`: {\n if (action.payload.apiName !== `createPages`) {\n return state\n }\n for (const queryId of state.deletedQueries) {\n for (const component of state.trackedComponents.values()) {\n component.pages.delete(queryId)\n }\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n state.trackedQueries.delete(queryId)\n }\n state.deletedQueries.clear()\n return state\n }\n case `QUERY_EXTRACTED`: {\n // Note: this action is called even in case of\n // extraction error or missing query (with query === ``)\n // TODO: use hash instead of a query text\n const { componentPath, query } = action.payload\n const component = registerComponent(state, componentPath)\n if (!component) {\n console.log(`reducers/queries`, component, action)\n }\n if (component) {\n if (hasFlag(component.errors, FLAG_ERROR_EXTRACTION)) {\n return state\n }\n if (component.query !== query) {\n // Invalidate all pages associated with a component when query text changes\n for (const queryId of component.pages) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n state = trackDirtyQuery(state, queryId)\n }\n }\n component.query = query\n }\n }\n return state\n }\n case `QUERY_EXTRACTION_GRAPHQL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_ERROR`:\n case `QUERY_EXTRACTION_BABEL_SUCCESS`: {\n const { componentPath } = action.payload\n const component = registerComponent(state, componentPath)\n const set = action.type !== `QUERY_EXTRACTION_BABEL_SUCCESS`\n component.errors = setFlag(component.errors, FLAG_ERROR_EXTRACTION, set)\n return state\n }\n case `REPLACE_STATIC_QUERY`: {\n // Only called when static query text has changed, so no need to compare\n // TODO: unify the behavior?\n const query = registerQuery(state, action.payload.id)\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_TEXT)\n // static queries are not on demand, so skipping tracking which\n // queries were marked dirty recently\n // state = trackDirtyQuery(state, action.payload.id)\n state.deletedQueries.delete(action.payload.id)\n return state\n }\n case `REMOVE_STATIC_QUERY`: {\n state.deletedQueries.add(action.payload)\n return state\n }\n case `CREATE_COMPONENT_DEPENDENCY`: {\n action.payload.forEach(({ path: queryId, nodeId, connection }) => {\n if (nodeId) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n if (connection) {\n state = addConnectionDependency(state, queryId, connection)\n }\n })\n\n return state\n }\n case `QUERY_START`: {\n // Reset data dependencies as they will be updated when running the query\n const { path } = action.payload\n state = clearNodeDependencies(state, path)\n state = clearConnectionDependencies(state, path)\n const query = state.trackedQueries.get(path)\n if (query) {\n query.running = setFlag(query.running, FLAG_RUNNING_INFLIGHT)\n }\n return state\n }\n case `CREATE_NODE`:\n case `DELETE_NODE`: {\n const node = action.payload\n if (!node) {\n return state\n }\n const queriesByNode = state.byNode.get(node.id) ?? []\n const queriesByConnection =\n state.byConnection.get(node.internal.type) ?? []\n\n for (const queryId of queriesByNode) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n for (const queryId of queriesByConnection) {\n const query = state.trackedQueries.get(queryId)\n if (query) {\n query.dirty = setFlag(query.dirty, FLAG_DIRTY_DATA)\n state = trackDirtyQuery(state, queryId)\n }\n }\n return state\n }\n case `PAGE_QUERY_RUN`: {\n const { path } = action.payload\n const query = registerQuery(state, path)\n query.dirty = 0\n query.running = 0 // TODO: also\n return state\n }\n case `SET_PROGRAM_STATUS`: {\n if (action.payload === `BOOTSTRAP_FINISHED`) {\n // Reset the running state (as it could've been persisted)\n for (const [, query] of state.trackedQueries) {\n query.running = 0\n }\n // Reset list of dirty queries (this is used only to notify runtime and it could've been persisted)\n state.dirtyQueriesListToEmitViaWebsocket = []\n }\n return state\n }\n case `QUERY_CLEAR_DIRTY_QUERIES_LIST_TO_EMIT_VIA_WEBSOCKET`: {\n state.dirtyQueriesListToEmitViaWebsocket = []\n return state\n }\n case `MERGE_WORKER_QUERY_STATE`: {\n assertCorrectWorkerState(action.payload)\n\n state = mergeWorkerDataDependencies(state, action.payload)\n return state\n }\n default:\n return state\n }\n}\n\nfunction setFlag(allFlags: number, flag: number, set = true): number {\n if (allFlags < 0) {\n allFlags = 0\n }\n return set ? allFlags | flag : allFlags & ~flag\n}\n\nexport function hasFlag(allFlags: number, flag: number): boolean {\n return allFlags >= 0 && (allFlags & flag) > 0\n}\n\nfunction addNodeDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n nodeId: NodeId\n): IGatsbyState[\"queries\"] {\n // Perf: using two-side maps.\n // Without additional `queryNodes` map we would have to loop through\n // all existing nodes in `clearNodeDependencies` to delete node <-> query dependency\n let nodeQueries = state.byNode.get(nodeId)\n if (!nodeQueries) {\n nodeQueries = new Set<QueryId>()\n state.byNode.set(nodeId, nodeQueries)\n }\n let queryNodes = state.queryNodes.get(queryId)\n if (!queryNodes) {\n queryNodes = new Set<NodeId>()\n state.queryNodes.set(queryId, queryNodes)\n }\n nodeQueries.add(queryId)\n queryNodes.add(nodeId)\n return state\n}\n\nfunction addConnectionDependency(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId,\n connection: ConnectionName\n): IGatsbyState[\"queries\"] {\n // Note: not using two-side maps for connections as associated overhead\n // for small number of elements is greater then benefits, so no perf. gains\n let queryIds = state.byConnection.get(connection)\n if (!queryIds) {\n queryIds = new Set()\n state.byConnection.set(connection, queryIds)\n }\n queryIds.add(queryId)\n return state\n}\n\nfunction clearNodeDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n const queryNodeIds = state.queryNodes.get(queryId) ?? new Set()\n for (const nodeId of queryNodeIds) {\n const nodeQueries = state.byNode.get(nodeId)\n if (nodeQueries) {\n nodeQueries.delete(queryId)\n }\n }\n return state\n}\n\nfunction clearConnectionDependencies(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n for (const [, queryIds] of state.byConnection) {\n queryIds.delete(queryId)\n }\n return state\n}\n\nfunction registerQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IQueryState {\n let query = state.trackedQueries.get(queryId)\n if (!query) {\n query = initialQueryState()\n state.trackedQueries.set(queryId, query)\n }\n return query\n}\n\nfunction registerComponent(\n state: IGatsbyState[\"queries\"],\n componentPath: string\n): IComponentState {\n let component = state.trackedComponents.get(componentPath)\n if (!component) {\n component = initialComponentState()\n component.componentPath = componentPath\n state.trackedComponents.set(componentPath, component)\n }\n return component\n}\n\nfunction trackDirtyQuery(\n state: IGatsbyState[\"queries\"],\n queryId: QueryId\n): IGatsbyState[\"queries\"] {\n if (process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND) {\n state.dirtyQueriesListToEmitViaWebsocket.push(queryId)\n }\n\n return state\n}\n\ninterface IWorkerStateChunk {\n workerId: number\n queryStateChunk: IGatsbyState[\"queries\"]\n}\n\nfunction mergeWorkerDataDependencies(\n state: IGatsbyState[\"queries\"],\n workerStateChunk: IWorkerStateChunk\n): IGatsbyState[\"queries\"] {\n const queryState = workerStateChunk.queryStateChunk\n\n // First clear data dependencies for all queries tracked by worker\n for (const queryId of queryState.trackedQueries.keys()) {\n state = clearNodeDependencies(state, queryId)\n state = clearConnectionDependencies(state, queryId)\n }\n\n // Now re-add all data deps from worker\n for (const [nodeId, queries] of queryState.byNode) {\n for (const queryId of queries) {\n state = addNodeDependency(state, queryId, nodeId)\n }\n }\n for (const [connectionName, queries] of queryState.byConnection) {\n for (const queryId of queries) {\n state = addConnectionDependency(state, queryId, connectionName)\n }\n }\n return state\n}\n\nfunction assertCorrectWorkerState({\n queryStateChunk,\n workerId,\n}: IWorkerStateChunk): void {\n if (queryStateChunk.deletedQueries.size !== 0) {\n throw new Error(\n `Assertion failed: workerState.deletedQueries.size === 0 (worker #${workerId})`\n )\n }\n if (queryStateChunk.trackedComponents.size !== 0) {\n throw new Error(\n `Assertion failed: queryStateChunk.trackedComponents.size === 0 (worker #${workerId})`\n )\n }\n for (const query of queryStateChunk.trackedQueries.values()) {\n if (query.dirty) {\n throw new Error(\n `Assertion failed: all worker queries are not dirty (worker #${workerId})`\n )\n }\n if (query.running) {\n throw new Error(\n `Assertion failed: all worker queries are not running (worker #${workerId})`\n )\n }\n }\n}\n"],"file":"queries.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.tickReducer = void 0;
|
|
5
|
+
|
|
6
|
+
const tickReducer = (state = new Map(), action) => {
|
|
7
|
+
switch (action.type) {
|
|
8
|
+
case `DELETE_CACHE`:
|
|
9
|
+
return new Map();
|
|
10
|
+
|
|
11
|
+
case `SET_CHANGED_NODES`:
|
|
12
|
+
{
|
|
13
|
+
state.set(`changedNodes`, action.payload);
|
|
14
|
+
return state;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
case `SET_CHANGED_PAGES`:
|
|
18
|
+
{
|
|
19
|
+
state.set(`changedPages`, action.payload);
|
|
20
|
+
return state;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
default:
|
|
24
|
+
return state;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.tickReducer = tickReducer;
|
|
29
|
+
//# sourceMappingURL=tick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/redux/reducers/tick.ts"],"names":["tickReducer","state","Map","action","type","set","payload"],"mappings":";;;;;AAAO,MAAMA,WAAW,GAAG,CACzBC,KAA2B,GAAG,IAAIC,GAAJ,EADL,EAEzBC,MAFyB,KAGA;AACzB,UAAQA,MAAM,CAACC,IAAf;AACE,SAAM,cAAN;AACE,aAAO,IAAIF,GAAJ,EAAP;;AAEF,SAAM,mBAAN;AAA0B;AACxBD,QAAAA,KAAK,CAACI,GAAN,CAAW,cAAX,EAA0BF,MAAM,CAACG,OAAjC;AACA,eAAOL,KAAP;AACD;;AAED,SAAM,mBAAN;AAA0B;AACxBA,QAAAA,KAAK,CAACI,GAAN,CAAW,cAAX,EAA0BF,MAAM,CAACG,OAAjC;AACA,eAAOL,KAAP;AACD;;AAED;AACE,aAAOA,KAAP;AAfJ;AAiBD,CArBM","sourcesContent":["export const tickReducer = (\n state: IGatsbyState[\"tick\"] = new Map(),\n action: ActionsUnion\n): IGatsbyState[\"tick\"] => {\n switch (action.type) {\n case `DELETE_CACHE`:\n return new Map()\n\n case `SET_CHANGED_NODES`: {\n state.set(`changedNodes`, action.payload)\n return state\n }\n\n case `SET_CHANGED_PAGES`: {\n state.set(`changedPages`, action.payload)\n return state\n }\n\n default:\n return state\n }\n}\n"],"file":"tick.js"}
|
|
@@ -360,7 +360,8 @@ const runAPI = async (plugin, api, args, activity) => {
|
|
|
360
360
|
});
|
|
361
361
|
const {
|
|
362
362
|
config,
|
|
363
|
-
program
|
|
363
|
+
program,
|
|
364
|
+
tick
|
|
364
365
|
} = store.getState();
|
|
365
366
|
const pathPrefix = program.prefixPaths && config.pathPrefix || ``;
|
|
366
367
|
|
|
@@ -434,6 +435,7 @@ const runAPI = async (plugin, api, args, activity) => {
|
|
|
434
435
|
store,
|
|
435
436
|
emitter,
|
|
436
437
|
getCache,
|
|
438
|
+
tick,
|
|
437
439
|
getNodes,
|
|
438
440
|
getNode,
|
|
439
441
|
getNodesByType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/api-runner-node.js"],"names":["Promise","require","_","chalk","bindActionCreators","origBindActionCreators","memoize","tracer","globalTracer","reporter","stackTrace","codeFrameColumns","fs","getCache","createContentDigest","_createContentDigest","emitter","store","getNodes","getNode","getNodesByType","getNodeAndSavePathDependency","loadNodeContent","getPublicPath","requireGatsbyPlugin","getNonGatsbyCodeFrameFormatted","trackBuildError","decorateEvent","node","internal","contentDigest","undefined","owner","fieldOwners","ignoreType","counter","fields","process","env","BLUEBIRD_DEBUG","BLUEBIRD_LONG_STACK_TRACES","config","longStackTraces","boundPluginActionCreators","doubleBind","boundActionCreators","api","plugin","actionOptions","traceId","deferNodeMutation","defer","actionKey","name","keys","Object","doubleBoundActionCreators","i","length","key","boundActionCreator","args","initAPICallTracing","parentSpan","startSpan","spanName","spanArgs","defaultSpanArgs","childOf","merge","deferredAction","type","resolve","emit","payload","NODE_MUTATION_ACTIONS","deferActions","actions","deferred","forEach","action","getLocalReporter","activity","panicOnBuild","bind","getErrorMapWithPluginName","pluginName","errorMap","entries","reduce","memo","val","extendLocalReporterToCatchPluginErrors","runningActivities","setErrorMap","error","panic","errorMeta","activityTimer","apply","originalStart","start","originalEnd","end","add","delete","createProgress","originalDone","done","getUninitializedCache","message","get","Error","set","del","availableActionsCache","Map","publicPath","runAPI","gatsbyNode","spanOptions","pluginSpan","setTag","publicActions","restrictedActionsAvailableInAPI","availableActions","has","dispatch","program","getState","pathPrefix","prefixPaths","namespacedCreateNodeId","id","tracing","cache","apiFinished","alreadyDisplayed","createPageAction","createPage","warning","stripIndent","bold","possiblyCodeFrame","push","warn","join","localReporter","Set","extendedLocalReporter","endInProgressActivitiesCreatedByThisRun","apiCallArgs","basePath","createNodeId","schema","buildObjectType","buildUnionType","buildInterfaceType","buildInputObjectType","buildEnumType","buildScalarType","pluginOptions","fromCallback","callback","cb","err","finish","e","version","apisRunningById","apisRunningByTraceId","waitingForCasacadeToFinish","apiRunnerNode","pluginSource","plugins","flattenedPlugins","implementingPlugins","filter","nodeAPIs","includes","traceTags","waitForCascadingActions","apiSpanArgs","apiSpan","value","apiRunInstance","span","startTime","Date","toJSON","filename","page","path","argsJson","JSON","stringify","omit","size","currentCount","stopQueuedApiRuns","onAPIRunComplete","actionHandler","on","off","apiRunPromiseOptions","runPromise","GATSBY_EXPERIMENTAL_PARALLEL_SOURCING","map","concurrency","mapSeries","unstable_shouldOnCreateNode","catch","file","parse","find","test","fileName","codeFrame","structuredError","lineNumber","line","columnNumber","column","code","readFileSync","encoding","highlightCode","_e","location","filePath","context","then","results","result","isEmpty","instance","apisByTraceIdCount","module","exports"],"mappings":"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","sourcesContent":["const Promise = require(`bluebird`)\nconst _ = require(`lodash`)\nconst chalk = require(`chalk`)\nconst { bindActionCreators: origBindActionCreators } = require(`redux`)\nconst memoize = require(`memoizee`)\n\nconst bindActionCreators = memoize(origBindActionCreators)\n\nconst tracer = require(`opentracing`).globalTracer()\nconst reporter = require(`gatsby-cli/lib/reporter`)\nconst stackTrace = require(`stack-trace`)\nconst { codeFrameColumns } = require(`@babel/code-frame`)\nconst fs = require(`fs-extra`)\nconst { getCache } = require(`./get-cache`)\nimport { createNodeId } from \"./create-node-id\"\nconst {\n createContentDigest: _createContentDigest,\n} = require(`gatsby-core-utils`)\nimport {\n buildObjectType,\n buildUnionType,\n buildInterfaceType,\n buildInputObjectType,\n buildEnumType,\n buildScalarType,\n} from \"../schema/types/type-builders\"\nconst { emitter, store } = require(`../redux`)\nconst { getNodes, getNode, getNodesByType } = require(`../datastore`)\nconst { getNodeAndSavePathDependency, loadNodeContent } = require(`./nodes`)\nconst { getPublicPath } = require(`./get-public-path`)\nconst { requireGatsbyPlugin } = require(`./require-gatsby-plugin`)\nconst { getNonGatsbyCodeFrameFormatted } = require(`./stack-trace-utils`)\nconst { trackBuildError, decorateEvent } = require(`gatsby-telemetry`)\nimport errorParser from \"./api-runner-error-parser\"\n\n// Override createContentDigest to remove autogenerated data from nodes to\n// ensure consistent digests.\nfunction createContentDigest(node) {\n return _createContentDigest({\n ...node,\n internal: {\n ...node.internal,\n // Remove auto-generated fields that'd prevent\n // creating a consistent contentDigest.\n contentDigest: undefined,\n owner: undefined,\n fieldOwners: undefined,\n ignoreType: undefined,\n counter: undefined,\n },\n fields: undefined,\n })\n}\n\nif (!process.env.BLUEBIRD_DEBUG && !process.env.BLUEBIRD_LONG_STACK_TRACES) {\n // Unless specified - disable longStackTraces\n // as this have severe perf penalty ( http://bluebirdjs.com/docs/api/promise.longstacktraces.html )\n // This is mainly for `gatsby develop` due to NODE_ENV being set to development\n // which cause bluebird to enable longStackTraces\n // `gatsby build` (with NODE_ENV=production) already doesn't enable longStackTraces\n Promise.config({ longStackTraces: false })\n}\n\n// Bind action creators per plugin so we can auto-add\n// metadata to actions they create.\nconst boundPluginActionCreators = {}\nconst doubleBind = (boundActionCreators, api, plugin, actionOptions) => {\n const { traceId, deferNodeMutation } = actionOptions\n const defer = deferNodeMutation ? `defer-node-mutation` : ``\n const actionKey = plugin.name + api + traceId + defer\n if (boundPluginActionCreators[actionKey]) {\n return boundPluginActionCreators[actionKey]\n } else {\n const keys = Object.keys(boundActionCreators)\n const doubleBoundActionCreators = {}\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n const boundActionCreator = boundActionCreators[key]\n if (typeof boundActionCreator === `function`) {\n doubleBoundActionCreators[key] = (...args) => {\n // Let action callers override who the plugin is. Shouldn't be\n // used that often.\n if (args.length === 1) {\n return boundActionCreator(args[0], plugin, actionOptions)\n } else if (args.length === 2) {\n return boundActionCreator(args[0], args[1], actionOptions)\n }\n return undefined\n }\n }\n }\n boundPluginActionCreators[actionKey] = doubleBoundActionCreators\n return doubleBoundActionCreators\n }\n}\n\nconst initAPICallTracing = parentSpan => {\n const startSpan = (spanName, spanArgs = {}) => {\n const defaultSpanArgs = { childOf: parentSpan }\n\n return tracer.startSpan(spanName, _.merge(defaultSpanArgs, spanArgs))\n }\n\n return {\n tracer,\n parentSpan,\n startSpan,\n }\n}\n\nconst deferredAction =\n type =>\n (...args) => {\n // Regular createNode returns a Promise, but when deferred we need\n // to wrap it in another which we resolve when it's actually called\n if (type === `createNode`) {\n return new Promise(resolve => {\n emitter.emit(`ENQUEUE_NODE_MUTATION`, {\n type,\n payload: args,\n resolve,\n })\n })\n }\n return emitter.emit(`ENQUEUE_NODE_MUTATION`, {\n type,\n payload: args,\n })\n }\n\nconst NODE_MUTATION_ACTIONS = [\n `createNode`,\n `deleteNode`,\n `touchNode`,\n `createParentChildLink`,\n `createNodeField`,\n]\n\nconst deferActions = actions => {\n const deferred = { ...actions }\n NODE_MUTATION_ACTIONS.forEach(action => {\n deferred[action] = deferredAction(action)\n })\n return deferred\n}\n\n/**\n * Create a local reporter\n * Used to override reporter methods with activity methods\n */\nfunction getLocalReporter({ activity, reporter }) {\n // If we have an activity, bind panicOnBuild to the activities method to\n // join them\n if (activity) {\n return { ...reporter, panicOnBuild: activity.panicOnBuild.bind(activity) }\n }\n\n return reporter\n}\n\nfunction getErrorMapWithPluginName(pluginName, errorMap) {\n const entries = Object.entries(errorMap)\n\n return entries.reduce((memo, [key, val]) => {\n memo[`${pluginName}_${key}`] = val\n\n return memo\n }, {})\n}\n\nfunction extendLocalReporterToCatchPluginErrors({\n reporter,\n pluginName,\n runningActivities,\n}) {\n let setErrorMap\n\n let error = reporter.error\n let panic = reporter.panic\n let panicOnBuild = reporter.panicOnBuild\n\n if (pluginName && reporter?.setErrorMap) {\n setErrorMap = errorMap =>\n reporter.setErrorMap(getErrorMapWithPluginName(pluginName, errorMap))\n\n error = (errorMeta, error) => {\n reporter.error(errorMeta, error, pluginName)\n }\n\n panic = (errorMeta, error) => {\n reporter.panic(errorMeta, error, pluginName)\n }\n\n panicOnBuild = (errorMeta, error) => {\n reporter.panicOnBuild(errorMeta, error, pluginName)\n }\n }\n\n return {\n ...reporter,\n setErrorMap,\n error,\n panic,\n panicOnBuild,\n activityTimer: (...args) => {\n // eslint-disable-next-line prefer-spread\n const activity = reporter.activityTimer.apply(reporter, args)\n\n const originalStart = activity.start\n const originalEnd = activity.end\n\n activity.start = () => {\n originalStart.apply(activity)\n runningActivities.add(activity)\n }\n\n activity.end = () => {\n originalEnd.apply(activity)\n runningActivities.delete(activity)\n }\n\n return activity\n },\n\n createProgress: (...args) => {\n // eslint-disable-next-line prefer-spread\n const activity = reporter.createProgress.apply(reporter, args)\n\n const originalStart = activity.start\n const originalEnd = activity.end\n const originalDone = activity.done\n\n activity.start = () => {\n originalStart.apply(activity)\n runningActivities.add(activity)\n }\n\n activity.end = () => {\n originalEnd.apply(activity)\n runningActivities.delete(activity)\n }\n\n activity.done = () => {\n originalDone.apply(activity)\n runningActivities.delete(activity)\n }\n\n return activity\n },\n }\n}\n\nconst getUninitializedCache = plugin => {\n const message =\n `Usage of \"cache\" instance in \"onPreInit\" API is not supported as ` +\n `this API runs before cache initialization` +\n (plugin && plugin !== `default-site-plugin` ? ` (called in ${plugin})` : ``)\n\n return {\n // GatsbyCache\n async get() {\n throw new Error(message)\n },\n async set() {\n throw new Error(message)\n },\n async del() {\n throw new Error(message)\n },\n }\n}\n\nconst availableActionsCache = new Map()\nlet publicPath\nconst runAPI = async (plugin, api, args, activity) => {\n const gatsbyNode = requireGatsbyPlugin(plugin, `gatsby-node`)\n\n if (gatsbyNode[api]) {\n const parentSpan = args && args.parentSpan\n const spanOptions = parentSpan ? { childOf: parentSpan } : {}\n let pluginSpan\n if (parentSpan) {\n pluginSpan = tracer.startSpan(`run-plugin`, spanOptions)\n\n pluginSpan.setTag(`api`, api)\n pluginSpan.setTag(`plugin`, plugin.name)\n }\n const {\n publicActions,\n restrictedActionsAvailableInAPI,\n } = require(`../redux/actions`)\n\n let availableActions\n if (availableActionsCache.has(api)) {\n availableActions = availableActionsCache.get(api)\n } else {\n availableActions = {\n ...publicActions,\n ...(restrictedActionsAvailableInAPI[api] || {}),\n }\n\n availableActionsCache.set(api, availableActions)\n }\n\n let boundActionCreators = bindActionCreators(\n availableActions,\n store.dispatch\n )\n\n if (args.deferNodeMutation) {\n boundActionCreators = deferActions(boundActionCreators)\n }\n\n const doubleBoundActionCreators = doubleBind(\n boundActionCreators,\n api,\n plugin,\n { ...args, parentSpan: pluginSpan, activity }\n )\n\n const { config, program } = store.getState()\n\n const pathPrefix = (program.prefixPaths && config.pathPrefix) || ``\n\n if (typeof publicPath === `undefined`) {\n publicPath = getPublicPath({ ...config, ...program }, ``)\n }\n\n const namespacedCreateNodeId = id => createNodeId(id, plugin.name)\n\n const tracing = initAPICallTracing(pluginSpan)\n\n // See https://github.com/gatsbyjs/gatsby/issues/11369\n const cache =\n api === `onPreInit`\n ? getUninitializedCache(plugin.name)\n : getCache(plugin.name)\n\n // Ideally this would be more abstracted and applied to more situations, but right now\n // this can be potentially breaking so targeting `createPages` API and `createPage` action\n let actions = doubleBoundActionCreators\n let apiFinished = false\n if (api === `createPages`) {\n let alreadyDisplayed = false\n const createPageAction = actions.createPage\n // create new actions object with wrapped createPage action\n // doubleBoundActionCreators is memoized, so we can't just\n // reassign createPage field as this would cause this extra logic\n // to be used in subsequent APIs and we only want to target this `createPages` call.\n actions = {\n ...actions,\n createPage: (...args) => {\n createPageAction(...args)\n if (apiFinished && !alreadyDisplayed) {\n const warning = [\n reporter.stripIndent(`\n Action ${chalk.bold(\n `createPage`\n )} was called outside of its expected asynchronous lifecycle ${chalk.bold(\n `createPages`\n )} in ${chalk.bold(plugin.name)}.\n Ensure that you return a Promise from ${chalk.bold(\n `createPages`\n )} and are awaiting any asynchronous method invocations (like ${chalk.bold(\n `graphql`\n )} or http requests).\n For more info and debugging tips: see ${chalk.bold(\n `https://gatsby.dev/sync-actions`\n )}\n `),\n ]\n\n const possiblyCodeFrame = getNonGatsbyCodeFrameFormatted()\n if (possiblyCodeFrame) {\n warning.push(possiblyCodeFrame)\n }\n\n reporter.warn(warning.join(`\\n\\n`))\n alreadyDisplayed = true\n }\n },\n }\n }\n\n const localReporter = getLocalReporter({ activity, reporter })\n\n const runningActivities = new Set()\n\n const extendedLocalReporter = extendLocalReporterToCatchPluginErrors({\n reporter: localReporter,\n pluginName: plugin.name,\n runningActivities,\n })\n\n const endInProgressActivitiesCreatedByThisRun = () => {\n runningActivities.forEach(activity => activity.end())\n }\n\n const apiCallArgs = [\n {\n ...args,\n parentSpan: pluginSpan,\n basePath: pathPrefix,\n pathPrefix: publicPath,\n actions,\n loadNodeContent,\n store,\n emitter,\n getCache,\n getNodes,\n getNode,\n getNodesByType,\n reporter: extendedLocalReporter,\n getNodeAndSavePathDependency,\n cache,\n createNodeId: namespacedCreateNodeId,\n createContentDigest,\n tracing,\n schema: {\n buildObjectType,\n buildUnionType,\n buildInterfaceType,\n buildInputObjectType,\n buildEnumType,\n buildScalarType,\n },\n },\n plugin.pluginOptions,\n ]\n\n // If the plugin is using a callback use that otherwise\n // expect a Promise to be returned.\n if (gatsbyNode[api].length === 3) {\n return Promise.fromCallback(callback => {\n const cb = (err, val) => {\n pluginSpan?.finish()\n apiFinished = true\n endInProgressActivitiesCreatedByThisRun()\n callback(err, val)\n }\n\n try {\n gatsbyNode[api](...apiCallArgs, cb)\n } catch (e) {\n trackBuildError(api, {\n error: e,\n pluginName: `${plugin.name}@${plugin.version}`,\n })\n throw e\n }\n })\n } else {\n try {\n return await gatsbyNode[api](...apiCallArgs)\n } finally {\n pluginSpan?.finish()\n apiFinished = true\n endInProgressActivitiesCreatedByThisRun()\n }\n }\n }\n\n return null\n}\n\nconst apisRunningById = new Map()\nconst apisRunningByTraceId = new Map()\nlet waitingForCasacadeToFinish = []\n\nfunction apiRunnerNode(api, args = {}, { pluginSource, activity } = {}) {\n const plugins = store.getState().flattenedPlugins\n\n // Get the list of plugins that implement this API.\n // Also: Break infinite loops. Sometimes a plugin will implement an API and\n // call an action which will trigger the same API being called.\n // `onCreatePage` is the only example right now. In these cases, we should\n // avoid calling the originating plugin again.\n let implementingPlugins = plugins.filter(\n plugin => plugin.nodeAPIs.includes(api) && plugin.name !== pluginSource\n )\n\n if (api === `sourceNodes` && args.pluginName) {\n implementingPlugins = implementingPlugins.filter(\n plugin => plugin.name === args.pluginName\n )\n }\n\n // If there's no implementing plugins, return early.\n if (implementingPlugins.length === 0) {\n return null\n }\n\n return new Promise(resolve => {\n const { parentSpan, traceId, traceTags, waitForCascadingActions } = args\n const apiSpanArgs = parentSpan ? { childOf: parentSpan } : {}\n let apiSpan\n if (api !== `setFieldsOnGraphQLNodeType`) {\n apiSpan = tracer.startSpan(`run-api`, apiSpanArgs)\n\n apiSpan.setTag(`api`, api)\n _.forEach(traceTags, (value, key) => {\n apiSpan.setTag(key, value)\n })\n }\n\n const apiRunInstance = {\n api,\n args,\n pluginSource,\n resolve,\n span: apiSpan,\n startTime: new Date().toJSON(),\n traceId,\n }\n\n // Generate IDs for api runs. Most IDs we generate from the args\n // but some API calls can have very large argument objects so we\n // have special ways of generating IDs for those to avoid stringifying\n // large objects.\n let id\n if (api === `setFieldsOnGraphQLNodeType`) {\n id = `${api}${apiRunInstance.startTime}${args.type.name}${traceId}`\n } else if (api === `onCreateNode`) {\n id = `${api}${apiRunInstance.startTime}${args.node.internal.contentDigest}${traceId}`\n } else if (api === `preprocessSource`) {\n id = `${api}${apiRunInstance.startTime}${args.filename}${traceId}`\n } else if (api === `onCreatePage`) {\n id = `${api}${apiRunInstance.startTime}${args.page.path}${traceId}`\n } else {\n // When tracing is turned on, the `args` object will have a\n // `parentSpan` field that can be quite large. So we omit it\n // before calling stringify\n const argsJson = JSON.stringify(_.omit(args, `parentSpan`))\n id = `${api}|${apiRunInstance.startTime}|${apiRunInstance.traceId}|${argsJson}`\n }\n apiRunInstance.id = id\n\n if (waitForCascadingActions) {\n waitingForCasacadeToFinish.push(apiRunInstance)\n }\n\n if (apisRunningById.size === 0) {\n emitter.emit(`API_RUNNING_START`)\n }\n\n apisRunningById.set(apiRunInstance.id, apiRunInstance)\n if (apisRunningByTraceId.has(apiRunInstance.traceId)) {\n const currentCount = apisRunningByTraceId.get(apiRunInstance.traceId)\n apisRunningByTraceId.set(apiRunInstance.traceId, currentCount + 1)\n } else {\n apisRunningByTraceId.set(apiRunInstance.traceId, 1)\n }\n\n let stopQueuedApiRuns = false\n let onAPIRunComplete = null\n if (api === `onCreatePage`) {\n const path = args.page.path\n const actionHandler = action => {\n if (action.payload.path === path) {\n stopQueuedApiRuns = true\n }\n }\n emitter.on(`DELETE_PAGE`, actionHandler)\n onAPIRunComplete = () => {\n emitter.off(`DELETE_PAGE`, actionHandler)\n }\n }\n\n let apiRunPromiseOptions = {}\n let runPromise\n if (\n api === `sourceNodes` &&\n process.env.GATSBY_EXPERIMENTAL_PARALLEL_SOURCING\n ) {\n runPromise = Promise.map\n apiRunPromiseOptions.concurrency = 20\n } else {\n runPromise = Promise.mapSeries\n apiRunPromiseOptions = undefined\n }\n\n runPromise(\n implementingPlugins,\n plugin => {\n if (stopQueuedApiRuns) {\n return null\n }\n\n const gatsbyNode = requireGatsbyPlugin(plugin, `gatsby-node`)\n const pluginName =\n plugin.name === `default-site-plugin` ? `gatsby-node.js` : plugin.name\n\n // TODO: rethink createNode API to handle this better\n if (\n api === `onCreateNode` &&\n gatsbyNode?.unstable_shouldOnCreateNode && // Don't bail if this api is not exported\n !gatsbyNode.unstable_shouldOnCreateNode(\n { node: args.node },\n plugin.pluginOptions\n )\n ) {\n // Do not try to schedule an async event for this node for this plugin\n return null\n }\n\n return new Promise(resolve => {\n resolve(\n runAPI(plugin, api, { ...args, parentSpan: apiSpan }, activity)\n )\n }).catch(err => {\n decorateEvent(`BUILD_PANIC`, {\n pluginName: `${plugin.name}@${plugin.version}`,\n })\n\n const localReporter = getLocalReporter({ activity, reporter })\n\n const file = stackTrace\n .parse(err)\n .find(file => /gatsby-node/.test(file.fileName))\n\n let codeFrame = ``\n const structuredError = errorParser({ err })\n\n if (file) {\n const { fileName, lineNumber: line, columnNumber: column } = file\n\n try {\n const code = fs.readFileSync(fileName, { encoding: `utf-8` })\n codeFrame = codeFrameColumns(\n code,\n {\n start: {\n line,\n column,\n },\n },\n {\n highlightCode: true,\n }\n )\n } catch (_e) {\n // sometimes stack trace point to not existing file\n // particularly when file is transpiled and path actually changes\n // (like pointing to not existing `src` dir or original typescript file)\n }\n\n structuredError.location = {\n start: { line: line, column: column },\n }\n structuredError.filePath = fileName\n }\n\n structuredError.context = {\n ...structuredError.context,\n pluginName,\n api,\n codeFrame,\n }\n\n localReporter.panicOnBuild(structuredError)\n\n return null\n })\n },\n apiRunPromiseOptions\n ).then(results => {\n if (onAPIRunComplete) {\n onAPIRunComplete()\n }\n // Remove runner instance\n apisRunningById.delete(apiRunInstance.id)\n const currentCount = apisRunningByTraceId.get(apiRunInstance.traceId)\n apisRunningByTraceId.set(apiRunInstance.traceId, currentCount - 1)\n\n if (apisRunningById.size === 0) {\n emitter.emit(`API_RUNNING_QUEUE_EMPTY`)\n }\n\n // Filter empty results\n apiRunInstance.results = results.filter(result => !_.isEmpty(result))\n\n // Filter out empty responses and return if the\n // api caller isn't waiting for cascading actions to finish.\n if (!waitForCascadingActions) {\n apiSpan?.finish()\n resolve(apiRunInstance.results)\n }\n\n // Check if any of our waiters are done.\n waitingForCasacadeToFinish = waitingForCasacadeToFinish.filter(\n instance => {\n // If none of its trace IDs are running, it's done.\n const apisByTraceIdCount = apisRunningByTraceId.get(instance.traceId)\n if (apisByTraceIdCount === 0) {\n instance.span?.finish()\n instance.resolve(instance.results)\n return false\n } else {\n return true\n }\n }\n )\n return\n })\n })\n}\n\nmodule.exports = apiRunnerNode\n"],"file":"api-runner-node.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/api-runner-node.js"],"names":["Promise","require","_","chalk","bindActionCreators","origBindActionCreators","memoize","tracer","globalTracer","reporter","stackTrace","codeFrameColumns","fs","getCache","createContentDigest","_createContentDigest","emitter","store","getNodes","getNode","getNodesByType","getNodeAndSavePathDependency","loadNodeContent","getPublicPath","requireGatsbyPlugin","getNonGatsbyCodeFrameFormatted","trackBuildError","decorateEvent","node","internal","contentDigest","undefined","owner","fieldOwners","ignoreType","counter","fields","process","env","BLUEBIRD_DEBUG","BLUEBIRD_LONG_STACK_TRACES","config","longStackTraces","boundPluginActionCreators","doubleBind","boundActionCreators","api","plugin","actionOptions","traceId","deferNodeMutation","defer","actionKey","name","keys","Object","doubleBoundActionCreators","i","length","key","boundActionCreator","args","initAPICallTracing","parentSpan","startSpan","spanName","spanArgs","defaultSpanArgs","childOf","merge","deferredAction","type","resolve","emit","payload","NODE_MUTATION_ACTIONS","deferActions","actions","deferred","forEach","action","getLocalReporter","activity","panicOnBuild","bind","getErrorMapWithPluginName","pluginName","errorMap","entries","reduce","memo","val","extendLocalReporterToCatchPluginErrors","runningActivities","setErrorMap","error","panic","errorMeta","activityTimer","apply","originalStart","start","originalEnd","end","add","delete","createProgress","originalDone","done","getUninitializedCache","message","get","Error","set","del","availableActionsCache","Map","publicPath","runAPI","gatsbyNode","spanOptions","pluginSpan","setTag","publicActions","restrictedActionsAvailableInAPI","availableActions","has","dispatch","program","tick","getState","pathPrefix","prefixPaths","namespacedCreateNodeId","id","tracing","cache","apiFinished","alreadyDisplayed","createPageAction","createPage","warning","stripIndent","bold","possiblyCodeFrame","push","warn","join","localReporter","Set","extendedLocalReporter","endInProgressActivitiesCreatedByThisRun","apiCallArgs","basePath","createNodeId","schema","buildObjectType","buildUnionType","buildInterfaceType","buildInputObjectType","buildEnumType","buildScalarType","pluginOptions","fromCallback","callback","cb","err","finish","e","version","apisRunningById","apisRunningByTraceId","waitingForCasacadeToFinish","apiRunnerNode","pluginSource","plugins","flattenedPlugins","implementingPlugins","filter","nodeAPIs","includes","traceTags","waitForCascadingActions","apiSpanArgs","apiSpan","value","apiRunInstance","span","startTime","Date","toJSON","filename","page","path","argsJson","JSON","stringify","omit","size","currentCount","stopQueuedApiRuns","onAPIRunComplete","actionHandler","on","off","apiRunPromiseOptions","runPromise","GATSBY_EXPERIMENTAL_PARALLEL_SOURCING","map","concurrency","mapSeries","unstable_shouldOnCreateNode","catch","file","parse","find","test","fileName","codeFrame","structuredError","lineNumber","line","columnNumber","column","code","readFileSync","encoding","highlightCode","_e","location","filePath","context","then","results","result","isEmpty","instance","apisByTraceIdCount","module","exports"],"mappings":"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","sourcesContent":["const Promise = require(`bluebird`)\nconst _ = require(`lodash`)\nconst chalk = require(`chalk`)\nconst { bindActionCreators: origBindActionCreators } = require(`redux`)\nconst memoize = require(`memoizee`)\n\nconst bindActionCreators = memoize(origBindActionCreators)\n\nconst tracer = require(`opentracing`).globalTracer()\nconst reporter = require(`gatsby-cli/lib/reporter`)\nconst stackTrace = require(`stack-trace`)\nconst { codeFrameColumns } = require(`@babel/code-frame`)\nconst fs = require(`fs-extra`)\nconst { getCache } = require(`./get-cache`)\nimport { createNodeId } from \"./create-node-id\"\nconst {\n createContentDigest: _createContentDigest,\n} = require(`gatsby-core-utils`)\nimport {\n buildObjectType,\n buildUnionType,\n buildInterfaceType,\n buildInputObjectType,\n buildEnumType,\n buildScalarType,\n} from \"../schema/types/type-builders\"\nconst { emitter, store } = require(`../redux`)\nconst { getNodes, getNode, getNodesByType } = require(`../datastore`)\nconst { getNodeAndSavePathDependency, loadNodeContent } = require(`./nodes`)\nconst { getPublicPath } = require(`./get-public-path`)\nconst { requireGatsbyPlugin } = require(`./require-gatsby-plugin`)\nconst { getNonGatsbyCodeFrameFormatted } = require(`./stack-trace-utils`)\nconst { trackBuildError, decorateEvent } = require(`gatsby-telemetry`)\nimport errorParser from \"./api-runner-error-parser\"\n\n// Override createContentDigest to remove autogenerated data from nodes to\n// ensure consistent digests.\nfunction createContentDigest(node) {\n return _createContentDigest({\n ...node,\n internal: {\n ...node.internal,\n // Remove auto-generated fields that'd prevent\n // creating a consistent contentDigest.\n contentDigest: undefined,\n owner: undefined,\n fieldOwners: undefined,\n ignoreType: undefined,\n counter: undefined,\n },\n fields: undefined,\n })\n}\n\nif (!process.env.BLUEBIRD_DEBUG && !process.env.BLUEBIRD_LONG_STACK_TRACES) {\n // Unless specified - disable longStackTraces\n // as this have severe perf penalty ( http://bluebirdjs.com/docs/api/promise.longstacktraces.html )\n // This is mainly for `gatsby develop` due to NODE_ENV being set to development\n // which cause bluebird to enable longStackTraces\n // `gatsby build` (with NODE_ENV=production) already doesn't enable longStackTraces\n Promise.config({ longStackTraces: false })\n}\n\n// Bind action creators per plugin so we can auto-add\n// metadata to actions they create.\nconst boundPluginActionCreators = {}\nconst doubleBind = (boundActionCreators, api, plugin, actionOptions) => {\n const { traceId, deferNodeMutation } = actionOptions\n const defer = deferNodeMutation ? `defer-node-mutation` : ``\n const actionKey = plugin.name + api + traceId + defer\n if (boundPluginActionCreators[actionKey]) {\n return boundPluginActionCreators[actionKey]\n } else {\n const keys = Object.keys(boundActionCreators)\n const doubleBoundActionCreators = {}\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n const boundActionCreator = boundActionCreators[key]\n if (typeof boundActionCreator === `function`) {\n doubleBoundActionCreators[key] = (...args) => {\n // Let action callers override who the plugin is. Shouldn't be\n // used that often.\n if (args.length === 1) {\n return boundActionCreator(args[0], plugin, actionOptions)\n } else if (args.length === 2) {\n return boundActionCreator(args[0], args[1], actionOptions)\n }\n return undefined\n }\n }\n }\n boundPluginActionCreators[actionKey] = doubleBoundActionCreators\n return doubleBoundActionCreators\n }\n}\n\nconst initAPICallTracing = parentSpan => {\n const startSpan = (spanName, spanArgs = {}) => {\n const defaultSpanArgs = { childOf: parentSpan }\n\n return tracer.startSpan(spanName, _.merge(defaultSpanArgs, spanArgs))\n }\n\n return {\n tracer,\n parentSpan,\n startSpan,\n }\n}\n\nconst deferredAction =\n type =>\n (...args) => {\n // Regular createNode returns a Promise, but when deferred we need\n // to wrap it in another which we resolve when it's actually called\n if (type === `createNode`) {\n return new Promise(resolve => {\n emitter.emit(`ENQUEUE_NODE_MUTATION`, {\n type,\n payload: args,\n resolve,\n })\n })\n }\n return emitter.emit(`ENQUEUE_NODE_MUTATION`, {\n type,\n payload: args,\n })\n }\n\nconst NODE_MUTATION_ACTIONS = [\n `createNode`,\n `deleteNode`,\n `touchNode`,\n `createParentChildLink`,\n `createNodeField`,\n]\n\nconst deferActions = actions => {\n const deferred = { ...actions }\n NODE_MUTATION_ACTIONS.forEach(action => {\n deferred[action] = deferredAction(action)\n })\n return deferred\n}\n\n/**\n * Create a local reporter\n * Used to override reporter methods with activity methods\n */\nfunction getLocalReporter({ activity, reporter }) {\n // If we have an activity, bind panicOnBuild to the activities method to\n // join them\n if (activity) {\n return { ...reporter, panicOnBuild: activity.panicOnBuild.bind(activity) }\n }\n\n return reporter\n}\n\nfunction getErrorMapWithPluginName(pluginName, errorMap) {\n const entries = Object.entries(errorMap)\n\n return entries.reduce((memo, [key, val]) => {\n memo[`${pluginName}_${key}`] = val\n\n return memo\n }, {})\n}\n\nfunction extendLocalReporterToCatchPluginErrors({\n reporter,\n pluginName,\n runningActivities,\n}) {\n let setErrorMap\n\n let error = reporter.error\n let panic = reporter.panic\n let panicOnBuild = reporter.panicOnBuild\n\n if (pluginName && reporter?.setErrorMap) {\n setErrorMap = errorMap =>\n reporter.setErrorMap(getErrorMapWithPluginName(pluginName, errorMap))\n\n error = (errorMeta, error) => {\n reporter.error(errorMeta, error, pluginName)\n }\n\n panic = (errorMeta, error) => {\n reporter.panic(errorMeta, error, pluginName)\n }\n\n panicOnBuild = (errorMeta, error) => {\n reporter.panicOnBuild(errorMeta, error, pluginName)\n }\n }\n\n return {\n ...reporter,\n setErrorMap,\n error,\n panic,\n panicOnBuild,\n activityTimer: (...args) => {\n // eslint-disable-next-line prefer-spread\n const activity = reporter.activityTimer.apply(reporter, args)\n\n const originalStart = activity.start\n const originalEnd = activity.end\n\n activity.start = () => {\n originalStart.apply(activity)\n runningActivities.add(activity)\n }\n\n activity.end = () => {\n originalEnd.apply(activity)\n runningActivities.delete(activity)\n }\n\n return activity\n },\n\n createProgress: (...args) => {\n // eslint-disable-next-line prefer-spread\n const activity = reporter.createProgress.apply(reporter, args)\n\n const originalStart = activity.start\n const originalEnd = activity.end\n const originalDone = activity.done\n\n activity.start = () => {\n originalStart.apply(activity)\n runningActivities.add(activity)\n }\n\n activity.end = () => {\n originalEnd.apply(activity)\n runningActivities.delete(activity)\n }\n\n activity.done = () => {\n originalDone.apply(activity)\n runningActivities.delete(activity)\n }\n\n return activity\n },\n }\n}\n\nconst getUninitializedCache = plugin => {\n const message =\n `Usage of \"cache\" instance in \"onPreInit\" API is not supported as ` +\n `this API runs before cache initialization` +\n (plugin && plugin !== `default-site-plugin` ? ` (called in ${plugin})` : ``)\n\n return {\n // GatsbyCache\n async get() {\n throw new Error(message)\n },\n async set() {\n throw new Error(message)\n },\n async del() {\n throw new Error(message)\n },\n }\n}\n\nconst availableActionsCache = new Map()\nlet publicPath\nconst runAPI = async (plugin, api, args, activity) => {\n const gatsbyNode = requireGatsbyPlugin(plugin, `gatsby-node`)\n\n if (gatsbyNode[api]) {\n const parentSpan = args && args.parentSpan\n const spanOptions = parentSpan ? { childOf: parentSpan } : {}\n let pluginSpan\n if (parentSpan) {\n pluginSpan = tracer.startSpan(`run-plugin`, spanOptions)\n\n pluginSpan.setTag(`api`, api)\n pluginSpan.setTag(`plugin`, plugin.name)\n }\n const {\n publicActions,\n restrictedActionsAvailableInAPI,\n } = require(`../redux/actions`)\n\n let availableActions\n if (availableActionsCache.has(api)) {\n availableActions = availableActionsCache.get(api)\n } else {\n availableActions = {\n ...publicActions,\n ...(restrictedActionsAvailableInAPI[api] || {}),\n }\n\n availableActionsCache.set(api, availableActions)\n }\n\n let boundActionCreators = bindActionCreators(\n availableActions,\n store.dispatch\n )\n\n if (args.deferNodeMutation) {\n boundActionCreators = deferActions(boundActionCreators)\n }\n\n const doubleBoundActionCreators = doubleBind(\n boundActionCreators,\n api,\n plugin,\n { ...args, parentSpan: pluginSpan, activity }\n )\n\n const { config, program, tick } = store.getState()\n\n const pathPrefix = (program.prefixPaths && config.pathPrefix) || ``\n\n if (typeof publicPath === `undefined`) {\n publicPath = getPublicPath({ ...config, ...program }, ``)\n }\n\n const namespacedCreateNodeId = id => createNodeId(id, plugin.name)\n\n const tracing = initAPICallTracing(pluginSpan)\n\n // See https://github.com/gatsbyjs/gatsby/issues/11369\n const cache =\n api === `onPreInit`\n ? getUninitializedCache(plugin.name)\n : getCache(plugin.name)\n\n // Ideally this would be more abstracted and applied to more situations, but right now\n // this can be potentially breaking so targeting `createPages` API and `createPage` action\n let actions = doubleBoundActionCreators\n let apiFinished = false\n if (api === `createPages`) {\n let alreadyDisplayed = false\n const createPageAction = actions.createPage\n // create new actions object with wrapped createPage action\n // doubleBoundActionCreators is memoized, so we can't just\n // reassign createPage field as this would cause this extra logic\n // to be used in subsequent APIs and we only want to target this `createPages` call.\n actions = {\n ...actions,\n createPage: (...args) => {\n createPageAction(...args)\n if (apiFinished && !alreadyDisplayed) {\n const warning = [\n reporter.stripIndent(`\n Action ${chalk.bold(\n `createPage`\n )} was called outside of its expected asynchronous lifecycle ${chalk.bold(\n `createPages`\n )} in ${chalk.bold(plugin.name)}.\n Ensure that you return a Promise from ${chalk.bold(\n `createPages`\n )} and are awaiting any asynchronous method invocations (like ${chalk.bold(\n `graphql`\n )} or http requests).\n For more info and debugging tips: see ${chalk.bold(\n `https://gatsby.dev/sync-actions`\n )}\n `),\n ]\n\n const possiblyCodeFrame = getNonGatsbyCodeFrameFormatted()\n if (possiblyCodeFrame) {\n warning.push(possiblyCodeFrame)\n }\n\n reporter.warn(warning.join(`\\n\\n`))\n alreadyDisplayed = true\n }\n },\n }\n }\n\n const localReporter = getLocalReporter({ activity, reporter })\n\n const runningActivities = new Set()\n\n const extendedLocalReporter = extendLocalReporterToCatchPluginErrors({\n reporter: localReporter,\n pluginName: plugin.name,\n runningActivities,\n })\n\n const endInProgressActivitiesCreatedByThisRun = () => {\n runningActivities.forEach(activity => activity.end())\n }\n\n const apiCallArgs = [\n {\n ...args,\n parentSpan: pluginSpan,\n basePath: pathPrefix,\n pathPrefix: publicPath,\n actions,\n loadNodeContent,\n store,\n emitter,\n getCache,\n tick,\n getNodes,\n getNode,\n getNodesByType,\n reporter: extendedLocalReporter,\n getNodeAndSavePathDependency,\n cache,\n createNodeId: namespacedCreateNodeId,\n createContentDigest,\n tracing,\n schema: {\n buildObjectType,\n buildUnionType,\n buildInterfaceType,\n buildInputObjectType,\n buildEnumType,\n buildScalarType,\n },\n },\n plugin.pluginOptions,\n ]\n\n // If the plugin is using a callback use that otherwise\n // expect a Promise to be returned.\n if (gatsbyNode[api].length === 3) {\n return Promise.fromCallback(callback => {\n const cb = (err, val) => {\n pluginSpan?.finish()\n apiFinished = true\n endInProgressActivitiesCreatedByThisRun()\n callback(err, val)\n }\n\n try {\n gatsbyNode[api](...apiCallArgs, cb)\n } catch (e) {\n trackBuildError(api, {\n error: e,\n pluginName: `${plugin.name}@${plugin.version}`,\n })\n throw e\n }\n })\n } else {\n try {\n return await gatsbyNode[api](...apiCallArgs)\n } finally {\n pluginSpan?.finish()\n apiFinished = true\n endInProgressActivitiesCreatedByThisRun()\n }\n }\n }\n\n return null\n}\n\nconst apisRunningById = new Map()\nconst apisRunningByTraceId = new Map()\nlet waitingForCasacadeToFinish = []\n\nfunction apiRunnerNode(api, args = {}, { pluginSource, activity } = {}) {\n const plugins = store.getState().flattenedPlugins\n\n // Get the list of plugins that implement this API.\n // Also: Break infinite loops. Sometimes a plugin will implement an API and\n // call an action which will trigger the same API being called.\n // `onCreatePage` is the only example right now. In these cases, we should\n // avoid calling the originating plugin again.\n let implementingPlugins = plugins.filter(\n plugin => plugin.nodeAPIs.includes(api) && plugin.name !== pluginSource\n )\n\n if (api === `sourceNodes` && args.pluginName) {\n implementingPlugins = implementingPlugins.filter(\n plugin => plugin.name === args.pluginName\n )\n }\n\n // If there's no implementing plugins, return early.\n if (implementingPlugins.length === 0) {\n return null\n }\n\n return new Promise(resolve => {\n const { parentSpan, traceId, traceTags, waitForCascadingActions } = args\n const apiSpanArgs = parentSpan ? { childOf: parentSpan } : {}\n let apiSpan\n if (api !== `setFieldsOnGraphQLNodeType`) {\n apiSpan = tracer.startSpan(`run-api`, apiSpanArgs)\n\n apiSpan.setTag(`api`, api)\n _.forEach(traceTags, (value, key) => {\n apiSpan.setTag(key, value)\n })\n }\n\n const apiRunInstance = {\n api,\n args,\n pluginSource,\n resolve,\n span: apiSpan,\n startTime: new Date().toJSON(),\n traceId,\n }\n\n // Generate IDs for api runs. Most IDs we generate from the args\n // but some API calls can have very large argument objects so we\n // have special ways of generating IDs for those to avoid stringifying\n // large objects.\n let id\n if (api === `setFieldsOnGraphQLNodeType`) {\n id = `${api}${apiRunInstance.startTime}${args.type.name}${traceId}`\n } else if (api === `onCreateNode`) {\n id = `${api}${apiRunInstance.startTime}${args.node.internal.contentDigest}${traceId}`\n } else if (api === `preprocessSource`) {\n id = `${api}${apiRunInstance.startTime}${args.filename}${traceId}`\n } else if (api === `onCreatePage`) {\n id = `${api}${apiRunInstance.startTime}${args.page.path}${traceId}`\n } else {\n // When tracing is turned on, the `args` object will have a\n // `parentSpan` field that can be quite large. So we omit it\n // before calling stringify\n const argsJson = JSON.stringify(_.omit(args, `parentSpan`))\n id = `${api}|${apiRunInstance.startTime}|${apiRunInstance.traceId}|${argsJson}`\n }\n apiRunInstance.id = id\n\n if (waitForCascadingActions) {\n waitingForCasacadeToFinish.push(apiRunInstance)\n }\n\n if (apisRunningById.size === 0) {\n emitter.emit(`API_RUNNING_START`)\n }\n\n apisRunningById.set(apiRunInstance.id, apiRunInstance)\n if (apisRunningByTraceId.has(apiRunInstance.traceId)) {\n const currentCount = apisRunningByTraceId.get(apiRunInstance.traceId)\n apisRunningByTraceId.set(apiRunInstance.traceId, currentCount + 1)\n } else {\n apisRunningByTraceId.set(apiRunInstance.traceId, 1)\n }\n\n let stopQueuedApiRuns = false\n let onAPIRunComplete = null\n if (api === `onCreatePage`) {\n const path = args.page.path\n const actionHandler = action => {\n if (action.payload.path === path) {\n stopQueuedApiRuns = true\n }\n }\n emitter.on(`DELETE_PAGE`, actionHandler)\n onAPIRunComplete = () => {\n emitter.off(`DELETE_PAGE`, actionHandler)\n }\n }\n\n let apiRunPromiseOptions = {}\n let runPromise\n if (\n api === `sourceNodes` &&\n process.env.GATSBY_EXPERIMENTAL_PARALLEL_SOURCING\n ) {\n runPromise = Promise.map\n apiRunPromiseOptions.concurrency = 20\n } else {\n runPromise = Promise.mapSeries\n apiRunPromiseOptions = undefined\n }\n\n runPromise(\n implementingPlugins,\n plugin => {\n if (stopQueuedApiRuns) {\n return null\n }\n\n const gatsbyNode = requireGatsbyPlugin(plugin, `gatsby-node`)\n const pluginName =\n plugin.name === `default-site-plugin` ? `gatsby-node.js` : plugin.name\n\n // TODO: rethink createNode API to handle this better\n if (\n api === `onCreateNode` &&\n gatsbyNode?.unstable_shouldOnCreateNode && // Don't bail if this api is not exported\n !gatsbyNode.unstable_shouldOnCreateNode(\n { node: args.node },\n plugin.pluginOptions\n )\n ) {\n // Do not try to schedule an async event for this node for this plugin\n return null\n }\n\n return new Promise(resolve => {\n resolve(\n runAPI(plugin, api, { ...args, parentSpan: apiSpan }, activity)\n )\n }).catch(err => {\n decorateEvent(`BUILD_PANIC`, {\n pluginName: `${plugin.name}@${plugin.version}`,\n })\n\n const localReporter = getLocalReporter({ activity, reporter })\n\n const file = stackTrace\n .parse(err)\n .find(file => /gatsby-node/.test(file.fileName))\n\n let codeFrame = ``\n const structuredError = errorParser({ err })\n\n if (file) {\n const { fileName, lineNumber: line, columnNumber: column } = file\n\n try {\n const code = fs.readFileSync(fileName, { encoding: `utf-8` })\n codeFrame = codeFrameColumns(\n code,\n {\n start: {\n line,\n column,\n },\n },\n {\n highlightCode: true,\n }\n )\n } catch (_e) {\n // sometimes stack trace point to not existing file\n // particularly when file is transpiled and path actually changes\n // (like pointing to not existing `src` dir or original typescript file)\n }\n\n structuredError.location = {\n start: { line: line, column: column },\n }\n structuredError.filePath = fileName\n }\n\n structuredError.context = {\n ...structuredError.context,\n pluginName,\n api,\n codeFrame,\n }\n\n localReporter.panicOnBuild(structuredError)\n\n return null\n })\n },\n apiRunPromiseOptions\n ).then(results => {\n if (onAPIRunComplete) {\n onAPIRunComplete()\n }\n // Remove runner instance\n apisRunningById.delete(apiRunInstance.id)\n const currentCount = apisRunningByTraceId.get(apiRunInstance.traceId)\n apisRunningByTraceId.set(apiRunInstance.traceId, currentCount - 1)\n\n if (apisRunningById.size === 0) {\n emitter.emit(`API_RUNNING_QUEUE_EMPTY`)\n }\n\n // Filter empty results\n apiRunInstance.results = results.filter(result => !_.isEmpty(result))\n\n // Filter out empty responses and return if the\n // api caller isn't waiting for cascading actions to finish.\n if (!waitForCascadingActions) {\n apiSpan?.finish()\n resolve(apiRunInstance.results)\n }\n\n // Check if any of our waiters are done.\n waitingForCasacadeToFinish = waitingForCasacadeToFinish.filter(\n instance => {\n // If none of its trace IDs are running, it's done.\n const apisByTraceIdCount = apisRunningByTraceId.get(instance.traceId)\n if (apisByTraceIdCount === 0) {\n instance.span?.finish()\n instance.resolve(instance.results)\n return false\n } else {\n return true\n }\n }\n )\n return\n })\n })\n}\n\nmodule.exports = apiRunnerNode\n"],"file":"api-runner-node.js"}
|