text: /* eslint-disable linebreak-style */
  
  'use strict';
  
  const path = require('path');
  const _ = require('lodash');
  const createCategoriesPages = require('./pagination/create-categories-pages.js');
  const createTagsPages = require('./pagination/create-tags-pages.js');
  const createPostsPages = require('./pagination/create-posts-pages.js');
  
  const createPages = async ({ graphql, actions }) => {
    const { createPage } = actions;
  
    // 404
    createPage({
      path: '/404',
      component: path.resolve('./src/templates/not-found-template.js')
    });
  
    // Tags list
    createPage({
      path: '/tags',
      component: path.resolve('./src/templates/tags-list-template.js')
    });
  
    // Categories list
    createPage({
      path: '/categories',
      component: path.resolve('./src/templates/categories-list-template.js')
    });
  
    // Posts and pages from markdown
    const result = await graphql(`
      {
        allMarkdownRemark(
          filter: { frontmatter: { draft: { ne: true } } }
        ) {
          edges {
            node {
              frontmatter {
                template
              }
              fields {
                slug
              }
            }
          }
        }
      }
    `);
  
    const { edges } = result.data.allMarkdownRemark;
  
    _.each(edges, (edge) => {
      if (_.get(edge, 'node.frontmatter.template') === 'page') {
        createPage({
          path: edge.node.fields.slug,
          component: path.resolve('./src/templates/page-template.js'),
          context: { slug: edge.node.fields.slug }
        });
      } else if (_.get(edge, 'node.frontmatter.template') === 'post') {
        createPage({
          path: edge.node.fields.slug,
          component: path.resolve('./src/templates/post-template.js'),
          context: { slug: edge.node.fields.slug }
        });
      }
    });
  
    // Feeds
    await createTagsPages(graphql, actions);
    await createCategoriesPages(graphql, actions);
    await createPostsPages(graphql, actions);
  };
  
  module.exports = createPages;
  