gatsby 3.10.1 → 3.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/schema/resolvers.js +2 -19
- package/dist/schema/resolvers.js.map +1 -1
- package/gatsby-admin-public/app-7416363fd827487b167c.js.map +1 -1
- package/gatsby-admin-public/chunk-map.json +1 -1
- package/gatsby-admin-public/component---src-pages-recipe-js-9e01f3d3434a2f348a2c.js.map +1 -1
- package/gatsby-admin-public/index.html +1 -1
- package/gatsby-admin-public/page-data/app-data.json +1 -1
- package/gatsby-admin-public/pages/index.html +1 -1
- package/gatsby-admin-public/plugins/index.html +1 -1
- package/gatsby-admin-public/polyfill-ec82ae3845a81bcd97bd.js +2 -0
- package/gatsby-admin-public/polyfill-ec82ae3845a81bcd97bd.js.map +1 -0
- package/gatsby-admin-public/recipe/index.html +1 -1
- package/gatsby-admin-public/recipes/index.html +1 -1
- package/gatsby-admin-public/webpack.stats.json +1 -1
- package/package.json +2 -2
- package/gatsby-admin-public/polyfill-6a067988206c3d85ff5f.js +0 -2
- package/gatsby-admin-public/polyfill-6a067988206c3d85ff5f.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
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
|
+
## [3.10.2](https://github.com/gatsbyjs/gatsby/compare/gatsby@3.10.1...gatsby@3.10.2) (2021-07-26)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **gatsby:** correct pagination logic ([#32496](https://github.com/gatsbyjs/gatsby/issues/32496)) ([#32507](https://github.com/gatsbyjs/gatsby/issues/32507)) ([c6d370d](https://github.com/gatsbyjs/gatsby/commit/c6d370dbb4782b4a9851b202d231c6133fb12e4d)), closes [#32319](https://github.com/gatsbyjs/gatsby/issues/32319)
|
|
11
|
+
|
|
6
12
|
## [3.10.1](https://github.com/gatsbyjs/gatsby/compare/gatsby@3.10.0...gatsby@3.10.1) (2021-07-21)
|
|
7
13
|
|
|
8
14
|
### Bug Fixes
|
package/dist/schema/resolvers.js
CHANGED
|
@@ -57,7 +57,7 @@ function findManyPaginated(typeName) {
|
|
|
57
57
|
// (for previous/next node and also to detect if there is a previous/next page)
|
|
58
58
|
|
|
59
59
|
const skip = typeof args.skip === `number` ? Math.max(0, args.skip - 1) : 0;
|
|
60
|
-
const limit = typeof args.limit === `number` ? args.limit +
|
|
60
|
+
const limit = typeof args.limit === `number` ? args.limit + 2 : undefined;
|
|
61
61
|
const extendedArgs = { ...args,
|
|
62
62
|
group: group || [],
|
|
63
63
|
distinct: distinct || [],
|
|
@@ -266,24 +266,7 @@ function paginate(results, params) {
|
|
|
266
266
|
|
|
267
267
|
const currentPage = limit ? Math.ceil(skip / limit) + 1 : skip ? 2 : 1;
|
|
268
268
|
const hasPreviousPage = currentPage > 1;
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
if (limit) {
|
|
272
|
-
if (resultOffset > 0) {
|
|
273
|
-
// If resultOffset is greater than 0, we need to test if `allItems` contains
|
|
274
|
-
// items that should be skipped.
|
|
275
|
-
//
|
|
276
|
-
// This is represented if the `start` index offset is 0 or less. A start
|
|
277
|
-
// greater than 0 means `allItems` contains extra items that would come
|
|
278
|
-
// before the skipped items.
|
|
279
|
-
hasNextPage = start < 1;
|
|
280
|
-
} else {
|
|
281
|
-
// If the resultOffset is 0, we can test if `allItems` contains more items
|
|
282
|
-
// than the limit after removing the skipped items.
|
|
283
|
-
hasNextPage = allItems.length - start > limit;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
|
|
269
|
+
const hasNextPage = limit ? allItems.length - start > limit : false;
|
|
287
270
|
return {
|
|
288
271
|
totalCount,
|
|
289
272
|
edges: items.map((item, i, arr) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schema/resolvers.ts"],"names":["findOne","typeName","findOneResolver","_source","args","context","info","stats","totalRunQuery","nodeModel","runQuery","query","filter","firstOnly","type","schema","getType","tracer","path","findManyPaginated","findManyPaginatedResolver","group","getProjectedField","distinct","max","min","sum","skip","Math","limit","undefined","extendedArgs","totalPluralRunQuery","result","findAll","connectionType","paginate","resultOffset","distinctResolver","source","field","edges","values","Set","forEach","node","value","Array","isArray","subValue","add","Date","toISOString","from","sort","minResolver","Number","MAX_SAFE_INTEGER","isNaN","maxResolver","MIN_SAFE_INTEGER","sumResolver","reduce","prev","groupResolver","groupedResults","acc","key","concat","Object","create","keys","fieldValue","entries","push","GatsbyIterable","totalCount","length","results","params","Error","allItems","start","items","slice","pageCount","count","ceil","currentPage","hasPreviousPage","hasNextPage","map","item","i","arr","next","previous","nodes","pageInfo","itemCount","perPage","link","options","by","fieldConfig","linkResolver","resolver","resolve","defaultFieldResolver","fieldValueOrPromise","fromNode","then","linkResolverValue","returnType","getNodesByIds","ids","getNodeById","id","runQueryArgs","split","reduceRight","obj","in","eq","GraphQLList","resultOrPromise","linkResolverQueryResult","queryResult","find","fileByPath","fileByPathResolver","parentFileNode","findRootNodeAncestor","internal","queryNodesByPath","relPaths","queryNodeByPath","relPath","absolutePath","systemPath","dir","fieldName","selectionSet","fieldNodes","getFieldNodeByNameInSelectionSet","getFields","fieldArg","arg","name","fieldEnum","fieldNode","arguments","kind","Kind","ENUM","enumKey","enumValue","getValue","selections","selection","FRAGMENT_SPREAD","fragmentDef","fragments","INLINE_FRAGMENT","property","WARNED_ABOUT_RESOLVERS","badResolverInvocationMessage","missingVar","resolverName","wrappingResolver","wrappedTracingResolver","parent","reporter","warn","activity","createResolverActivity","parentType","endActivity","end","defaultResolver"],"mappings":"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","sourcesContent":["import systemPath from \"path\"\nimport normalize from \"normalize-path\"\nimport {\n GraphQLList,\n GraphQLType,\n getNullableType,\n getNamedType,\n Kind,\n GraphQLFieldConfig,\n GraphQLResolveInfo,\n isObjectType,\n isInterfaceType,\n isEnumType,\n SelectionSetNode,\n SelectionNode,\n FieldNode,\n} from \"graphql\"\nimport { Path } from \"graphql/jsutils/Path\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { pathToArray } from \"../query/utils\"\nimport { getValueAt } from \"../utils/get-value-at\"\nimport {\n GatsbyResolver,\n IGatsbyConnection,\n IGatsbyResolverContext,\n} from \"./type-definitions\"\nimport { IGatsbyNode } from \"../redux/types\"\nimport { IQueryResult } from \"../datastore/types\"\nimport { GatsbyIterable } from \"../datastore/common/iterable\"\n\ntype ResolvedLink = IGatsbyNode | Array<IGatsbyNode> | null\n\ntype nestedListOfStrings = Array<string | nestedListOfStrings>\ntype nestedListOfNodes = Array<IGatsbyNode | nestedListOfNodes>\n\nexport function findOne<TSource, TArgs>(\n typeName: string\n): GatsbyResolver<TSource, TArgs> {\n return function findOneResolver(_source, args, context, info): any {\n if (context.stats) {\n context.stats.totalRunQuery++\n }\n return context.nodeModel.runQuery(\n {\n query: { filter: args },\n firstOnly: true,\n type: info.schema.getType(typeName),\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n }\n}\n\ntype PaginatedArgs<TArgs> = TArgs & { skip?: number; limit?: number }\n\nexport function findManyPaginated<TSource, TArgs>(\n typeName: string\n): GatsbyResolver<TSource, PaginatedArgs<TArgs>> {\n return async function findManyPaginatedResolver(\n _source,\n args,\n context,\n info\n ): Promise<IGatsbyConnection<IGatsbyNode>> {\n // Peek into selection set and pass on the `field` arg of `group` and\n // `distinct` which might need to be resolved.\n const group = getProjectedField(info, `group`)\n const distinct = getProjectedField(info, `distinct`)\n const max = getProjectedField(info, `max`)\n const min = getProjectedField(info, `min`)\n const sum = getProjectedField(info, `sum`)\n\n // Apply paddings for pagination\n // (for previous/next node and also to detect if there is a previous/next page)\n const skip = typeof args.skip === `number` ? Math.max(0, args.skip - 1) : 0\n const limit = typeof args.limit === `number` ? args.limit + 1 : undefined\n\n const extendedArgs = {\n ...args,\n group: group || [],\n distinct: distinct || [],\n max: max || [],\n min: min || [],\n sum: sum || [],\n skip,\n limit,\n }\n // Note: stats are passed to telemetry in src/commands/build.ts\n if (context.stats) {\n context.stats.totalRunQuery++\n context.stats.totalPluralRunQuery++\n }\n const result = await context.nodeModel.findAll(\n {\n query: extendedArgs,\n type: info.schema.getType(typeName),\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path, connectionType: typeName }\n )\n return paginate(result, {\n resultOffset: skip,\n skip: args.skip,\n limit: args.limit,\n })\n }\n}\n\ninterface IFieldConnectionArgs {\n field: string\n}\n\nexport const distinct: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function distinctResolver(source, args): Array<string> {\n const { field } = args\n const { edges } = source\n\n const values = new Set<string>()\n edges.forEach(({ node }) => {\n const value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n if (value === null || value === undefined) {\n return\n }\n if (Array.isArray(value)) {\n value.forEach(subValue =>\n values.add(subValue instanceof Date ? subValue.toISOString() : subValue)\n )\n } else if (value instanceof Date) {\n values.add(value.toISOString())\n } else {\n values.add(value)\n }\n })\n return Array.from(values).sort()\n}\n\nexport const min: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function minResolver(source, args): number | null {\n const { field } = args\n const { edges } = source\n\n let min = Number.MAX_SAFE_INTEGER\n\n edges.forEach(({ node }) => {\n let value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n\n if (typeof value !== `number`) {\n value = Number(value)\n }\n if (!isNaN(value) && value < min) {\n min = value\n }\n })\n if (min === Number.MAX_SAFE_INTEGER) {\n return null\n }\n return min\n}\n\nexport const max: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function maxResolver(source, args): number | null {\n const { field } = args\n const { edges } = source\n\n let max = Number.MIN_SAFE_INTEGER\n\n edges.forEach(({ node }) => {\n let value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n if (typeof value !== `number`) {\n value = Number(value)\n }\n if (!isNaN(value) && value > max) {\n max = value\n }\n })\n if (max === Number.MIN_SAFE_INTEGER) {\n return null\n }\n return max\n}\n\nexport const sum: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function sumResolver(source, args): number | null {\n const { field } = args\n const { edges } = source\n\n return edges.reduce<number | null>((prev, { node }) => {\n let value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n\n if (typeof value !== `number`) {\n value = Number(value)\n }\n if (!isNaN(value)) {\n return (prev || 0) + value\n }\n return prev\n }, null)\n}\n\ntype IGatsbyGroupReturnValue<NodeType> = Array<\n IGatsbyConnection<NodeType> & {\n field: string\n fieldValue: string | undefined\n }\n>\n\nexport const group: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n PaginatedArgs<IFieldConnectionArgs>\n> = function groupResolver(source, args): IGatsbyGroupReturnValue<IGatsbyNode> {\n const { field } = args\n const { edges } = source\n const groupedResults: Record<string, Array<IGatsbyNode>> = edges.reduce(\n (acc, { node }) => {\n const value =\n getValueAt(node, `__gatsby_resolved.${field}`) ||\n getValueAt(node, field)\n const values = Array.isArray(value) ? value : [value]\n values\n .filter(value => value != null)\n .forEach(value => {\n const key = value instanceof Date ? value.toISOString() : value\n acc[key] = (acc[key] || []).concat(node)\n })\n return acc\n // Note: using Object.create on purpose:\n // object key may be arbitrary string including reserved words (i.e. `constructor`)\n // see: https://github.com/gatsbyjs/gatsby/issues/22508\n },\n Object.create(null)\n )\n\n return Object.keys(groupedResults)\n .sort()\n .reduce((acc: IGatsbyGroupReturnValue<IGatsbyNode>, fieldValue: string) => {\n const entries = groupedResults[fieldValue] || []\n acc.push({\n ...paginate(\n {\n entries: new GatsbyIterable(entries),\n totalCount: async () => entries.length,\n },\n args\n ),\n field,\n fieldValue,\n })\n return acc\n }, [])\n}\n\nexport function paginate(\n results: IQueryResult,\n params: { skip?: number; limit?: number; resultOffset?: number }\n): IGatsbyConnection<IGatsbyNode> {\n const { resultOffset = 0, skip = 0, limit } = params\n if (resultOffset > skip) {\n throw new Error(\"Result offset cannot be greater than `skip` argument\")\n }\n const allItems = Array.from(results.entries)\n\n const start = skip - resultOffset\n const items = allItems.slice(start, limit && start + limit)\n\n const totalCount = results.totalCount\n const pageCount = async (): Promise<number> => {\n const count = await totalCount()\n return limit\n ? Math.ceil(skip / limit) + Math.ceil((count - skip) / limit)\n : skip\n ? 2\n : 1\n }\n const currentPage = limit ? Math.ceil(skip / limit) + 1 : skip ? 2 : 1\n const hasPreviousPage = currentPage > 1\n\n let hasNextPage = false\n // If limit is not defined, there will never be a next page.\n if (limit) {\n if (resultOffset > 0) {\n // If resultOffset is greater than 0, we need to test if `allItems` contains\n // items that should be skipped.\n //\n // This is represented if the `start` index offset is 0 or less. A start\n // greater than 0 means `allItems` contains extra items that would come\n // before the skipped items.\n hasNextPage = start < 1\n } else {\n // If the resultOffset is 0, we can test if `allItems` contains more items\n // than the limit after removing the skipped items.\n hasNextPage = allItems.length - start > limit\n }\n }\n\n return {\n totalCount,\n edges: items.map((item, i, arr) => {\n return {\n node: item,\n next: arr[i + 1],\n previous: arr[i - 1],\n }\n }),\n nodes: items,\n pageInfo: {\n currentPage,\n hasPreviousPage,\n hasNextPage,\n itemCount: items.length,\n pageCount,\n perPage: limit,\n totalCount,\n },\n }\n}\n\nexport function link<TSource, TArgs>(\n options: {\n by: string\n type?: GraphQLType\n from?: string\n fromNode?: string\n } = {\n by: `id`,\n },\n fieldConfig: GraphQLFieldConfig<\n TSource,\n IGatsbyResolverContext<TSource, TArgs>,\n TArgs\n >\n): GatsbyResolver<TSource, TArgs> {\n // Note: we explicitly make an attempt to prevent using the `async` keyword because often\n // it does not return a promise and this makes a significant difference at scale.\n\n return function linkResolver(\n source,\n args,\n context,\n info\n ): ResolvedLink | Promise<ResolvedLink> {\n const resolver = fieldConfig.resolve || context.defaultFieldResolver\n const fieldValueOrPromise = resolver(source, args, context, {\n ...info,\n from: options.from || info.from,\n fromNode: options.from ? options.fromNode : info.fromNode,\n })\n\n // Note: for this function, at scale, conditional .then is more efficient than generic await\n if (typeof fieldValueOrPromise?.then === `function`) {\n return fieldValueOrPromise.then(fieldValue =>\n linkResolverValue(fieldValue, args, context, info)\n )\n }\n\n return linkResolverValue(fieldValueOrPromise, args, context, info)\n }\n\n function linkResolverValue(\n fieldValue,\n args,\n context,\n info\n ): ResolvedLink | Promise<ResolvedLink> {\n if (fieldValue == null) {\n return null\n }\n\n const returnType = getNullableType(options.type || info.returnType)\n const type = getNamedType(returnType)\n\n if (options.by === `id`) {\n if (Array.isArray(fieldValue)) {\n return context.nodeModel.getNodesByIds(\n { ids: fieldValue, type: type },\n { path: context.path }\n )\n } else {\n return context.nodeModel.getNodeById(\n { id: fieldValue, type: type },\n { path: context.path }\n )\n }\n }\n\n // Return early if fieldValue is [] since { in: [] } doesn't make sense\n if (Array.isArray(fieldValue) && fieldValue.length === 0) {\n return fieldValue\n }\n\n const runQueryArgs = args as TArgs & { filter: Record<string, any> }\n runQueryArgs.filter = options.by.split(`.`).reduceRight(\n (acc: Record<string, any>, key: string) => {\n const obj = {}\n obj[key] = acc\n return obj\n },\n Array.isArray(fieldValue) ? { in: fieldValue } : { eq: fieldValue }\n )\n\n const firstOnly = !(returnType instanceof GraphQLList)\n\n if (context.stats) {\n context.stats.totalRunQuery++\n if (firstOnly) {\n context.stats.totalPluralRunQuery++\n }\n }\n\n const resultOrPromise = context.nodeModel.runQuery(\n {\n query: runQueryArgs,\n firstOnly,\n type,\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n\n // Note: for this function, at scale, conditional .then is more efficient than generic await\n if (typeof resultOrPromise?.then === `function`) {\n return resultOrPromise.then(result =>\n linkResolverQueryResult(fieldValue, result, returnType)\n )\n }\n\n return linkResolverQueryResult(fieldValue, resultOrPromise, returnType)\n }\n\n function linkResolverQueryResult(\n fieldValue,\n queryResult,\n returnType\n ): IGatsbyNode | Array<IGatsbyNode> {\n if (\n returnType instanceof GraphQLList &&\n Array.isArray(fieldValue) &&\n Array.isArray(queryResult)\n ) {\n return fieldValue.map(value =>\n queryResult.find(obj => getValueAt(obj, options.by) === value)\n )\n } else {\n return queryResult\n }\n }\n}\n\nexport function fileByPath<TSource, TArgs>(\n options: {\n from?: string\n fromNode?: string\n } = {},\n fieldConfig\n): GatsbyResolver<TSource, TArgs> {\n return async function fileByPathResolver(\n source,\n args,\n context,\n info\n ): Promise<IGatsbyNode | nestedListOfNodes | null> {\n const resolver = fieldConfig.resolve || context.defaultFieldResolver\n const fieldValue: nestedListOfStrings = await resolver(\n source,\n args,\n context,\n {\n ...info,\n from: options.from || info.from,\n fromNode: options.from ? options.fromNode : info.fromNode,\n }\n )\n\n if (fieldValue == null) {\n return null\n }\n\n // Find the File node for this node (we assume the node is something\n // like markdown which would be a child node of a File node).\n const parentFileNode = context.nodeModel.findRootNodeAncestor(\n source,\n node => node.internal && node.internal.type === `File`\n )\n\n async function queryNodesByPath(\n relPaths: nestedListOfStrings\n ): Promise<nestedListOfNodes> {\n const arr: nestedListOfNodes = []\n for (let i = 0; i < relPaths.length; ++i) {\n arr[i] = await (Array.isArray(relPaths[i])\n ? queryNodesByPath(relPaths[i] as nestedListOfStrings)\n : queryNodeByPath(relPaths[i] as string))\n }\n return arr\n }\n\n function queryNodeByPath(relPath: string): Promise<IGatsbyNode> {\n return context.nodeModel.runQuery({\n query: {\n filter: {\n absolutePath: {\n eq: normalize(systemPath.resolve(parentFileNode.dir, relPath)),\n },\n },\n },\n firstOnly: true,\n type: `File`,\n })\n }\n\n if (Array.isArray(fieldValue)) {\n return queryNodesByPath(fieldValue)\n } else {\n return queryNodeByPath(fieldValue)\n }\n }\n}\n\nfunction getProjectedField(\n info: GraphQLResolveInfo,\n fieldName: string\n): Array<string> {\n const selectionSet = info.fieldNodes[0].selectionSet\n if (selectionSet) {\n const fieldNodes = getFieldNodeByNameInSelectionSet(\n selectionSet,\n fieldName,\n info\n )\n\n const returnType = getNullableType(info.returnType)\n\n if (isObjectType(returnType) || isInterfaceType(returnType)) {\n const field = returnType.getFields()[fieldName]\n const fieldArg = field?.args?.find(arg => arg.name === `field`)\n if (fieldArg) {\n const fieldEnum = getNullableType(fieldArg.type)\n\n if (isEnumType(fieldEnum)) {\n return fieldNodes.reduce(\n (acc: Array<string>, fieldNode: FieldNode) => {\n const fieldArg = fieldNode.arguments?.find(\n arg => arg.name.value === `field`\n )\n if (fieldArg?.value.kind === Kind.ENUM) {\n const enumKey = fieldArg.value.value\n const enumValue = fieldEnum.getValue(enumKey)\n if (enumValue) {\n return [...acc, enumValue.value]\n }\n }\n return acc\n },\n []\n )\n }\n }\n }\n }\n\n return []\n}\n\nfunction getFieldNodeByNameInSelectionSet(\n selectionSet: SelectionSetNode,\n fieldName: string,\n info: GraphQLResolveInfo\n): Array<FieldNode> {\n return selectionSet.selections.reduce(\n (acc: Array<FieldNode>, selection: SelectionNode) => {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n const fragmentDef = info.fragments[selection.name.value]\n if (fragmentDef) {\n return [\n ...acc,\n ...getFieldNodeByNameInSelectionSet(\n fragmentDef.selectionSet,\n fieldName,\n info\n ),\n ]\n }\n } else if (selection.kind === Kind.INLINE_FRAGMENT) {\n return [\n ...acc,\n ...getFieldNodeByNameInSelectionSet(\n selection.selectionSet,\n fieldName,\n info\n ),\n ]\n } /* FIELD_NODE */ else {\n if (selection.name.value === fieldName) {\n return [...acc, selection]\n }\n }\n return acc\n },\n []\n )\n}\n\nexport const defaultFieldResolver: GatsbyResolver<\n any,\n any\n> = function defaultFieldResolver(source, args, context, info) {\n if (\n (typeof source == `object` && source !== null) ||\n typeof source === `function`\n ) {\n if (info.from) {\n if (info.fromNode) {\n const node = context.nodeModel.findRootNodeAncestor(source)\n if (!node) return null\n return getValueAt(node, info.from)\n }\n return getValueAt(source, info.from)\n }\n const property = source[info.fieldName]\n if (typeof property === `function`) {\n return source[info.fieldName](args, context, info)\n }\n return property\n }\n\n return null\n}\n\nlet WARNED_ABOUT_RESOLVERS = false\nfunction badResolverInvocationMessage(missingVar: string, path?: Path): string {\n const resolverName = path ? `${pathToArray(path)} ` : ``\n return `GraphQL Resolver ${resolverName}got called without \"${missingVar}\" argument. This might cause unexpected errors.\n\nIt's likely that this has happened in a schemaCustomization with manually invoked resolver. If manually invoking resolvers, it's best to invoke them as follows:\n\n resolve(parent, args, context, info)\n\n`\n}\n\nexport function wrappingResolver<TSource, TArgs>(\n resolver: GatsbyResolver<TSource, TArgs>\n): GatsbyResolver<TSource, TArgs> {\n // Note: we explicitly make an attempt to prevent using the `async` keyword because often\n // it does not return a promise and this makes a significant difference at scale.\n // GraphQL will gracefully handle the resolver result of a promise or non-promise.\n\n return function wrappedTracingResolver(\n parent,\n args,\n context,\n info\n ): Promise<any> {\n if (!WARNED_ABOUT_RESOLVERS) {\n if (!info) {\n reporter.warn(badResolverInvocationMessage(`info`))\n WARNED_ABOUT_RESOLVERS = true\n } else if (!context) {\n reporter.warn(badResolverInvocationMessage(`context`, info.path))\n WARNED_ABOUT_RESOLVERS = true\n }\n }\n\n let activity\n if (context?.tracer) {\n activity = context.tracer.createResolverActivity(\n info.path,\n `${info.parentType.name}.${info.fieldName}`\n )\n activity.start()\n }\n const result = resolver(parent, args, context, info)\n\n if (!activity) {\n return result\n }\n\n const endActivity = (): void => {\n if (activity) {\n activity.end()\n }\n }\n if (typeof result?.then === `function`) {\n result.then(endActivity, endActivity)\n } else {\n endActivity()\n }\n return result\n }\n}\n\nexport const defaultResolver = wrappingResolver(defaultFieldResolver)\n"],"file":"resolvers.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/schema/resolvers.ts"],"names":["findOne","typeName","findOneResolver","_source","args","context","info","stats","totalRunQuery","nodeModel","runQuery","query","filter","firstOnly","type","schema","getType","tracer","path","findManyPaginated","findManyPaginatedResolver","group","getProjectedField","distinct","max","min","sum","skip","Math","limit","undefined","extendedArgs","totalPluralRunQuery","result","findAll","connectionType","paginate","resultOffset","distinctResolver","source","field","edges","values","Set","forEach","node","value","Array","isArray","subValue","add","Date","toISOString","from","sort","minResolver","Number","MAX_SAFE_INTEGER","isNaN","maxResolver","MIN_SAFE_INTEGER","sumResolver","reduce","prev","groupResolver","groupedResults","acc","key","concat","Object","create","keys","fieldValue","entries","push","GatsbyIterable","totalCount","length","results","params","Error","allItems","start","items","slice","pageCount","count","ceil","currentPage","hasPreviousPage","hasNextPage","map","item","i","arr","next","previous","nodes","pageInfo","itemCount","perPage","link","options","by","fieldConfig","linkResolver","resolver","resolve","defaultFieldResolver","fieldValueOrPromise","fromNode","then","linkResolverValue","returnType","getNodesByIds","ids","getNodeById","id","runQueryArgs","split","reduceRight","obj","in","eq","GraphQLList","resultOrPromise","linkResolverQueryResult","queryResult","find","fileByPath","fileByPathResolver","parentFileNode","findRootNodeAncestor","internal","queryNodesByPath","relPaths","queryNodeByPath","relPath","absolutePath","systemPath","dir","fieldName","selectionSet","fieldNodes","getFieldNodeByNameInSelectionSet","getFields","fieldArg","arg","name","fieldEnum","fieldNode","arguments","kind","Kind","ENUM","enumKey","enumValue","getValue","selections","selection","FRAGMENT_SPREAD","fragmentDef","fragments","INLINE_FRAGMENT","property","WARNED_ABOUT_RESOLVERS","badResolverInvocationMessage","missingVar","resolverName","wrappingResolver","wrappedTracingResolver","parent","reporter","warn","activity","createResolverActivity","parentType","endActivity","end","defaultResolver"],"mappings":"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","sourcesContent":["import systemPath from \"path\"\nimport normalize from \"normalize-path\"\nimport {\n GraphQLList,\n GraphQLType,\n getNullableType,\n getNamedType,\n Kind,\n GraphQLFieldConfig,\n GraphQLResolveInfo,\n isObjectType,\n isInterfaceType,\n isEnumType,\n SelectionSetNode,\n SelectionNode,\n FieldNode,\n} from \"graphql\"\nimport { Path } from \"graphql/jsutils/Path\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport { pathToArray } from \"../query/utils\"\nimport { getValueAt } from \"../utils/get-value-at\"\nimport {\n GatsbyResolver,\n IGatsbyConnection,\n IGatsbyResolverContext,\n} from \"./type-definitions\"\nimport { IGatsbyNode } from \"../redux/types\"\nimport { IQueryResult } from \"../datastore/types\"\nimport { GatsbyIterable } from \"../datastore/common/iterable\"\n\ntype ResolvedLink = IGatsbyNode | Array<IGatsbyNode> | null\n\ntype nestedListOfStrings = Array<string | nestedListOfStrings>\ntype nestedListOfNodes = Array<IGatsbyNode | nestedListOfNodes>\n\nexport function findOne<TSource, TArgs>(\n typeName: string\n): GatsbyResolver<TSource, TArgs> {\n return function findOneResolver(_source, args, context, info): any {\n if (context.stats) {\n context.stats.totalRunQuery++\n }\n return context.nodeModel.runQuery(\n {\n query: { filter: args },\n firstOnly: true,\n type: info.schema.getType(typeName),\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n }\n}\n\ntype PaginatedArgs<TArgs> = TArgs & { skip?: number; limit?: number }\n\nexport function findManyPaginated<TSource, TArgs>(\n typeName: string\n): GatsbyResolver<TSource, PaginatedArgs<TArgs>> {\n return async function findManyPaginatedResolver(\n _source,\n args,\n context,\n info\n ): Promise<IGatsbyConnection<IGatsbyNode>> {\n // Peek into selection set and pass on the `field` arg of `group` and\n // `distinct` which might need to be resolved.\n const group = getProjectedField(info, `group`)\n const distinct = getProjectedField(info, `distinct`)\n const max = getProjectedField(info, `max`)\n const min = getProjectedField(info, `min`)\n const sum = getProjectedField(info, `sum`)\n\n // Apply paddings for pagination\n // (for previous/next node and also to detect if there is a previous/next page)\n const skip = typeof args.skip === `number` ? Math.max(0, args.skip - 1) : 0\n const limit = typeof args.limit === `number` ? args.limit + 2 : undefined\n\n const extendedArgs = {\n ...args,\n group: group || [],\n distinct: distinct || [],\n max: max || [],\n min: min || [],\n sum: sum || [],\n skip,\n limit,\n }\n // Note: stats are passed to telemetry in src/commands/build.ts\n if (context.stats) {\n context.stats.totalRunQuery++\n context.stats.totalPluralRunQuery++\n }\n const result = await context.nodeModel.findAll(\n {\n query: extendedArgs,\n type: info.schema.getType(typeName),\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path, connectionType: typeName }\n )\n return paginate(result, {\n resultOffset: skip,\n skip: args.skip,\n limit: args.limit,\n })\n }\n}\n\ninterface IFieldConnectionArgs {\n field: string\n}\n\nexport const distinct: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function distinctResolver(source, args): Array<string> {\n const { field } = args\n const { edges } = source\n\n const values = new Set<string>()\n edges.forEach(({ node }) => {\n const value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n if (value === null || value === undefined) {\n return\n }\n if (Array.isArray(value)) {\n value.forEach(subValue =>\n values.add(subValue instanceof Date ? subValue.toISOString() : subValue)\n )\n } else if (value instanceof Date) {\n values.add(value.toISOString())\n } else {\n values.add(value)\n }\n })\n return Array.from(values).sort()\n}\n\nexport const min: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function minResolver(source, args): number | null {\n const { field } = args\n const { edges } = source\n\n let min = Number.MAX_SAFE_INTEGER\n\n edges.forEach(({ node }) => {\n let value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n\n if (typeof value !== `number`) {\n value = Number(value)\n }\n if (!isNaN(value) && value < min) {\n min = value\n }\n })\n if (min === Number.MAX_SAFE_INTEGER) {\n return null\n }\n return min\n}\n\nexport const max: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function maxResolver(source, args): number | null {\n const { field } = args\n const { edges } = source\n\n let max = Number.MIN_SAFE_INTEGER\n\n edges.forEach(({ node }) => {\n let value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n if (typeof value !== `number`) {\n value = Number(value)\n }\n if (!isNaN(value) && value > max) {\n max = value\n }\n })\n if (max === Number.MIN_SAFE_INTEGER) {\n return null\n }\n return max\n}\n\nexport const sum: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n IFieldConnectionArgs\n> = function sumResolver(source, args): number | null {\n const { field } = args\n const { edges } = source\n\n return edges.reduce<number | null>((prev, { node }) => {\n let value =\n getValueAt(node, `__gatsby_resolved.${field}`) || getValueAt(node, field)\n\n if (typeof value !== `number`) {\n value = Number(value)\n }\n if (!isNaN(value)) {\n return (prev || 0) + value\n }\n return prev\n }, null)\n}\n\ntype IGatsbyGroupReturnValue<NodeType> = Array<\n IGatsbyConnection<NodeType> & {\n field: string\n fieldValue: string | undefined\n }\n>\n\nexport const group: GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n PaginatedArgs<IFieldConnectionArgs>\n> = function groupResolver(source, args): IGatsbyGroupReturnValue<IGatsbyNode> {\n const { field } = args\n const { edges } = source\n const groupedResults: Record<string, Array<IGatsbyNode>> = edges.reduce(\n (acc, { node }) => {\n const value =\n getValueAt(node, `__gatsby_resolved.${field}`) ||\n getValueAt(node, field)\n const values = Array.isArray(value) ? value : [value]\n values\n .filter(value => value != null)\n .forEach(value => {\n const key = value instanceof Date ? value.toISOString() : value\n acc[key] = (acc[key] || []).concat(node)\n })\n return acc\n // Note: using Object.create on purpose:\n // object key may be arbitrary string including reserved words (i.e. `constructor`)\n // see: https://github.com/gatsbyjs/gatsby/issues/22508\n },\n Object.create(null)\n )\n\n return Object.keys(groupedResults)\n .sort()\n .reduce((acc: IGatsbyGroupReturnValue<IGatsbyNode>, fieldValue: string) => {\n const entries = groupedResults[fieldValue] || []\n acc.push({\n ...paginate(\n {\n entries: new GatsbyIterable(entries),\n totalCount: async () => entries.length,\n },\n args\n ),\n field,\n fieldValue,\n })\n return acc\n }, [])\n}\n\nexport function paginate(\n results: IQueryResult,\n params: { skip?: number; limit?: number; resultOffset?: number }\n): IGatsbyConnection<IGatsbyNode> {\n const { resultOffset = 0, skip = 0, limit } = params\n if (resultOffset > skip) {\n throw new Error(\"Result offset cannot be greater than `skip` argument\")\n }\n const allItems = Array.from(results.entries)\n\n const start = skip - resultOffset\n const items = allItems.slice(start, limit && start + limit)\n\n const totalCount = results.totalCount\n const pageCount = async (): Promise<number> => {\n const count = await totalCount()\n return limit\n ? Math.ceil(skip / limit) + Math.ceil((count - skip) / limit)\n : skip\n ? 2\n : 1\n }\n const currentPage = limit ? Math.ceil(skip / limit) + 1 : skip ? 2 : 1\n const hasPreviousPage = currentPage > 1\n const hasNextPage = limit ? allItems.length - start > limit : false\n\n return {\n totalCount,\n edges: items.map((item, i, arr) => {\n return {\n node: item,\n next: arr[i + 1],\n previous: arr[i - 1],\n }\n }),\n nodes: items,\n pageInfo: {\n currentPage,\n hasPreviousPage,\n hasNextPage,\n itemCount: items.length,\n pageCount,\n perPage: limit,\n totalCount,\n },\n }\n}\n\nexport function link<TSource, TArgs>(\n options: {\n by: string\n type?: GraphQLType\n from?: string\n fromNode?: string\n } = {\n by: `id`,\n },\n fieldConfig: GraphQLFieldConfig<\n TSource,\n IGatsbyResolverContext<TSource, TArgs>,\n TArgs\n >\n): GatsbyResolver<TSource, TArgs> {\n // Note: we explicitly make an attempt to prevent using the `async` keyword because often\n // it does not return a promise and this makes a significant difference at scale.\n\n return function linkResolver(\n source,\n args,\n context,\n info\n ): ResolvedLink | Promise<ResolvedLink> {\n const resolver = fieldConfig.resolve || context.defaultFieldResolver\n const fieldValueOrPromise = resolver(source, args, context, {\n ...info,\n from: options.from || info.from,\n fromNode: options.from ? options.fromNode : info.fromNode,\n })\n\n // Note: for this function, at scale, conditional .then is more efficient than generic await\n if (typeof fieldValueOrPromise?.then === `function`) {\n return fieldValueOrPromise.then(fieldValue =>\n linkResolverValue(fieldValue, args, context, info)\n )\n }\n\n return linkResolverValue(fieldValueOrPromise, args, context, info)\n }\n\n function linkResolverValue(\n fieldValue,\n args,\n context,\n info\n ): ResolvedLink | Promise<ResolvedLink> {\n if (fieldValue == null) {\n return null\n }\n\n const returnType = getNullableType(options.type || info.returnType)\n const type = getNamedType(returnType)\n\n if (options.by === `id`) {\n if (Array.isArray(fieldValue)) {\n return context.nodeModel.getNodesByIds(\n { ids: fieldValue, type: type },\n { path: context.path }\n )\n } else {\n return context.nodeModel.getNodeById(\n { id: fieldValue, type: type },\n { path: context.path }\n )\n }\n }\n\n // Return early if fieldValue is [] since { in: [] } doesn't make sense\n if (Array.isArray(fieldValue) && fieldValue.length === 0) {\n return fieldValue\n }\n\n const runQueryArgs = args as TArgs & { filter: Record<string, any> }\n runQueryArgs.filter = options.by.split(`.`).reduceRight(\n (acc: Record<string, any>, key: string) => {\n const obj = {}\n obj[key] = acc\n return obj\n },\n Array.isArray(fieldValue) ? { in: fieldValue } : { eq: fieldValue }\n )\n\n const firstOnly = !(returnType instanceof GraphQLList)\n\n if (context.stats) {\n context.stats.totalRunQuery++\n if (firstOnly) {\n context.stats.totalPluralRunQuery++\n }\n }\n\n const resultOrPromise = context.nodeModel.runQuery(\n {\n query: runQueryArgs,\n firstOnly,\n type,\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n\n // Note: for this function, at scale, conditional .then is more efficient than generic await\n if (typeof resultOrPromise?.then === `function`) {\n return resultOrPromise.then(result =>\n linkResolverQueryResult(fieldValue, result, returnType)\n )\n }\n\n return linkResolverQueryResult(fieldValue, resultOrPromise, returnType)\n }\n\n function linkResolverQueryResult(\n fieldValue,\n queryResult,\n returnType\n ): IGatsbyNode | Array<IGatsbyNode> {\n if (\n returnType instanceof GraphQLList &&\n Array.isArray(fieldValue) &&\n Array.isArray(queryResult)\n ) {\n return fieldValue.map(value =>\n queryResult.find(obj => getValueAt(obj, options.by) === value)\n )\n } else {\n return queryResult\n }\n }\n}\n\nexport function fileByPath<TSource, TArgs>(\n options: {\n from?: string\n fromNode?: string\n } = {},\n fieldConfig\n): GatsbyResolver<TSource, TArgs> {\n return async function fileByPathResolver(\n source,\n args,\n context,\n info\n ): Promise<IGatsbyNode | nestedListOfNodes | null> {\n const resolver = fieldConfig.resolve || context.defaultFieldResolver\n const fieldValue: nestedListOfStrings = await resolver(\n source,\n args,\n context,\n {\n ...info,\n from: options.from || info.from,\n fromNode: options.from ? options.fromNode : info.fromNode,\n }\n )\n\n if (fieldValue == null) {\n return null\n }\n\n // Find the File node for this node (we assume the node is something\n // like markdown which would be a child node of a File node).\n const parentFileNode = context.nodeModel.findRootNodeAncestor(\n source,\n node => node.internal && node.internal.type === `File`\n )\n\n async function queryNodesByPath(\n relPaths: nestedListOfStrings\n ): Promise<nestedListOfNodes> {\n const arr: nestedListOfNodes = []\n for (let i = 0; i < relPaths.length; ++i) {\n arr[i] = await (Array.isArray(relPaths[i])\n ? queryNodesByPath(relPaths[i] as nestedListOfStrings)\n : queryNodeByPath(relPaths[i] as string))\n }\n return arr\n }\n\n function queryNodeByPath(relPath: string): Promise<IGatsbyNode> {\n return context.nodeModel.runQuery({\n query: {\n filter: {\n absolutePath: {\n eq: normalize(systemPath.resolve(parentFileNode.dir, relPath)),\n },\n },\n },\n firstOnly: true,\n type: `File`,\n })\n }\n\n if (Array.isArray(fieldValue)) {\n return queryNodesByPath(fieldValue)\n } else {\n return queryNodeByPath(fieldValue)\n }\n }\n}\n\nfunction getProjectedField(\n info: GraphQLResolveInfo,\n fieldName: string\n): Array<string> {\n const selectionSet = info.fieldNodes[0].selectionSet\n if (selectionSet) {\n const fieldNodes = getFieldNodeByNameInSelectionSet(\n selectionSet,\n fieldName,\n info\n )\n\n const returnType = getNullableType(info.returnType)\n\n if (isObjectType(returnType) || isInterfaceType(returnType)) {\n const field = returnType.getFields()[fieldName]\n const fieldArg = field?.args?.find(arg => arg.name === `field`)\n if (fieldArg) {\n const fieldEnum = getNullableType(fieldArg.type)\n\n if (isEnumType(fieldEnum)) {\n return fieldNodes.reduce(\n (acc: Array<string>, fieldNode: FieldNode) => {\n const fieldArg = fieldNode.arguments?.find(\n arg => arg.name.value === `field`\n )\n if (fieldArg?.value.kind === Kind.ENUM) {\n const enumKey = fieldArg.value.value\n const enumValue = fieldEnum.getValue(enumKey)\n if (enumValue) {\n return [...acc, enumValue.value]\n }\n }\n return acc\n },\n []\n )\n }\n }\n }\n }\n\n return []\n}\n\nfunction getFieldNodeByNameInSelectionSet(\n selectionSet: SelectionSetNode,\n fieldName: string,\n info: GraphQLResolveInfo\n): Array<FieldNode> {\n return selectionSet.selections.reduce(\n (acc: Array<FieldNode>, selection: SelectionNode) => {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n const fragmentDef = info.fragments[selection.name.value]\n if (fragmentDef) {\n return [\n ...acc,\n ...getFieldNodeByNameInSelectionSet(\n fragmentDef.selectionSet,\n fieldName,\n info\n ),\n ]\n }\n } else if (selection.kind === Kind.INLINE_FRAGMENT) {\n return [\n ...acc,\n ...getFieldNodeByNameInSelectionSet(\n selection.selectionSet,\n fieldName,\n info\n ),\n ]\n } /* FIELD_NODE */ else {\n if (selection.name.value === fieldName) {\n return [...acc, selection]\n }\n }\n return acc\n },\n []\n )\n}\n\nexport const defaultFieldResolver: GatsbyResolver<\n any,\n any\n> = function defaultFieldResolver(source, args, context, info) {\n if (\n (typeof source == `object` && source !== null) ||\n typeof source === `function`\n ) {\n if (info.from) {\n if (info.fromNode) {\n const node = context.nodeModel.findRootNodeAncestor(source)\n if (!node) return null\n return getValueAt(node, info.from)\n }\n return getValueAt(source, info.from)\n }\n const property = source[info.fieldName]\n if (typeof property === `function`) {\n return source[info.fieldName](args, context, info)\n }\n return property\n }\n\n return null\n}\n\nlet WARNED_ABOUT_RESOLVERS = false\nfunction badResolverInvocationMessage(missingVar: string, path?: Path): string {\n const resolverName = path ? `${pathToArray(path)} ` : ``\n return `GraphQL Resolver ${resolverName}got called without \"${missingVar}\" argument. This might cause unexpected errors.\n\nIt's likely that this has happened in a schemaCustomization with manually invoked resolver. If manually invoking resolvers, it's best to invoke them as follows:\n\n resolve(parent, args, context, info)\n\n`\n}\n\nexport function wrappingResolver<TSource, TArgs>(\n resolver: GatsbyResolver<TSource, TArgs>\n): GatsbyResolver<TSource, TArgs> {\n // Note: we explicitly make an attempt to prevent using the `async` keyword because often\n // it does not return a promise and this makes a significant difference at scale.\n // GraphQL will gracefully handle the resolver result of a promise or non-promise.\n\n return function wrappedTracingResolver(\n parent,\n args,\n context,\n info\n ): Promise<any> {\n if (!WARNED_ABOUT_RESOLVERS) {\n if (!info) {\n reporter.warn(badResolverInvocationMessage(`info`))\n WARNED_ABOUT_RESOLVERS = true\n } else if (!context) {\n reporter.warn(badResolverInvocationMessage(`context`, info.path))\n WARNED_ABOUT_RESOLVERS = true\n }\n }\n\n let activity\n if (context?.tracer) {\n activity = context.tracer.createResolverActivity(\n info.path,\n `${info.parentType.name}.${info.fieldName}`\n )\n activity.start()\n }\n const result = resolver(parent, args, context, info)\n\n if (!activity) {\n return result\n }\n\n const endActivity = (): void => {\n if (activity) {\n activity.end()\n }\n }\n if (typeof result?.then === `function`) {\n result.then(endActivity, endActivity)\n } else {\n endActivity()\n }\n return result\n }\n}\n\nexport const defaultResolver = wrappingResolver(defaultFieldResolver)\n"],"file":"resolvers.js"}
|