UNPKG

gatsby-source-wordpress

Version:

Source data from WordPress in an efficient and scalable way.

92 lines (88 loc) 3.08 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _store = require("../../../store"); var _fetchGraphql = _interopRequireDefault(require("../../../utils/fetch-graphql")); var _formatLogMessage = require("../../../utils/format-log-message"); var _createNodes = require("./create-nodes"); var _fetchReferencedMediaItems = _interopRequireDefault(require("../fetch-nodes/fetch-referenced-media-items")); var _constants = require("../../../constants"); var _cache = require("../../../utils/cache"); var _gatsbyFeatures = require("../../../utils/gatsby-features"); const fetchAndCreateNonNodeRootFields = async () => { const state = (0, _store.getStore)().getState(); const { remoteSchema: { nonNodeQuery }, gatsbyApi: { helpers, pluginOptions } } = state; const { reporter } = helpers; const activity = reporter.activityTimer((0, _formatLogMessage.formatLogMessage)(`fetch root fields`)); activity.start(); const { data } = await (0, _fetchGraphql.default)({ query: nonNodeQuery, errorContext: `Error occurred while fetching non-Node root fields.` }); const createdNodeIds = []; // const totalSideEffectNodes = [] const referencedMediaItemNodeIds = new Set(); const type = pluginOptions.schema.typePrefix; const node = { ...data, id: `${pluginOptions.url}--rootfields`, type }; const createRootNode = (0, _createNodes.createNodeWithSideEffects)({ node, state, referencedMediaItemNodeIds, createdNodeIds, type // totalSideEffectNodes, }); createRootNode(); const referencedMediaItemNodeIdsArray = [...referencedMediaItemNodeIds]; const newMediaItemIds = referencedMediaItemNodeIdsArray.filter(id => !helpers.getNode(id)); /** * if we're not lazy fetching media items, we need to fetch them * upfront here */ if (!pluginOptions.type.MediaItem.lazyNodes && newMediaItemIds.length) { (0, _store.getStore)().dispatch.logger.createActivityTimer({ typeName: `MediaItems`, pluginOptions, reporter }); await (0, _fetchReferencedMediaItems.default)({ referencedMediaItemNodeIds: newMediaItemIds }); if (_gatsbyFeatures.needToTouchNodes) { const previouslyCachedNodeIds = await (0, _cache.getPersistentCache)({ key: _constants.CREATED_NODE_IDS }); const createdNodeIds = [...new Set([...(previouslyCachedNodeIds || []), ...referencedMediaItemNodeIdsArray])]; // save the node id's so we can touch them on the next build // so that we don't have to refetch all nodes await (0, _cache.setPersistentCache)({ key: _constants.CREATED_NODE_IDS, value: createdNodeIds }); } (0, _store.getStore)().dispatch.logger.stopActivityTimer({ typeName: `MediaItems` }); } activity.end(); }; var _default = fetchAndCreateNonNodeRootFields; exports.default = _default; //# sourceMappingURL=fetch-and-create-non-node-root-fields.js.map