UNPKG

gatsby-theme-docz

Version:

Gatsby theme created to use Docz

60 lines (57 loc) 1.51 kB
const { get } = require('lodash/fp') const { parseConfig } = require('docz-core') const ENTRIES_QUERY = ` { allDoczEntries{ edges{ node{ id filepath fullpath route slug name menu headings { slug depth value } } } } } ` module.exports = async ({ graphql, actions }, opts = {}) => { return graphql(ENTRIES_QUERY).then(async ({ data, errors }) => { const hasErrors = errors && errors.length > 0 const entries = get('allDoczEntries.edges', data) if (!entries || entries.length === 0 || hasErrors) return const defaultEntry = entries.find(({ node: entry }) => entry.route === '/') if (defaultEntry === undefined) { const config = await parseConfig(opts) // Create a default entry unless specifically denied by config const shouldNotCreateRootRoute = Boolean(config.noRootRoute) if (shouldNotCreateRootRoute === false) { // Set the first found entry as the default entry const createdDefaultEntry = { node: { ...entries[0].node, route: '/', }, } entries.unshift(createdDefaultEntry) } } entries.forEach(({ node: entry }) => { if (!entry) return actions.createPage({ component: entry.fullpath, path: entry.route, context: { entry, }, }) }) }) }