gatsby 4.23.0-next.2 → 4.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/cache-dir/commonjs/loader.js +8 -4
- package/cache-dir/commonjs/server-utils/writable-as-promise.js +10 -2
- package/cache-dir/commonjs/static-entry.js +1 -1
- package/cache-dir/loader.js +8 -4
- package/cache-dir/server-utils/writable-as-promise.js +9 -3
- package/cache-dir/static-entry.js +1 -1
- package/dist/bootstrap/requires-writer.js +1 -1
- package/dist/bootstrap/requires-writer.js.map +1 -1
- package/dist/schema/node-model.js +15 -8
- package/dist/schema/node-model.js.map +1 -1
- package/dist/utils/browserslist.js +8 -1
- package/dist/utils/browserslist.js.map +1 -1
- package/dist/utils/webpack/bundle.d.ts +1 -1
- package/dist/utils/webpack/bundle.js.map +1 -1
- package/index.d.ts +7 -5
- package/package.json +24 -24
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,32 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.22.0](https://github.com/gatsbyjs/gatsby/commits/gatsby@4.22.0/packages/gatsby) (2022-08-30)
|
|
7
|
+
|
|
8
|
+
[🧾 Release notes](https://www.gatsbyjs.com/docs/reference/release-notes/v4.22)
|
|
9
|
+
|
|
10
|
+
#### Features
|
|
11
|
+
|
|
12
|
+
- add partial hydration flag [#36436](https://github.com/gatsbyjs/gatsby/issues/36436) ([41de1f0](https://github.com/gatsbyjs/gatsby/commit/41de1f0a8d767174f16367c14dbe8ed2820f8b2c))
|
|
13
|
+
- Add option to emit TS types during build [#36405](https://github.com/gatsbyjs/gatsby/issues/36405) ([3760a0e](https://github.com/gatsbyjs/gatsby/commit/3760a0e78d6cfeb22d414e1c6eac045acd1f129a))
|
|
14
|
+
|
|
15
|
+
#### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- remove resource query from warnings [#36439](https://github.com/gatsbyjs/gatsby/issues/36439) ([1bf2358](https://github.com/gatsbyjs/gatsby/commit/1bf2358703c5ae00e5c5466235d93c3288e5f6e2))
|
|
18
|
+
- Prevent errors if `Head` has root text node [#36402](https://github.com/gatsbyjs/gatsby/issues/36402) ([a05201e](https://github.com/gatsbyjs/gatsby/commit/a05201e840e94a1d49976166c0dcc9e5a0b44038))
|
|
19
|
+
- close parcel cache db before clearing cache and retrying close [#36377](https://github.com/gatsbyjs/gatsby/issues/36377) ([9d737b6](https://github.com/gatsbyjs/gatsby/commit/9d737b62180d3081619a167336366128762c12a6))
|
|
20
|
+
- Hashing and pluginOptions [#36387](https://github.com/gatsbyjs/gatsby/issues/36387) ([65739fc](https://github.com/gatsbyjs/gatsby/commit/65739fcc1af12d0f878820a589de7dde5964b93d))
|
|
21
|
+
|
|
22
|
+
#### Chores
|
|
23
|
+
|
|
24
|
+
- Add env log for build and remove incorrect log for functions [#36462](https://github.com/gatsbyjs/gatsby/issues/36462) [#36466](https://github.com/gatsbyjs/gatsby/issues/36466) ([4dcdeb1](https://github.com/gatsbyjs/gatsby/commit/4dcdeb1b7f2b7b9708e0103447ff102e35220718))
|
|
25
|
+
- drop eslint-plugin-graphql [#36364](https://github.com/gatsbyjs/gatsby/issues/36364) ([b361081](https://github.com/gatsbyjs/gatsby/commit/b361081db968aaa2ead1f9fe4d701d2ec7761ebd))
|
|
26
|
+
- add prefixPaths field on IProgram type [#36400](https://github.com/gatsbyjs/gatsby/issues/36400) ([03157e8](https://github.com/gatsbyjs/gatsby/commit/03157e8d6b5a188e39c74c56fa0ba9d40c96c427))
|
|
27
|
+
- pin xstate [#36398](https://github.com/gatsbyjs/gatsby/issues/36398) ([6e4a0de](https://github.com/gatsbyjs/gatsby/commit/6e4a0de10b395d0addf11c77b89a846f94a1b432))
|
|
28
|
+
- convert sanitize-node to typescript [#36327](https://github.com/gatsbyjs/gatsby/issues/36327) ([d59e7b6](https://github.com/gatsbyjs/gatsby/commit/d59e7b61b2c63827fba02c5d9ea96c614cc83344))
|
|
29
|
+
- upgrade @pmmmwh/react-refresh-webpack-plugin [#36360](https://github.com/gatsbyjs/gatsby/issues/36360) ([28cfade](https://github.com/gatsbyjs/gatsby/commit/28cfadeb453ece090ab5919be92599f2b847f5d8))
|
|
30
|
+
- convert babel-loaders to typescript [#36318](https://github.com/gatsbyjs/gatsby/issues/36318) ([fe1d2e1](https://github.com/gatsbyjs/gatsby/commit/fe1d2e1b54e70f558ae008bbac9b6c5b31f52d5f))
|
|
31
|
+
|
|
6
32
|
### [4.21.1](https://github.com/gatsbyjs/gatsby/commits/gatsby@4.21.1/packages/gatsby) (2022-08-18)
|
|
7
33
|
|
|
8
34
|
#### Chores
|
|
@@ -582,12 +582,16 @@ const createComponentUrls = componentChunkName => (window.___chunkMapping[compon
|
|
|
582
582
|
|
|
583
583
|
class ProdLoader extends BaseLoader {
|
|
584
584
|
constructor(asyncRequires, matchPaths, pageData) {
|
|
585
|
-
const loadComponent = chunkName => {
|
|
586
|
-
if (!
|
|
587
|
-
|
|
585
|
+
const loadComponent = (chunkName, exportType = `components`) => {
|
|
586
|
+
if (!global.hasPartialHydration) {
|
|
587
|
+
exportType = `components`;
|
|
588
588
|
}
|
|
589
589
|
|
|
590
|
-
|
|
590
|
+
if (!asyncRequires[exportType][chunkName]) {
|
|
591
|
+
throw new Error(`We couldn't find the correct component chunk with the name "${chunkName}"`);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
return asyncRequires[exportType][chunkName]() // loader will handle the case when component is error
|
|
591
595
|
.catch(err => err);
|
|
592
596
|
};
|
|
593
597
|
|
|
@@ -20,9 +20,17 @@ class WritableAsPromise extends _stream.Writable {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
_write(chunk,
|
|
23
|
+
_write(chunk, _, next) {
|
|
24
24
|
this._output += chunk.toString();
|
|
25
|
-
|
|
25
|
+
next();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_destroy(error, next) {
|
|
29
|
+
if (error instanceof Error) {
|
|
30
|
+
this._deferred.reject(error);
|
|
31
|
+
} else {
|
|
32
|
+
next();
|
|
33
|
+
}
|
|
26
34
|
}
|
|
27
35
|
|
|
28
36
|
end() {
|
package/cache-dir/loader.js
CHANGED
|
@@ -573,15 +573,19 @@ const createComponentUrls = componentChunkName =>
|
|
|
573
573
|
|
|
574
574
|
export class ProdLoader extends BaseLoader {
|
|
575
575
|
constructor(asyncRequires, matchPaths, pageData) {
|
|
576
|
-
const loadComponent = chunkName => {
|
|
577
|
-
if (!
|
|
576
|
+
const loadComponent = (chunkName, exportType = `components`) => {
|
|
577
|
+
if (!global.hasPartialHydration) {
|
|
578
|
+
exportType = `components`
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
if (!asyncRequires[exportType][chunkName]) {
|
|
578
582
|
throw new Error(
|
|
579
|
-
`We couldn't find the correct component chunk with the name ${chunkName}`
|
|
583
|
+
`We couldn't find the correct component chunk with the name "${chunkName}"`
|
|
580
584
|
)
|
|
581
585
|
}
|
|
582
586
|
|
|
583
587
|
return (
|
|
584
|
-
asyncRequires
|
|
588
|
+
asyncRequires[exportType][chunkName]()
|
|
585
589
|
// loader will handle the case when component is error
|
|
586
590
|
.catch(err => err)
|
|
587
591
|
)
|
|
@@ -16,15 +16,21 @@ export class WritableAsPromise extends Writable {
|
|
|
16
16
|
})
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
_write(chunk,
|
|
19
|
+
_write(chunk, _, next) {
|
|
20
20
|
this._output += chunk.toString()
|
|
21
|
+
next()
|
|
22
|
+
}
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
_destroy(error, next) {
|
|
25
|
+
if (error instanceof Error) {
|
|
26
|
+
this._deferred.reject(error)
|
|
27
|
+
} else {
|
|
28
|
+
next()
|
|
29
|
+
}
|
|
23
30
|
}
|
|
24
31
|
|
|
25
32
|
end() {
|
|
26
33
|
this._deferred.resolve(this._output)
|
|
27
|
-
|
|
28
34
|
this.destroy()
|
|
29
35
|
}
|
|
30
36
|
|
|
@@ -199,7 +199,7 @@ const preferDefault = m => (m && m.default) || m
|
|
|
199
199
|
|
|
200
200
|
let asyncRequires = ``;
|
|
201
201
|
|
|
202
|
-
if (process.env.gatsby_executing_command === `develop`) {
|
|
202
|
+
if (process.env.gatsby_executing_command === `develop` || "4" === `5` && process.env.GATSBY_PARTIAL_HYDRATION) {
|
|
203
203
|
asyncRequires = `exports.components = {\n${components.map(c => {
|
|
204
204
|
// we need a relative import path to keep contenthash the same if directory changes
|
|
205
205
|
const relativeComponentPath = _path.default.relative((0, _gatsbyWebpackVirtualModules.getAbsolutePathForVirtualModule)(`$virtual`), c.component);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requires-writer.js","names":["paramRe","SEGMENT_POINTS","STATIC_POINTS","DYNAMIC_POINTS","SPLAT_PENALTY","ROOT_POINTS","isRootSegment","segment","isDynamic","test","isSplat","hasContentFilePath","componentPath","includes","segmentize","uri","replace","split","rankRoute","path","reduce","score","lastHash","resetLastHash","pickComponentFields","page","getComponents","pages","c","componentChunkName","getMatchPaths","createMatchPathEntry","index","matchPath","undefined","reporter","panic","matchPathPages","forEach","getPageMode","push","length","newMatches","isInsideMatchPath","find","pageWithMatchPath","match","sort","a","b","order","localeCompare","map","createHash","matchPaths","components","cleanedSSRVisitedPageComponents","crypto","update","JSON","stringify","digest","writeAll","state","program","values","process","env","GATSBY_EXPERIMENTAL_DEV_SSR","ssrVisitedPageComponents","visitedPages","get","filter","some","s","newHash","lazySyncRequires","joinPath","component","join","writeModule","devSSRWillInvalidate","syncRequires","asyncRequires","gatsby_executing_command","relativeComponentPath","relative","getAbsolutePathForVirtualModule","rqPrefix","slash","writeAndMove","virtualFilePath","file","data","destination","directory","tmp","Date","now","fs","writeFile","then","move","overwrite","Promise","all","debouncedWriteAll","activity","activityTimer","id","start","store","getState","end","leading","listenerStarted","startListener","emitter","on","pendingActivity"],"sources":["../../src/bootstrap/requires-writer.ts"],"sourcesContent":["import _ from \"lodash\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport crypto from \"crypto\"\nimport { slash } from \"gatsby-core-utils\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { match } from \"@gatsbyjs/reach-router/lib/utils\"\nimport { joinPath } from \"gatsby-core-utils\"\nimport { store, emitter } from \"../redux/\"\nimport { IGatsbyState, IGatsbyPage } from \"../redux/types\"\nimport {\n writeModule,\n getAbsolutePathForVirtualModule,\n} from \"../utils/gatsby-webpack-virtual-modules\"\nimport { getPageMode } from \"../utils/page-mode\"\nimport { devSSRWillInvalidate } from \"../commands/build-html\"\n\ninterface IGatsbyPageComponent {\n component: string\n componentChunkName: string\n}\n\ninterface IGatsbyPageMatchPath {\n path: string\n matchPath: string | undefined\n}\n\n// path ranking algorithm copied (with small adjustments) from `@reach/router` (internal util, not exported from the package)\n// https://github.com/reach/router/blob/28a79e7fc3a3487cb3304210dc3501efb8a50eba/src/lib/utils.js#L216-L254\nconst paramRe = /^:(.+)/\n\nconst SEGMENT_POINTS = 4\nconst STATIC_POINTS = 3\nconst DYNAMIC_POINTS = 2\nconst SPLAT_PENALTY = 1\nconst ROOT_POINTS = 1\n\nconst isRootSegment = (segment: string): boolean => segment === ``\nconst isDynamic = (segment: string): boolean => paramRe.test(segment)\nconst isSplat = (segment: string): boolean => segment === `*`\nconst hasContentFilePath = (componentPath: string): boolean =>\n componentPath.includes(`?__contentFilePath=`)\n\nconst segmentize = (uri: string): Array<string> =>\n uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, ``)\n .split(`/`)\n\nconst rankRoute = (path: string): number =>\n segmentize(path).reduce((score, segment) => {\n score += SEGMENT_POINTS\n if (isRootSegment(segment)) score += ROOT_POINTS\n else if (isDynamic(segment)) score += DYNAMIC_POINTS\n else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY\n else score += STATIC_POINTS\n return score\n }, 0)\n// end of copied `@reach/router` internals\n\nlet lastHash: string | null = null\n\nexport const resetLastHash = (): void => {\n lastHash = null\n}\n\nconst pickComponentFields = (page: IGatsbyPage): IGatsbyPageComponent =>\n _.pick(page, [`component`, `componentChunkName`])\n\nexport const getComponents = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageComponent> =>\n _.orderBy(\n _.uniqBy(_.map(pages, pickComponentFields), c => c.componentChunkName),\n c => c.componentChunkName\n )\n\n/**\n * Get all dynamic routes and sort them by most specific at the top\n * code is based on @reach/router match utility (https://github.com/reach/router/blob/152aff2352bc62cefc932e1b536de9efde6b64a5/src/lib/utils.js#L224-L254)\n */\nconst getMatchPaths = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageMatchPath> => {\n interface IMatchPathEntry extends IGatsbyPage {\n index: number\n score: number\n matchPath: string\n }\n\n const createMatchPathEntry = (\n page: IGatsbyPage,\n index: number\n ): IMatchPathEntry => {\n const { matchPath } = page\n\n if (matchPath === undefined) {\n return reporter.panic(\n `Error: matchPath property is undefined for page ${page.path}, should be a string`\n ) as never\n }\n\n return {\n ...page,\n matchPath,\n index,\n score: rankRoute(matchPath),\n }\n }\n\n const matchPathPages: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n if (page.matchPath && getPageMode(page) === `SSG`) {\n matchPathPages.push(createMatchPathEntry(page, index))\n }\n })\n\n // Pages can live in matchPaths, to keep them working without doing another network request\n // we save them in matchPath. We use `@reach/router` path ranking to score paths/matchPaths\n // and sort them so more specific paths are before less specific paths.\n // More info in https://github.com/gatsbyjs/gatsby/issues/16097\n // small speedup: don't bother traversing when no matchPaths found.\n if (matchPathPages.length) {\n const newMatches: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n const isInsideMatchPath = !!matchPathPages.find(\n pageWithMatchPath =>\n !page.matchPath && match(pageWithMatchPath.matchPath, page.path)\n )\n\n if (isInsideMatchPath) {\n newMatches.push(\n createMatchPathEntry(\n {\n ...page,\n matchPath: page.path,\n },\n index\n )\n )\n }\n })\n // Add afterwards because the new matches are not relevant for the existing search\n matchPathPages.push(...newMatches)\n }\n\n return matchPathPages\n .sort((a, b) => {\n // The higher the score, the higher the specificity of our matchPath\n const order = b.score - a.score\n if (order !== 0) {\n return order\n }\n\n // if specificity is the same we do lexigraphic comparison of path to ensure\n // deterministic order regardless of order pages where created\n return a.matchPath.localeCompare(b.matchPath)\n })\n .map(({ path, matchPath }) => {\n return { path, matchPath }\n })\n}\n\nconst createHash = (\n matchPaths: Array<IGatsbyPageMatchPath>,\n components: Array<IGatsbyPageComponent>,\n cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent>\n): string =>\n crypto\n .createHash(`md5`)\n .update(\n JSON.stringify({\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents,\n })\n )\n .digest(`hex`)\n\n// Write out pages information.\nexport const writeAll = async (state: IGatsbyState): Promise<boolean> => {\n const { program } = state\n const pages = [...state.pages.values()]\n const matchPaths = getMatchPaths(pages)\n const components = getComponents(pages)\n let cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent> = []\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n const ssrVisitedPageComponents = [\n ...(state.visitedPages.get(`server`)?.values() || []),\n ]\n\n // Remove any page components that no longer exist.\n cleanedSSRVisitedPageComponents = components.filter(c =>\n ssrVisitedPageComponents.some(s => s === c.componentChunkName)\n )\n }\n\n const newHash = createHash(\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents\n )\n\n if (newHash === lastHash) {\n // Nothing changed. No need to rewrite files\n return false\n }\n\n lastHash = newHash\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n // Create file with sync requires of visited page components files.\n\n const lazySyncRequires = `exports.ssrComponents = {\\n${cleanedSSRVisitedPageComponents\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": require(\"${joinPath(c.component)}\")`\n )\n .join(`,\\n`)}\n }\\n\\n`\n\n writeModule(`$virtual/ssr-sync-requires`, lazySyncRequires)\n // if this is executed, webpack should mark it as invalid, but sometimes there is some timing race\n // so we also explicitly set flag here as well\n devSSRWillInvalidate()\n }\n\n // Create file with sync requires of components/json files.\n let syncRequires = `\n// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\\n\\n`\n syncRequires += `exports.components = {\\n${components\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": preferDefault(require(\"${joinPath(\n c.component\n )}\"))`\n )\n .join(`,\\n`)}\n}\\n\\n`\n\n // Create file with async requires of components/json files.\n let asyncRequires = ``\n\n if (process.env.gatsby_executing_command === `develop`) {\n asyncRequires = `exports.components = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n\n const rqPrefix = hasContentFilePath(relativeComponentPath) ? `&` : `?`\n\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}${rqPrefix}export=default\" /* webpackChunkName: \"${\n c.componentChunkName\n }\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n\n\nexports.head = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n\n const rqPrefix = hasContentFilePath(relativeComponentPath) ? `&` : `?`\n\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}${rqPrefix}export=head\" /* webpackChunkName: \"${\n c.componentChunkName\n }head\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n`\n } else {\n asyncRequires = `exports.components = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}\" /* webpackChunkName: \"${c.componentChunkName}\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n`\n }\n\n const writeAndMove = (\n virtualFilePath: string,\n file: string,\n data: string\n ): Promise<void> => {\n writeModule(virtualFilePath, data)\n\n // files in .cache are not used anymore as part of webpack builds, but\n // still can be used by other tools (for example `gatsby serve` reads\n // `match-paths.json` to setup routing)\n const destination = joinPath(program.directory, `.cache`, file)\n const tmp = `${destination}.${Date.now()}`\n return fs\n .writeFile(tmp, data)\n .then(() => fs.move(tmp, destination, { overwrite: true }))\n }\n\n await Promise.all([\n writeAndMove(`$virtual/sync-requires.js`, `sync-requires.js`, syncRequires),\n writeAndMove(\n `$virtual/async-requires.js`,\n `async-requires.js`,\n asyncRequires\n ),\n writeAndMove(\n `$virtual/match-paths.json`,\n `match-paths.json`,\n JSON.stringify(matchPaths, null, 4)\n ),\n ])\n\n return true\n}\n\nconst debouncedWriteAll = _.debounce(\n async (): Promise<void> => {\n const activity = reporter.activityTimer(`write out requires`, {\n id: `requires-writer`,\n })\n activity.start()\n await writeAll(store.getState())\n activity.end()\n },\n 500,\n {\n // using \"leading\" can cause double `writeAll` call - particularly\n // when refreshing data using `/__refresh` hook.\n leading: false,\n }\n)\n\n/**\n * Start listening to CREATE/DELETE_PAGE events so we can rewrite\n * files as required\n */\nlet listenerStarted = false\nexport const startListener = (): void => {\n // Only start the listener once.\n if (listenerStarted) {\n return\n }\n listenerStarted = true\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n /**\n * Start listening to CREATE_SERVER_VISITED_PAGE events so we can rewrite\n * files as required\n */\n emitter.on(`CREATE_SERVER_VISITED_PAGE`, async (): Promise<void> => {\n // this event only happen on new additions\n devSSRWillInvalidate()\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n }\n\n emitter.on(`CREATE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`CREATE_PAGE_END`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE_BY_PATH`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requires-writer.js","names":["paramRe","SEGMENT_POINTS","STATIC_POINTS","DYNAMIC_POINTS","SPLAT_PENALTY","ROOT_POINTS","isRootSegment","segment","isDynamic","test","isSplat","hasContentFilePath","componentPath","includes","segmentize","uri","replace","split","rankRoute","path","reduce","score","lastHash","resetLastHash","pickComponentFields","page","getComponents","pages","c","componentChunkName","getMatchPaths","createMatchPathEntry","index","matchPath","undefined","reporter","panic","matchPathPages","forEach","getPageMode","push","length","newMatches","isInsideMatchPath","find","pageWithMatchPath","match","sort","a","b","order","localeCompare","map","createHash","matchPaths","components","cleanedSSRVisitedPageComponents","crypto","update","JSON","stringify","digest","writeAll","state","program","values","process","env","GATSBY_EXPERIMENTAL_DEV_SSR","ssrVisitedPageComponents","visitedPages","get","filter","some","s","newHash","lazySyncRequires","joinPath","component","join","writeModule","devSSRWillInvalidate","syncRequires","asyncRequires","gatsby_executing_command","GATSBY_PARTIAL_HYDRATION","relativeComponentPath","relative","getAbsolutePathForVirtualModule","rqPrefix","slash","writeAndMove","virtualFilePath","file","data","destination","directory","tmp","Date","now","fs","writeFile","then","move","overwrite","Promise","all","debouncedWriteAll","activity","activityTimer","id","start","store","getState","end","leading","listenerStarted","startListener","emitter","on","pendingActivity"],"sources":["../../src/bootstrap/requires-writer.ts"],"sourcesContent":["import _ from \"lodash\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport crypto from \"crypto\"\nimport { slash } from \"gatsby-core-utils\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { match } from \"@gatsbyjs/reach-router/lib/utils\"\nimport { joinPath } from \"gatsby-core-utils\"\nimport { store, emitter } from \"../redux/\"\nimport { IGatsbyState, IGatsbyPage } from \"../redux/types\"\nimport {\n writeModule,\n getAbsolutePathForVirtualModule,\n} from \"../utils/gatsby-webpack-virtual-modules\"\nimport { getPageMode } from \"../utils/page-mode\"\nimport { devSSRWillInvalidate } from \"../commands/build-html\"\n\ninterface IGatsbyPageComponent {\n component: string\n componentChunkName: string\n}\n\ninterface IGatsbyPageMatchPath {\n path: string\n matchPath: string | undefined\n}\n\n// path ranking algorithm copied (with small adjustments) from `@reach/router` (internal util, not exported from the package)\n// https://github.com/reach/router/blob/28a79e7fc3a3487cb3304210dc3501efb8a50eba/src/lib/utils.js#L216-L254\nconst paramRe = /^:(.+)/\n\nconst SEGMENT_POINTS = 4\nconst STATIC_POINTS = 3\nconst DYNAMIC_POINTS = 2\nconst SPLAT_PENALTY = 1\nconst ROOT_POINTS = 1\n\nconst isRootSegment = (segment: string): boolean => segment === ``\nconst isDynamic = (segment: string): boolean => paramRe.test(segment)\nconst isSplat = (segment: string): boolean => segment === `*`\nconst hasContentFilePath = (componentPath: string): boolean =>\n componentPath.includes(`?__contentFilePath=`)\n\nconst segmentize = (uri: string): Array<string> =>\n uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, ``)\n .split(`/`)\n\nconst rankRoute = (path: string): number =>\n segmentize(path).reduce((score, segment) => {\n score += SEGMENT_POINTS\n if (isRootSegment(segment)) score += ROOT_POINTS\n else if (isDynamic(segment)) score += DYNAMIC_POINTS\n else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY\n else score += STATIC_POINTS\n return score\n }, 0)\n// end of copied `@reach/router` internals\n\nlet lastHash: string | null = null\n\nexport const resetLastHash = (): void => {\n lastHash = null\n}\n\nconst pickComponentFields = (page: IGatsbyPage): IGatsbyPageComponent =>\n _.pick(page, [`component`, `componentChunkName`])\n\nexport const getComponents = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageComponent> =>\n _.orderBy(\n _.uniqBy(_.map(pages, pickComponentFields), c => c.componentChunkName),\n c => c.componentChunkName\n )\n\n/**\n * Get all dynamic routes and sort them by most specific at the top\n * code is based on @reach/router match utility (https://github.com/reach/router/blob/152aff2352bc62cefc932e1b536de9efde6b64a5/src/lib/utils.js#L224-L254)\n */\nconst getMatchPaths = (\n pages: Array<IGatsbyPage>\n): Array<IGatsbyPageMatchPath> => {\n interface IMatchPathEntry extends IGatsbyPage {\n index: number\n score: number\n matchPath: string\n }\n\n const createMatchPathEntry = (\n page: IGatsbyPage,\n index: number\n ): IMatchPathEntry => {\n const { matchPath } = page\n\n if (matchPath === undefined) {\n return reporter.panic(\n `Error: matchPath property is undefined for page ${page.path}, should be a string`\n ) as never\n }\n\n return {\n ...page,\n matchPath,\n index,\n score: rankRoute(matchPath),\n }\n }\n\n const matchPathPages: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n if (page.matchPath && getPageMode(page) === `SSG`) {\n matchPathPages.push(createMatchPathEntry(page, index))\n }\n })\n\n // Pages can live in matchPaths, to keep them working without doing another network request\n // we save them in matchPath. We use `@reach/router` path ranking to score paths/matchPaths\n // and sort them so more specific paths are before less specific paths.\n // More info in https://github.com/gatsbyjs/gatsby/issues/16097\n // small speedup: don't bother traversing when no matchPaths found.\n if (matchPathPages.length) {\n const newMatches: Array<IMatchPathEntry> = []\n\n pages.forEach((page: IGatsbyPage, index: number): void => {\n const isInsideMatchPath = !!matchPathPages.find(\n pageWithMatchPath =>\n !page.matchPath && match(pageWithMatchPath.matchPath, page.path)\n )\n\n if (isInsideMatchPath) {\n newMatches.push(\n createMatchPathEntry(\n {\n ...page,\n matchPath: page.path,\n },\n index\n )\n )\n }\n })\n // Add afterwards because the new matches are not relevant for the existing search\n matchPathPages.push(...newMatches)\n }\n\n return matchPathPages\n .sort((a, b) => {\n // The higher the score, the higher the specificity of our matchPath\n const order = b.score - a.score\n if (order !== 0) {\n return order\n }\n\n // if specificity is the same we do lexigraphic comparison of path to ensure\n // deterministic order regardless of order pages where created\n return a.matchPath.localeCompare(b.matchPath)\n })\n .map(({ path, matchPath }) => {\n return { path, matchPath }\n })\n}\n\nconst createHash = (\n matchPaths: Array<IGatsbyPageMatchPath>,\n components: Array<IGatsbyPageComponent>,\n cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent>\n): string =>\n crypto\n .createHash(`md5`)\n .update(\n JSON.stringify({\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents,\n })\n )\n .digest(`hex`)\n\n// Write out pages information.\nexport const writeAll = async (state: IGatsbyState): Promise<boolean> => {\n const { program } = state\n const pages = [...state.pages.values()]\n const matchPaths = getMatchPaths(pages)\n const components = getComponents(pages)\n let cleanedSSRVisitedPageComponents: Array<IGatsbyPageComponent> = []\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n const ssrVisitedPageComponents = [\n ...(state.visitedPages.get(`server`)?.values() || []),\n ]\n\n // Remove any page components that no longer exist.\n cleanedSSRVisitedPageComponents = components.filter(c =>\n ssrVisitedPageComponents.some(s => s === c.componentChunkName)\n )\n }\n\n const newHash = createHash(\n matchPaths,\n components,\n cleanedSSRVisitedPageComponents\n )\n\n if (newHash === lastHash) {\n // Nothing changed. No need to rewrite files\n return false\n }\n\n lastHash = newHash\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n // Create file with sync requires of visited page components files.\n\n const lazySyncRequires = `exports.ssrComponents = {\\n${cleanedSSRVisitedPageComponents\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": require(\"${joinPath(c.component)}\")`\n )\n .join(`,\\n`)}\n }\\n\\n`\n\n writeModule(`$virtual/ssr-sync-requires`, lazySyncRequires)\n // if this is executed, webpack should mark it as invalid, but sometimes there is some timing race\n // so we also explicitly set flag here as well\n devSSRWillInvalidate()\n }\n\n // Create file with sync requires of components/json files.\n let syncRequires = `\n// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\\n\\n`\n syncRequires += `exports.components = {\\n${components\n .map(\n (c: IGatsbyPageComponent): string =>\n ` \"${c.componentChunkName}\": preferDefault(require(\"${joinPath(\n c.component\n )}\"))`\n )\n .join(`,\\n`)}\n}\\n\\n`\n\n // Create file with async requires of components/json files.\n let asyncRequires = ``\n\n if (\n process.env.gatsby_executing_command === `develop` ||\n (_CFLAGS_.GATSBY_MAJOR === `5` && process.env.GATSBY_PARTIAL_HYDRATION)\n ) {\n asyncRequires = `exports.components = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n\n const rqPrefix = hasContentFilePath(relativeComponentPath) ? `&` : `?`\n\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}${rqPrefix}export=default\" /* webpackChunkName: \"${\n c.componentChunkName\n }\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n\n\nexports.head = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n\n const rqPrefix = hasContentFilePath(relativeComponentPath) ? `&` : `?`\n\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}${rqPrefix}export=head\" /* webpackChunkName: \"${\n c.componentChunkName\n }head\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n`\n } else {\n asyncRequires = `exports.components = {\\n${components\n .map((c: IGatsbyPageComponent): string => {\n // we need a relative import path to keep contenthash the same if directory changes\n const relativeComponentPath = path.relative(\n getAbsolutePathForVirtualModule(`$virtual`),\n c.component\n )\n return ` \"${c.componentChunkName}\": () => import(\"${slash(\n `./${relativeComponentPath}`\n )}\" /* webpackChunkName: \"${c.componentChunkName}\" */)`\n })\n .join(`,\\n`)}\n}\\n\\n`\n }\n\n const writeAndMove = (\n virtualFilePath: string,\n file: string,\n data: string\n ): Promise<void> => {\n writeModule(virtualFilePath, data)\n\n // files in .cache are not used anymore as part of webpack builds, but\n // still can be used by other tools (for example `gatsby serve` reads\n // `match-paths.json` to setup routing)\n const destination = joinPath(program.directory, `.cache`, file)\n const tmp = `${destination}.${Date.now()}`\n return fs\n .writeFile(tmp, data)\n .then(() => fs.move(tmp, destination, { overwrite: true }))\n }\n\n await Promise.all([\n writeAndMove(`$virtual/sync-requires.js`, `sync-requires.js`, syncRequires),\n writeAndMove(\n `$virtual/async-requires.js`,\n `async-requires.js`,\n asyncRequires\n ),\n writeAndMove(\n `$virtual/match-paths.json`,\n `match-paths.json`,\n JSON.stringify(matchPaths, null, 4)\n ),\n ])\n\n return true\n}\n\nconst debouncedWriteAll = _.debounce(\n async (): Promise<void> => {\n const activity = reporter.activityTimer(`write out requires`, {\n id: `requires-writer`,\n })\n activity.start()\n await writeAll(store.getState())\n activity.end()\n },\n 500,\n {\n // using \"leading\" can cause double `writeAll` call - particularly\n // when refreshing data using `/__refresh` hook.\n leading: false,\n }\n)\n\n/**\n * Start listening to CREATE/DELETE_PAGE events so we can rewrite\n * files as required\n */\nlet listenerStarted = false\nexport const startListener = (): void => {\n // Only start the listener once.\n if (listenerStarted) {\n return\n }\n listenerStarted = true\n\n if (process.env.GATSBY_EXPERIMENTAL_DEV_SSR) {\n /**\n * Start listening to CREATE_SERVER_VISITED_PAGE events so we can rewrite\n * files as required\n */\n emitter.on(`CREATE_SERVER_VISITED_PAGE`, async (): Promise<void> => {\n // this event only happen on new additions\n devSSRWillInvalidate()\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n }\n\n emitter.on(`CREATE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`CREATE_PAGE_END`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n\n emitter.on(`DELETE_PAGE_BY_PATH`, (): void => {\n reporter.pendingActivity({ id: `requires-writer` })\n debouncedWriteAll()\n })\n}\n"],"mappings":"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"}
|
|
@@ -452,11 +452,17 @@ class LocalNodeModel {
|
|
|
452
452
|
const actualFieldsToResolve = deepObjectDifference(fieldsToResolve, this._preparedNodesCache.get(typeName) || {});
|
|
453
453
|
|
|
454
454
|
if (!_.isEmpty(actualFieldsToResolve)) {
|
|
455
|
+
const {
|
|
456
|
+
schemaCustomization: {
|
|
457
|
+
context: customContext
|
|
458
|
+
}
|
|
459
|
+
} = _redux.store.getState();
|
|
460
|
+
|
|
455
461
|
const resolvedNodes = new Map();
|
|
456
462
|
|
|
457
463
|
for (const node of (0, _datastore.getDataStore)().iterateNodesByType(typeName)) {
|
|
458
464
|
this.trackInlineObjectsInRootNode(node);
|
|
459
|
-
const resolvedFields = await resolveRecursive(this, this.schemaComposer, this.schema, node, type, queryFields, actualFieldsToResolve);
|
|
465
|
+
const resolvedFields = await resolveRecursive(this, this.schemaComposer, this.schema, node, type, queryFields, actualFieldsToResolve, customContext);
|
|
460
466
|
resolvedNodes.set(node.id, resolvedFields);
|
|
461
467
|
}
|
|
462
468
|
|
|
@@ -717,7 +723,7 @@ const getFields = (schema, type, node) => {
|
|
|
717
723
|
return schema.getType(concreteType).getFields();
|
|
718
724
|
};
|
|
719
725
|
|
|
720
|
-
async function resolveRecursive(nodeModel, schemaComposer, schema, node, type, queryFields, fieldsToResolve) {
|
|
726
|
+
async function resolveRecursive(nodeModel, schemaComposer, schema, node, type, queryFields, fieldsToResolve, customContext) {
|
|
721
727
|
const gqlFields = getFields(schema, type, node);
|
|
722
728
|
const resolvedFields = {};
|
|
723
729
|
|
|
@@ -727,13 +733,13 @@ async function resolveRecursive(nodeModel, schemaComposer, schema, node, type, q
|
|
|
727
733
|
const gqlField = gqlFields[fieldName];
|
|
728
734
|
const gqlNonNullType = getNullableType(gqlField.type);
|
|
729
735
|
const gqlFieldType = getNamedType(gqlField.type);
|
|
730
|
-
let innerValue = await resolveField(nodeModel, schemaComposer, schema, node, gqlField, fieldName);
|
|
736
|
+
let innerValue = await resolveField(nodeModel, schemaComposer, schema, node, gqlField, fieldName, customContext);
|
|
731
737
|
|
|
732
738
|
if (gqlField && innerValue != null) {
|
|
733
739
|
if (isCompositeType(gqlFieldType) && !(gqlNonNullType instanceof GraphQLList)) {
|
|
734
|
-
innerValue = await resolveRecursive(nodeModel, schemaComposer, schema, innerValue, gqlFieldType, queryField, _.isObject(fieldToResolve) ? fieldToResolve : queryField);
|
|
740
|
+
innerValue = await resolveRecursive(nodeModel, schemaComposer, schema, innerValue, gqlFieldType, queryField, _.isObject(fieldToResolve) ? fieldToResolve : queryField, customContext);
|
|
735
741
|
} else if (isCompositeType(gqlFieldType) && (_.isArray(innerValue) || innerValue instanceof _iterable.GatsbyIterable) && gqlNonNullType instanceof GraphQLList) {
|
|
736
|
-
innerValue = await Promise.all(innerValue.map(item => item == null ? item : resolveRecursive(nodeModel, schemaComposer, schema, item, gqlFieldType, queryField, _.isObject(fieldToResolve) ? fieldToResolve : queryField)));
|
|
742
|
+
innerValue = await Promise.all(innerValue.map(item => item == null ? item : resolveRecursive(nodeModel, schemaComposer, schema, item, gqlFieldType, queryField, _.isObject(fieldToResolve) ? fieldToResolve : queryField, customContext)));
|
|
737
743
|
}
|
|
738
744
|
}
|
|
739
745
|
|
|
@@ -746,7 +752,7 @@ async function resolveRecursive(nodeModel, schemaComposer, schema, node, type, q
|
|
|
746
752
|
if (!fieldsToResolve[fieldName] && node[fieldName]) {
|
|
747
753
|
// It is possible that this field still has a custom resolver
|
|
748
754
|
// See https://github.com/gatsbyjs/gatsby/issues/27368
|
|
749
|
-
resolvedFields[fieldName] = await resolveField(nodeModel, schemaComposer, schema, node, gqlFields[fieldName], fieldName);
|
|
755
|
+
resolvedFields[fieldName] = await resolveField(nodeModel, schemaComposer, schema, node, gqlFields[fieldName], fieldName, customContext);
|
|
750
756
|
}
|
|
751
757
|
}
|
|
752
758
|
|
|
@@ -755,7 +761,7 @@ async function resolveRecursive(nodeModel, schemaComposer, schema, node, type, q
|
|
|
755
761
|
|
|
756
762
|
let withResolverContext;
|
|
757
763
|
|
|
758
|
-
function resolveField(nodeModel, schemaComposer, schema, node, gqlField, fieldName) {
|
|
764
|
+
function resolveField(nodeModel, schemaComposer, schema, node, gqlField, fieldName, customContext) {
|
|
759
765
|
if (!(gqlField !== null && gqlField !== void 0 && gqlField.resolve)) {
|
|
760
766
|
return node[fieldName];
|
|
761
767
|
} // We require this inline as there's a circular dependency from context back to this file.
|
|
@@ -772,7 +778,8 @@ function resolveField(nodeModel, schemaComposer, schema, node, gqlField, fieldNa
|
|
|
772
778
|
}, {}), withResolverContext({
|
|
773
779
|
schema,
|
|
774
780
|
schemaComposer,
|
|
775
|
-
nodeModel
|
|
781
|
+
nodeModel,
|
|
782
|
+
customContext
|
|
776
783
|
}), {
|
|
777
784
|
fieldName,
|
|
778
785
|
schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-model.js","names":["_","require","isAbstractType","GraphQLOutputType","GraphQLUnionType","GraphQLList","getNamedType","getNullableType","isCompositeType","invariant","reporter","LocalNodeModel","constructor","schema","schemaComposer","createPageDependency","_rootNodeMap","_trackedRootNodes","createPageDependencyActionCreator","WeakMap","WeakSet","_prepareNodesQueues","_prepareNodesPromises","_preparedNodesCache","Map","replaceFiltersCache","createPageDependencyArgs","connection","nodeTypeNames","toNodeTypeNames","forEach","typeName","map","_filtersCache","withContext","context","ContextualNodeModel","getNodeById","args","pageDependencies","id","type","node","result","includes","internal","trackInlineObjectsInRootNode","wrapNode","trackPageDependencies","getNodesByIds","ids","nodes","Array","isArray","filter","Boolean","length","wrapNodes","getAllNodes","reportOnce","getNodes","nodesByType","getNodesByType","concat","connectionType","name","runQuery","firstOnly","findOne","skip","limit","query","findAll","from","entries","_query","stats","tracer","gqlType","getType","runQueryActivity","eq","Object","keys","phantomActivity","parentSpan","getParentActivity","span","start","nodeFoundById","end","GatsbyIterable","totalCount","materializationActivity","fields","getQueryFields","sort","group","distinct","max","min","sum","fieldsToResolve","determineResolvableFields","nodeTypeName","gqlNodeType","prepareNodes","getDataStore","queryArgs","gqlSchema","gqlComposer","resolvedFields","filtersCache","Error","undefined","first","queryFields","push","Promise","resolve","process","nextTick","_doResolvePrepareNodesQueue","queue","reduce","nextQueryFields","nextFieldsToResolve","merge","actualFieldsToResolve","deepObjectDifference","get","isEmpty","resolvedNodes","iterateNodesByType","resolveRecursive","set","size","saveResolvedNodes","getTypes","has","addRootNodeToInlineObject","Set","add","findRootNodeAncestor","obj","predicate","iterations","parent","trackedParent","isMatchingRoot","error","path","track","isIterable","nodeId","rootNodeModel","nodeModel","_getFullDependencies","getNode","filterFields","dropQueryOperators","sortFields","pathToObject","split","reduceRight","acc","key","value","k","v","isPlainObject","getFields","concreteType","resolveType","gqlFields","fieldName","fieldToResolve","queryField","gqlField","gqlNonNullType","gqlFieldType","innerValue","resolveField","isObject","all","item","pickBy","withResolverContext","arg","defaultValue","returnType","isNestedAndParentNeedsResolve","field","typeComposer","getAnyTC","needsResolve","fieldNeedToResolve","innerResolved","rootNodeMap","data","isNode","each","o","store","dispatch","payload","to","toValue","deepResult","module","exports"],"sources":["../../src/schema/node-model.js"],"sourcesContent":["// @flow\n\nconst _ = require(`lodash`)\nconst {\n isAbstractType,\n GraphQLOutputType,\n GraphQLUnionType,\n GraphQLList,\n getNamedType,\n getNullableType,\n isCompositeType,\n} = require(`graphql`)\nconst invariant = require(`invariant`)\nconst reporter = require(`gatsby-cli/lib/reporter`)\nimport { store } from \"../redux\"\nimport {\n getDataStore,\n getNode,\n getNodes,\n getNodesByType,\n getTypes,\n} from \"../datastore\"\nimport { GatsbyIterable, isIterable } from \"../datastore/common/iterable\"\nimport { reportOnce } from \"../utils/report-once\"\nimport { wrapNode, wrapNodes } from \"../utils/detect-node-mutations\"\nimport { toNodeTypeNames, fieldNeedToResolve } from \"./utils\"\n\ntype TypeOrTypeName = string | GraphQLOutputType\n\n/**\n * Optional page dependency information.\n *\n * @typedef {Object} PageDependencies\n * @property {string} path The path of the page that depends on the retrieved nodes' data\n * @property {string} [connectionType] Mark this dependency as a connection\n */\ninterface PageDependencies {\n path: string;\n connectionType?: string;\n}\n\ninterface QueryArguments {\n type: TypeOrTypeName;\n query: { filter: Object, sort?: Object };\n firstOnly?: boolean;\n}\n\nexport interface NodeModel {\n getNodeById(\n { id: string, type?: TypeOrTypeName },\n pageDependencies?: PageDependencies\n ): any | null;\n getNodesByIds(\n { ids: Array<string>, type?: TypeOrTypeName },\n pageDependencies?: PageDependencies\n ): Array<any>;\n getAllNodes(\n { type?: TypeOrTypeName },\n pageDependencies?: PageDependencies\n ): Array<any>;\n runQuery(\n args: QueryArguments,\n pageDependencies?: PageDependencies\n ): Promise<any>;\n getTypes(): Array<string>;\n trackPageDependencies<nodeOrNodes: Node | Node[]>(\n result: nodeOrNodes,\n pageDependencies?: PageDependencies\n ): nodesOrNodes;\n findRootNodeAncestor(obj: any, predicate: () => boolean): Node | null;\n trackInlineObjectsInRootNode(node: Node, sanitize: boolean): Node;\n}\n\nclass LocalNodeModel {\n constructor({\n schema,\n schemaComposer,\n createPageDependency,\n _rootNodeMap,\n _trackedRootNodes,\n }) {\n this.schema = schema\n this.schemaComposer = schemaComposer\n this.createPageDependencyActionCreator = createPageDependency\n this._rootNodeMap = _rootNodeMap || new WeakMap()\n this._trackedRootNodes = _trackedRootNodes || new WeakSet()\n this._prepareNodesQueues = {}\n this._prepareNodesPromises = {}\n this._preparedNodesCache = new Map()\n this.replaceFiltersCache()\n }\n\n createPageDependency(createPageDependencyArgs) {\n if (createPageDependencyArgs.connection) {\n const nodeTypeNames = toNodeTypeNames(\n this.schema,\n createPageDependencyArgs.connection\n )\n if (nodeTypeNames) {\n nodeTypeNames.forEach(typeName => {\n this.createPageDependencyActionCreator({\n ...createPageDependencyArgs,\n connection: typeName,\n })\n })\n return\n }\n }\n\n this.createPageDependencyActionCreator(createPageDependencyArgs)\n }\n\n /**\n * Replace the cache either with the value passed on (mainly for tests) or\n * an empty new Map.\n *\n * @param {undefined | null | FiltersCache} map\n * (This cached is used in redux/nodes.js and caches a set of buckets (Sets)\n * of Nodes based on filter and tracks this for each set of types which are\n * actually queried. If the filter targets `id` directly, only one Node is\n * cached instead of a Set of Nodes. If null, don't create or use a cache.\n */\n replaceFiltersCache(map = new Map()) {\n this._filtersCache = map // See redux/nodes.js for usage\n }\n\n withContext(context) {\n return new ContextualNodeModel(this, context)\n }\n\n /**\n * Get a node from the store by ID and optional type.\n *\n * @param {Object} args\n * @param {string} args.id ID of the requested node\n * @param {(string|GraphQLOutputType)} [args.type] Optional type of the node\n * @param {PageDependencies} [pageDependencies]\n * @returns {(Node|null)}\n */\n getNodeById(args, pageDependencies) {\n const { id, type } = args || {}\n\n const node = getNodeById(id)\n\n let result\n if (!node) {\n result = null\n } else if (!type) {\n result = node\n } else {\n const nodeTypeNames = toNodeTypeNames(this.schema, type)\n result = nodeTypeNames.includes(node.internal.type) ? node : null\n }\n\n if (result) {\n this.trackInlineObjectsInRootNode(node)\n }\n\n return wrapNode(this.trackPageDependencies(result, pageDependencies))\n }\n\n /**\n * Get nodes from the store by IDs and optional type.\n *\n * @param {Object} args\n * @param {string[]} args.ids IDs of the requested nodes\n * @param {(string|GraphQLOutputType)} [args.type] Optional type of the nodes\n * @param {PageDependencies} [pageDependencies]\n * @returns {Node[]}\n */\n getNodesByIds(args, pageDependencies) {\n const { ids, type } = args || {}\n\n const nodes = Array.isArray(ids)\n ? ids.map(id => getNodeById(id)).filter(Boolean)\n : []\n\n let result\n if (!nodes.length || !type) {\n result = nodes\n } else {\n const nodeTypeNames = toNodeTypeNames(this.schema, type)\n result = nodes.filter(node => nodeTypeNames.includes(node.internal.type))\n }\n\n if (result) {\n result.forEach(node => this.trackInlineObjectsInRootNode(node))\n }\n\n return wrapNodes(this.trackPageDependencies(result, pageDependencies))\n }\n\n /**\n * Get all nodes in the store, or all nodes of a specified type. Note that\n * this adds connectionType tracking by default if type is passed.\n *\n * @deprecated Since version 4.0 - Use nodeModel.findAll() instead\n * @param {Object} args\n * @param {(string|GraphQLOutputType)} [args.type] Optional type of the nodes\n * @param {PageDependencies} [pageDependencies]\n * @returns {Node[]}\n */\n getAllNodes(args, pageDependencies = {}) {\n // TODO(v5): Remove API\n reportOnce(\n `nodeModel.getAllNodes() is deprecated. Use nodeModel.findAll() with an empty query instead.`\n )\n const { type = `Node` } = args || {}\n\n let result\n if (type === `Node`) {\n result = getNodes()\n } else {\n const nodeTypeNames = toNodeTypeNames(this.schema, type)\n const nodesByType = nodeTypeNames.map(typeName =>\n getNodesByType(typeName)\n )\n const nodes = [].concat(...nodesByType)\n result = nodes.filter(Boolean)\n }\n\n if (result) {\n result.forEach(node => this.trackInlineObjectsInRootNode(node))\n }\n\n if (typeof pageDependencies.connectionType === `undefined`) {\n pageDependencies.connectionType =\n typeof type === `string` ? type : type.name\n }\n\n return wrapNodes(this.trackPageDependencies(result, pageDependencies))\n }\n\n /**\n * Get nodes of a type matching the specified query.\n *\n * @deprecated Since version 4.0 - Use nodeModel.findAll() or nodeModel.findOne() instead\n * @param {Object} args\n * @param {Object} args.query Query arguments (`filter` and `sort`)\n * @param {(string|GraphQLOutputType)} args.type Type\n * @param {boolean} [args.firstOnly] If true, return only first match\n * @param {PageDependencies} [pageDependencies]\n * @returns {Promise<Node[]>}\n */\n async runQuery(args, pageDependencies = {}) {\n // TODO(v5): Remove API\n reportOnce(\n `nodeModel.runQuery() is deprecated. Use nodeModel.findAll() or nodeModel.findOne() instead.`\n )\n if (args.firstOnly) {\n return this.findOne(args, pageDependencies)\n }\n const { skip, limit, ...query } = args.query\n const result = await this.findAll({ ...args, query }, pageDependencies)\n return Array.from(result.entries)\n }\n\n async _query(args) {\n const { query = {}, type, stats, tracer } = args || {}\n\n // We don't support querying union types (yet?), because the combined types\n // need not have any fields in common.\n const gqlType = typeof type === `string` ? this.schema.getType(type) : type\n invariant(\n !(gqlType instanceof GraphQLUnionType),\n `Querying GraphQLUnion types is not supported.`\n )\n\n const nodeTypeNames = toNodeTypeNames(this.schema, gqlType)\n\n let runQueryActivity\n\n // check if we can get node by id and skip\n // more expensive query pipeline\n if (\n typeof query?.filter?.id?.eq !== `undefined` &&\n Object.keys(query.filter).length === 1 &&\n Object.keys(query.filter.id).length === 1\n ) {\n if (tracer) {\n runQueryActivity = reporter.phantomActivity(`runQuerySimpleIdEq`, {\n parentSpan: tracer.getParentActivity().span,\n })\n runQueryActivity.start()\n }\n const nodeFoundById = this.getNodeById({\n id: query.filter.id.eq,\n type: gqlType,\n })\n\n if (runQueryActivity) {\n runQueryActivity.end()\n }\n\n return {\n gqlType,\n entries: new GatsbyIterable(nodeFoundById ? [nodeFoundById] : []),\n totalCount: async () => (nodeFoundById ? 1 : 0),\n }\n }\n\n let materializationActivity\n if (tracer) {\n materializationActivity = reporter.phantomActivity(`Materialization`, {\n parentSpan: tracer.getParentActivity().span,\n })\n materializationActivity.start()\n }\n const fields = getQueryFields({\n filter: query.filter,\n sort: query.sort,\n group: query.group,\n distinct: query.distinct,\n max: query.max,\n min: query.min,\n sum: query.sum,\n })\n\n const fieldsToResolve = determineResolvableFields(\n this.schemaComposer,\n this.schema,\n gqlType,\n fields\n )\n\n for (const nodeTypeName of nodeTypeNames) {\n const gqlNodeType = this.schema.getType(nodeTypeName)\n await this.prepareNodes(gqlNodeType, fields, fieldsToResolve)\n }\n\n if (materializationActivity) {\n materializationActivity.end()\n }\n\n if (tracer) {\n runQueryActivity = reporter.phantomActivity(`runQuery`, {\n parentSpan: tracer.getParentActivity().span,\n })\n runQueryActivity.start()\n }\n\n const { entries, totalCount } = await getDataStore().runQuery({\n queryArgs: query,\n gqlSchema: this.schema,\n gqlComposer: this.schemaComposer,\n gqlType,\n resolvedFields: fieldsToResolve,\n nodeTypeNames,\n filtersCache: this._filtersCache,\n stats,\n })\n\n if (runQueryActivity) {\n runQueryActivity.end()\n }\n\n return {\n gqlType,\n entries: entries.map(node => {\n // With GatsbyIterable it happens lazily as we iterate\n this.trackInlineObjectsInRootNode(node)\n return node\n }),\n totalCount,\n }\n }\n\n /**\n * Get all nodes in the store, or all nodes of a specified type (optionally with limit/skip).\n * Returns slice of result as iterable and total count of nodes.\n *\n * @param {*} args\n * @param {Object} args.query Query arguments (e.g. `limit` and `skip`)\n * @param {(string|GraphQLOutputType)} args.type Type\n * @param {PageDependencies} [pageDependencies]\n * @return {Promise<Object>} Object containing `{ entries: GatsbyIterable, totalCount: () => Promise<number> }`\n */\n async findAll(args, pageDependencies = {}) {\n const { gqlType, ...result } = await this._query(args, pageDependencies)\n\n // Tracking connections by default:\n if (typeof pageDependencies.connectionType === `undefined`) {\n pageDependencies.connectionType = gqlType.name\n }\n this.trackPageDependencies(result.entries, pageDependencies)\n return {\n entries: wrapNodes(result.entries),\n totalCount: result.totalCount,\n }\n }\n\n /**\n * Get one node in the store. Only returns the first result.\n *\n * @param {*} args\n * @param {Object} args.query Query arguments (e.g. `filter`). Doesn't support `sort`, `limit`, `skip`.\n * @param {(string|GraphQLOutputType)} args.type Type\n * @param {PageDependencies} [pageDependencies]\n * @returns {Promise<Node>}\n */\n async findOne(args, pageDependencies = {}) {\n const { query = {} } = args\n if (query.sort?.fields?.length > 0) {\n // If we support sorting and return the first node based on sorting\n // we'll have to always track connection not an individual node\n throw new Error(\n `nodeModel.findOne() does not support sorting. Use nodeModel.findAll({ query: { limit: 1 } }) instead.`\n )\n }\n const { gqlType, entries } = await this._query({\n ...args,\n query: { ...query, skip: 0, limit: 1, sort: undefined },\n })\n const result = Array.from(entries)\n const first = result[0] ?? null\n\n if (!first) {\n // Couldn't find matching node.\n // This leads to a state where data tracking for this query gets empty.\n // It means we will NEVER re-run this query on any data updates\n // (even if a new node matching this query is added at some point).\n // To workaround this, we have to add a connection tracking to re-run\n // the query whenever any node of this type changes.\n pageDependencies.connectionType = gqlType.name\n }\n return wrapNode(this.trackPageDependencies(first, pageDependencies))\n }\n\n prepareNodes(type, queryFields, fieldsToResolve) {\n const typeName = type.name\n if (!this._prepareNodesQueues[typeName]) {\n this._prepareNodesQueues[typeName] = []\n }\n\n this._prepareNodesQueues[typeName].push({\n queryFields,\n fieldsToResolve,\n })\n\n if (!this._prepareNodesPromises[typeName]) {\n this._prepareNodesPromises[typeName] = new Promise(resolve => {\n process.nextTick(async () => {\n await this._doResolvePrepareNodesQueue(type)\n resolve()\n })\n })\n }\n\n return this._prepareNodesPromises[typeName]\n }\n\n async _doResolvePrepareNodesQueue(type) {\n const typeName = type.name\n const queue = this._prepareNodesQueues[typeName]\n this._prepareNodesQueues[typeName] = []\n this._prepareNodesPromises[typeName] = null\n\n const { queryFields, fieldsToResolve } = queue.reduce(\n (\n { queryFields, fieldsToResolve },\n { queryFields: nextQueryFields, fieldsToResolve: nextFieldsToResolve }\n ) => {\n return {\n queryFields: _.merge(queryFields, nextQueryFields),\n fieldsToResolve: _.merge(fieldsToResolve, nextFieldsToResolve),\n }\n },\n {\n queryFields: {},\n fieldsToResolve: {},\n }\n )\n\n const actualFieldsToResolve = deepObjectDifference(\n fieldsToResolve,\n this._preparedNodesCache.get(typeName) || {}\n )\n\n if (!_.isEmpty(actualFieldsToResolve)) {\n const resolvedNodes = new Map()\n for (const node of getDataStore().iterateNodesByType(typeName)) {\n this.trackInlineObjectsInRootNode(node)\n const resolvedFields = await resolveRecursive(\n this,\n this.schemaComposer,\n this.schema,\n node,\n type,\n queryFields,\n actualFieldsToResolve\n )\n\n resolvedNodes.set(node.id, resolvedFields)\n }\n if (resolvedNodes.size) {\n await saveResolvedNodes(typeName, resolvedNodes)\n }\n this._preparedNodesCache.set(\n typeName,\n _.merge(\n {},\n this._preparedNodesCache.get(typeName) || {},\n actualFieldsToResolve\n )\n )\n }\n }\n\n /**\n * Get the names of all node types in the store.\n *\n * @returns {string[]}\n */\n getTypes() {\n return getTypes()\n }\n\n /**\n * Adds link between inline objects/arrays contained in Node object\n * and that Node object.\n * @param {Node} node Root Node\n */\n trackInlineObjectsInRootNode(node) {\n if (!this._trackedRootNodes.has(node)) {\n addRootNodeToInlineObject(\n this._rootNodeMap,\n node,\n node.id,\n true,\n new Set()\n )\n this._trackedRootNodes.add(node)\n }\n }\n\n /**\n * Finds top most ancestor of node that contains passed Object or Array\n * @param {(Object|Array)} obj Object/Array belonging to Node object or Node object\n * @param {nodePredicate} [predicate] Optional callback to check if ancestor meets defined conditions\n * @returns {Node} Top most ancestor if predicate is not specified\n * or first node that meet predicate conditions if predicate is specified\n */\n findRootNodeAncestor(obj, predicate = null) {\n let iterations = 0\n let node = obj\n\n while (iterations++ < 100) {\n if (predicate && predicate(node)) return node\n\n const parent = getNodeById(node.parent)\n const id = this._rootNodeMap.get(node)\n const trackedParent = getNodeById(id)\n\n if (!parent && !trackedParent) {\n const isMatchingRoot = !predicate || predicate(node)\n return isMatchingRoot ? node : null\n }\n\n node = parent || trackedParent\n }\n\n reporter.error(\n `It looks like you have a node that's set its parent as itself:\\n\\n` +\n node\n )\n return null\n }\n\n /**\n * Given a result, that's either a single node or an array of them, track them\n * using pageDependencies. Defaults to tracking according to current resolver\n * path. Returns the result back.\n *\n * @param {Node | Node[]} result\n * @param {PageDependencies} [pageDependencies]\n * @returns {Node | Node[]}\n */\n trackPageDependencies(result, pageDependencies = {}) {\n const { path, connectionType, track = true } = pageDependencies\n if (path && track) {\n if (connectionType) {\n this.createPageDependency({ path, connection: connectionType })\n } else {\n const nodes = isIterable(result) ? result : [result]\n for (const node of nodes) {\n if (node) {\n this.createPageDependency({ path, nodeId: node.id })\n }\n }\n }\n }\n\n return result\n }\n}\n\nclass ContextualNodeModel {\n constructor(rootNodeModel, context) {\n this.nodeModel = rootNodeModel\n this.context = context\n }\n\n withContext(context) {\n return new ContextualNodeModel(this.nodeModel, {\n ...this.context,\n ...context,\n })\n }\n\n _getFullDependencies(pageDependencies) {\n return {\n path: this.context.path,\n ...(pageDependencies || {}),\n }\n }\n\n getNodeById(args, pageDependencies) {\n return this.nodeModel.getNodeById(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n getNodesByIds(args, pageDependencies) {\n return this.nodeModel.getNodesByIds(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n getAllNodes(args, pageDependencies) {\n return this.nodeModel.getAllNodes(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n runQuery(args, pageDependencies) {\n return this.nodeModel.runQuery(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n findOne(args, pageDependencies) {\n return this.nodeModel.findOne(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n findAll(args, pageDependencies) {\n return this.nodeModel.findAll(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n prepareNodes(...args) {\n return this.nodeModel.prepareNodes(...args)\n }\n\n getTypes(...args) {\n return this.nodeModel.getTypes(...args)\n }\n\n trackInlineObjectsInRootNode(...args) {\n return this.nodeModel.trackInlineObjectsInRootNode(...args)\n }\n\n findRootNodeAncestor(...args) {\n return this.nodeModel.findRootNodeAncestor(...args)\n }\n\n createPageDependency(...args) {\n return this.nodeModel.createPageDependency(...args)\n }\n\n trackPageDependencies(result, pageDependencies) {\n return this.nodeModel.trackPageDependencies(\n result,\n this._getFullDependencies(pageDependencies)\n )\n }\n}\n\nconst getNodeById = id => (id != null ? getNode(id) : null)\n\nconst getQueryFields = ({ filter, sort, group, distinct, max, min, sum }) => {\n const filterFields = filter ? dropQueryOperators(filter) : {}\n const sortFields = (sort && sort.fields) || []\n\n if (group && !Array.isArray(group)) {\n group = [group]\n } else if (group == null) {\n group = []\n }\n\n if (distinct && !Array.isArray(distinct)) {\n distinct = [distinct]\n } else if (distinct == null) {\n distinct = []\n }\n\n if (max && !Array.isArray(max)) {\n max = [max]\n } else if (max == null) {\n max = []\n }\n\n if (min && !Array.isArray(min)) {\n min = [min]\n } else if (min == null) {\n min = []\n }\n\n if (sum && !Array.isArray(sum)) {\n sum = [sum]\n } else if (sum == null) {\n sum = []\n }\n\n return _.merge(\n filterFields,\n ...sortFields.map(pathToObject),\n ...group.map(pathToObject),\n ...distinct.map(pathToObject),\n ...max.map(pathToObject),\n ...min.map(pathToObject),\n ...sum.map(pathToObject)\n )\n}\n\nconst pathToObject = path => {\n if (path && typeof path === `string`) {\n return path.split(`.`).reduceRight((acc, key) => {\n return { [key]: acc }\n }, true)\n }\n return {}\n}\n\nconst dropQueryOperators = filter =>\n Object.keys(filter).reduce((acc, key) => {\n const value = filter[key]\n const k = Object.keys(value)[0]\n const v = value[k]\n if (_.isPlainObject(value) && _.isPlainObject(v)) {\n acc[key] =\n k === `elemMatch` ? dropQueryOperators(v) : dropQueryOperators(value)\n } else {\n acc[key] = true\n }\n return acc\n }, {})\n\nconst getFields = (schema, type, node) => {\n if (!isAbstractType(type)) {\n return type.getFields()\n }\n\n const concreteType = type.resolveType(node)\n return schema.getType(concreteType).getFields()\n}\n\nasync function resolveRecursive(\n nodeModel,\n schemaComposer,\n schema,\n node,\n type,\n queryFields,\n fieldsToResolve\n) {\n const gqlFields = getFields(schema, type, node)\n const resolvedFields = {}\n for (const fieldName of Object.keys(fieldsToResolve)) {\n const fieldToResolve = fieldsToResolve[fieldName]\n const queryField = queryFields[fieldName]\n const gqlField = gqlFields[fieldName]\n const gqlNonNullType = getNullableType(gqlField.type)\n const gqlFieldType = getNamedType(gqlField.type)\n let innerValue = await resolveField(\n nodeModel,\n schemaComposer,\n schema,\n node,\n gqlField,\n fieldName\n )\n if (gqlField && innerValue != null) {\n if (\n isCompositeType(gqlFieldType) &&\n !(gqlNonNullType instanceof GraphQLList)\n ) {\n innerValue = await resolveRecursive(\n nodeModel,\n schemaComposer,\n schema,\n innerValue,\n gqlFieldType,\n queryField,\n _.isObject(fieldToResolve) ? fieldToResolve : queryField\n )\n } else if (\n isCompositeType(gqlFieldType) &&\n (_.isArray(innerValue) || innerValue instanceof GatsbyIterable) &&\n gqlNonNullType instanceof GraphQLList\n ) {\n innerValue = await Promise.all(\n innerValue.map(item =>\n item == null\n ? item\n : resolveRecursive(\n nodeModel,\n schemaComposer,\n schema,\n item,\n gqlFieldType,\n queryField,\n _.isObject(fieldToResolve) ? fieldToResolve : queryField\n )\n )\n )\n }\n }\n if (innerValue != null) {\n resolvedFields[fieldName] = innerValue\n }\n }\n\n for (const fieldName of Object.keys(queryFields)) {\n if (!fieldsToResolve[fieldName] && node[fieldName]) {\n // It is possible that this field still has a custom resolver\n // See https://github.com/gatsbyjs/gatsby/issues/27368\n resolvedFields[fieldName] = await resolveField(\n nodeModel,\n schemaComposer,\n schema,\n node,\n gqlFields[fieldName],\n fieldName\n )\n }\n }\n\n return _.pickBy(resolvedFields, (value, key) => queryFields[key])\n}\nlet withResolverContext\nfunction resolveField(\n nodeModel,\n schemaComposer,\n schema,\n node,\n gqlField,\n fieldName\n) {\n if (!gqlField?.resolve) {\n return node[fieldName]\n }\n\n // We require this inline as there's a circular dependency from context back to this file.\n // https://github.com/gatsbyjs/gatsby/blob/9d33b107d167e3e9e2aa282924a0c409f6afd5a0/packages/gatsby/src/schema/context.ts#L5\n if (!withResolverContext) {\n withResolverContext = require(`./context`)\n }\n\n return gqlField.resolve(\n node,\n gqlField.args.reduce((acc, arg) => {\n acc[arg.name] = arg.defaultValue\n return acc\n }, {}),\n withResolverContext({\n schema,\n schemaComposer,\n nodeModel,\n }),\n {\n fieldName,\n schema,\n returnType: gqlField.type,\n }\n )\n}\n\nconst determineResolvableFields = (\n schemaComposer,\n schema,\n type,\n fields,\n isNestedAndParentNeedsResolve = false\n) => {\n const fieldsToResolve = {}\n const gqlFields = type.getFields()\n Object.keys(fields).forEach(fieldName => {\n const field = fields[fieldName]\n const gqlField = gqlFields[fieldName]\n const gqlFieldType = getNamedType(gqlField.type)\n const typeComposer = schemaComposer.getAnyTC(type.name)\n\n const needsResolve = fieldNeedToResolve({\n schema,\n gqlType: type,\n typeComposer,\n schemaComposer,\n fieldName,\n })\n\n if (_.isObject(field) && gqlField) {\n const innerResolved = determineResolvableFields(\n schemaComposer,\n schema,\n gqlFieldType,\n field,\n isNestedAndParentNeedsResolve || needsResolve\n )\n if (!_.isEmpty(innerResolved)) {\n fieldsToResolve[fieldName] = innerResolved\n }\n }\n\n if (!fieldsToResolve[fieldName] && needsResolve) {\n fieldsToResolve[fieldName] = true\n }\n if (!fieldsToResolve[fieldName] && isNestedAndParentNeedsResolve) {\n // If parent field needs to be resolved - all nested fields should be added as well\n // See https://github.com/gatsbyjs/gatsby/issues/26056\n fieldsToResolve[fieldName] = true\n }\n })\n return fieldsToResolve\n}\n\nconst addRootNodeToInlineObject = (\n rootNodeMap,\n data,\n nodeId,\n isNode /* : boolean */,\n path /* : Set<mixed> */\n) /* : void */ => {\n const isPlainObject = _.isPlainObject(data)\n\n if (isPlainObject || _.isArray(data)) {\n if (path.has(data)) return\n path.add(data)\n\n _.each(data, (o, key) => {\n if (!isNode || key !== `internal`) {\n addRootNodeToInlineObject(rootNodeMap, o, nodeId, false, path)\n }\n })\n\n // don't need to track node itself\n if (!isNode) {\n rootNodeMap.set(data, nodeId)\n }\n }\n}\n\nconst saveResolvedNodes = (typeName, resolvedNodes) => {\n store.dispatch({\n type: `SET_RESOLVED_NODES`,\n payload: {\n key: typeName,\n nodes: resolvedNodes,\n },\n })\n}\n\nconst deepObjectDifference = (from, to) => {\n const result = {}\n Object.keys(from).forEach(key => {\n const toValue = to[key]\n if (toValue) {\n if (_.isPlainObject(toValue)) {\n const deepResult = deepObjectDifference(from[key], toValue)\n if (!_.isEmpty(deepResult)) {\n result[key] = deepResult\n }\n }\n } else {\n result[key] = from[key]\n }\n })\n return result\n}\n\nmodule.exports = {\n LocalNodeModel,\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-model.js","names":["_","require","isAbstractType","GraphQLOutputType","GraphQLUnionType","GraphQLList","getNamedType","getNullableType","isCompositeType","invariant","reporter","LocalNodeModel","constructor","schema","schemaComposer","createPageDependency","_rootNodeMap","_trackedRootNodes","createPageDependencyActionCreator","WeakMap","WeakSet","_prepareNodesQueues","_prepareNodesPromises","_preparedNodesCache","Map","replaceFiltersCache","createPageDependencyArgs","connection","nodeTypeNames","toNodeTypeNames","forEach","typeName","map","_filtersCache","withContext","context","ContextualNodeModel","getNodeById","args","pageDependencies","id","type","node","result","includes","internal","trackInlineObjectsInRootNode","wrapNode","trackPageDependencies","getNodesByIds","ids","nodes","Array","isArray","filter","Boolean","length","wrapNodes","getAllNodes","reportOnce","getNodes","nodesByType","getNodesByType","concat","connectionType","name","runQuery","firstOnly","findOne","skip","limit","query","findAll","from","entries","_query","stats","tracer","gqlType","getType","runQueryActivity","eq","Object","keys","phantomActivity","parentSpan","getParentActivity","span","start","nodeFoundById","end","GatsbyIterable","totalCount","materializationActivity","fields","getQueryFields","sort","group","distinct","max","min","sum","fieldsToResolve","determineResolvableFields","nodeTypeName","gqlNodeType","prepareNodes","getDataStore","queryArgs","gqlSchema","gqlComposer","resolvedFields","filtersCache","Error","undefined","first","queryFields","push","Promise","resolve","process","nextTick","_doResolvePrepareNodesQueue","queue","reduce","nextQueryFields","nextFieldsToResolve","merge","actualFieldsToResolve","deepObjectDifference","get","isEmpty","schemaCustomization","customContext","store","getState","resolvedNodes","iterateNodesByType","resolveRecursive","set","size","saveResolvedNodes","getTypes","has","addRootNodeToInlineObject","Set","add","findRootNodeAncestor","obj","predicate","iterations","parent","trackedParent","isMatchingRoot","error","path","track","isIterable","nodeId","rootNodeModel","nodeModel","_getFullDependencies","getNode","filterFields","dropQueryOperators","sortFields","pathToObject","split","reduceRight","acc","key","value","k","v","isPlainObject","getFields","concreteType","resolveType","gqlFields","fieldName","fieldToResolve","queryField","gqlField","gqlNonNullType","gqlFieldType","innerValue","resolveField","isObject","all","item","pickBy","withResolverContext","arg","defaultValue","returnType","isNestedAndParentNeedsResolve","field","typeComposer","getAnyTC","needsResolve","fieldNeedToResolve","innerResolved","rootNodeMap","data","isNode","each","o","dispatch","payload","to","toValue","deepResult","module","exports"],"sources":["../../src/schema/node-model.js"],"sourcesContent":["// @flow\n\nconst _ = require(`lodash`)\nconst {\n isAbstractType,\n GraphQLOutputType,\n GraphQLUnionType,\n GraphQLList,\n getNamedType,\n getNullableType,\n isCompositeType,\n} = require(`graphql`)\nconst invariant = require(`invariant`)\nconst reporter = require(`gatsby-cli/lib/reporter`)\nimport { store } from \"../redux\"\nimport {\n getDataStore,\n getNode,\n getNodes,\n getNodesByType,\n getTypes,\n} from \"../datastore\"\nimport { GatsbyIterable, isIterable } from \"../datastore/common/iterable\"\nimport { reportOnce } from \"../utils/report-once\"\nimport { wrapNode, wrapNodes } from \"../utils/detect-node-mutations\"\nimport { toNodeTypeNames, fieldNeedToResolve } from \"./utils\"\n\ntype TypeOrTypeName = string | GraphQLOutputType\n\n/**\n * Optional page dependency information.\n *\n * @typedef {Object} PageDependencies\n * @property {string} path The path of the page that depends on the retrieved nodes' data\n * @property {string} [connectionType] Mark this dependency as a connection\n */\ninterface PageDependencies {\n path: string;\n connectionType?: string;\n}\n\ninterface QueryArguments {\n type: TypeOrTypeName;\n query: { filter: Object, sort?: Object };\n firstOnly?: boolean;\n}\n\nexport interface NodeModel {\n getNodeById(\n { id: string, type?: TypeOrTypeName },\n pageDependencies?: PageDependencies\n ): any | null;\n getNodesByIds(\n { ids: Array<string>, type?: TypeOrTypeName },\n pageDependencies?: PageDependencies\n ): Array<any>;\n getAllNodes(\n { type?: TypeOrTypeName },\n pageDependencies?: PageDependencies\n ): Array<any>;\n runQuery(\n args: QueryArguments,\n pageDependencies?: PageDependencies\n ): Promise<any>;\n getTypes(): Array<string>;\n trackPageDependencies<nodeOrNodes: Node | Node[]>(\n result: nodeOrNodes,\n pageDependencies?: PageDependencies\n ): nodesOrNodes;\n findRootNodeAncestor(obj: any, predicate: () => boolean): Node | null;\n trackInlineObjectsInRootNode(node: Node, sanitize: boolean): Node;\n}\n\nclass LocalNodeModel {\n constructor({\n schema,\n schemaComposer,\n createPageDependency,\n _rootNodeMap,\n _trackedRootNodes,\n }) {\n this.schema = schema\n this.schemaComposer = schemaComposer\n this.createPageDependencyActionCreator = createPageDependency\n this._rootNodeMap = _rootNodeMap || new WeakMap()\n this._trackedRootNodes = _trackedRootNodes || new WeakSet()\n this._prepareNodesQueues = {}\n this._prepareNodesPromises = {}\n this._preparedNodesCache = new Map()\n this.replaceFiltersCache()\n }\n\n createPageDependency(createPageDependencyArgs) {\n if (createPageDependencyArgs.connection) {\n const nodeTypeNames = toNodeTypeNames(\n this.schema,\n createPageDependencyArgs.connection\n )\n if (nodeTypeNames) {\n nodeTypeNames.forEach(typeName => {\n this.createPageDependencyActionCreator({\n ...createPageDependencyArgs,\n connection: typeName,\n })\n })\n return\n }\n }\n\n this.createPageDependencyActionCreator(createPageDependencyArgs)\n }\n\n /**\n * Replace the cache either with the value passed on (mainly for tests) or\n * an empty new Map.\n *\n * @param {undefined | null | FiltersCache} map\n * (This cached is used in redux/nodes.js and caches a set of buckets (Sets)\n * of Nodes based on filter and tracks this for each set of types which are\n * actually queried. If the filter targets `id` directly, only one Node is\n * cached instead of a Set of Nodes. If null, don't create or use a cache.\n */\n replaceFiltersCache(map = new Map()) {\n this._filtersCache = map // See redux/nodes.js for usage\n }\n\n withContext(context) {\n return new ContextualNodeModel(this, context)\n }\n\n /**\n * Get a node from the store by ID and optional type.\n *\n * @param {Object} args\n * @param {string} args.id ID of the requested node\n * @param {(string|GraphQLOutputType)} [args.type] Optional type of the node\n * @param {PageDependencies} [pageDependencies]\n * @returns {(Node|null)}\n */\n getNodeById(args, pageDependencies) {\n const { id, type } = args || {}\n\n const node = getNodeById(id)\n\n let result\n if (!node) {\n result = null\n } else if (!type) {\n result = node\n } else {\n const nodeTypeNames = toNodeTypeNames(this.schema, type)\n result = nodeTypeNames.includes(node.internal.type) ? node : null\n }\n\n if (result) {\n this.trackInlineObjectsInRootNode(node)\n }\n\n return wrapNode(this.trackPageDependencies(result, pageDependencies))\n }\n\n /**\n * Get nodes from the store by IDs and optional type.\n *\n * @param {Object} args\n * @param {string[]} args.ids IDs of the requested nodes\n * @param {(string|GraphQLOutputType)} [args.type] Optional type of the nodes\n * @param {PageDependencies} [pageDependencies]\n * @returns {Node[]}\n */\n getNodesByIds(args, pageDependencies) {\n const { ids, type } = args || {}\n\n const nodes = Array.isArray(ids)\n ? ids.map(id => getNodeById(id)).filter(Boolean)\n : []\n\n let result\n if (!nodes.length || !type) {\n result = nodes\n } else {\n const nodeTypeNames = toNodeTypeNames(this.schema, type)\n result = nodes.filter(node => nodeTypeNames.includes(node.internal.type))\n }\n\n if (result) {\n result.forEach(node => this.trackInlineObjectsInRootNode(node))\n }\n\n return wrapNodes(this.trackPageDependencies(result, pageDependencies))\n }\n\n /**\n * Get all nodes in the store, or all nodes of a specified type. Note that\n * this adds connectionType tracking by default if type is passed.\n *\n * @deprecated Since version 4.0 - Use nodeModel.findAll() instead\n * @param {Object} args\n * @param {(string|GraphQLOutputType)} [args.type] Optional type of the nodes\n * @param {PageDependencies} [pageDependencies]\n * @returns {Node[]}\n */\n getAllNodes(args, pageDependencies = {}) {\n // TODO(v5): Remove API\n reportOnce(\n `nodeModel.getAllNodes() is deprecated. Use nodeModel.findAll() with an empty query instead.`\n )\n const { type = `Node` } = args || {}\n\n let result\n if (type === `Node`) {\n result = getNodes()\n } else {\n const nodeTypeNames = toNodeTypeNames(this.schema, type)\n const nodesByType = nodeTypeNames.map(typeName =>\n getNodesByType(typeName)\n )\n const nodes = [].concat(...nodesByType)\n result = nodes.filter(Boolean)\n }\n\n if (result) {\n result.forEach(node => this.trackInlineObjectsInRootNode(node))\n }\n\n if (typeof pageDependencies.connectionType === `undefined`) {\n pageDependencies.connectionType =\n typeof type === `string` ? type : type.name\n }\n\n return wrapNodes(this.trackPageDependencies(result, pageDependencies))\n }\n\n /**\n * Get nodes of a type matching the specified query.\n *\n * @deprecated Since version 4.0 - Use nodeModel.findAll() or nodeModel.findOne() instead\n * @param {Object} args\n * @param {Object} args.query Query arguments (`filter` and `sort`)\n * @param {(string|GraphQLOutputType)} args.type Type\n * @param {boolean} [args.firstOnly] If true, return only first match\n * @param {PageDependencies} [pageDependencies]\n * @returns {Promise<Node[]>}\n */\n async runQuery(args, pageDependencies = {}) {\n // TODO(v5): Remove API\n reportOnce(\n `nodeModel.runQuery() is deprecated. Use nodeModel.findAll() or nodeModel.findOne() instead.`\n )\n if (args.firstOnly) {\n return this.findOne(args, pageDependencies)\n }\n const { skip, limit, ...query } = args.query\n const result = await this.findAll({ ...args, query }, pageDependencies)\n return Array.from(result.entries)\n }\n\n async _query(args) {\n const { query = {}, type, stats, tracer } = args || {}\n\n // We don't support querying union types (yet?), because the combined types\n // need not have any fields in common.\n const gqlType = typeof type === `string` ? this.schema.getType(type) : type\n invariant(\n !(gqlType instanceof GraphQLUnionType),\n `Querying GraphQLUnion types is not supported.`\n )\n\n const nodeTypeNames = toNodeTypeNames(this.schema, gqlType)\n\n let runQueryActivity\n\n // check if we can get node by id and skip\n // more expensive query pipeline\n if (\n typeof query?.filter?.id?.eq !== `undefined` &&\n Object.keys(query.filter).length === 1 &&\n Object.keys(query.filter.id).length === 1\n ) {\n if (tracer) {\n runQueryActivity = reporter.phantomActivity(`runQuerySimpleIdEq`, {\n parentSpan: tracer.getParentActivity().span,\n })\n runQueryActivity.start()\n }\n const nodeFoundById = this.getNodeById({\n id: query.filter.id.eq,\n type: gqlType,\n })\n\n if (runQueryActivity) {\n runQueryActivity.end()\n }\n\n return {\n gqlType,\n entries: new GatsbyIterable(nodeFoundById ? [nodeFoundById] : []),\n totalCount: async () => (nodeFoundById ? 1 : 0),\n }\n }\n\n let materializationActivity\n if (tracer) {\n materializationActivity = reporter.phantomActivity(`Materialization`, {\n parentSpan: tracer.getParentActivity().span,\n })\n materializationActivity.start()\n }\n const fields = getQueryFields({\n filter: query.filter,\n sort: query.sort,\n group: query.group,\n distinct: query.distinct,\n max: query.max,\n min: query.min,\n sum: query.sum,\n })\n\n const fieldsToResolve = determineResolvableFields(\n this.schemaComposer,\n this.schema,\n gqlType,\n fields\n )\n\n for (const nodeTypeName of nodeTypeNames) {\n const gqlNodeType = this.schema.getType(nodeTypeName)\n await this.prepareNodes(gqlNodeType, fields, fieldsToResolve)\n }\n\n if (materializationActivity) {\n materializationActivity.end()\n }\n\n if (tracer) {\n runQueryActivity = reporter.phantomActivity(`runQuery`, {\n parentSpan: tracer.getParentActivity().span,\n })\n runQueryActivity.start()\n }\n\n const { entries, totalCount } = await getDataStore().runQuery({\n queryArgs: query,\n gqlSchema: this.schema,\n gqlComposer: this.schemaComposer,\n gqlType,\n resolvedFields: fieldsToResolve,\n nodeTypeNames,\n filtersCache: this._filtersCache,\n stats,\n })\n\n if (runQueryActivity) {\n runQueryActivity.end()\n }\n\n return {\n gqlType,\n entries: entries.map(node => {\n // With GatsbyIterable it happens lazily as we iterate\n this.trackInlineObjectsInRootNode(node)\n return node\n }),\n totalCount,\n }\n }\n\n /**\n * Get all nodes in the store, or all nodes of a specified type (optionally with limit/skip).\n * Returns slice of result as iterable and total count of nodes.\n *\n * @param {*} args\n * @param {Object} args.query Query arguments (e.g. `limit` and `skip`)\n * @param {(string|GraphQLOutputType)} args.type Type\n * @param {PageDependencies} [pageDependencies]\n * @return {Promise<Object>} Object containing `{ entries: GatsbyIterable, totalCount: () => Promise<number> }`\n */\n async findAll(args, pageDependencies = {}) {\n const { gqlType, ...result } = await this._query(args, pageDependencies)\n\n // Tracking connections by default:\n if (typeof pageDependencies.connectionType === `undefined`) {\n pageDependencies.connectionType = gqlType.name\n }\n this.trackPageDependencies(result.entries, pageDependencies)\n return {\n entries: wrapNodes(result.entries),\n totalCount: result.totalCount,\n }\n }\n\n /**\n * Get one node in the store. Only returns the first result.\n *\n * @param {*} args\n * @param {Object} args.query Query arguments (e.g. `filter`). Doesn't support `sort`, `limit`, `skip`.\n * @param {(string|GraphQLOutputType)} args.type Type\n * @param {PageDependencies} [pageDependencies]\n * @returns {Promise<Node>}\n */\n async findOne(args, pageDependencies = {}) {\n const { query = {} } = args\n if (query.sort?.fields?.length > 0) {\n // If we support sorting and return the first node based on sorting\n // we'll have to always track connection not an individual node\n throw new Error(\n `nodeModel.findOne() does not support sorting. Use nodeModel.findAll({ query: { limit: 1 } }) instead.`\n )\n }\n const { gqlType, entries } = await this._query({\n ...args,\n query: { ...query, skip: 0, limit: 1, sort: undefined },\n })\n const result = Array.from(entries)\n const first = result[0] ?? null\n\n if (!first) {\n // Couldn't find matching node.\n // This leads to a state where data tracking for this query gets empty.\n // It means we will NEVER re-run this query on any data updates\n // (even if a new node matching this query is added at some point).\n // To workaround this, we have to add a connection tracking to re-run\n // the query whenever any node of this type changes.\n pageDependencies.connectionType = gqlType.name\n }\n return wrapNode(this.trackPageDependencies(first, pageDependencies))\n }\n\n prepareNodes(type, queryFields, fieldsToResolve) {\n const typeName = type.name\n if (!this._prepareNodesQueues[typeName]) {\n this._prepareNodesQueues[typeName] = []\n }\n\n this._prepareNodesQueues[typeName].push({\n queryFields,\n fieldsToResolve,\n })\n\n if (!this._prepareNodesPromises[typeName]) {\n this._prepareNodesPromises[typeName] = new Promise(resolve => {\n process.nextTick(async () => {\n await this._doResolvePrepareNodesQueue(type)\n resolve()\n })\n })\n }\n\n return this._prepareNodesPromises[typeName]\n }\n\n async _doResolvePrepareNodesQueue(type) {\n const typeName = type.name\n const queue = this._prepareNodesQueues[typeName]\n this._prepareNodesQueues[typeName] = []\n this._prepareNodesPromises[typeName] = null\n\n const { queryFields, fieldsToResolve } = queue.reduce(\n (\n { queryFields, fieldsToResolve },\n { queryFields: nextQueryFields, fieldsToResolve: nextFieldsToResolve }\n ) => {\n return {\n queryFields: _.merge(queryFields, nextQueryFields),\n fieldsToResolve: _.merge(fieldsToResolve, nextFieldsToResolve),\n }\n },\n {\n queryFields: {},\n fieldsToResolve: {},\n }\n )\n\n const actualFieldsToResolve = deepObjectDifference(\n fieldsToResolve,\n this._preparedNodesCache.get(typeName) || {}\n )\n\n if (!_.isEmpty(actualFieldsToResolve)) {\n const {\n schemaCustomization: { context: customContext },\n } = store.getState()\n const resolvedNodes = new Map()\n for (const node of getDataStore().iterateNodesByType(typeName)) {\n this.trackInlineObjectsInRootNode(node)\n const resolvedFields = await resolveRecursive(\n this,\n this.schemaComposer,\n this.schema,\n node,\n type,\n queryFields,\n actualFieldsToResolve,\n customContext\n )\n\n resolvedNodes.set(node.id, resolvedFields)\n }\n if (resolvedNodes.size) {\n await saveResolvedNodes(typeName, resolvedNodes)\n }\n this._preparedNodesCache.set(\n typeName,\n _.merge(\n {},\n this._preparedNodesCache.get(typeName) || {},\n actualFieldsToResolve\n )\n )\n }\n }\n\n /**\n * Get the names of all node types in the store.\n *\n * @returns {string[]}\n */\n getTypes() {\n return getTypes()\n }\n\n /**\n * Adds link between inline objects/arrays contained in Node object\n * and that Node object.\n * @param {Node} node Root Node\n */\n trackInlineObjectsInRootNode(node) {\n if (!this._trackedRootNodes.has(node)) {\n addRootNodeToInlineObject(\n this._rootNodeMap,\n node,\n node.id,\n true,\n new Set()\n )\n this._trackedRootNodes.add(node)\n }\n }\n\n /**\n * Finds top most ancestor of node that contains passed Object or Array\n * @param {(Object|Array)} obj Object/Array belonging to Node object or Node object\n * @param {nodePredicate} [predicate] Optional callback to check if ancestor meets defined conditions\n * @returns {Node} Top most ancestor if predicate is not specified\n * or first node that meet predicate conditions if predicate is specified\n */\n findRootNodeAncestor(obj, predicate = null) {\n let iterations = 0\n let node = obj\n\n while (iterations++ < 100) {\n if (predicate && predicate(node)) return node\n\n const parent = getNodeById(node.parent)\n const id = this._rootNodeMap.get(node)\n const trackedParent = getNodeById(id)\n\n if (!parent && !trackedParent) {\n const isMatchingRoot = !predicate || predicate(node)\n return isMatchingRoot ? node : null\n }\n\n node = parent || trackedParent\n }\n\n reporter.error(\n `It looks like you have a node that's set its parent as itself:\\n\\n` +\n node\n )\n return null\n }\n\n /**\n * Given a result, that's either a single node or an array of them, track them\n * using pageDependencies. Defaults to tracking according to current resolver\n * path. Returns the result back.\n *\n * @param {Node | Node[]} result\n * @param {PageDependencies} [pageDependencies]\n * @returns {Node | Node[]}\n */\n trackPageDependencies(result, pageDependencies = {}) {\n const { path, connectionType, track = true } = pageDependencies\n if (path && track) {\n if (connectionType) {\n this.createPageDependency({ path, connection: connectionType })\n } else {\n const nodes = isIterable(result) ? result : [result]\n for (const node of nodes) {\n if (node) {\n this.createPageDependency({ path, nodeId: node.id })\n }\n }\n }\n }\n\n return result\n }\n}\n\nclass ContextualNodeModel {\n constructor(rootNodeModel, context) {\n this.nodeModel = rootNodeModel\n this.context = context\n }\n\n withContext(context) {\n return new ContextualNodeModel(this.nodeModel, {\n ...this.context,\n ...context,\n })\n }\n\n _getFullDependencies(pageDependencies) {\n return {\n path: this.context.path,\n ...(pageDependencies || {}),\n }\n }\n\n getNodeById(args, pageDependencies) {\n return this.nodeModel.getNodeById(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n getNodesByIds(args, pageDependencies) {\n return this.nodeModel.getNodesByIds(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n getAllNodes(args, pageDependencies) {\n return this.nodeModel.getAllNodes(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n runQuery(args, pageDependencies) {\n return this.nodeModel.runQuery(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n findOne(args, pageDependencies) {\n return this.nodeModel.findOne(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n findAll(args, pageDependencies) {\n return this.nodeModel.findAll(\n args,\n this._getFullDependencies(pageDependencies)\n )\n }\n\n prepareNodes(...args) {\n return this.nodeModel.prepareNodes(...args)\n }\n\n getTypes(...args) {\n return this.nodeModel.getTypes(...args)\n }\n\n trackInlineObjectsInRootNode(...args) {\n return this.nodeModel.trackInlineObjectsInRootNode(...args)\n }\n\n findRootNodeAncestor(...args) {\n return this.nodeModel.findRootNodeAncestor(...args)\n }\n\n createPageDependency(...args) {\n return this.nodeModel.createPageDependency(...args)\n }\n\n trackPageDependencies(result, pageDependencies) {\n return this.nodeModel.trackPageDependencies(\n result,\n this._getFullDependencies(pageDependencies)\n )\n }\n}\n\nconst getNodeById = id => (id != null ? getNode(id) : null)\n\nconst getQueryFields = ({ filter, sort, group, distinct, max, min, sum }) => {\n const filterFields = filter ? dropQueryOperators(filter) : {}\n const sortFields = (sort && sort.fields) || []\n\n if (group && !Array.isArray(group)) {\n group = [group]\n } else if (group == null) {\n group = []\n }\n\n if (distinct && !Array.isArray(distinct)) {\n distinct = [distinct]\n } else if (distinct == null) {\n distinct = []\n }\n\n if (max && !Array.isArray(max)) {\n max = [max]\n } else if (max == null) {\n max = []\n }\n\n if (min && !Array.isArray(min)) {\n min = [min]\n } else if (min == null) {\n min = []\n }\n\n if (sum && !Array.isArray(sum)) {\n sum = [sum]\n } else if (sum == null) {\n sum = []\n }\n\n return _.merge(\n filterFields,\n ...sortFields.map(pathToObject),\n ...group.map(pathToObject),\n ...distinct.map(pathToObject),\n ...max.map(pathToObject),\n ...min.map(pathToObject),\n ...sum.map(pathToObject)\n )\n}\n\nconst pathToObject = path => {\n if (path && typeof path === `string`) {\n return path.split(`.`).reduceRight((acc, key) => {\n return { [key]: acc }\n }, true)\n }\n return {}\n}\n\nconst dropQueryOperators = filter =>\n Object.keys(filter).reduce((acc, key) => {\n const value = filter[key]\n const k = Object.keys(value)[0]\n const v = value[k]\n if (_.isPlainObject(value) && _.isPlainObject(v)) {\n acc[key] =\n k === `elemMatch` ? dropQueryOperators(v) : dropQueryOperators(value)\n } else {\n acc[key] = true\n }\n return acc\n }, {})\n\nconst getFields = (schema, type, node) => {\n if (!isAbstractType(type)) {\n return type.getFields()\n }\n\n const concreteType = type.resolveType(node)\n return schema.getType(concreteType).getFields()\n}\n\nasync function resolveRecursive(\n nodeModel,\n schemaComposer,\n schema,\n node,\n type,\n queryFields,\n fieldsToResolve,\n customContext\n) {\n const gqlFields = getFields(schema, type, node)\n const resolvedFields = {}\n for (const fieldName of Object.keys(fieldsToResolve)) {\n const fieldToResolve = fieldsToResolve[fieldName]\n const queryField = queryFields[fieldName]\n const gqlField = gqlFields[fieldName]\n const gqlNonNullType = getNullableType(gqlField.type)\n const gqlFieldType = getNamedType(gqlField.type)\n let innerValue = await resolveField(\n nodeModel,\n schemaComposer,\n schema,\n node,\n gqlField,\n fieldName,\n customContext\n )\n if (gqlField && innerValue != null) {\n if (\n isCompositeType(gqlFieldType) &&\n !(gqlNonNullType instanceof GraphQLList)\n ) {\n innerValue = await resolveRecursive(\n nodeModel,\n schemaComposer,\n schema,\n innerValue,\n gqlFieldType,\n queryField,\n _.isObject(fieldToResolve) ? fieldToResolve : queryField,\n customContext\n )\n } else if (\n isCompositeType(gqlFieldType) &&\n (_.isArray(innerValue) || innerValue instanceof GatsbyIterable) &&\n gqlNonNullType instanceof GraphQLList\n ) {\n innerValue = await Promise.all(\n innerValue.map(item =>\n item == null\n ? item\n : resolveRecursive(\n nodeModel,\n schemaComposer,\n schema,\n item,\n gqlFieldType,\n queryField,\n _.isObject(fieldToResolve) ? fieldToResolve : queryField,\n customContext\n )\n )\n )\n }\n }\n if (innerValue != null) {\n resolvedFields[fieldName] = innerValue\n }\n }\n\n for (const fieldName of Object.keys(queryFields)) {\n if (!fieldsToResolve[fieldName] && node[fieldName]) {\n // It is possible that this field still has a custom resolver\n // See https://github.com/gatsbyjs/gatsby/issues/27368\n resolvedFields[fieldName] = await resolveField(\n nodeModel,\n schemaComposer,\n schema,\n node,\n gqlFields[fieldName],\n fieldName,\n customContext\n )\n }\n }\n\n return _.pickBy(resolvedFields, (value, key) => queryFields[key])\n}\nlet withResolverContext\nfunction resolveField(\n nodeModel,\n schemaComposer,\n schema,\n node,\n gqlField,\n fieldName,\n customContext\n) {\n if (!gqlField?.resolve) {\n return node[fieldName]\n }\n\n // We require this inline as there's a circular dependency from context back to this file.\n // https://github.com/gatsbyjs/gatsby/blob/9d33b107d167e3e9e2aa282924a0c409f6afd5a0/packages/gatsby/src/schema/context.ts#L5\n if (!withResolverContext) {\n withResolverContext = require(`./context`)\n }\n\n return gqlField.resolve(\n node,\n gqlField.args.reduce((acc, arg) => {\n acc[arg.name] = arg.defaultValue\n return acc\n }, {}),\n withResolverContext({\n schema,\n schemaComposer,\n nodeModel,\n customContext,\n }),\n {\n fieldName,\n schema,\n returnType: gqlField.type,\n }\n )\n}\n\nconst determineResolvableFields = (\n schemaComposer,\n schema,\n type,\n fields,\n isNestedAndParentNeedsResolve = false\n) => {\n const fieldsToResolve = {}\n const gqlFields = type.getFields()\n Object.keys(fields).forEach(fieldName => {\n const field = fields[fieldName]\n const gqlField = gqlFields[fieldName]\n const gqlFieldType = getNamedType(gqlField.type)\n const typeComposer = schemaComposer.getAnyTC(type.name)\n\n const needsResolve = fieldNeedToResolve({\n schema,\n gqlType: type,\n typeComposer,\n schemaComposer,\n fieldName,\n })\n\n if (_.isObject(field) && gqlField) {\n const innerResolved = determineResolvableFields(\n schemaComposer,\n schema,\n gqlFieldType,\n field,\n isNestedAndParentNeedsResolve || needsResolve\n )\n if (!_.isEmpty(innerResolved)) {\n fieldsToResolve[fieldName] = innerResolved\n }\n }\n\n if (!fieldsToResolve[fieldName] && needsResolve) {\n fieldsToResolve[fieldName] = true\n }\n if (!fieldsToResolve[fieldName] && isNestedAndParentNeedsResolve) {\n // If parent field needs to be resolved - all nested fields should be added as well\n // See https://github.com/gatsbyjs/gatsby/issues/26056\n fieldsToResolve[fieldName] = true\n }\n })\n return fieldsToResolve\n}\n\nconst addRootNodeToInlineObject = (\n rootNodeMap,\n data,\n nodeId,\n isNode /* : boolean */,\n path /* : Set<mixed> */\n) /* : void */ => {\n const isPlainObject = _.isPlainObject(data)\n\n if (isPlainObject || _.isArray(data)) {\n if (path.has(data)) return\n path.add(data)\n\n _.each(data, (o, key) => {\n if (!isNode || key !== `internal`) {\n addRootNodeToInlineObject(rootNodeMap, o, nodeId, false, path)\n }\n })\n\n // don't need to track node itself\n if (!isNode) {\n rootNodeMap.set(data, nodeId)\n }\n }\n}\n\nconst saveResolvedNodes = (typeName, resolvedNodes) => {\n store.dispatch({\n type: `SET_RESOLVED_NODES`,\n payload: {\n key: typeName,\n nodes: resolvedNodes,\n },\n })\n}\n\nconst deepObjectDifference = (from, to) => {\n const result = {}\n Object.keys(from).forEach(key => {\n const toValue = to[key]\n if (toValue) {\n if (_.isPlainObject(toValue)) {\n const deepResult = deepObjectDifference(from[key], toValue)\n if (!_.isEmpty(deepResult)) {\n result[key] = deepResult\n }\n }\n } else {\n result[key] = from[key]\n }\n })\n return result\n}\n\nmodule.exports = {\n LocalNodeModel,\n}\n"],"mappings":"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"}
|
|
@@ -25,7 +25,14 @@ const installedGatsbyVersion = directory => {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
const getBrowsersList = directory => {
|
|
28
|
-
const
|
|
28
|
+
const fallbackV1 = [`>1%`, `last 2 versions`, `IE >= 9`];
|
|
29
|
+
let fallbackOthers = [`>0.25%`, `not dead`];
|
|
30
|
+
|
|
31
|
+
if ("4" === `5`) {
|
|
32
|
+
fallbackOthers = fallbackOthers.map(fallback => fallback + ` and supports es6-module`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const fallback = installedGatsbyVersion(directory) === 1 ? fallbackV1 : fallbackOthers;
|
|
29
36
|
|
|
30
37
|
const config = _node.default.findConfig(directory);
|
|
31
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserslist.js","names":["installedGatsbyVersion","directory","version","require","path","join","parseInt","split","e","undefined","getBrowsersList","fallback","config","browserslist","findConfig","defaults","hasES6ModuleSupport","query","length"],"sources":["../../src/utils/browserslist.ts"],"sourcesContent":["import path from \"path\"\nimport browserslist from \"browserslist/node\"\nimport query from \"browserslist\"\n\nconst installedGatsbyVersion = (directory: string): number | undefined => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { version } = require(path.join(\n directory,\n `node_modules`,\n `gatsby`,\n `package.json`\n ))\n return parseInt(version.split(`.`)[0], 10)\n } catch (e) {\n return undefined\n }\n}\n\nexport const getBrowsersList = (directory: string): Array<string> => {\n const
|
|
1
|
+
{"version":3,"file":"browserslist.js","names":["installedGatsbyVersion","directory","version","require","path","join","parseInt","split","e","undefined","getBrowsersList","fallbackV1","fallbackOthers","map","fallback","config","browserslist","findConfig","defaults","hasES6ModuleSupport","query","length"],"sources":["../../src/utils/browserslist.ts"],"sourcesContent":["import path from \"path\"\nimport browserslist from \"browserslist/node\"\nimport query from \"browserslist\"\n\nconst installedGatsbyVersion = (directory: string): number | undefined => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { version } = require(path.join(\n directory,\n `node_modules`,\n `gatsby`,\n `package.json`\n ))\n return parseInt(version.split(`.`)[0], 10)\n } catch (e) {\n return undefined\n }\n}\n\nexport const getBrowsersList = (directory: string): Array<string> => {\n const fallbackV1 = [`>1%`, `last 2 versions`, `IE >= 9`]\n let fallbackOthers = [`>0.25%`, `not dead`]\n\n if (_CFLAGS_.GATSBY_MAJOR === `5`) {\n fallbackOthers = fallbackOthers.map(\n fallback => fallback + ` and supports es6-module`\n )\n }\n\n const fallback =\n installedGatsbyVersion(directory) === 1 ? fallbackV1 : fallbackOthers\n\n const config = browserslist.findConfig(directory)\n\n if (config && config.defaults) {\n return config.defaults\n }\n\n return fallback\n}\n\nexport const hasES6ModuleSupport = (directory: string): boolean => {\n const browserslist = getBrowsersList(directory)\n return query(browserslist + `, not supports es6-module`).length === 0\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA,MAAMA,sBAAsB,GAAIC,SAAD,IAA2C;EACxE,IAAI;IACF;IACA,MAAM;MAAEC;IAAF,IAAcC,OAAO,CAACC,aAAA,CAAKC,IAAL,CAC1BJ,SAD0B,EAEzB,cAFyB,EAGzB,QAHyB,EAIzB,cAJyB,CAAD,CAA3B;;IAMA,OAAOK,QAAQ,CAACJ,OAAO,CAACK,KAAR,CAAe,GAAf,EAAmB,CAAnB,CAAD,EAAwB,EAAxB,CAAf;EACD,CATD,CASE,OAAOC,CAAP,EAAU;IACV,OAAOC,SAAP;EACD;AACF,CAbD;;AAeO,MAAMC,eAAe,GAAIT,SAAD,IAAsC;EACnE,MAAMU,UAAU,GAAG,CAAE,KAAF,EAAS,iBAAT,EAA4B,SAA5B,CAAnB;EACA,IAAIC,cAAc,GAAG,CAAE,QAAF,EAAY,UAAZ,CAArB;;EAEA,IAAI,QAA2B,GAA/B,EAAmC;IACjCA,cAAc,GAAGA,cAAc,CAACC,GAAf,CACfC,QAAQ,IAAIA,QAAQ,GAAI,0BADT,CAAjB;EAGD;;EAED,MAAMA,QAAQ,GACZd,sBAAsB,CAACC,SAAD,CAAtB,KAAsC,CAAtC,GAA0CU,UAA1C,GAAuDC,cADzD;;EAGA,MAAMG,MAAM,GAAGC,aAAA,CAAaC,UAAb,CAAwBhB,SAAxB,CAAf;;EAEA,IAAIc,MAAM,IAAIA,MAAM,CAACG,QAArB,EAA+B;IAC7B,OAAOH,MAAM,CAACG,QAAd;EACD;;EAED,OAAOJ,QAAP;AACD,CApBM;;;;AAsBA,MAAMK,mBAAmB,GAAIlB,SAAD,IAAgC;EACjE,MAAMe,YAAY,GAAGN,eAAe,CAACT,SAAD,CAApC;EACA,OAAO,IAAAmB,qBAAA,EAAMJ,YAAY,GAAI,2BAAtB,EAAkDK,MAAlD,KAA6D,CAApE;AACD,CAHM"}
|
|
@@ -3,7 +3,7 @@ export declare function build(webpackConfig: webpack.Configuration): Promise<{
|
|
|
3
3
|
stats: webpack.Stats;
|
|
4
4
|
close: () => Promise<void>;
|
|
5
5
|
}>;
|
|
6
|
-
export declare function watch(webpackConfig: webpack.Configuration, onWatch: (err: Error | webpack.WebpackError | undefined, stats: webpack.Stats | undefined) => void, watchOptions?: webpack.Watching["watchOptions"]): {
|
|
6
|
+
export declare function watch(webpackConfig: webpack.Configuration, onWatch: (err: Error | webpack.WebpackError | undefined | null, stats: webpack.Stats | undefined) => void, watchOptions?: webpack.Watching["watchOptions"]): {
|
|
7
7
|
watcher: webpack.Watching;
|
|
8
8
|
close: () => Promise<void>;
|
|
9
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","names":["build","webpackConfig","compiler","webpack","Promise","resolve","reject","run","err","stats","close","hasErrors","compilation","errors","watch","onWatch","watchOptions","watcher"],"sources":["../../../src/utils/webpack/bundle.ts"],"sourcesContent":["import webpack from \"webpack\"\n\nexport function build(webpackConfig: webpack.Configuration): Promise<{\n stats: webpack.Stats\n close: () => Promise<void>\n}> {\n const compiler = webpack(webpackConfig)\n\n return new Promise((resolve, reject) => {\n compiler.run((err, stats) => {\n // stats can only be empty when an error occurs. Adding it to the if makes typescript happy.\n if (err || !stats) {\n return compiler.close(() => {\n reject(err)\n })\n }\n\n if (stats.hasErrors()) {\n return compiler.close(() => {\n reject(stats.compilation.errors)\n })\n }\n\n return resolve({\n stats,\n close: (): Promise<void> =>\n new Promise((resolve, reject) =>\n compiler.close(err => (err ? reject(err) : resolve()))\n ),\n })\n })\n })\n}\n\nexport function watch(\n webpackConfig: webpack.Configuration,\n onWatch: (\n err: Error | webpack.WebpackError | undefined,\n stats: webpack.Stats | undefined\n ) => void,\n watchOptions: webpack.Watching[\"watchOptions\"] = {}\n): {\n watcher: webpack.Watching\n close: () => Promise<void>\n} {\n const compiler = webpack(webpackConfig)\n\n const watcher = compiler.watch(watchOptions, (err, stats) => {\n // this runs multiple times\n onWatch(err, stats)\n })\n\n return {\n watcher,\n close: (): Promise<void> =>\n new Promise((resolve, reject) =>\n watcher.close(err => (err ? reject(err) : resolve()))\n ),\n }\n}\n"],"mappings":";;;;;;;;AAAA;;AAEO,SAASA,KAAT,CAAeC,aAAf,EAGJ;EACD,MAAMC,QAAQ,GAAG,IAAAC,gBAAA,EAAQF,aAAR,CAAjB;EAEA,OAAO,IAAIG,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtCJ,QAAQ,CAACK,GAAT,CAAa,CAACC,GAAD,EAAMC,KAAN,KAAgB;MAC3B;MACA,IAAID,GAAG,IAAI,CAACC,KAAZ,EAAmB;QACjB,OAAOP,QAAQ,CAACQ,KAAT,CAAe,MAAM;UAC1BJ,MAAM,CAACE,GAAD,CAAN;QACD,CAFM,CAAP;MAGD;;MAED,IAAIC,KAAK,CAACE,SAAN,EAAJ,EAAuB;QACrB,OAAOT,QAAQ,CAACQ,KAAT,CAAe,MAAM;UAC1BJ,MAAM,CAACG,KAAK,CAACG,WAAN,CAAkBC,MAAnB,CAAN;QACD,CAFM,CAAP;MAGD;;MAED,OAAOR,OAAO,CAAC;QACbI,KADa;QAEbC,KAAK,EAAE,MACL,IAAIN,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KACVJ,QAAQ,CAACQ,KAAT,CAAeF,GAAG,IAAKA,GAAG,GAAGF,MAAM,CAACE,GAAD,CAAT,GAAiBH,OAAO,EAAlD,CADF;MAHW,CAAD,CAAd;IAOD,CArBD;EAsBD,CAvBM,CAAP;AAwBD;;AAEM,SAASS,KAAT,CACLb,aADK,EAELc,OAFK,EAMLC,YAA8C,GAAG,EAN5C,EAUL;EACA,MAAMd,QAAQ,GAAG,IAAAC,gBAAA,EAAQF,aAAR,CAAjB;EAEA,MAAMgB,OAAO,GAAGf,QAAQ,CAACY,KAAT,CAAeE,YAAf,EAA6B,CAACR,GAAD,EAAMC,KAAN,KAAgB;IAC3D;IACAM,OAAO,CAACP,GAAD,EAAMC,KAAN,CAAP;EACD,CAHe,CAAhB;EAKA,OAAO;IACLQ,OADK;IAELP,KAAK,EAAE,MACL,IAAIN,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KACVW,OAAO,CAACP,KAAR,CAAcF,GAAG,IAAKA,GAAG,GAAGF,MAAM,CAACE,GAAD,CAAT,GAAiBH,OAAO,EAAjD,CADF;EAHG,CAAP;AAOD"}
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["build","webpackConfig","compiler","webpack","Promise","resolve","reject","run","err","stats","close","hasErrors","compilation","errors","watch","onWatch","watchOptions","watcher"],"sources":["../../../src/utils/webpack/bundle.ts"],"sourcesContent":["import webpack from \"webpack\"\n\nexport function build(webpackConfig: webpack.Configuration): Promise<{\n stats: webpack.Stats\n close: () => Promise<void>\n}> {\n const compiler = webpack(webpackConfig)\n\n return new Promise((resolve, reject) => {\n compiler.run((err, stats) => {\n // stats can only be empty when an error occurs. Adding it to the if makes typescript happy.\n if (err || !stats) {\n return compiler.close(() => {\n reject(err)\n })\n }\n\n if (stats.hasErrors()) {\n return compiler.close(() => {\n reject(stats.compilation.errors)\n })\n }\n\n return resolve({\n stats,\n close: (): Promise<void> =>\n new Promise((resolve, reject) =>\n compiler.close(err => (err ? reject(err) : resolve()))\n ),\n })\n })\n })\n}\n\nexport function watch(\n webpackConfig: webpack.Configuration,\n onWatch: (\n err: Error | webpack.WebpackError | undefined | null,\n stats: webpack.Stats | undefined\n ) => void,\n watchOptions: webpack.Watching[\"watchOptions\"] = {}\n): {\n watcher: webpack.Watching\n close: () => Promise<void>\n} {\n const compiler = webpack(webpackConfig)\n\n const watcher = compiler.watch(watchOptions, (err, stats) => {\n // this runs multiple times\n onWatch(err, stats)\n })\n\n return {\n watcher,\n close: (): Promise<void> =>\n new Promise((resolve, reject) =>\n watcher.close(err => (err ? reject(err) : resolve()))\n ),\n }\n}\n"],"mappings":";;;;;;;;AAAA;;AAEO,SAASA,KAAT,CAAeC,aAAf,EAGJ;EACD,MAAMC,QAAQ,GAAG,IAAAC,gBAAA,EAAQF,aAAR,CAAjB;EAEA,OAAO,IAAIG,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtCJ,QAAQ,CAACK,GAAT,CAAa,CAACC,GAAD,EAAMC,KAAN,KAAgB;MAC3B;MACA,IAAID,GAAG,IAAI,CAACC,KAAZ,EAAmB;QACjB,OAAOP,QAAQ,CAACQ,KAAT,CAAe,MAAM;UAC1BJ,MAAM,CAACE,GAAD,CAAN;QACD,CAFM,CAAP;MAGD;;MAED,IAAIC,KAAK,CAACE,SAAN,EAAJ,EAAuB;QACrB,OAAOT,QAAQ,CAACQ,KAAT,CAAe,MAAM;UAC1BJ,MAAM,CAACG,KAAK,CAACG,WAAN,CAAkBC,MAAnB,CAAN;QACD,CAFM,CAAP;MAGD;;MAED,OAAOR,OAAO,CAAC;QACbI,KADa;QAEbC,KAAK,EAAE,MACL,IAAIN,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KACVJ,QAAQ,CAACQ,KAAT,CAAeF,GAAG,IAAKA,GAAG,GAAGF,MAAM,CAACE,GAAD,CAAT,GAAiBH,OAAO,EAAlD,CADF;MAHW,CAAD,CAAd;IAOD,CArBD;EAsBD,CAvBM,CAAP;AAwBD;;AAEM,SAASS,KAAT,CACLb,aADK,EAELc,OAFK,EAMLC,YAA8C,GAAG,EAN5C,EAUL;EACA,MAAMd,QAAQ,GAAG,IAAAC,gBAAA,EAAQF,aAAR,CAAjB;EAEA,MAAMgB,OAAO,GAAGf,QAAQ,CAACY,KAAT,CAAeE,YAAf,EAA6B,CAACR,GAAD,EAAMC,KAAN,KAAgB;IAC3D;IACAM,OAAO,CAACP,GAAD,EAAMC,KAAN,CAAP;EACD,CAHe,CAAhB;EAKA,OAAO;IACLQ,OADK;IAELP,KAAK,EAAE,MACL,IAAIN,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KACVW,OAAO,CAACP,KAAR,CAAcF,GAAG,IAAKA,GAAG,GAAGF,MAAM,CAACE,GAAD,CAAT,GAAiBH,OAAO,EAAjD,CADF;EAHG,CAAP;AAOD"}
|
package/index.d.ts
CHANGED
|
@@ -261,6 +261,11 @@ export interface GraphQLTypegenOptions {
|
|
|
261
261
|
generateOnBuild?: boolean
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
+
type Proxy = {
|
|
265
|
+
prefix: string
|
|
266
|
+
url: string
|
|
267
|
+
}
|
|
268
|
+
|
|
264
269
|
/**
|
|
265
270
|
* Gatsby configuration API.
|
|
266
271
|
*
|
|
@@ -290,10 +295,7 @@ export interface GatsbyConfig {
|
|
|
290
295
|
* Setting the proxy config option will tell the develop server to proxy any unknown requests to your specified server.
|
|
291
296
|
* @see https://www.gatsbyjs.com/docs/api-proxy/
|
|
292
297
|
* */
|
|
293
|
-
proxy?:
|
|
294
|
-
prefix: string
|
|
295
|
-
url: string
|
|
296
|
-
}
|
|
298
|
+
proxy?: Proxy | Proxy[]
|
|
297
299
|
/**
|
|
298
300
|
* A list of trusted URLs that will be proxied for use with the gatsby-script off-main-thread strategy.
|
|
299
301
|
* @see https://gatsby.dev/gatsby-script
|
|
@@ -1221,7 +1223,7 @@ export interface Actions {
|
|
|
1221
1223
|
option?: ActionOptions
|
|
1222
1224
|
): void
|
|
1223
1225
|
|
|
1224
|
-
/** @see https://www.gatsbyjs.com/docs/actions/#
|
|
1226
|
+
/** @see https://www.gatsbyjs.com/docs/actions/#deleteNode */
|
|
1225
1227
|
deleteNode(node: NodeInput, plugin?: ActionPlugin): void
|
|
1226
1228
|
|
|
1227
1229
|
/** @see https://www.gatsbyjs.com/docs/actions/#createNode */
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gatsby",
|
|
3
3
|
"description": "Blazing fast modern site generator for React",
|
|
4
|
-
"version": "4.23.0
|
|
4
|
+
"version": "4.23.0",
|
|
5
5
|
"author": "Kyle Mathews <mathews.kyle@gmail.com>",
|
|
6
6
|
"bin": {
|
|
7
7
|
"gatsby": "./cli.js"
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"babel-plugin-add-module-exports": "^1.0.4",
|
|
46
46
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
47
47
|
"babel-plugin-lodash": "^3.3.4",
|
|
48
|
-
"babel-plugin-remove-graphql-queries": "^4.23.0
|
|
49
|
-
"babel-preset-gatsby": "^2.23.0
|
|
48
|
+
"babel-plugin-remove-graphql-queries": "^4.23.0",
|
|
49
|
+
"babel-preset-gatsby": "^2.23.0",
|
|
50
50
|
"better-opn": "^2.1.1",
|
|
51
51
|
"bluebird": "^3.7.2",
|
|
52
52
|
"browserslist": "^4.17.5",
|
|
@@ -73,9 +73,9 @@
|
|
|
73
73
|
"eslint-config-react-app": "^6.0.0",
|
|
74
74
|
"eslint-plugin-flowtype": "^5.10.0",
|
|
75
75
|
"eslint-plugin-import": "^2.26.0",
|
|
76
|
-
"eslint-plugin-jsx-a11y": "^6.
|
|
76
|
+
"eslint-plugin-jsx-a11y": "^6.6.1",
|
|
77
77
|
"eslint-plugin-react": "^7.30.1",
|
|
78
|
-
"eslint-plugin-react-hooks": "^4.
|
|
78
|
+
"eslint-plugin-react-hooks": "^4.6.0",
|
|
79
79
|
"eslint-webpack-plugin": "^2.7.0",
|
|
80
80
|
"event-source-polyfill": "1.0.25",
|
|
81
81
|
"execa": "^5.1.1",
|
|
@@ -88,20 +88,20 @@
|
|
|
88
88
|
"find-cache-dir": "^3.3.2",
|
|
89
89
|
"fs-exists-cached": "1.0.0",
|
|
90
90
|
"fs-extra": "^10.1.0",
|
|
91
|
-
"gatsby-cli": "^4.23.0
|
|
92
|
-
"gatsby-core-utils": "^3.23.0
|
|
93
|
-
"gatsby-graphiql-explorer": "^2.23.0
|
|
94
|
-
"gatsby-legacy-polyfills": "^2.23.0
|
|
95
|
-
"gatsby-link": "^4.23.0
|
|
96
|
-
"gatsby-page-utils": "^2.23.0
|
|
97
|
-
"gatsby-parcel-config": "0.14.0
|
|
98
|
-
"gatsby-plugin-page-creator": "^4.23.0
|
|
99
|
-
"gatsby-plugin-typescript": "^4.23.0
|
|
100
|
-
"gatsby-plugin-utils": "^3.17.0
|
|
101
|
-
"gatsby-react-router-scroll": "^5.23.0
|
|
102
|
-
"gatsby-script": "^1.8.0
|
|
103
|
-
"gatsby-telemetry": "^3.23.0
|
|
104
|
-
"gatsby-worker": "^1.23.0
|
|
91
|
+
"gatsby-cli": "^4.23.0",
|
|
92
|
+
"gatsby-core-utils": "^3.23.0",
|
|
93
|
+
"gatsby-graphiql-explorer": "^2.23.0",
|
|
94
|
+
"gatsby-legacy-polyfills": "^2.23.0",
|
|
95
|
+
"gatsby-link": "^4.23.0",
|
|
96
|
+
"gatsby-page-utils": "^2.23.0",
|
|
97
|
+
"gatsby-parcel-config": "^0.14.0",
|
|
98
|
+
"gatsby-plugin-page-creator": "^4.23.0",
|
|
99
|
+
"gatsby-plugin-typescript": "^4.23.0",
|
|
100
|
+
"gatsby-plugin-utils": "^3.17.0",
|
|
101
|
+
"gatsby-react-router-scroll": "^5.23.0",
|
|
102
|
+
"gatsby-script": "^1.8.0",
|
|
103
|
+
"gatsby-telemetry": "^3.23.0",
|
|
104
|
+
"gatsby-worker": "^1.23.0",
|
|
105
105
|
"glob": "^7.2.3",
|
|
106
106
|
"globby": "^11.1.0",
|
|
107
107
|
"got": "^11.8.5",
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
"query-string": "^6.14.1",
|
|
144
144
|
"raw-loader": "^4.0.2",
|
|
145
145
|
"react-dev-utils": "^12.0.1",
|
|
146
|
-
"react-refresh": "^0.
|
|
146
|
+
"react-refresh": "^0.14.0",
|
|
147
147
|
"redux": "4.1.2",
|
|
148
148
|
"redux-thunk": "^2.4.0",
|
|
149
149
|
"resolve-from": "^5.0.0",
|
|
@@ -184,13 +184,13 @@
|
|
|
184
184
|
"@types/normalize-path": "^3.0.0",
|
|
185
185
|
"@types/reach__router": "^1.3.5",
|
|
186
186
|
"@types/react-dom": "^17.0.9",
|
|
187
|
-
"@types/semver": "^7.3.
|
|
187
|
+
"@types/semver": "^7.3.12",
|
|
188
188
|
"@types/sharp": "^0.30.5",
|
|
189
189
|
"@types/signal-exit": "^3.0.0",
|
|
190
190
|
"@types/string-similarity": "^4.0.0",
|
|
191
191
|
"@types/tmp": "^0.2.0",
|
|
192
192
|
"@types/webpack-virtual-modules": "^0.1.1",
|
|
193
|
-
"babel-preset-gatsby-package": "^2.23.0
|
|
193
|
+
"babel-preset-gatsby-package": "^2.23.0",
|
|
194
194
|
"copyfiles": "^2.3.0",
|
|
195
195
|
"cross-env": "^7.0.3",
|
|
196
196
|
"documentation": "^13.1.0",
|
|
@@ -204,7 +204,7 @@
|
|
|
204
204
|
"zipkin-transport-http": "^0.22.0"
|
|
205
205
|
},
|
|
206
206
|
"optionalDependencies": {
|
|
207
|
-
"gatsby-sharp": "^0.17.0
|
|
207
|
+
"gatsby-sharp": "^0.17.0"
|
|
208
208
|
},
|
|
209
209
|
"engines": {
|
|
210
210
|
"node": ">=14.15.0"
|
|
@@ -272,5 +272,5 @@
|
|
|
272
272
|
"yargs": {
|
|
273
273
|
"boolean-negation": false
|
|
274
274
|
},
|
|
275
|
-
"gitHead": "
|
|
275
|
+
"gitHead": "92543afcb355afc0990affae06b56a1e1841b7e4"
|
|
276
276
|
}
|