gatsby 5.4.0 → 5.4.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.
@@ -143,8 +143,8 @@ class LocalNodeModel {
143
143
  return (0, _detectNodeMutations.wrapNodes)(this.trackPageDependencies(result, pageDependencies));
144
144
  }
145
145
  async _query(args) {
146
- var _query$filter, _query$filter$id;
147
- const {
146
+ var _query, _query$filter, _query$filter$id;
147
+ let {
148
148
  query = {},
149
149
  type,
150
150
  stats,
@@ -160,7 +160,7 @@ class LocalNodeModel {
160
160
 
161
161
  // check if we can get node by id and skip
162
162
  // more expensive query pipeline
163
- if (typeof (query === null || query === void 0 ? void 0 : (_query$filter = query.filter) === null || _query$filter === void 0 ? void 0 : (_query$filter$id = _query$filter.id) === null || _query$filter$id === void 0 ? void 0 : _query$filter$id.eq) !== `undefined` && Object.keys(query.filter).length === 1 && Object.keys(query.filter.id).length === 1) {
163
+ if (typeof ((_query = query) === null || _query === void 0 ? void 0 : (_query$filter = _query.filter) === null || _query$filter === void 0 ? void 0 : (_query$filter$id = _query$filter.id) === null || _query$filter$id === void 0 ? void 0 : _query$filter$id.eq) !== `undefined` && Object.keys(query.filter).length === 1 && Object.keys(query.filter.id).length === 1) {
164
164
  if (tracer) {
165
165
  runQueryActivity = reporter.phantomActivity(`runQuerySimpleIdEq`, {
166
166
  parentSpan: tracer.getParentActivity().span
@@ -180,6 +180,7 @@ class LocalNodeModel {
180
180
  totalCount: async () => nodeFoundById ? 1 : 0
181
181
  };
182
182
  }
183
+ query = (0, _utils.maybeConvertSortInputObjectToSortPath)(query);
183
184
  let materializationActivity;
184
185
  if (tracer) {
185
186
  materializationActivity = reporter.phantomActivity(`Materialization`, {
@@ -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","_query","query","stats","tracer","gqlType","getType","runQueryActivity","eq","Object","keys","phantomActivity","parentSpan","getParentActivity","span","start","nodeFoundById","end","entries","GatsbyIterable","totalCount","materializationActivity","fields","getQueryFields","sort","group","distinct","max","min","sum","fieldsToResolve","determineResolvableFields","nodeTypeName","gqlNodeType","prepareNodes","getDataStore","runQuery","queryArgs","gqlSchema","gqlComposer","resolvedFields","filtersCache","findAll","connectionType","name","findOne","Error","skip","limit","undefined","from","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","matchingRoot","tracked","visited","error","path","track","isIterable","nodeId","getFieldValue","fieldPath","fieldToResolve","pathToObject","getMaybeResolvedValue","rootNodeModel","nodeModel","_getFullDependencies","getNode","filterFields","dropQueryOperators","sortFields","split","reduceRight","acc","key","value","k","v","isPlainObject","getFields","concreteType","resolveType","gqlFields","fieldName","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","nodeIds","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 { getDataStore, getNode, getTypes } from \"../datastore\"\nimport { GatsbyIterable, isIterable } from \"../datastore/common/iterable\"\nimport { wrapNode, wrapNodes } from \"../utils/detect-node-mutations\"\nimport { toNodeTypeNames, fieldNeedToResolve } from \"./utils\"\nimport { getMaybeResolvedValue } from \"./resolvers\"\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 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 getFieldValue(node: Node, fieldPath: string): Promise<any>;\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 cache caches a set of buckets (Sets) 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 * @example\n * // Using only the id\n * getNodeById({ id: `123` })\n * // Using id and type\n * getNodeById({ id: `123`, type: `MyType` })\n * // Providing page dependencies\n * getNodeById({ id: `123` }, { path: `/` })\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 * @example\n * // Using only the id\n * getNodeByIds({ ids: [`123`, `456`] })\n *\n * // Using id and type\n * getNodeByIds({ ids: [`123`, `456`], type: `MyType` })\n *\n * // Providing page dependencies\n * getNodeByIds({ ids: [`123`, `456`] }, { path: `/` })\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 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 * You can directly return its `entries` result in your resolver.\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 * @example\n * // Get all nodes of a type\n * const { entries, totalCount } = await findAll({ type: `MyType` })\n *\n * // Get all nodes of a type while filtering and sorting\n * const { entries, totalCount } = await findAll({\n * type: `MyType`,\n * query: {\n * sort: { fields: [`date`], order: [`desc`] },\n * filter: { published: { eq: false } },\n * },\n * })\n *\n * // The `entries` return value is a `GatsbyIterable` (check its TypeScript definition for more details) and allows you to execute array like methods like filter, map, slice, forEach. Calling these methods is more performant than first turning the iterable into an array and then calling the array methods.\n * const { entries, totalCount } = await findAll({ type: `MyType` })\n *\n * const count = await totalCount()\n * const filteredEntries = entries.filter(entry => entry.published)\n *\n * // However, if a method is not available on the `GatsbyIterable` you can turn it into an array first.\n * const filteredEntries = entries.filter(entry => entry.published)\n * return Array.from(posts).length\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. When possible, always use this method instead of fetching all nodes and then filtering them. `findOne` is more performant in that regard.\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 * @example\n * // Get one node of type `MyType` by its title\n * const node = await findOne({\n * type: `MyType`,\n * query: { filter: { title: { eq: `My Title` } } },\n * })\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 ids = this._rootNodeMap.get(obj)\n if (!ids) {\n ids = []\n }\n if (obj?.parent) {\n ids.push(obj.parent)\n }\n let matchingRoot = null\n\n if (ids) {\n for (const id of ids) {\n let tracked = getNodeById(id)\n\n if (tracked) {\n const visited = new Set()\n\n while (iterations++ < 100) {\n if (predicate && predicate(tracked)) {\n return tracked\n }\n\n if (visited.has(tracked)) {\n reporter.error(\n `It looks like you have a node that's set its parent as itself:\\n\\n` +\n tracked\n )\n break\n }\n visited.add(tracked)\n\n const parent = getNodeById(tracked.parent)\n\n if (!parent) {\n break\n }\n\n tracked = parent\n }\n\n if (tracked && !predicate) {\n matchingRoot = tracked\n }\n }\n }\n }\n\n return matchingRoot\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 /**\n * Utility to get a field value from a node, even when that value needs to be materialized first (e.g. nested field that was connected via @link directive)\n * @param {Node} node\n * @param {string} fieldPath\n * @returns {any}\n * @example\n * // Example: Via schema customization the author ID is linked to the Author type\n * const blogPostNode = {\n * author: 'author-id-1',\n * // Rest of node fields...\n * }\n *\n * getFieldValue(blogPostNode, 'author.name')\n */\n getFieldValue = async (node, fieldPath) => {\n const fieldToResolve = pathToObject(fieldPath)\n const typeName = node.internal.type\n const type = this.schema.getType(typeName)\n\n await this.prepareNodes(type, fieldToResolve, fieldToResolve)\n\n return getMaybeResolvedValue(node, fieldPath, typeName)\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 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 getFieldValue = (...args) => this.nodeModel.getFieldValue(...args)\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 let nodeIds = rootNodeMap.get(data)\n if (!nodeIds) {\n nodeIds = new Set([nodeId])\n } else {\n nodeIds.add(nodeId)\n }\n rootNodeMap.set(data, nodeIds)\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","_query","query","stats","tracer","gqlType","getType","runQueryActivity","eq","Object","keys","phantomActivity","parentSpan","getParentActivity","span","start","nodeFoundById","end","entries","GatsbyIterable","totalCount","maybeConvertSortInputObjectToSortPath","materializationActivity","fields","getQueryFields","sort","group","distinct","max","min","sum","fieldsToResolve","determineResolvableFields","nodeTypeName","gqlNodeType","prepareNodes","getDataStore","runQuery","queryArgs","gqlSchema","gqlComposer","resolvedFields","filtersCache","findAll","connectionType","name","findOne","Error","skip","limit","undefined","from","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","matchingRoot","tracked","visited","error","path","track","isIterable","nodeId","getFieldValue","fieldPath","fieldToResolve","pathToObject","getMaybeResolvedValue","rootNodeModel","nodeModel","_getFullDependencies","getNode","filterFields","dropQueryOperators","sortFields","split","reduceRight","acc","key","value","k","v","isPlainObject","getFields","concreteType","resolveType","gqlFields","fieldName","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","nodeIds","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 { getDataStore, getNode, getTypes } from \"../datastore\"\nimport { GatsbyIterable, isIterable } from \"../datastore/common/iterable\"\nimport { wrapNode, wrapNodes } from \"../utils/detect-node-mutations\"\nimport {\n toNodeTypeNames,\n fieldNeedToResolve,\n maybeConvertSortInputObjectToSortPath,\n} from \"./utils\"\nimport { getMaybeResolvedValue } from \"./resolvers\"\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 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 getFieldValue(node: Node, fieldPath: string): Promise<any>;\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 cache caches a set of buckets (Sets) 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 * @example\n * // Using only the id\n * getNodeById({ id: `123` })\n * // Using id and type\n * getNodeById({ id: `123`, type: `MyType` })\n * // Providing page dependencies\n * getNodeById({ id: `123` }, { path: `/` })\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 * @example\n * // Using only the id\n * getNodeByIds({ ids: [`123`, `456`] })\n *\n * // Using id and type\n * getNodeByIds({ ids: [`123`, `456`], type: `MyType` })\n *\n * // Providing page dependencies\n * getNodeByIds({ ids: [`123`, `456`] }, { path: `/` })\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 async _query(args) {\n let { 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 query = maybeConvertSortInputObjectToSortPath(query)\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 * You can directly return its `entries` result in your resolver.\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 * @example\n * // Get all nodes of a type\n * const { entries, totalCount } = await findAll({ type: `MyType` })\n *\n * // Get all nodes of a type while filtering and sorting\n * const { entries, totalCount } = await findAll({\n * type: `MyType`,\n * query: {\n * sort: { fields: [`date`], order: [`desc`] },\n * filter: { published: { eq: false } },\n * },\n * })\n *\n * // The `entries` return value is a `GatsbyIterable` (check its TypeScript definition for more details) and allows you to execute array like methods like filter, map, slice, forEach. Calling these methods is more performant than first turning the iterable into an array and then calling the array methods.\n * const { entries, totalCount } = await findAll({ type: `MyType` })\n *\n * const count = await totalCount()\n * const filteredEntries = entries.filter(entry => entry.published)\n *\n * // However, if a method is not available on the `GatsbyIterable` you can turn it into an array first.\n * const filteredEntries = entries.filter(entry => entry.published)\n * return Array.from(posts).length\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. When possible, always use this method instead of fetching all nodes and then filtering them. `findOne` is more performant in that regard.\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 * @example\n * // Get one node of type `MyType` by its title\n * const node = await findOne({\n * type: `MyType`,\n * query: { filter: { title: { eq: `My Title` } } },\n * })\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 ids = this._rootNodeMap.get(obj)\n if (!ids) {\n ids = []\n }\n if (obj?.parent) {\n ids.push(obj.parent)\n }\n let matchingRoot = null\n\n if (ids) {\n for (const id of ids) {\n let tracked = getNodeById(id)\n\n if (tracked) {\n const visited = new Set()\n\n while (iterations++ < 100) {\n if (predicate && predicate(tracked)) {\n return tracked\n }\n\n if (visited.has(tracked)) {\n reporter.error(\n `It looks like you have a node that's set its parent as itself:\\n\\n` +\n tracked\n )\n break\n }\n visited.add(tracked)\n\n const parent = getNodeById(tracked.parent)\n\n if (!parent) {\n break\n }\n\n tracked = parent\n }\n\n if (tracked && !predicate) {\n matchingRoot = tracked\n }\n }\n }\n }\n\n return matchingRoot\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 /**\n * Utility to get a field value from a node, even when that value needs to be materialized first (e.g. nested field that was connected via @link directive)\n * @param {Node} node\n * @param {string} fieldPath\n * @returns {any}\n * @example\n * // Example: Via schema customization the author ID is linked to the Author type\n * const blogPostNode = {\n * author: 'author-id-1',\n * // Rest of node fields...\n * }\n *\n * getFieldValue(blogPostNode, 'author.name')\n */\n getFieldValue = async (node, fieldPath) => {\n const fieldToResolve = pathToObject(fieldPath)\n const typeName = node.internal.type\n const type = this.schema.getType(typeName)\n\n await this.prepareNodes(type, fieldToResolve, fieldToResolve)\n\n return getMaybeResolvedValue(node, fieldPath, typeName)\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 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 getFieldValue = (...args) => this.nodeModel.getFieldValue(...args)\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 let nodeIds = rootNodeMap.get(data)\n if (!nodeIds) {\n nodeIds = new Set([nodeId])\n } else {\n nodeIds.add(nodeId)\n }\n rootNodeMap.set(data, nodeIds)\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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"}
@@ -2,10 +2,7 @@ import { GraphQLType, GraphQLFieldConfig } from "graphql";
2
2
  import { GatsbyResolver, IGatsbyConnection, IGatsbyResolverContext } from "./type-definitions";
3
3
  import { IGatsbyNode } from "../redux/types";
4
4
  import { IQueryResult } from "../datastore/types";
5
- type NestedPathStructure = INestedPathStructureNode | true | "ASC" | "DESC";
6
- interface INestedPathStructureNode {
7
- [key: string]: NestedPathStructure;
8
- }
5
+ import { INestedPathStructureNode } from "./utils";
9
6
  export declare function getMaybeResolvedValue(node: IGatsbyNode, field: string | INestedPathStructureNode, nodeInterfaceName: string): any;
10
7
  export declare function findOne<TSource, TArgs>(typeName: string): GatsbyResolver<TSource, TArgs>;
11
8
  type PaginatedArgs<TArgs> = TArgs & {
@@ -18,39 +18,14 @@ exports.wrappingResolver = wrappingResolver;
18
18
  var _path = _interopRequireDefault(require("path"));
19
19
  var _normalizePath = _interopRequireDefault(require("normalize-path"));
20
20
  var _graphql = require("graphql");
21
- var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
22
21
  var _reporter = _interopRequireDefault(require("gatsby-cli/lib/reporter"));
23
22
  var _utils = require("../query/utils");
24
23
  var _getValueAt = require("../utils/get-value-at");
25
24
  var _iterable = require("../datastore/common/iterable");
26
25
  var _utils2 = require("./utils");
27
- function pathObjectToPathString(input) {
28
- const path = [];
29
- let currentValue = input;
30
- let leaf = undefined;
31
- while (currentValue) {
32
- if ((0, _isPlainObject.default)(currentValue)) {
33
- const entries = Object.entries(currentValue);
34
- if (entries.length !== 1) {
35
- throw new Error(`Invalid field arg`);
36
- }
37
- for (const [key, value] of entries) {
38
- path.push(key);
39
- currentValue = value;
40
- }
41
- } else {
42
- leaf = currentValue;
43
- currentValue = undefined;
44
- }
45
- }
46
- return {
47
- path: path.join(`.`),
48
- leaf
49
- };
50
- }
51
26
  function getMaybeResolvedValue(node, field, nodeInterfaceName) {
52
27
  if (typeof field !== `string`) {
53
- field = pathObjectToPathString(field).path;
28
+ field = (0, _utils2.pathObjectToPathString)(field).path;
54
29
  }
55
30
  if ((0, _utils2.fieldPathNeedToResolve)({
56
31
  selector: field,
@@ -78,34 +53,6 @@ function findOne(typeName) {
78
53
  });
79
54
  };
80
55
  }
81
- function maybeConvertSortInputObjectToSortPath(args) {
82
- if (!args.sort) {
83
- return args;
84
- }
85
- if ("5" === `5`) {
86
- let sorts = args.sort;
87
- if (!Array.isArray(sorts)) {
88
- sorts = [sorts];
89
- }
90
- const modifiedSort = {
91
- fields: [],
92
- order: []
93
- };
94
- for (const sort of sorts) {
95
- const {
96
- path,
97
- leaf
98
- } = pathObjectToPathString(sort);
99
- modifiedSort.fields.push(path);
100
- modifiedSort.order.push(leaf);
101
- }
102
- return {
103
- ...args,
104
- sort: modifiedSort
105
- };
106
- }
107
- return args;
108
- }
109
56
  function findManyPaginated(typeName) {
110
57
  return async function findManyPaginatedResolver(_source, args, context, info) {
111
58
  // Peek into selection set and pass on the `field` arg of `group` and
@@ -121,7 +68,7 @@ function findManyPaginated(typeName) {
121
68
  const skip = typeof args.skip === `number` ? Math.max(0, args.skip - 1) : 0;
122
69
  const limit = typeof args.limit === `number` ? args.limit + 2 : undefined;
123
70
  const extendedArgs = {
124
- ...maybeConvertSortInputObjectToSortPath(args),
71
+ ...args,
125
72
  group: group || [],
126
73
  distinct: distinct || [],
127
74
  max: max || [],
@@ -281,7 +228,7 @@ function createGroupResolver(nodeInterfaceName) {
281
228
  entries: new _iterable.GatsbyIterable(entries),
282
229
  totalCount: async () => entries.length
283
230
  }, args),
284
- field: typeof field === `string` ? field : pathObjectToPathString(field).path,
231
+ field: typeof field === `string` ? field : (0, _utils2.pathObjectToPathString)(field).path,
285
232
  fieldValue
286
233
  });
287
234
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.js","names":["pathObjectToPathString","input","path","currentValue","leaf","undefined","isPlainObject","entries","Object","length","Error","key","value","push","join","getMaybeResolvedValue","node","field","nodeInterfaceName","fieldPathNeedToResolve","selector","type","getValueAt","getResolvedFields","findOne","typeName","findOneResolver","_source","args","context","info","stats","totalRunQuery","nodeModel","query","filter","schema","getType","tracer","maybeConvertSortInputObjectToSortPath","sort","sorts","Array","isArray","modifiedSort","fields","order","findManyPaginated","findManyPaginatedResolver","group","getProjectedField","distinct","max","min","sum","skip","Math","limit","extendedArgs","totalPluralRunQuery","result","findAll","connectionType","paginate","resultOffset","createDistinctResolver","distinctResolver","source","edges","values","Set","forEach","subValue","add","Date","toISOString","from","createMinResolver","minResolver","Number","MAX_SAFE_INTEGER","isNaN","createMaxResolver","maxResolver","MIN_SAFE_INTEGER","createSumResolver","sumResolver","reduce","prev","createGroupResolver","groupResolver","groupedResults","acc","concat","create","keys","fieldValue","GatsbyIterable","totalCount","results","params","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","getNullableType","getNamedType","getNodesByIds","ids","getNodeById","id","runQueryArgs","split","reduceRight","obj","in","eq","firstOnly","GraphQLList","linkResolverQueryResult","queryResult","find","fileByPath","fileByPathResolver","parentFileNode","findRootNodeAncestor","internal","queryNodesByPath","relPaths","queryNodeByPath","relPath","absolutePath","normalize","systemPath","dir","fieldName","selectionSet","fieldNodes","getFieldNodeByNameInSelectionSet","isObjectType","isInterfaceType","getFields","fieldArg","arg","name","fieldTC","isEnumType","isInputObjectType","fieldNode","arguments","kind","Kind","ENUM","enumKey","enumValue","getValue","OBJECT","sortPath","selections","selection","FRAGMENT_SPREAD","fragmentDef","fragments","INLINE_FRAGMENT","property","WARNED_ABOUT_RESOLVERS","badResolverInvocationMessage","missingVar","resolverName","pathToArray","wrappingResolver","wrappedTracingResolver","parent","reporter","warn","activity","time","createResolverActivity","parentType","telemetryResolverTimings","process","hrtime","bigint","endActivity","duration","end","isTracingResolver","defaultResolver"],"sources":["../../src/schema/resolvers.ts"],"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 isInputObjectType,\n SelectionSetNode,\n SelectionNode,\n FieldNode,\n} from \"graphql\"\nimport isPlainObject from \"lodash/isPlainObject\"\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\"\nimport { getResolvedFields, fieldPathNeedToResolve } from \"./utils\"\n\ntype ResolvedLink = IGatsbyNode | Array<IGatsbyNode> | null\n\ntype nestedListOfStrings = Array<string | nestedListOfStrings>\ntype nestedListOfNodes = Array<IGatsbyNode | nestedListOfNodes>\n\ntype NestedPathStructure = INestedPathStructureNode | true | \"ASC\" | \"DESC\"\n\ninterface INestedPathStructureNode {\n [key: string]: NestedPathStructure\n}\n\nfunction pathObjectToPathString(input: INestedPathStructureNode): {\n path: string\n leaf: any\n} {\n const path: Array<string> = []\n let currentValue: NestedPathStructure | undefined = input\n let leaf: any = undefined\n while (currentValue) {\n if (isPlainObject(currentValue)) {\n const entries = Object.entries(currentValue)\n if (entries.length !== 1) {\n throw new Error(`Invalid field arg`)\n }\n for (const [key, value] of entries) {\n path.push(key)\n currentValue = value\n }\n } else {\n leaf = currentValue\n currentValue = undefined\n }\n }\n\n return {\n path: path.join(`.`),\n leaf,\n }\n}\n\nexport function getMaybeResolvedValue(\n node: IGatsbyNode,\n field: string | INestedPathStructureNode,\n nodeInterfaceName: string\n): any {\n if (typeof field !== `string`) {\n field = pathObjectToPathString(field).path\n }\n\n if (\n fieldPathNeedToResolve({\n selector: field,\n type: nodeInterfaceName,\n })\n ) {\n return getValueAt(getResolvedFields(node) as Record<string, unknown>, field)\n } else {\n return getValueAt(node, field)\n }\n}\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.findOne(\n {\n query: { filter: args },\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; sort: any }\n\nfunction maybeConvertSortInputObjectToSortPath<TArgs>(\n args: PaginatedArgs<TArgs>\n): any {\n if (!args.sort) {\n return args\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `5`) {\n let sorts = args.sort\n if (!Array.isArray(sorts)) {\n sorts = [sorts]\n }\n\n const modifiedSort: any = {\n fields: [],\n order: [],\n }\n\n for (const sort of sorts) {\n const { path, leaf } = pathObjectToPathString(sort)\n modifiedSort.fields.push(path)\n modifiedSort.order.push(leaf)\n }\n\n return {\n ...args,\n sort: modifiedSort,\n }\n }\n\n return args\n}\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 ...maybeConvertSortInputObjectToSortPath(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 | INestedPathStructureNode\n}\n\nexport function createDistinctResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\n if (value === null || value === undefined) {\n return\n }\n if (Array.isArray(value)) {\n value.forEach(subValue =>\n values.add(\n subValue instanceof Date ? subValue.toISOString() : subValue\n )\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}\n\nexport function createMinResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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}\n\nexport function createMaxResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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}\n\nexport function createSumResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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}\n\ntype IGatsbyGroupReturnValue<NodeType> = Array<\n IGatsbyConnection<NodeType> & {\n field: string\n fieldValue: string | undefined\n }\n>\n\nexport function createGroupResolver(\n nodeInterfaceName: string\n): GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n PaginatedArgs<IFieldConnectionArgs>\n> {\n return function groupResolver(\n source,\n args\n ): 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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(\n (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 typeof field === `string`\n ? field\n : pathObjectToPathString(field).path,\n fieldValue,\n })\n return acc\n },\n []\n )\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?: boolean\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 if (firstOnly) {\n return context.nodeModel\n .findOne(\n {\n query: runQueryArgs,\n type,\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n .then(result => linkResolverQueryResult(fieldValue, result, returnType))\n }\n\n return context.nodeModel\n .findAll(\n {\n query: runQueryArgs,\n type,\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n .then(({ entries }) =>\n linkResolverQueryResult(fieldValue, Array.from(entries), returnType)\n )\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?: boolean\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.findOne({\n query: {\n filter: {\n absolutePath: {\n eq: normalize(systemPath.resolve(parentFileNode.dir, relPath)),\n },\n },\n },\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 if (fieldNodes.length === 0) {\n return []\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 fieldTC = getNullableType(fieldArg.type)\n\n if (isEnumType(fieldTC) || isInputObjectType(fieldTC)) {\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 (isEnumType(fieldTC)) {\n if (fieldArg?.value.kind === Kind.ENUM) {\n const enumKey = fieldArg.value.value\n const enumValue = fieldTC.getValue(enumKey)\n if (enumValue) {\n acc.push(enumValue.value)\n }\n }\n } else if (isInputObjectType(fieldTC)) {\n const path: Array<string> = []\n let currentValue = fieldArg?.value\n while (currentValue) {\n if (currentValue.kind === Kind.OBJECT) {\n if (currentValue.fields.length !== 1) {\n throw new Error(`Invalid field arg`)\n }\n\n const fieldArg = currentValue.fields[0]\n path.push(fieldArg.name.value)\n currentValue = fieldArg.value\n } else {\n currentValue = undefined\n }\n }\n\n if (path.length > 0) {\n const sortPath = path.join(`.`)\n acc.push(sortPath)\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<any, 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 if (resolver[`isTracingResolver`]) {\n return resolver\n }\n\n const wrappedTracingResolver = 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 let time\n if (context?.tracer) {\n activity = context.tracer.createResolverActivity(\n info.path,\n `${info.parentType.name}.${info.fieldName}`\n )\n activity.start()\n }\n if (context?.telemetryResolverTimings) {\n time = process.hrtime.bigint()\n }\n\n const result = resolver(parent, args, context, info)\n\n if (!activity && !time) {\n return result\n }\n\n const endActivity = (): void => {\n if (context?.telemetryResolverTimings) {\n context.telemetryResolverTimings.push({\n name: `${info.parentType}.${info.fieldName}`,\n duration: Number(process.hrtime.bigint() - time) / 1000 / 1000,\n })\n }\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 wrappedTracingResolver.isTracingResolver = true\n\n return wrappedTracingResolver\n}\n\nexport const defaultResolver = wrappingResolver(defaultFieldResolver)\n"],"mappings":"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"}
1
+ {"version":3,"file":"resolvers.js","names":["getMaybeResolvedValue","node","field","nodeInterfaceName","pathObjectToPathString","path","fieldPathNeedToResolve","selector","type","getValueAt","getResolvedFields","findOne","typeName","findOneResolver","_source","args","context","info","stats","totalRunQuery","nodeModel","query","filter","schema","getType","tracer","findManyPaginated","findManyPaginatedResolver","group","getProjectedField","distinct","max","min","sum","skip","Math","limit","undefined","extendedArgs","totalPluralRunQuery","result","findAll","connectionType","paginate","resultOffset","createDistinctResolver","distinctResolver","source","edges","values","Set","forEach","value","Array","isArray","subValue","add","Date","toISOString","from","sort","createMinResolver","minResolver","Number","MAX_SAFE_INTEGER","isNaN","createMaxResolver","maxResolver","MIN_SAFE_INTEGER","createSumResolver","sumResolver","reduce","prev","createGroupResolver","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","getNullableType","getNamedType","getNodesByIds","ids","getNodeById","id","runQueryArgs","split","reduceRight","obj","in","eq","firstOnly","GraphQLList","linkResolverQueryResult","queryResult","find","fileByPath","fileByPathResolver","parentFileNode","findRootNodeAncestor","internal","queryNodesByPath","relPaths","queryNodeByPath","relPath","absolutePath","normalize","systemPath","dir","fieldName","selectionSet","fieldNodes","getFieldNodeByNameInSelectionSet","isObjectType","isInterfaceType","getFields","fieldArg","arg","name","fieldTC","isEnumType","isInputObjectType","fieldNode","arguments","kind","Kind","ENUM","enumKey","enumValue","getValue","currentValue","OBJECT","fields","sortPath","join","selections","selection","FRAGMENT_SPREAD","fragmentDef","fragments","INLINE_FRAGMENT","property","WARNED_ABOUT_RESOLVERS","badResolverInvocationMessage","missingVar","resolverName","pathToArray","wrappingResolver","wrappedTracingResolver","parent","reporter","warn","activity","time","createResolverActivity","parentType","telemetryResolverTimings","process","hrtime","bigint","endActivity","duration","end","isTracingResolver","defaultResolver"],"sources":["../../src/schema/resolvers.ts"],"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 isInputObjectType,\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\"\nimport {\n getResolvedFields,\n fieldPathNeedToResolve,\n INestedPathStructureNode,\n pathObjectToPathString,\n} from \"./utils\"\n\ntype ResolvedLink = IGatsbyNode | Array<IGatsbyNode> | null\n\ntype nestedListOfStrings = Array<string | nestedListOfStrings>\ntype nestedListOfNodes = Array<IGatsbyNode | nestedListOfNodes>\n\nexport function getMaybeResolvedValue(\n node: IGatsbyNode,\n field: string | INestedPathStructureNode,\n nodeInterfaceName: string\n): any {\n if (typeof field !== `string`) {\n field = pathObjectToPathString(field).path\n }\n\n if (\n fieldPathNeedToResolve({\n selector: field,\n type: nodeInterfaceName,\n })\n ) {\n return getValueAt(getResolvedFields(node) as Record<string, unknown>, field)\n } else {\n return getValueAt(node, field)\n }\n}\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.findOne(\n {\n query: { filter: args },\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; sort: any }\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 | INestedPathStructureNode\n}\n\nexport function createDistinctResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\n if (value === null || value === undefined) {\n return\n }\n if (Array.isArray(value)) {\n value.forEach(subValue =>\n values.add(\n subValue instanceof Date ? subValue.toISOString() : subValue\n )\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}\n\nexport function createMinResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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}\n\nexport function createMaxResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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}\n\nexport function createSumResolver(\n nodeInterfaceName: string\n): GatsbyResolver<IGatsbyConnection<IGatsbyNode>, IFieldConnectionArgs> {\n return 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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}\n\ntype IGatsbyGroupReturnValue<NodeType> = Array<\n IGatsbyConnection<NodeType> & {\n field: string\n fieldValue: string | undefined\n }\n>\n\nexport function createGroupResolver(\n nodeInterfaceName: string\n): GatsbyResolver<\n IGatsbyConnection<IGatsbyNode>,\n PaginatedArgs<IFieldConnectionArgs>\n> {\n return function groupResolver(\n source,\n args\n ): 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 = getMaybeResolvedValue(node, field, nodeInterfaceName)\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(\n (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 typeof field === `string`\n ? field\n : pathObjectToPathString(field).path,\n fieldValue,\n })\n return acc\n },\n []\n )\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?: boolean\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 if (firstOnly) {\n return context.nodeModel\n .findOne(\n {\n query: runQueryArgs,\n type,\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n .then(result => linkResolverQueryResult(fieldValue, result, returnType))\n }\n\n return context.nodeModel\n .findAll(\n {\n query: runQueryArgs,\n type,\n stats: context.stats,\n tracer: context.tracer,\n },\n { path: context.path }\n )\n .then(({ entries }) =>\n linkResolverQueryResult(fieldValue, Array.from(entries), returnType)\n )\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?: boolean\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.findOne({\n query: {\n filter: {\n absolutePath: {\n eq: normalize(systemPath.resolve(parentFileNode.dir, relPath)),\n },\n },\n },\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 if (fieldNodes.length === 0) {\n return []\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 fieldTC = getNullableType(fieldArg.type)\n\n if (isEnumType(fieldTC) || isInputObjectType(fieldTC)) {\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 (isEnumType(fieldTC)) {\n if (fieldArg?.value.kind === Kind.ENUM) {\n const enumKey = fieldArg.value.value\n const enumValue = fieldTC.getValue(enumKey)\n if (enumValue) {\n acc.push(enumValue.value)\n }\n }\n } else if (isInputObjectType(fieldTC)) {\n const path: Array<string> = []\n let currentValue = fieldArg?.value\n while (currentValue) {\n if (currentValue.kind === Kind.OBJECT) {\n if (currentValue.fields.length !== 1) {\n throw new Error(`Invalid field arg`)\n }\n\n const fieldArg = currentValue.fields[0]\n path.push(fieldArg.name.value)\n currentValue = fieldArg.value\n } else {\n currentValue = undefined\n }\n }\n\n if (path.length > 0) {\n const sortPath = path.join(`.`)\n acc.push(sortPath)\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<any, 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 if (resolver[`isTracingResolver`]) {\n return resolver\n }\n\n const wrappedTracingResolver = 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 let time\n if (context?.tracer) {\n activity = context.tracer.createResolverActivity(\n info.path,\n `${info.parentType.name}.${info.fieldName}`\n )\n activity.start()\n }\n if (context?.telemetryResolverTimings) {\n time = process.hrtime.bigint()\n }\n\n const result = resolver(parent, args, context, info)\n\n if (!activity && !time) {\n return result\n }\n\n const endActivity = (): void => {\n if (context?.telemetryResolverTimings) {\n context.telemetryResolverTimings.push({\n name: `${info.parentType}.${info.fieldName}`,\n duration: Number(process.hrtime.bigint() - time) / 1000 / 1000,\n })\n }\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 wrappedTracingResolver.isTracingResolver = true\n\n return wrappedTracingResolver\n}\n\nexport const defaultResolver = wrappingResolver(defaultFieldResolver)\n"],"mappings":"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"}
@@ -16,3 +16,13 @@ export declare const fieldPathNeedToResolve: ({ selector, type, }: {
16
16
  type: string | GraphQLObjectType | GraphQLInterfaceType;
17
17
  }) => boolean;
18
18
  export declare function getResolvedFields(node: IGatsbyNode | IGatsbyNodePartial): undefined | Record<string, any>;
19
+ type NestedPathStructure = INestedPathStructureNode | true | "ASC" | "DESC";
20
+ export interface INestedPathStructureNode {
21
+ [key: string]: NestedPathStructure;
22
+ }
23
+ export declare function pathObjectToPathString(input: INestedPathStructureNode): {
24
+ path: string;
25
+ leaf: any;
26
+ };
27
+ export declare function maybeConvertSortInputObjectToSortPath(args: any): any;
28
+ export {};
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  exports.__esModule = true;
4
5
  exports.fieldPathNeedToResolve = exports.fieldNeedToResolve = void 0;
5
6
  exports.getResolvedFields = getResolvedFields;
6
7
  exports.isObjectOrInterfaceTypeComposer = isObjectOrInterfaceTypeComposer;
8
+ exports.maybeConvertSortInputObjectToSortPath = maybeConvertSortInputObjectToSortPath;
9
+ exports.pathObjectToPathString = pathObjectToPathString;
7
10
  exports.toNodeTypeNames = void 0;
8
11
  var _graphql = require("graphql");
9
12
  var _graphqlCompose = require("graphql-compose");
13
+ var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
10
14
  var _redux = require("../redux");
11
15
  const toNodeTypeNames = (schema, gqlTypeName) => {
12
16
  const gqlType = typeof gqlTypeName === `string` ? schema.getType(gqlTypeName) : gqlTypeName;
@@ -85,4 +89,61 @@ function getResolvedFields(node) {
85
89
  const resolvedNodes = _redux.store.getState().resolvedNodesCache.get(typeName);
86
90
  return resolvedNodes === null || resolvedNodes === void 0 ? void 0 : resolvedNodes.get(node.id);
87
91
  }
92
+ function pathObjectToPathString(input) {
93
+ const path = [];
94
+ let currentValue = input;
95
+ let leaf = undefined;
96
+ while (currentValue) {
97
+ if ((0, _isPlainObject.default)(currentValue)) {
98
+ const entries = Object.entries(currentValue);
99
+ if (entries.length !== 1) {
100
+ throw new Error(`Invalid field arg`);
101
+ }
102
+ for (const [key, value] of entries) {
103
+ path.push(key);
104
+ currentValue = value;
105
+ }
106
+ } else {
107
+ leaf = currentValue;
108
+ currentValue = undefined;
109
+ }
110
+ }
111
+ return {
112
+ path: path.join(`.`),
113
+ leaf
114
+ };
115
+ }
116
+ function maybeConvertSortInputObjectToSortPath(args) {
117
+ if (!args.sort) {
118
+ return args;
119
+ }
120
+ if ("5" === `5`) {
121
+ var _args$sort, _args$sort2;
122
+ // check if it's already in expected format
123
+ if (Array.isArray((_args$sort = args.sort) === null || _args$sort === void 0 ? void 0 : _args$sort.fields) && Array.isArray((_args$sort2 = args.sort) === null || _args$sort2 === void 0 ? void 0 : _args$sort2.order) && args.sort.order.every(item => typeof item === `string` && (item.toLowerCase() === `asc` || item.toLowerCase() === `desc`))) {
124
+ return args;
125
+ }
126
+ let sorts = args.sort;
127
+ if (!Array.isArray(sorts)) {
128
+ sorts = [sorts];
129
+ }
130
+ const modifiedSort = {
131
+ fields: [],
132
+ order: []
133
+ };
134
+ for (const sort of sorts) {
135
+ const {
136
+ path,
137
+ leaf
138
+ } = pathObjectToPathString(sort);
139
+ modifiedSort.fields.push(path);
140
+ modifiedSort.order.push(leaf);
141
+ }
142
+ return {
143
+ ...args,
144
+ sort: modifiedSort
145
+ };
146
+ }
147
+ return args;
148
+ }
88
149
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["toNodeTypeNames","schema","gqlTypeName","gqlType","getType","isObjectType","isAbstractType","possibleTypes","getPossibleTypes","filter","type","getInterfaces","some","iface","name","map","isObjectOrInterfaceTypeComposer","ObjectTypeComposer","InterfaceTypeComposer","fieldNeedToResolve","typeComposer","schemaComposer","fieldName","nodeTypeNames","possibleTCs","getAnyTC","tc","getFieldExtension","fieldPathNeedToResolve","selector","schemaCustomization","composer","store","getState","Error","selectors","split","isInterfaceType","i","length","nextType","getNamedType","getFields","getResolvedFields","node","typeName","internal","resolvedNodes","resolvedNodesCache","get","id"],"sources":["../../src/schema/utils.ts"],"sourcesContent":["import {\n isAbstractType,\n getNamedType,\n GraphQLSchema,\n isObjectType,\n isInterfaceType,\n GraphQLObjectType,\n GraphQLInterfaceType,\n GraphQLUnionType,\n} from \"graphql\"\nimport {\n InterfaceTypeComposer,\n NamedTypeComposer,\n ObjectTypeComposer,\n SchemaComposer,\n} from \"graphql-compose\"\n\nimport type { IGatsbyNodePartial } from \"../datastore/in-memory/indexing\"\nimport { IGatsbyNode } from \"../internal\"\nimport { store } from \"../redux\"\n\nexport const toNodeTypeNames = (\n schema: GraphQLSchema,\n gqlTypeName:\n | string\n | GraphQLObjectType\n | GraphQLInterfaceType\n | GraphQLUnionType\n): Array<string> => {\n const gqlType =\n typeof gqlTypeName === `string` ? schema.getType(gqlTypeName) : gqlTypeName\n\n if (!gqlType || !(isObjectType(gqlType) || isAbstractType(gqlType))) {\n return []\n }\n\n const possibleTypes = isAbstractType(gqlType)\n ? schema.getPossibleTypes(gqlType)\n : [gqlType]\n\n return possibleTypes\n .filter(type => type.getInterfaces().some(iface => iface.name === `Node`))\n .map(type => type.name)\n}\n\nexport function isObjectOrInterfaceTypeComposer(\n type: NamedTypeComposer<any>\n): type is ObjectTypeComposer | InterfaceTypeComposer {\n return (\n type instanceof ObjectTypeComposer || type instanceof InterfaceTypeComposer\n )\n}\n\nexport const fieldNeedToResolve = ({\n schema,\n gqlType,\n typeComposer,\n schemaComposer,\n fieldName,\n}: {\n schema: GraphQLSchema\n gqlType: GraphQLObjectType | GraphQLInterfaceType\n typeComposer: ObjectTypeComposer<any> | InterfaceTypeComposer<any>\n schemaComposer: SchemaComposer<any>\n fieldName: string\n}): boolean => {\n const nodeTypeNames = toNodeTypeNames(schema, gqlType)\n\n const possibleTCs: Array<ObjectTypeComposer | InterfaceTypeComposer> = [\n typeComposer,\n ...nodeTypeNames\n .map(name => schemaComposer.getAnyTC(name))\n .filter(isObjectOrInterfaceTypeComposer),\n ]\n\n for (const tc of possibleTCs) {\n if (tc.getFieldExtension(fieldName, `needsResolve`) || false) {\n return true\n }\n }\n\n return false\n}\n\nexport const fieldPathNeedToResolve = ({\n selector,\n type,\n}: {\n selector: string\n type: string | GraphQLObjectType | GraphQLInterfaceType\n}): boolean => {\n const {\n schema,\n schemaCustomization: { composer: schemaComposer },\n } = store.getState()\n\n if (!schemaComposer) {\n throw new Error(`Schema composer isn't set yet`)\n }\n\n const selectors =\n typeof selector === `string` ? selector.split(`.`) : selector\n\n let gqlType = typeof type === `string` ? schema.getType(type) : type\n\n if (!gqlType || !(isObjectType(gqlType) || isInterfaceType(gqlType))) {\n return false\n }\n\n for (let i = 0; i < selectors.length; i++) {\n const fieldName = selectors[i]\n const typeComposer = schemaComposer.getAnyTC(gqlType.name)\n\n if (!isObjectOrInterfaceTypeComposer(typeComposer)) {\n return false\n }\n\n if (\n fieldNeedToResolve({\n schema,\n gqlType,\n typeComposer,\n schemaComposer,\n fieldName,\n })\n ) {\n return true\n }\n\n const nextType = getNamedType(gqlType.getFields()[fieldName].type)\n if (!nextType || !(isObjectType(nextType) || isInterfaceType(nextType))) {\n return false\n } else {\n gqlType = nextType\n }\n }\n\n return false\n}\n\nexport function getResolvedFields(\n node: IGatsbyNode | IGatsbyNodePartial\n): undefined | Record<string, any> {\n const typeName = node.internal.type\n const resolvedNodes = store.getState().resolvedNodesCache.get(typeName)\n return resolvedNodes?.get(node.id)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["toNodeTypeNames","schema","gqlTypeName","gqlType","getType","isObjectType","isAbstractType","possibleTypes","getPossibleTypes","filter","type","getInterfaces","some","iface","name","map","isObjectOrInterfaceTypeComposer","ObjectTypeComposer","InterfaceTypeComposer","fieldNeedToResolve","typeComposer","schemaComposer","fieldName","nodeTypeNames","possibleTCs","getAnyTC","tc","getFieldExtension","fieldPathNeedToResolve","selector","schemaCustomization","composer","store","getState","Error","selectors","split","isInterfaceType","i","length","nextType","getNamedType","getFields","getResolvedFields","node","typeName","internal","resolvedNodes","resolvedNodesCache","get","id","pathObjectToPathString","input","path","currentValue","leaf","undefined","isPlainObject","entries","Object","key","value","push","join","maybeConvertSortInputObjectToSortPath","args","sort","Array","isArray","fields","order","every","item","toLowerCase","sorts","modifiedSort"],"sources":["../../src/schema/utils.ts"],"sourcesContent":["import {\n isAbstractType,\n getNamedType,\n GraphQLSchema,\n isObjectType,\n isInterfaceType,\n GraphQLObjectType,\n GraphQLInterfaceType,\n GraphQLUnionType,\n} from \"graphql\"\nimport {\n InterfaceTypeComposer,\n NamedTypeComposer,\n ObjectTypeComposer,\n SchemaComposer,\n} from \"graphql-compose\"\nimport isPlainObject from \"lodash/isPlainObject\"\n\nimport type { IGatsbyNodePartial } from \"../datastore/in-memory/indexing\"\nimport { IGatsbyNode } from \"../internal\"\nimport { store } from \"../redux\"\n\nexport const toNodeTypeNames = (\n schema: GraphQLSchema,\n gqlTypeName:\n | string\n | GraphQLObjectType\n | GraphQLInterfaceType\n | GraphQLUnionType\n): Array<string> => {\n const gqlType =\n typeof gqlTypeName === `string` ? schema.getType(gqlTypeName) : gqlTypeName\n\n if (!gqlType || !(isObjectType(gqlType) || isAbstractType(gqlType))) {\n return []\n }\n\n const possibleTypes = isAbstractType(gqlType)\n ? schema.getPossibleTypes(gqlType)\n : [gqlType]\n\n return possibleTypes\n .filter(type => type.getInterfaces().some(iface => iface.name === `Node`))\n .map(type => type.name)\n}\n\nexport function isObjectOrInterfaceTypeComposer(\n type: NamedTypeComposer<any>\n): type is ObjectTypeComposer | InterfaceTypeComposer {\n return (\n type instanceof ObjectTypeComposer || type instanceof InterfaceTypeComposer\n )\n}\n\nexport const fieldNeedToResolve = ({\n schema,\n gqlType,\n typeComposer,\n schemaComposer,\n fieldName,\n}: {\n schema: GraphQLSchema\n gqlType: GraphQLObjectType | GraphQLInterfaceType\n typeComposer: ObjectTypeComposer<any> | InterfaceTypeComposer<any>\n schemaComposer: SchemaComposer<any>\n fieldName: string\n}): boolean => {\n const nodeTypeNames = toNodeTypeNames(schema, gqlType)\n\n const possibleTCs: Array<ObjectTypeComposer | InterfaceTypeComposer> = [\n typeComposer,\n ...nodeTypeNames\n .map(name => schemaComposer.getAnyTC(name))\n .filter(isObjectOrInterfaceTypeComposer),\n ]\n\n for (const tc of possibleTCs) {\n if (tc.getFieldExtension(fieldName, `needsResolve`) || false) {\n return true\n }\n }\n\n return false\n}\n\nexport const fieldPathNeedToResolve = ({\n selector,\n type,\n}: {\n selector: string\n type: string | GraphQLObjectType | GraphQLInterfaceType\n}): boolean => {\n const {\n schema,\n schemaCustomization: { composer: schemaComposer },\n } = store.getState()\n\n if (!schemaComposer) {\n throw new Error(`Schema composer isn't set yet`)\n }\n\n const selectors =\n typeof selector === `string` ? selector.split(`.`) : selector\n\n let gqlType = typeof type === `string` ? schema.getType(type) : type\n\n if (!gqlType || !(isObjectType(gqlType) || isInterfaceType(gqlType))) {\n return false\n }\n\n for (let i = 0; i < selectors.length; i++) {\n const fieldName = selectors[i]\n const typeComposer = schemaComposer.getAnyTC(gqlType.name)\n\n if (!isObjectOrInterfaceTypeComposer(typeComposer)) {\n return false\n }\n\n if (\n fieldNeedToResolve({\n schema,\n gqlType,\n typeComposer,\n schemaComposer,\n fieldName,\n })\n ) {\n return true\n }\n\n const nextType = getNamedType(gqlType.getFields()[fieldName].type)\n if (!nextType || !(isObjectType(nextType) || isInterfaceType(nextType))) {\n return false\n } else {\n gqlType = nextType\n }\n }\n\n return false\n}\n\nexport function getResolvedFields(\n node: IGatsbyNode | IGatsbyNodePartial\n): undefined | Record<string, any> {\n const typeName = node.internal.type\n const resolvedNodes = store.getState().resolvedNodesCache.get(typeName)\n return resolvedNodes?.get(node.id)\n}\n\ntype NestedPathStructure = INestedPathStructureNode | true | \"ASC\" | \"DESC\"\n\nexport interface INestedPathStructureNode {\n [key: string]: NestedPathStructure\n}\n\nexport function pathObjectToPathString(input: INestedPathStructureNode): {\n path: string\n leaf: any\n} {\n const path: Array<string> = []\n let currentValue: NestedPathStructure | undefined = input\n let leaf: any = undefined\n while (currentValue) {\n if (isPlainObject(currentValue)) {\n const entries = Object.entries(currentValue)\n if (entries.length !== 1) {\n throw new Error(`Invalid field arg`)\n }\n for (const [key, value] of entries) {\n path.push(key)\n currentValue = value\n }\n } else {\n leaf = currentValue\n currentValue = undefined\n }\n }\n\n return {\n path: path.join(`.`),\n leaf,\n }\n}\n\nexport function maybeConvertSortInputObjectToSortPath(args: any): any {\n if (!args.sort) {\n return args\n }\n\n if (_CFLAGS_.GATSBY_MAJOR === `5`) {\n // check if it's already in expected format\n if (\n Array.isArray(args.sort?.fields) &&\n Array.isArray(args.sort?.order) &&\n args.sort.order.every(\n item =>\n typeof item === `string` &&\n (item.toLowerCase() === `asc` || item.toLowerCase() === `desc`)\n )\n ) {\n return args\n }\n\n let sorts = args.sort\n\n if (!Array.isArray(sorts)) {\n sorts = [sorts]\n }\n\n const modifiedSort: any = {\n fields: [],\n order: [],\n }\n\n for (const sort of sorts) {\n const { path, leaf } = pathObjectToPathString(sort)\n modifiedSort.fields.push(path)\n modifiedSort.order.push(leaf)\n }\n\n return {\n ...args,\n sort: modifiedSort,\n }\n }\n\n return args\n}\n"],"mappings":";;;;;;;;;;AAAA;AAUA;AAMA;AAIA;AAEO,MAAMA,eAAe,GAAG,CAC7BC,MAAqB,EACrBC,WAIoB,KACF;EAClB,MAAMC,OAAO,GACX,OAAOD,WAAW,KAAM,QAAO,GAAGD,MAAM,CAACG,OAAO,CAACF,WAAW,CAAC,GAAGA,WAAW;EAE7E,IAAI,CAACC,OAAO,IAAI,EAAE,IAAAE,qBAAY,EAACF,OAAO,CAAC,IAAI,IAAAG,uBAAc,EAACH,OAAO,CAAC,CAAC,EAAE;IACnE,OAAO,EAAE;EACX;EAEA,MAAMI,aAAa,GAAG,IAAAD,uBAAc,EAACH,OAAO,CAAC,GACzCF,MAAM,CAACO,gBAAgB,CAACL,OAAO,CAAC,GAChC,CAACA,OAAO,CAAC;EAEb,OAAOI,aAAa,CACjBE,MAAM,CAACC,IAAI,IAAIA,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACC,IAAI,KAAM,MAAK,CAAC,CAAC,CACzEC,GAAG,CAACL,IAAI,IAAIA,IAAI,CAACI,IAAI,CAAC;AAC3B,CAAC;AAAA;AAEM,SAASE,+BAA+B,CAC7CN,IAA4B,EACwB;EACpD,OACEA,IAAI,YAAYO,kCAAkB,IAAIP,IAAI,YAAYQ,qCAAqB;AAE/E;AAEO,MAAMC,kBAAkB,GAAG,CAAC;EACjClB,MAAM;EACNE,OAAO;EACPiB,YAAY;EACZC,cAAc;EACdC;AAOF,CAAC,KAAc;EACb,MAAMC,aAAa,GAAGvB,eAAe,CAACC,MAAM,EAAEE,OAAO,CAAC;EAEtD,MAAMqB,WAA8D,GAAG,CACrEJ,YAAY,EACZ,GAAGG,aAAa,CACbR,GAAG,CAACD,IAAI,IAAIO,cAAc,CAACI,QAAQ,CAACX,IAAI,CAAC,CAAC,CAC1CL,MAAM,CAACO,+BAA+B,CAAC,CAC3C;EAED,KAAK,MAAMU,EAAE,IAAIF,WAAW,EAAE;IAC5B,IAAIE,EAAE,CAACC,iBAAiB,CAACL,SAAS,EAAG,cAAa,CAAC,IAAI,KAAK,EAAE;MAC5D,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAAA;AAEM,MAAMM,sBAAsB,GAAG,CAAC;EACrCC,QAAQ;EACRnB;AAIF,CAAC,KAAc;EACb,MAAM;IACJT,MAAM;IACN6B,mBAAmB,EAAE;MAAEC,QAAQ,EAAEV;IAAe;EAClD,CAAC,GAAGW,YAAK,CAACC,QAAQ,EAAE;EAEpB,IAAI,CAACZ,cAAc,EAAE;IACnB,MAAM,IAAIa,KAAK,CAAE,+BAA8B,CAAC;EAClD;EAEA,MAAMC,SAAS,GACb,OAAON,QAAQ,KAAM,QAAO,GAAGA,QAAQ,CAACO,KAAK,CAAE,GAAE,CAAC,GAAGP,QAAQ;EAE/D,IAAI1B,OAAO,GAAG,OAAOO,IAAI,KAAM,QAAO,GAAGT,MAAM,CAACG,OAAO,CAACM,IAAI,CAAC,GAAGA,IAAI;EAEpE,IAAI,CAACP,OAAO,IAAI,EAAE,IAAAE,qBAAY,EAACF,OAAO,CAAC,IAAI,IAAAkC,wBAAe,EAAClC,OAAO,CAAC,CAAC,EAAE;IACpE,OAAO,KAAK;EACd;EAEA,KAAK,IAAImC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,SAAS,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;IACzC,MAAMhB,SAAS,GAAGa,SAAS,CAACG,CAAC,CAAC;IAC9B,MAAMlB,YAAY,GAAGC,cAAc,CAACI,QAAQ,CAACtB,OAAO,CAACW,IAAI,CAAC;IAE1D,IAAI,CAACE,+BAA+B,CAACI,YAAY,CAAC,EAAE;MAClD,OAAO,KAAK;IACd;IAEA,IACED,kBAAkB,CAAC;MACjBlB,MAAM;MACNE,OAAO;MACPiB,YAAY;MACZC,cAAc;MACdC;IACF,CAAC,CAAC,EACF;MACA,OAAO,IAAI;IACb;IAEA,MAAMkB,QAAQ,GAAG,IAAAC,qBAAY,EAACtC,OAAO,CAACuC,SAAS,EAAE,CAACpB,SAAS,CAAC,CAACZ,IAAI,CAAC;IAClE,IAAI,CAAC8B,QAAQ,IAAI,EAAE,IAAAnC,qBAAY,EAACmC,QAAQ,CAAC,IAAI,IAAAH,wBAAe,EAACG,QAAQ,CAAC,CAAC,EAAE;MACvE,OAAO,KAAK;IACd,CAAC,MAAM;MACLrC,OAAO,GAAGqC,QAAQ;IACpB;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAAA;AAEM,SAASG,iBAAiB,CAC/BC,IAAsC,EACL;EACjC,MAAMC,QAAQ,GAAGD,IAAI,CAACE,QAAQ,CAACpC,IAAI;EACnC,MAAMqC,aAAa,GAAGf,YAAK,CAACC,QAAQ,EAAE,CAACe,kBAAkB,CAACC,GAAG,CAACJ,QAAQ,CAAC;EACvE,OAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,GAAG,CAACL,IAAI,CAACM,EAAE,CAAC;AACpC;AAQO,SAASC,sBAAsB,CAACC,KAA+B,EAGpE;EACA,MAAMC,IAAmB,GAAG,EAAE;EAC9B,IAAIC,YAA6C,GAAGF,KAAK;EACzD,IAAIG,IAAS,GAAGC,SAAS;EACzB,OAAOF,YAAY,EAAE;IACnB,IAAI,IAAAG,sBAAa,EAACH,YAAY,CAAC,EAAE;MAC/B,MAAMI,OAAO,GAAGC,MAAM,CAACD,OAAO,CAACJ,YAAY,CAAC;MAC5C,IAAII,OAAO,CAACnB,MAAM,KAAK,CAAC,EAAE;QACxB,MAAM,IAAIL,KAAK,CAAE,mBAAkB,CAAC;MACtC;MACA,KAAK,MAAM,CAAC0B,GAAG,EAAEC,KAAK,CAAC,IAAIH,OAAO,EAAE;QAClCL,IAAI,CAACS,IAAI,CAACF,GAAG,CAAC;QACdN,YAAY,GAAGO,KAAK;MACtB;IACF,CAAC,MAAM;MACLN,IAAI,GAAGD,YAAY;MACnBA,YAAY,GAAGE,SAAS;IAC1B;EACF;EAEA,OAAO;IACLH,IAAI,EAAEA,IAAI,CAACU,IAAI,CAAE,GAAE,CAAC;IACpBR;EACF,CAAC;AACH;AAEO,SAASS,qCAAqC,CAACC,IAAS,EAAO;EACpE,IAAI,CAACA,IAAI,CAACC,IAAI,EAAE;IACd,OAAOD,IAAI;EACb;EAEA,IAAI,QAA2B,GAAE,EAAE;IAAA;IACjC;IACA,IACEE,KAAK,CAACC,OAAO,eAACH,IAAI,CAACC,IAAI,+CAAT,WAAWG,MAAM,CAAC,IAChCF,KAAK,CAACC,OAAO,gBAACH,IAAI,CAACC,IAAI,gDAAT,YAAWI,KAAK,CAAC,IAC/BL,IAAI,CAACC,IAAI,CAACI,KAAK,CAACC,KAAK,CACnBC,IAAI,IACF,OAAOA,IAAI,KAAM,QAAO,KACvBA,IAAI,CAACC,WAAW,EAAE,KAAM,KAAI,IAAID,IAAI,CAACC,WAAW,EAAE,KAAM,MAAK,CAAC,CAClE,EACD;MACA,OAAOR,IAAI;IACb;IAEA,IAAIS,KAAK,GAAGT,IAAI,CAACC,IAAI;IAErB,IAAI,CAACC,KAAK,CAACC,OAAO,CAACM,KAAK,CAAC,EAAE;MACzBA,KAAK,GAAG,CAACA,KAAK,CAAC;IACjB;IAEA,MAAMC,YAAiB,GAAG;MACxBN,MAAM,EAAE,EAAE;MACVC,KAAK,EAAE;IACT,CAAC;IAED,KAAK,MAAMJ,IAAI,IAAIQ,KAAK,EAAE;MACxB,MAAM;QAAErB,IAAI;QAAEE;MAAK,CAAC,GAAGJ,sBAAsB,CAACe,IAAI,CAAC;MACnDS,YAAY,CAACN,MAAM,CAACP,IAAI,CAACT,IAAI,CAAC;MAC9BsB,YAAY,CAACL,KAAK,CAACR,IAAI,CAACP,IAAI,CAAC;IAC/B;IAEA,OAAO;MACL,GAAGU,IAAI;MACPC,IAAI,EAAES;IACR,CAAC;EACH;EAEA,OAAOV,IAAI;AACb"}
@@ -73,8 +73,11 @@ const createWebpackUtils = (stage, program) => {
73
73
  },
74
74
  yaml: (options = {}) => {
75
75
  return {
76
- options,
77
- loader: require.resolve(`yaml-loader`)
76
+ loader: require.resolve(`yaml-loader`),
77
+ options: {
78
+ asJSON: true,
79
+ ...options
80
+ }
78
81
  };
79
82
  },
80
83
  null: (options = {}) => {
@@ -1 +1 @@
1
- {"version":3,"file":"webpack-utils.js","names":["vendorRegex","createWebpackUtils","stage","program","assetRelativeRoot","supportedBrowsers","getBrowsersList","directory","PRODUCTION","includes","isSSR","config","store","getState","assetPrefix","pathPrefix","publicPath","getPublicPath","makeExternalOnly","original","options","rule","include","makeInternalOnly","exclude","fileLoaderCommonOptions","name","outputPath","path","relative","ROUTES_DIRECTORY","loaders","json","loader","require","resolve","yaml","null","raw","style","miniCssExtract","moduleOptions","undefined","modules","restOptions","namedExport","MiniCssExtractPlugin","css","modulesOptions","auto","localIdentName","exportLocalsConvention","exportOnlyLocals","url","startsWith","sourceMap","postcss","plugins","overrideBrowserslist","postcssOpts","execute","postcssOptions","loaderContext","postCSSPlugins","autoprefixerPlugin","autoprefixer","flexbox","find","plugin","postcssPlugin","unshift","flexbugs","file","limit","fallback","js","reactRuntime","jsxRuntime","reactImportSource","jsxImportSource","cacheDirectory","join","rootDir","dependencies","rules","modulesThatUseGatsby","test","modulePath","some","module","type","use","resourceQuery","issuer","configFile","compact","isPageTemplate","jsOptions","babelrc","presets","sourceMaps","cacheIdentifier","JSON","stringify","browsersList","gatsbyPreset","version","VENDORS_TO_NOT_POLYFILL","doNotPolyfillRegex","RegExp","fonts","images","media","miscAssets","browsers","importLoaders","filter","Boolean","internal","external","cssModules","builtinPlugins","minifyJs","terserOptions","TerserPlugin","ie8","mangle","safari10","parse","ecma","compress","output","parallel","Math","max","cpuCoreCount","minifyCss","minimizerOptions","preset","svgo","full","CssMinimizerPlugin","fastRefresh","regExpToHack","ReactRefreshWebpackPlugin","overlay","sockIntegration","__dirname","extractText","moment","ignore","resourceRegExp","contextRegExp","extractStats","GatsbyWebpackStatsExtractor","eslintGraphqlSchemaReload","virtualModules","GatsbyWebpackVirtualModules","eslint","extensions","VIRTUAL_MODULES_BASE_PATH","eslintConfig","ESLintPlugin","eslintRequired","eslintRequiredConfig"],"sources":["../../src/utils/webpack-utils.ts"],"sourcesContent":["import * as path from \"path\"\nimport { RuleSetRule, WebpackPluginInstance } from \"webpack\"\nimport { GraphQLSchema } from \"graphql\"\nimport { Plugin as PostCSSPlugin } from \"postcss\"\nimport autoprefixer from \"autoprefixer\"\nimport flexbugs from \"postcss-flexbugs-fixes\"\nimport TerserPlugin from \"terser-webpack-plugin\"\nimport type { MinifyOptions as TerserOptions } from \"terser\"\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\"\nimport CssMinimizerPlugin from \"css-minimizer-webpack-plugin\"\nimport ReactRefreshWebpackPlugin from \"@pmmmwh/react-refresh-webpack-plugin\"\nimport { getBrowsersList } from \"./browserslist\"\nimport ESLintPlugin from \"eslint-webpack-plugin\"\nimport { cpuCoreCount } from \"gatsby-core-utils\"\nimport { GatsbyWebpackStatsExtractor } from \"./gatsby-webpack-stats-extractor\"\nimport { getPublicPath } from \"./get-public-path\"\nimport {\n GatsbyWebpackVirtualModules,\n VIRTUAL_MODULES_BASE_PATH,\n} from \"./gatsby-webpack-virtual-modules\"\n\nimport { builtinPlugins } from \"./webpack-plugins\"\nimport { IProgram, Stage } from \"../commands/types\"\nimport { eslintConfig, eslintRequiredConfig } from \"./eslint-config\"\nimport { store } from \"../redux\"\nimport type { RuleSetUseItem } from \"webpack\"\nimport { ROUTES_DIRECTORY } from \"../constants\"\n\ntype Loader = string | { loader: string; options?: { [name: string]: any } }\ntype LoaderResolver<T = Record<string, unknown>> = (options?: T) => Loader\n\ntype LoaderOptions = Record<string, any>\ntype RuleFactory<T = Record<string, unknown>> = (\n options?: T & LoaderOptions\n) => RuleSetRule\n\ntype ContextualRuleFactory<T = Record<string, unknown>> = RuleFactory<T> & {\n internal?: RuleFactory<T>\n external?: RuleFactory<T>\n}\n\ntype PluginFactory = (...args: any) => WebpackPluginInstance | null\n\ntype BuiltinPlugins = typeof builtinPlugins\n\ntype CSSModulesOptions =\n | boolean\n | string\n | {\n mode?:\n | \"local\"\n | \"global\"\n | \"pure\"\n | ((resourcePath: string) => \"local\" | \"global\" | \"pure\")\n auto?: boolean\n exportGlobals?: boolean\n localIdentName?: string\n localIdentContext?: string\n localIdentHashPrefix?: string\n namedExport?: boolean\n exportLocalsConvention?:\n | \"asIs\"\n | \"camelCaseOnly\"\n | \"camelCase\"\n | \"dashes\"\n | \"dashesOnly\"\n exportOnlyLocals?: boolean\n }\n\ntype MiniCSSExtractLoaderModuleOptions =\n | undefined\n | boolean\n | {\n namedExport?: boolean\n }\n/**\n * Utils that produce webpack `loader` objects\n */\ninterface ILoaderUtils {\n yaml: LoaderResolver\n style: LoaderResolver\n css: LoaderResolver<{\n url?: boolean | ((url: string, resourcePath: string) => boolean)\n import?:\n | boolean\n | ((url: string, media: string, resourcePath: string) => boolean)\n modules?: CSSModulesOptions\n sourceMap?: boolean\n importLoaders?: number\n esModule?: boolean\n }>\n postcss: LoaderResolver<{\n browsers?: Array<string>\n overrideBrowserslist?: Array<string>\n plugins?: Array<PostCSSPlugin> | ((loader: Loader) => Array<PostCSSPlugin>)\n }>\n\n file: LoaderResolver\n url: LoaderResolver\n js: LoaderResolver\n json: LoaderResolver\n null: LoaderResolver\n raw: LoaderResolver\n dependencies: LoaderResolver\n\n miniCssExtract: LoaderResolver\n imports?: LoaderResolver\n exports?: LoaderResolver\n}\n\ninterface IModuleThatUseGatsby {\n name: string\n path: string\n}\n\ntype CssLoaderModuleOption = boolean | Record<string, any> | string\n\n/**\n * Utils that produce webpack rule objects\n */\ninterface IRuleUtils {\n /**\n * Handles JavaScript compilation via babel\n */\n js: RuleFactory<{ modulesThatUseGatsby?: Array<IModuleThatUseGatsby> }>\n dependencies: RuleFactory<{\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n }>\n yaml: RuleFactory\n fonts: RuleFactory\n images: RuleFactory\n miscAssets: RuleFactory\n media: RuleFactory\n\n css: ContextualRuleFactory<{\n browsers?: Array<string>\n modules?: CssLoaderModuleOption\n }>\n cssModules: RuleFactory\n postcss: ContextualRuleFactory<{ overrideBrowserOptions: Array<string> }>\n\n eslint: (schema: GraphQLSchema) => RuleSetRule\n eslintRequired: () => RuleSetRule\n}\n\ntype PluginUtils = BuiltinPlugins & {\n extractText: PluginFactory\n uglify: PluginFactory\n moment: PluginFactory\n extractStats: PluginFactory\n minifyJs: PluginFactory\n minifyCss: PluginFactory\n fastRefresh: PluginFactory\n eslintGraphqlSchemaReload: PluginFactory\n virtualModules: PluginFactory\n eslint: PluginFactory\n eslintRequired: PluginFactory\n}\n\n/**\n * webpack atoms namespace\n */\ninterface IWebpackUtils {\n loaders: ILoaderUtils\n\n rules: IRuleUtils\n\n plugins: PluginUtils\n}\n\nconst vendorRegex = /(node_modules|bower_components)/\n\n/**\n * A factory method that produces an atoms namespace\n */\nexport const createWebpackUtils = (\n stage: Stage,\n program: IProgram\n): IWebpackUtils => {\n const assetRelativeRoot = `static/`\n const supportedBrowsers = getBrowsersList(program.directory)\n\n const PRODUCTION = !stage.includes(`develop`)\n\n const isSSR = stage.includes(`html`)\n const { config } = store.getState()\n const { assetPrefix, pathPrefix } = config\n\n const publicPath = getPublicPath({ assetPrefix, pathPrefix, ...program })\n\n const makeExternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.include = vendorRegex\n return rule\n }\n\n const makeInternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.exclude = vendorRegex\n return rule\n }\n\n const fileLoaderCommonOptions: {\n name: string\n publicPath?: string\n outputPath?: string\n } = {\n name: `${assetRelativeRoot}[name]-[hash].[ext]`,\n }\n\n if (stage === `build-html` || stage === `develop-html`) {\n // build-html and develop-html outputs to `.cache/page-ssr/routes/` (ROUTES_DIRECTORY)\n // so this config is setting it to output assets to `public` (outputPath)\n // while preserving \"url\" (publicPath)\n fileLoaderCommonOptions.outputPath = path.relative(\n ROUTES_DIRECTORY,\n `public`\n )\n fileLoaderCommonOptions.publicPath = publicPath || `/`\n }\n\n const loaders: ILoaderUtils = {\n json: (options = {}) => {\n return {\n options,\n loader: require.resolve(`json-loader`),\n }\n },\n yaml: (options = {}) => {\n return {\n options,\n loader: require.resolve(`yaml-loader`),\n }\n },\n\n null: (options = {}) => {\n return {\n options,\n loader: require.resolve(`null-loader`),\n }\n },\n\n raw: (options = {}) => {\n return {\n options,\n loader: require.resolve(`raw-loader`),\n }\n },\n\n style: (options = {}) => {\n return {\n options,\n loader: require.resolve(`style-loader`),\n }\n },\n\n // TODO(v5): Re-Apply https://github.com/gatsbyjs/gatsby/pull/33979 with breaking change in inline loader syntax\n miniCssExtract: (\n options: {\n modules?: MiniCSSExtractLoaderModuleOptions\n } = {}\n ) => {\n let moduleOptions: MiniCSSExtractLoaderModuleOptions = undefined\n\n const { modules, ...restOptions } = options\n\n if (typeof modules === `boolean` && options.modules) {\n moduleOptions = {\n namedExport: true,\n }\n } else {\n moduleOptions = modules\n }\n\n return {\n loader: MiniCssExtractPlugin.loader,\n options: {\n modules: moduleOptions,\n ...restOptions,\n },\n }\n },\n\n css: (options = {}) => {\n let modulesOptions: CSSModulesOptions = false\n if (options.modules) {\n modulesOptions = {\n auto: undefined,\n namedExport: true,\n localIdentName: `[name]--[local]--[hash:hex:5]`,\n exportLocalsConvention: `dashesOnly`,\n exportOnlyLocals: isSSR,\n }\n\n if (typeof options.modules === `object`) {\n modulesOptions = {\n ...modulesOptions,\n ...options.modules,\n }\n }\n }\n\n return {\n loader: require.resolve(`css-loader`),\n options: {\n // Absolute urls (https or //) are not send to this function. Only resolvable paths absolute or relative ones.\n url: function (url: string): boolean {\n // When an url starts with /\n if (url.startsWith(`/`)) {\n return false\n }\n\n return true\n },\n sourceMap: !PRODUCTION,\n modules: modulesOptions,\n },\n }\n },\n\n postcss: (options = {}) => {\n const {\n plugins,\n overrideBrowserslist = supportedBrowsers,\n ...postcssOpts\n } = options\n\n return {\n loader: require.resolve(`postcss-loader`),\n options: {\n execute: false,\n sourceMap: !PRODUCTION,\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n postcssOptions: (loaderContext: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let postCSSPlugins: Array<PostCSSPlugin> = []\n if (plugins) {\n postCSSPlugins =\n typeof plugins === `function` ? plugins(loaderContext) : plugins\n }\n\n const autoprefixerPlugin = autoprefixer({\n overrideBrowserslist,\n flexbox: `no-2009`,\n ...((\n postCSSPlugins.find(\n plugin => plugin.postcssPlugin === `autoprefixer`\n ) as unknown as autoprefixer.ExportedAPI\n )?.options ?? {}),\n })\n\n postCSSPlugins.unshift(autoprefixerPlugin)\n postCSSPlugins.unshift(flexbugs)\n\n return {\n plugins: postCSSPlugins,\n ...postcssOpts,\n }\n },\n },\n }\n },\n\n file: (options = {}) => {\n return {\n loader: require.resolve(`file-loader`),\n options: {\n ...fileLoaderCommonOptions,\n ...options,\n },\n }\n },\n\n url: (options = {}) => {\n return {\n loader: require.resolve(`url-loader`),\n options: {\n limit: 10000,\n ...fileLoaderCommonOptions,\n fallback: require.resolve(`file-loader`),\n ...options,\n },\n }\n },\n\n js: options => {\n return {\n options: {\n stage,\n reactRuntime: config.jsxRuntime,\n reactImportSource: config.jsxImportSource,\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n rootDir: program.directory,\n },\n loader: require.resolve(`./babel-loader`),\n }\n },\n\n dependencies: options => {\n return {\n options: {\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n },\n loader: require.resolve(`babel-loader`),\n }\n },\n }\n\n /**\n * Rules\n */\n const rules = {} as IRuleUtils\n\n /**\n * JavaScript loader via babel, includes userland code\n * and packages that depend on `gatsby`\n */\n {\n const js = ({\n modulesThatUseGatsby = [],\n ...options\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n return {\n test: /\\.(js|mjs|jsx|ts|tsx)$/,\n include: (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src so we can extract queries\n return modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n },\n type: `javascript/auto`,\n use: ({ resourceQuery, issuer }): Array<RuleSetUseItem> => [\n // If a JS import comes from async-requires, assume it is for a page component.\n // Using `issuer` allows us to avoid mutating async-requires for this case.\n //\n // If other imports are added to async-requires in the future, another option is to\n // append a query param to page components in the store and check against `resourceQuery` here.\n //\n // This would require we adjust `doesModuleMatchResourcePath` in `static-query-mapper`\n // to check against the module's `resourceResolveData.path` instead of resource to avoid\n // mismatches because of the added query param. Other adjustments may also be needed.\n loaders.js({\n ...options,\n configFile: true,\n compact: PRODUCTION,\n isPageTemplate: /async-requires/.test(issuer),\n resourceQuery,\n }),\n ],\n }\n }\n rules.js = js\n }\n\n /**\n * Node_modules JavaScript loader via babel\n * Excludes core-js & babel-runtime to speedup babel transpilation\n * Excludes modules that use Gatsby since the `rules.js` already transpiles those\n */\n {\n const dependencies = ({\n modulesThatUseGatsby = [],\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n const jsOptions = {\n babelrc: false,\n configFile: false,\n compact: false,\n presets: [\n [\n require.resolve(`babel-preset-gatsby/dependencies`),\n {\n stage,\n },\n ],\n ],\n // If an error happens in a package, it's possible to be\n // because it was compiled. Thus, we don't want the browser\n // debugger to show the original code. Instead, the code\n // being evaluated would be much more helpful.\n sourceMaps: false,\n\n cacheIdentifier: JSON.stringify({\n browsersList: supportedBrowsers,\n gatsbyPreset: require(`babel-preset-gatsby/package.json`).version,\n }),\n }\n\n // TODO REMOVE IN V3\n // a list of vendors we know we shouldn't polyfill (we should have set core-js to entry but we didn't so we have to do this)\n const VENDORS_TO_NOT_POLYFILL = [\n `@babel[\\\\\\\\/]runtime`,\n `@mikaelkristiansson[\\\\\\\\/]domready`,\n `@reach[\\\\\\\\/]router`,\n `babel-preset-gatsby`,\n `core-js`,\n `dom-helpers`,\n `gatsby-legacy-polyfills`,\n `gatsby-link`,\n `gatsby-script`,\n `gatsby-react-router-scroll`,\n `invariant`,\n `lodash`,\n `mitt`,\n `prop-types`,\n `react-dom`,\n `react`,\n `regenerator-runtime`,\n `scheduler`,\n `scroll-behavior`,\n `shallow-compare`,\n `warning`,\n `webpack`,\n ]\n const doNotPolyfillRegex = new RegExp(\n `[\\\\\\\\/]node_modules[\\\\\\\\/](${VENDORS_TO_NOT_POLYFILL.join(\n `|`\n )})[\\\\\\\\/]`\n )\n\n return {\n test: /\\.(js|mjs)$/,\n exclude: (modulePath: string): boolean => {\n // If dep is user land code, exclude\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If dep uses Gatsby, exclude\n if (\n modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n ) {\n return true\n }\n\n return doNotPolyfillRegex.test(modulePath)\n },\n type: `javascript/auto`,\n use: [loaders.dependencies(jsOptions)],\n }\n }\n rules.dependencies = dependencies\n }\n\n rules.yaml = (): RuleSetRule => {\n return {\n test: /\\.ya?ml$/,\n type: `json`,\n use: [loaders.yaml()],\n }\n }\n\n /**\n * Font loader\n */\n rules.fonts = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(eot|otf|ttf|woff(2)?)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads image assets, inlines images via a data URI if they are below\n * the size threshold\n */\n rules.images = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(ico|svg|jpg|jpeg|png|gif|webp|avif)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads audio and video and inlines them via a data URI if they are below\n * the size threshold\n */\n rules.media = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(mp4|webm|ogv|wav|mp3|m4a|aac|oga|flac)$/,\n }\n }\n\n /**\n * Loads assets without inlining\n */\n rules.miscAssets = (): RuleSetRule => {\n return {\n use: [loaders.file()],\n test: /\\.pdf$/,\n }\n }\n\n /**\n * CSS style loader.\n */\n {\n const css: IRuleUtils[\"css\"] = (options = {}): RuleSetRule => {\n const { browsers, ...restOptions } = options\n const use = [\n !isSSR && loaders.miniCssExtract(restOptions),\n loaders.css({ ...restOptions, importLoaders: 1 }),\n loaders.postcss({ browsers }),\n ].filter(Boolean) as RuleSetRule[\"use\"]\n\n return {\n use,\n test: /\\.css$/,\n }\n }\n\n /**\n * CSS style loader, _excludes_ node_modules.\n */\n css.internal = makeInternalOnly(css)\n css.external = makeExternalOnly(css)\n\n const cssModules: IRuleUtils[\"cssModules\"] = (options): RuleSetRule => {\n const rule = css({ ...options, modules: true })\n delete rule.exclude\n rule.test = /\\.module\\.css$/\n return rule\n }\n\n rules.css = css\n rules.cssModules = cssModules\n }\n\n /**\n * PostCSS loader.\n */\n {\n const postcss: ContextualRuleFactory = (options): RuleSetRule => {\n return {\n test: /\\.css$/,\n use: [loaders.css({ importLoaders: 1 }), loaders.postcss(options)],\n }\n }\n\n /**\n * PostCSS loader, _excludes_ node_modules.\n */\n postcss.internal = makeInternalOnly(postcss)\n postcss.external = makeExternalOnly(postcss)\n rules.postcss = postcss\n }\n /**\n * cast rules to IRuleUtils\n */\n /**\n * Plugins\n */\n const plugins = { ...builtinPlugins } as PluginUtils\n\n plugins.minifyJs = ({\n terserOptions,\n ...options\n }: {\n terserOptions?: TerserOptions\n } = {}): WebpackPluginInstance =>\n new TerserPlugin({\n exclude: /\\.min\\.js/,\n terserOptions: {\n ie8: false,\n mangle: {\n safari10: true,\n },\n parse: {\n ecma: 5,\n },\n compress: {\n ecma: 5,\n },\n output: {\n ecma: 5,\n },\n ...terserOptions,\n },\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.minifyCss = (\n options = {\n minimizerOptions: {\n preset: [\n `default`,\n {\n svgo: {\n full: true,\n plugins: [\n // potentially destructive plugins removed - see https://github.com/gatsbyjs/gatsby/issues/15629\n // use correct config format and remove plugins requiring specific params - see https://github.com/gatsbyjs/gatsby/issues/31619\n // List of default plugins and their defaults: https://github.com/svg/svgo#built-in-plugins\n // Last update 2021-08-17\n `cleanupAttrs`,\n `cleanupEnableBackground`,\n `cleanupIDs`,\n `cleanupListOfValues`, // Default: disabled\n `cleanupNumericValues`,\n `collapseGroups`,\n `convertColors`,\n `convertPathData`,\n `convertStyleToAttrs`, // Default: disabled\n `convertTransform`,\n `inlineStyles`,\n `mergePaths`,\n `minifyStyles`,\n `moveElemsAttrsToGroup`,\n `moveGroupAttrsToElems`,\n `prefixIds`, // Default: disabled\n `removeComments`,\n `removeDesc`,\n `removeDoctype`,\n `removeEditorsNSData`,\n `removeEmptyAttrs`,\n `removeEmptyContainers`,\n `removeEmptyText`,\n `removeHiddenElems`,\n `removeMetadata`,\n `removeNonInheritableGroupAttrs`,\n `removeRasterImages`, // Default: disabled\n `removeScriptElement`, // Default: disabled\n `removeStyleElement`, // Default: disabled\n `removeTitle`,\n `removeUnknownsAndDefaults`,\n `removeUnusedNS`,\n `removeUselessDefs`,\n `removeUselessStrokeAndFill`,\n `removeXMLProcInst`,\n `reusePaths`, // Default: disabled\n `sortAttrs`, // Default: disabled\n ],\n },\n },\n ],\n },\n }\n ): CssMinimizerPlugin =>\n new CssMinimizerPlugin({\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.fastRefresh = ({ modulesThatUseGatsby }): WebpackPluginInstance => {\n const regExpToHack = /node_modules/\n regExpToHack.test = (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return false\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src because of shadowing\n return !modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n }\n\n return new ReactRefreshWebpackPlugin({\n overlay: {\n sockIntegration: `whm`,\n module: path.join(__dirname, `fast-refresh-module`),\n },\n // this is a bit hacky - exclude expect string or regexp or array of those\n // so this is tricking ReactRefreshWebpackPlugin with providing regexp with\n // overwritten .test method\n exclude: regExpToHack,\n })\n }\n\n plugins.extractText = (options: any): WebpackPluginInstance =>\n new MiniCssExtractPlugin({\n ...options,\n })\n\n plugins.moment = (): WebpackPluginInstance =>\n plugins.ignore({ resourceRegExp: /^\\.\\/locale$/, contextRegExp: /moment$/ })\n\n plugins.extractStats = (): GatsbyWebpackStatsExtractor =>\n new GatsbyWebpackStatsExtractor(publicPath)\n\n // TODO: remove this in v5\n plugins.eslintGraphqlSchemaReload = (): null => null\n\n plugins.virtualModules = (): GatsbyWebpackVirtualModules =>\n new GatsbyWebpackVirtualModules()\n\n plugins.eslint = (): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintConfig(config.jsxRuntime === `automatic`),\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n plugins.eslintRequired = (): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintRequiredConfig,\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n return {\n loaders,\n rules,\n plugins,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"webpack-utils.js","names":["vendorRegex","createWebpackUtils","stage","program","assetRelativeRoot","supportedBrowsers","getBrowsersList","directory","PRODUCTION","includes","isSSR","config","store","getState","assetPrefix","pathPrefix","publicPath","getPublicPath","makeExternalOnly","original","options","rule","include","makeInternalOnly","exclude","fileLoaderCommonOptions","name","outputPath","path","relative","ROUTES_DIRECTORY","loaders","json","loader","require","resolve","yaml","asJSON","null","raw","style","miniCssExtract","moduleOptions","undefined","modules","restOptions","namedExport","MiniCssExtractPlugin","css","modulesOptions","auto","localIdentName","exportLocalsConvention","exportOnlyLocals","url","startsWith","sourceMap","postcss","plugins","overrideBrowserslist","postcssOpts","execute","postcssOptions","loaderContext","postCSSPlugins","autoprefixerPlugin","autoprefixer","flexbox","find","plugin","postcssPlugin","unshift","flexbugs","file","limit","fallback","js","reactRuntime","jsxRuntime","reactImportSource","jsxImportSource","cacheDirectory","join","rootDir","dependencies","rules","modulesThatUseGatsby","test","modulePath","some","module","type","use","resourceQuery","issuer","configFile","compact","isPageTemplate","jsOptions","babelrc","presets","sourceMaps","cacheIdentifier","JSON","stringify","browsersList","gatsbyPreset","version","VENDORS_TO_NOT_POLYFILL","doNotPolyfillRegex","RegExp","fonts","images","media","miscAssets","browsers","importLoaders","filter","Boolean","internal","external","cssModules","builtinPlugins","minifyJs","terserOptions","TerserPlugin","ie8","mangle","safari10","parse","ecma","compress","output","parallel","Math","max","cpuCoreCount","minifyCss","minimizerOptions","preset","svgo","full","CssMinimizerPlugin","fastRefresh","regExpToHack","ReactRefreshWebpackPlugin","overlay","sockIntegration","__dirname","extractText","moment","ignore","resourceRegExp","contextRegExp","extractStats","GatsbyWebpackStatsExtractor","eslintGraphqlSchemaReload","virtualModules","GatsbyWebpackVirtualModules","eslint","extensions","VIRTUAL_MODULES_BASE_PATH","eslintConfig","ESLintPlugin","eslintRequired","eslintRequiredConfig"],"sources":["../../src/utils/webpack-utils.ts"],"sourcesContent":["import * as path from \"path\"\nimport { RuleSetRule, WebpackPluginInstance } from \"webpack\"\nimport { GraphQLSchema } from \"graphql\"\nimport { Plugin as PostCSSPlugin } from \"postcss\"\nimport autoprefixer from \"autoprefixer\"\nimport flexbugs from \"postcss-flexbugs-fixes\"\nimport TerserPlugin from \"terser-webpack-plugin\"\nimport type { MinifyOptions as TerserOptions } from \"terser\"\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\"\nimport CssMinimizerPlugin from \"css-minimizer-webpack-plugin\"\nimport ReactRefreshWebpackPlugin from \"@pmmmwh/react-refresh-webpack-plugin\"\nimport { getBrowsersList } from \"./browserslist\"\nimport ESLintPlugin from \"eslint-webpack-plugin\"\nimport { cpuCoreCount } from \"gatsby-core-utils\"\nimport { GatsbyWebpackStatsExtractor } from \"./gatsby-webpack-stats-extractor\"\nimport { getPublicPath } from \"./get-public-path\"\nimport {\n GatsbyWebpackVirtualModules,\n VIRTUAL_MODULES_BASE_PATH,\n} from \"./gatsby-webpack-virtual-modules\"\n\nimport { builtinPlugins } from \"./webpack-plugins\"\nimport { IProgram, Stage } from \"../commands/types\"\nimport { eslintConfig, eslintRequiredConfig } from \"./eslint-config\"\nimport { store } from \"../redux\"\nimport type { RuleSetUseItem } from \"webpack\"\nimport { ROUTES_DIRECTORY } from \"../constants\"\n\ntype Loader = string | { loader: string; options?: { [name: string]: any } }\ntype LoaderResolver<T = Record<string, unknown>> = (options?: T) => Loader\n\ntype LoaderOptions = Record<string, any>\ntype RuleFactory<T = Record<string, unknown>> = (\n options?: T & LoaderOptions\n) => RuleSetRule\n\ntype ContextualRuleFactory<T = Record<string, unknown>> = RuleFactory<T> & {\n internal?: RuleFactory<T>\n external?: RuleFactory<T>\n}\n\ntype PluginFactory = (...args: any) => WebpackPluginInstance | null\n\ntype BuiltinPlugins = typeof builtinPlugins\n\ntype CSSModulesOptions =\n | boolean\n | string\n | {\n mode?:\n | \"local\"\n | \"global\"\n | \"pure\"\n | ((resourcePath: string) => \"local\" | \"global\" | \"pure\")\n auto?: boolean\n exportGlobals?: boolean\n localIdentName?: string\n localIdentContext?: string\n localIdentHashPrefix?: string\n namedExport?: boolean\n exportLocalsConvention?:\n | \"asIs\"\n | \"camelCaseOnly\"\n | \"camelCase\"\n | \"dashes\"\n | \"dashesOnly\"\n exportOnlyLocals?: boolean\n }\n\ntype MiniCSSExtractLoaderModuleOptions =\n | undefined\n | boolean\n | {\n namedExport?: boolean\n }\n/**\n * Utils that produce webpack `loader` objects\n */\ninterface ILoaderUtils {\n yaml: LoaderResolver\n style: LoaderResolver\n css: LoaderResolver<{\n url?: boolean | ((url: string, resourcePath: string) => boolean)\n import?:\n | boolean\n | ((url: string, media: string, resourcePath: string) => boolean)\n modules?: CSSModulesOptions\n sourceMap?: boolean\n importLoaders?: number\n esModule?: boolean\n }>\n postcss: LoaderResolver<{\n browsers?: Array<string>\n overrideBrowserslist?: Array<string>\n plugins?: Array<PostCSSPlugin> | ((loader: Loader) => Array<PostCSSPlugin>)\n }>\n\n file: LoaderResolver\n url: LoaderResolver\n js: LoaderResolver\n json: LoaderResolver\n null: LoaderResolver\n raw: LoaderResolver\n dependencies: LoaderResolver\n\n miniCssExtract: LoaderResolver\n imports?: LoaderResolver\n exports?: LoaderResolver\n}\n\ninterface IModuleThatUseGatsby {\n name: string\n path: string\n}\n\ntype CssLoaderModuleOption = boolean | Record<string, any> | string\n\n/**\n * Utils that produce webpack rule objects\n */\ninterface IRuleUtils {\n /**\n * Handles JavaScript compilation via babel\n */\n js: RuleFactory<{ modulesThatUseGatsby?: Array<IModuleThatUseGatsby> }>\n dependencies: RuleFactory<{\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n }>\n yaml: RuleFactory\n fonts: RuleFactory\n images: RuleFactory\n miscAssets: RuleFactory\n media: RuleFactory\n\n css: ContextualRuleFactory<{\n browsers?: Array<string>\n modules?: CssLoaderModuleOption\n }>\n cssModules: RuleFactory\n postcss: ContextualRuleFactory<{ overrideBrowserOptions: Array<string> }>\n\n eslint: (schema: GraphQLSchema) => RuleSetRule\n eslintRequired: () => RuleSetRule\n}\n\ntype PluginUtils = BuiltinPlugins & {\n extractText: PluginFactory\n uglify: PluginFactory\n moment: PluginFactory\n extractStats: PluginFactory\n minifyJs: PluginFactory\n minifyCss: PluginFactory\n fastRefresh: PluginFactory\n eslintGraphqlSchemaReload: PluginFactory\n virtualModules: PluginFactory\n eslint: PluginFactory\n eslintRequired: PluginFactory\n}\n\n/**\n * webpack atoms namespace\n */\ninterface IWebpackUtils {\n loaders: ILoaderUtils\n\n rules: IRuleUtils\n\n plugins: PluginUtils\n}\n\nconst vendorRegex = /(node_modules|bower_components)/\n\n/**\n * A factory method that produces an atoms namespace\n */\nexport const createWebpackUtils = (\n stage: Stage,\n program: IProgram\n): IWebpackUtils => {\n const assetRelativeRoot = `static/`\n const supportedBrowsers = getBrowsersList(program.directory)\n\n const PRODUCTION = !stage.includes(`develop`)\n\n const isSSR = stage.includes(`html`)\n const { config } = store.getState()\n const { assetPrefix, pathPrefix } = config\n\n const publicPath = getPublicPath({ assetPrefix, pathPrefix, ...program })\n\n const makeExternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.include = vendorRegex\n return rule\n }\n\n const makeInternalOnly =\n (original: RuleFactory) =>\n (options = {}): RuleSetRule => {\n const rule = original(options)\n rule.exclude = vendorRegex\n return rule\n }\n\n const fileLoaderCommonOptions: {\n name: string\n publicPath?: string\n outputPath?: string\n } = {\n name: `${assetRelativeRoot}[name]-[hash].[ext]`,\n }\n\n if (stage === `build-html` || stage === `develop-html`) {\n // build-html and develop-html outputs to `.cache/page-ssr/routes/` (ROUTES_DIRECTORY)\n // so this config is setting it to output assets to `public` (outputPath)\n // while preserving \"url\" (publicPath)\n fileLoaderCommonOptions.outputPath = path.relative(\n ROUTES_DIRECTORY,\n `public`\n )\n fileLoaderCommonOptions.publicPath = publicPath || `/`\n }\n\n const loaders: ILoaderUtils = {\n json: (options = {}) => {\n return {\n options,\n loader: require.resolve(`json-loader`),\n }\n },\n yaml: (options = {}) => {\n return {\n loader: require.resolve(`yaml-loader`),\n options: {\n asJSON: true,\n ...options,\n },\n }\n },\n\n null: (options = {}) => {\n return {\n options,\n loader: require.resolve(`null-loader`),\n }\n },\n\n raw: (options = {}) => {\n return {\n options,\n loader: require.resolve(`raw-loader`),\n }\n },\n\n style: (options = {}) => {\n return {\n options,\n loader: require.resolve(`style-loader`),\n }\n },\n\n // TODO(v5): Re-Apply https://github.com/gatsbyjs/gatsby/pull/33979 with breaking change in inline loader syntax\n miniCssExtract: (\n options: {\n modules?: MiniCSSExtractLoaderModuleOptions\n } = {}\n ) => {\n let moduleOptions: MiniCSSExtractLoaderModuleOptions = undefined\n\n const { modules, ...restOptions } = options\n\n if (typeof modules === `boolean` && options.modules) {\n moduleOptions = {\n namedExport: true,\n }\n } else {\n moduleOptions = modules\n }\n\n return {\n loader: MiniCssExtractPlugin.loader,\n options: {\n modules: moduleOptions,\n ...restOptions,\n },\n }\n },\n\n css: (options = {}) => {\n let modulesOptions: CSSModulesOptions = false\n if (options.modules) {\n modulesOptions = {\n auto: undefined,\n namedExport: true,\n localIdentName: `[name]--[local]--[hash:hex:5]`,\n exportLocalsConvention: `dashesOnly`,\n exportOnlyLocals: isSSR,\n }\n\n if (typeof options.modules === `object`) {\n modulesOptions = {\n ...modulesOptions,\n ...options.modules,\n }\n }\n }\n\n return {\n loader: require.resolve(`css-loader`),\n options: {\n // Absolute urls (https or //) are not send to this function. Only resolvable paths absolute or relative ones.\n url: function (url: string): boolean {\n // When an url starts with /\n if (url.startsWith(`/`)) {\n return false\n }\n\n return true\n },\n sourceMap: !PRODUCTION,\n modules: modulesOptions,\n },\n }\n },\n\n postcss: (options = {}) => {\n const {\n plugins,\n overrideBrowserslist = supportedBrowsers,\n ...postcssOpts\n } = options\n\n return {\n loader: require.resolve(`postcss-loader`),\n options: {\n execute: false,\n sourceMap: !PRODUCTION,\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n postcssOptions: (loaderContext: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let postCSSPlugins: Array<PostCSSPlugin> = []\n if (plugins) {\n postCSSPlugins =\n typeof plugins === `function` ? plugins(loaderContext) : plugins\n }\n\n const autoprefixerPlugin = autoprefixer({\n overrideBrowserslist,\n flexbox: `no-2009`,\n ...((\n postCSSPlugins.find(\n plugin => plugin.postcssPlugin === `autoprefixer`\n ) as unknown as autoprefixer.ExportedAPI\n )?.options ?? {}),\n })\n\n postCSSPlugins.unshift(autoprefixerPlugin)\n postCSSPlugins.unshift(flexbugs)\n\n return {\n plugins: postCSSPlugins,\n ...postcssOpts,\n }\n },\n },\n }\n },\n\n file: (options = {}) => {\n return {\n loader: require.resolve(`file-loader`),\n options: {\n ...fileLoaderCommonOptions,\n ...options,\n },\n }\n },\n\n url: (options = {}) => {\n return {\n loader: require.resolve(`url-loader`),\n options: {\n limit: 10000,\n ...fileLoaderCommonOptions,\n fallback: require.resolve(`file-loader`),\n ...options,\n },\n }\n },\n\n js: options => {\n return {\n options: {\n stage,\n reactRuntime: config.jsxRuntime,\n reactImportSource: config.jsxImportSource,\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n rootDir: program.directory,\n },\n loader: require.resolve(`./babel-loader`),\n }\n },\n\n dependencies: options => {\n return {\n options: {\n cacheDirectory: path.join(\n program.directory,\n `.cache`,\n `webpack`,\n `babel`\n ),\n ...options,\n },\n loader: require.resolve(`babel-loader`),\n }\n },\n }\n\n /**\n * Rules\n */\n const rules = {} as IRuleUtils\n\n /**\n * JavaScript loader via babel, includes userland code\n * and packages that depend on `gatsby`\n */\n {\n const js = ({\n modulesThatUseGatsby = [],\n ...options\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n return {\n test: /\\.(js|mjs|jsx|ts|tsx)$/,\n include: (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src so we can extract queries\n return modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n },\n type: `javascript/auto`,\n use: ({ resourceQuery, issuer }): Array<RuleSetUseItem> => [\n // If a JS import comes from async-requires, assume it is for a page component.\n // Using `issuer` allows us to avoid mutating async-requires for this case.\n //\n // If other imports are added to async-requires in the future, another option is to\n // append a query param to page components in the store and check against `resourceQuery` here.\n //\n // This would require we adjust `doesModuleMatchResourcePath` in `static-query-mapper`\n // to check against the module's `resourceResolveData.path` instead of resource to avoid\n // mismatches because of the added query param. Other adjustments may also be needed.\n loaders.js({\n ...options,\n configFile: true,\n compact: PRODUCTION,\n isPageTemplate: /async-requires/.test(issuer),\n resourceQuery,\n }),\n ],\n }\n }\n rules.js = js\n }\n\n /**\n * Node_modules JavaScript loader via babel\n * Excludes core-js & babel-runtime to speedup babel transpilation\n * Excludes modules that use Gatsby since the `rules.js` already transpiles those\n */\n {\n const dependencies = ({\n modulesThatUseGatsby = [],\n }: {\n modulesThatUseGatsby?: Array<IModuleThatUseGatsby>\n } = {}): RuleSetRule => {\n const jsOptions = {\n babelrc: false,\n configFile: false,\n compact: false,\n presets: [\n [\n require.resolve(`babel-preset-gatsby/dependencies`),\n {\n stage,\n },\n ],\n ],\n // If an error happens in a package, it's possible to be\n // because it was compiled. Thus, we don't want the browser\n // debugger to show the original code. Instead, the code\n // being evaluated would be much more helpful.\n sourceMaps: false,\n\n cacheIdentifier: JSON.stringify({\n browsersList: supportedBrowsers,\n gatsbyPreset: require(`babel-preset-gatsby/package.json`).version,\n }),\n }\n\n // TODO REMOVE IN V3\n // a list of vendors we know we shouldn't polyfill (we should have set core-js to entry but we didn't so we have to do this)\n const VENDORS_TO_NOT_POLYFILL = [\n `@babel[\\\\\\\\/]runtime`,\n `@mikaelkristiansson[\\\\\\\\/]domready`,\n `@reach[\\\\\\\\/]router`,\n `babel-preset-gatsby`,\n `core-js`,\n `dom-helpers`,\n `gatsby-legacy-polyfills`,\n `gatsby-link`,\n `gatsby-script`,\n `gatsby-react-router-scroll`,\n `invariant`,\n `lodash`,\n `mitt`,\n `prop-types`,\n `react-dom`,\n `react`,\n `regenerator-runtime`,\n `scheduler`,\n `scroll-behavior`,\n `shallow-compare`,\n `warning`,\n `webpack`,\n ]\n const doNotPolyfillRegex = new RegExp(\n `[\\\\\\\\/]node_modules[\\\\\\\\/](${VENDORS_TO_NOT_POLYFILL.join(\n `|`\n )})[\\\\\\\\/]`\n )\n\n return {\n test: /\\.(js|mjs)$/,\n exclude: (modulePath: string): boolean => {\n // If dep is user land code, exclude\n if (!vendorRegex.test(modulePath)) {\n return true\n }\n\n // If dep uses Gatsby, exclude\n if (\n modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n ) {\n return true\n }\n\n return doNotPolyfillRegex.test(modulePath)\n },\n type: `javascript/auto`,\n use: [loaders.dependencies(jsOptions)],\n }\n }\n rules.dependencies = dependencies\n }\n\n rules.yaml = (): RuleSetRule => {\n return {\n test: /\\.ya?ml$/,\n type: `json`,\n use: [loaders.yaml()],\n }\n }\n\n /**\n * Font loader\n */\n rules.fonts = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(eot|otf|ttf|woff(2)?)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads image assets, inlines images via a data URI if they are below\n * the size threshold\n */\n rules.images = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(ico|svg|jpg|jpeg|png|gif|webp|avif)(\\?.*)?$/,\n }\n }\n\n /**\n * Loads audio and video and inlines them via a data URI if they are below\n * the size threshold\n */\n rules.media = (): RuleSetRule => {\n return {\n use: [loaders.url()],\n test: /\\.(mp4|webm|ogv|wav|mp3|m4a|aac|oga|flac)$/,\n }\n }\n\n /**\n * Loads assets without inlining\n */\n rules.miscAssets = (): RuleSetRule => {\n return {\n use: [loaders.file()],\n test: /\\.pdf$/,\n }\n }\n\n /**\n * CSS style loader.\n */\n {\n const css: IRuleUtils[\"css\"] = (options = {}): RuleSetRule => {\n const { browsers, ...restOptions } = options\n const use = [\n !isSSR && loaders.miniCssExtract(restOptions),\n loaders.css({ ...restOptions, importLoaders: 1 }),\n loaders.postcss({ browsers }),\n ].filter(Boolean) as RuleSetRule[\"use\"]\n\n return {\n use,\n test: /\\.css$/,\n }\n }\n\n /**\n * CSS style loader, _excludes_ node_modules.\n */\n css.internal = makeInternalOnly(css)\n css.external = makeExternalOnly(css)\n\n const cssModules: IRuleUtils[\"cssModules\"] = (options): RuleSetRule => {\n const rule = css({ ...options, modules: true })\n delete rule.exclude\n rule.test = /\\.module\\.css$/\n return rule\n }\n\n rules.css = css\n rules.cssModules = cssModules\n }\n\n /**\n * PostCSS loader.\n */\n {\n const postcss: ContextualRuleFactory = (options): RuleSetRule => {\n return {\n test: /\\.css$/,\n use: [loaders.css({ importLoaders: 1 }), loaders.postcss(options)],\n }\n }\n\n /**\n * PostCSS loader, _excludes_ node_modules.\n */\n postcss.internal = makeInternalOnly(postcss)\n postcss.external = makeExternalOnly(postcss)\n rules.postcss = postcss\n }\n /**\n * cast rules to IRuleUtils\n */\n /**\n * Plugins\n */\n const plugins = { ...builtinPlugins } as PluginUtils\n\n plugins.minifyJs = ({\n terserOptions,\n ...options\n }: {\n terserOptions?: TerserOptions\n } = {}): WebpackPluginInstance =>\n new TerserPlugin({\n exclude: /\\.min\\.js/,\n terserOptions: {\n ie8: false,\n mangle: {\n safari10: true,\n },\n parse: {\n ecma: 5,\n },\n compress: {\n ecma: 5,\n },\n output: {\n ecma: 5,\n },\n ...terserOptions,\n },\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.minifyCss = (\n options = {\n minimizerOptions: {\n preset: [\n `default`,\n {\n svgo: {\n full: true,\n plugins: [\n // potentially destructive plugins removed - see https://github.com/gatsbyjs/gatsby/issues/15629\n // use correct config format and remove plugins requiring specific params - see https://github.com/gatsbyjs/gatsby/issues/31619\n // List of default plugins and their defaults: https://github.com/svg/svgo#built-in-plugins\n // Last update 2021-08-17\n `cleanupAttrs`,\n `cleanupEnableBackground`,\n `cleanupIDs`,\n `cleanupListOfValues`, // Default: disabled\n `cleanupNumericValues`,\n `collapseGroups`,\n `convertColors`,\n `convertPathData`,\n `convertStyleToAttrs`, // Default: disabled\n `convertTransform`,\n `inlineStyles`,\n `mergePaths`,\n `minifyStyles`,\n `moveElemsAttrsToGroup`,\n `moveGroupAttrsToElems`,\n `prefixIds`, // Default: disabled\n `removeComments`,\n `removeDesc`,\n `removeDoctype`,\n `removeEditorsNSData`,\n `removeEmptyAttrs`,\n `removeEmptyContainers`,\n `removeEmptyText`,\n `removeHiddenElems`,\n `removeMetadata`,\n `removeNonInheritableGroupAttrs`,\n `removeRasterImages`, // Default: disabled\n `removeScriptElement`, // Default: disabled\n `removeStyleElement`, // Default: disabled\n `removeTitle`,\n `removeUnknownsAndDefaults`,\n `removeUnusedNS`,\n `removeUselessDefs`,\n `removeUselessStrokeAndFill`,\n `removeXMLProcInst`,\n `reusePaths`, // Default: disabled\n `sortAttrs`, // Default: disabled\n ],\n },\n },\n ],\n },\n }\n ): CssMinimizerPlugin =>\n new CssMinimizerPlugin({\n parallel: Math.max(1, cpuCoreCount() - 1),\n ...options,\n })\n\n plugins.fastRefresh = ({ modulesThatUseGatsby }): WebpackPluginInstance => {\n const regExpToHack = /node_modules/\n regExpToHack.test = (modulePath: string): boolean => {\n // when it's not coming from node_modules we treat it as a source file.\n if (!vendorRegex.test(modulePath)) {\n return false\n }\n\n // If the module uses Gatsby as a dependency\n // we want to treat it as src because of shadowing\n return !modulesThatUseGatsby.some(module =>\n modulePath.includes(module.path)\n )\n }\n\n return new ReactRefreshWebpackPlugin({\n overlay: {\n sockIntegration: `whm`,\n module: path.join(__dirname, `fast-refresh-module`),\n },\n // this is a bit hacky - exclude expect string or regexp or array of those\n // so this is tricking ReactRefreshWebpackPlugin with providing regexp with\n // overwritten .test method\n exclude: regExpToHack,\n })\n }\n\n plugins.extractText = (options: any): WebpackPluginInstance =>\n new MiniCssExtractPlugin({\n ...options,\n })\n\n plugins.moment = (): WebpackPluginInstance =>\n plugins.ignore({ resourceRegExp: /^\\.\\/locale$/, contextRegExp: /moment$/ })\n\n plugins.extractStats = (): GatsbyWebpackStatsExtractor =>\n new GatsbyWebpackStatsExtractor(publicPath)\n\n // TODO: remove this in v5\n plugins.eslintGraphqlSchemaReload = (): null => null\n\n plugins.virtualModules = (): GatsbyWebpackVirtualModules =>\n new GatsbyWebpackVirtualModules()\n\n plugins.eslint = (): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintConfig(config.jsxRuntime === `automatic`),\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n plugins.eslintRequired = (): WebpackPluginInstance => {\n const options = {\n extensions: [`js`, `jsx`],\n exclude: [\n `/node_modules/`,\n `/bower_components/`,\n VIRTUAL_MODULES_BASE_PATH,\n ],\n ...eslintRequiredConfig,\n }\n // @ts-ignore\n return new ESLintPlugin(options)\n }\n\n return {\n loaders,\n rules,\n plugins,\n }\n}\n"],"mappings":"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"}
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": "5.4.0",
4
+ "version": "5.4.2",
5
5
  "author": "Kyle Mathews <mathews.kyle@gmail.com>",
6
6
  "bin": {
7
7
  "gatsby": "./cli.js"
@@ -96,7 +96,7 @@
96
96
  "gatsby-legacy-polyfills": "^3.4.0",
97
97
  "gatsby-link": "^5.4.0",
98
98
  "gatsby-page-utils": "^3.4.0",
99
- "gatsby-parcel-config": "^1.4.0",
99
+ "gatsby-parcel-config": "1.4.0",
100
100
  "gatsby-plugin-page-creator": "^5.4.0",
101
101
  "gatsby-plugin-typescript": "^5.4.0",
102
102
  "gatsby-plugin-utils": "^4.4.0",
@@ -277,5 +277,5 @@
277
277
  "yargs": {
278
278
  "boolean-negation": false
279
279
  },
280
- "gitHead": "12252dd997c7dd8cb21cd0b512830295c2f52fdb"
280
+ "gitHead": "9cc0222b27b15d5cd3cfeaaa8d7f19dee67c1491"
281
281
  }