added eslint
This commit is contained in:
parent
ccdb038817
commit
5689ce6332
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es6": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:react/recommended",
|
||||
"airbnb"
|
||||
],
|
||||
"globals": {
|
||||
"Atomics": "readonly",
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaFeatures": {
|
||||
"jsx": true
|
||||
},
|
||||
"ecmaVersion": 11,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"react"
|
||||
],
|
||||
"rules": {
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
// custom typefaces
|
||||
import "typeface-montserrat"
|
||||
import "typeface-merriweather"
|
||||
import 'typeface-montserrat';
|
||||
import 'typeface-merriweather';
|
||||
|
||||
import "./src/styles/global.css";
|
||||
import "prismjs/themes/prism-solarizedlight.css";
|
||||
import './src/styles/global.css';
|
||||
import 'prismjs/themes/prism-solarizedlight.css';
|
||||
|
|
|
|||
|
|
@ -1,50 +1,50 @@
|
|||
module.exports = {
|
||||
siteMetadata: {
|
||||
title: `While False Blog`,
|
||||
author: `Stephan Dörfler`,
|
||||
description: `Self-built developer blog based on gatsby.`,
|
||||
siteUrl: `https://blog.while-false.de`,
|
||||
type: `website`,
|
||||
title: 'While False Blog',
|
||||
author: 'Stephan Dörfler',
|
||||
description: 'Self-built developer blog based on gatsby.',
|
||||
siteUrl: 'https://blog.while-false.de',
|
||||
type: 'website',
|
||||
},
|
||||
plugins: [
|
||||
{
|
||||
resolve: `gatsby-source-filesystem`,
|
||||
resolve: 'gatsby-source-filesystem',
|
||||
options: {
|
||||
path: `${__dirname}/content/blog`,
|
||||
name: `blog`,
|
||||
name: 'blog',
|
||||
},
|
||||
},
|
||||
{
|
||||
resolve: `gatsby-source-filesystem`,
|
||||
resolve: 'gatsby-source-filesystem',
|
||||
options: {
|
||||
path: `${__dirname}/content/assets`,
|
||||
name: `assets`,
|
||||
name: 'assets',
|
||||
},
|
||||
},
|
||||
{
|
||||
resolve: `gatsby-transformer-remark`,
|
||||
resolve: 'gatsby-transformer-remark',
|
||||
options: {
|
||||
plugins: [
|
||||
{
|
||||
resolve: `gatsby-remark-images`,
|
||||
resolve: 'gatsby-remark-images',
|
||||
options: {
|
||||
maxWidth: 590,
|
||||
},
|
||||
},
|
||||
{
|
||||
resolve: `gatsby-remark-responsive-iframe`,
|
||||
resolve: 'gatsby-remark-responsive-iframe',
|
||||
options: {
|
||||
wrapperStyle: `margin-bottom: 1.0725rem`,
|
||||
wrapperStyle: 'margin-bottom: 1.0725rem',
|
||||
},
|
||||
},
|
||||
`gatsby-remark-prismjs`,
|
||||
`gatsby-remark-copy-linked-files`,
|
||||
`gatsby-remark-smartypants`,
|
||||
'gatsby-remark-prismjs',
|
||||
'gatsby-remark-copy-linked-files',
|
||||
'gatsby-remark-smartypants',
|
||||
],
|
||||
},
|
||||
},
|
||||
`gatsby-transformer-sharp`,
|
||||
`gatsby-plugin-sharp`,
|
||||
'gatsby-transformer-sharp',
|
||||
'gatsby-plugin-sharp',
|
||||
{
|
||||
resolve: 'gatsby-plugin-matomo',
|
||||
options: {
|
||||
|
|
@ -52,8 +52,8 @@ module.exports = {
|
|||
matomoUrl: 'https://matomo.while-false.de',
|
||||
siteUrl: 'https://blog.while-false.de',
|
||||
matomoPhpScript: 'matomo.php',
|
||||
matomoJsScript: 'matomo.js'
|
||||
}
|
||||
matomoJsScript: 'matomo.js',
|
||||
},
|
||||
},
|
||||
{
|
||||
resolve: 'gatsby-plugin-feed',
|
||||
|
|
@ -72,17 +72,14 @@ module.exports = {
|
|||
`,
|
||||
feeds: [
|
||||
{
|
||||
serialize: ({ query: { site, allMarkdownRemark } }) => {
|
||||
return allMarkdownRemark.edges.map(edge => {
|
||||
return Object.assign({}, edge.node.frontmatter, {
|
||||
serialize: ({ query: { site, allMarkdownRemark } }) => allMarkdownRemark.edges.map((edge) => ({
|
||||
...edge.node.frontmatter,
|
||||
description: edge.node.excerpt,
|
||||
date: edge.node.frontmatter.date,
|
||||
url: site.siteMetadata.siteUrl + edge.node.fields.slug,
|
||||
guid: site.siteMetadata.siteUrl + edge.node.fields.slug,
|
||||
custom_elements: [{ "content:encoded": edge.node.html }],
|
||||
})
|
||||
})
|
||||
},
|
||||
custom_elements: [{ 'content:encoded': edge.node.html }],
|
||||
})),
|
||||
query: `
|
||||
{
|
||||
allMarkdownRemark(
|
||||
|
|
@ -102,31 +99,31 @@ module.exports = {
|
|||
}
|
||||
}
|
||||
`,
|
||||
output: "/rss.xml",
|
||||
title: "while-false blog RSS Feed"
|
||||
output: '/rss.xml',
|
||||
title: 'while-false blog RSS Feed',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
resolve: `gatsby-plugin-manifest`,
|
||||
resolve: 'gatsby-plugin-manifest',
|
||||
options: {
|
||||
name: `While False Blog`,
|
||||
short_name: `while-false`,
|
||||
start_url: `/`,
|
||||
background_color: `#f9ebe0`,
|
||||
theme_color: `#3b7080`,
|
||||
display: `minimal-ui`,
|
||||
icon: `content/assets/logo.png`,
|
||||
name: 'While False Blog',
|
||||
short_name: 'while-false',
|
||||
start_url: '/',
|
||||
background_color: '#f9ebe0',
|
||||
theme_color: '#3b7080',
|
||||
display: 'minimal-ui',
|
||||
icon: 'content/assets/logo.png',
|
||||
},
|
||||
},
|
||||
`gatsby-plugin-offline`,
|
||||
`gatsby-plugin-react-helmet`,
|
||||
'gatsby-plugin-offline',
|
||||
'gatsby-plugin-react-helmet',
|
||||
{
|
||||
resolve: `gatsby-plugin-typography`,
|
||||
resolve: 'gatsby-plugin-typography',
|
||||
options: {
|
||||
pathToConfigModule: `src/utils/typography`,
|
||||
pathToConfigModule: 'src/utils/typography',
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
const path = require(`path`)
|
||||
const { createFilePath } = require(`gatsby-source-filesystem`)
|
||||
const path = require('path');
|
||||
const { createFilePath } = require('gatsby-source-filesystem');
|
||||
|
||||
exports.createPages = async ({ graphql, actions }) => {
|
||||
const { createPage } = actions
|
||||
const { createPage } = actions;
|
||||
|
||||
const blogPost = path.resolve(`./src/templates/blog-post.js`)
|
||||
const blogPost = path.resolve('./src/templates/blog-post.js');
|
||||
const result = await graphql(
|
||||
`
|
||||
{
|
||||
|
|
@ -24,19 +24,19 @@ exports.createPages = async ({ graphql, actions }) => {
|
|||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
)
|
||||
`,
|
||||
);
|
||||
|
||||
if (result.errors) {
|
||||
throw result.errors
|
||||
throw result.errors;
|
||||
}
|
||||
|
||||
// Create blog posts pages.
|
||||
const posts = result.data.allMarkdownRemark.edges
|
||||
const posts = result.data.allMarkdownRemark.edges;
|
||||
|
||||
posts.forEach((post, index) => {
|
||||
const previous = index === posts.length - 1 ? null : posts[index + 1].node
|
||||
const next = index === 0 ? null : posts[index - 1].node
|
||||
const previous = index === posts.length - 1 ? null : posts[index + 1].node;
|
||||
const next = index === 0 ? null : posts[index - 1].node;
|
||||
|
||||
createPage({
|
||||
path: post.node.fields.slug,
|
||||
|
|
@ -46,18 +46,18 @@ exports.createPages = async ({ graphql, actions }) => {
|
|||
previous,
|
||||
next,
|
||||
},
|
||||
})
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.onCreateNode = ({ node, actions, getNode }) => {
|
||||
const { createNodeField } = actions
|
||||
if (node.internal.type === `MarkdownRemark`) {
|
||||
const value = createFilePath({ node, getNode })
|
||||
const { createNodeField } = actions;
|
||||
if (node.internal.type === 'MarkdownRemark') {
|
||||
const value = createFilePath({ node, getNode });
|
||||
createNodeField({
|
||||
name: `slug`,
|
||||
name: 'slug',
|
||||
node,
|
||||
value,
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
"author": "Stephan Dörfler <st.doerfler@outlook.com>",
|
||||
"dependencies": {
|
||||
"gatsby": "^2.22.17",
|
||||
"gatsby-cli": "^2.12.45",
|
||||
"gatsby-image": "^2.4.6",
|
||||
"gatsby-plugin-feed": "^2.5.4",
|
||||
"gatsby-plugin-manifest": "^2.4.10",
|
||||
|
|
@ -34,7 +35,12 @@
|
|||
"typography-theme-wordpress-2016": "^0.16.19"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^7.1.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-airbnb": "^18.1.0",
|
||||
"eslint-plugin-import": "^2.21.2",
|
||||
"eslint-plugin-jsx-a11y": "^6.2.3",
|
||||
"eslint-plugin-react": "^7.20.0",
|
||||
"eslint-plugin-react-hooks": "^2.5.1",
|
||||
"prettier": "^2.0.5"
|
||||
},
|
||||
"keywords": [
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
* See: https://www.gatsbyjs.org/docs/use-static-query/
|
||||
*/
|
||||
|
||||
import React from "react"
|
||||
import { useStaticQuery, graphql } from "gatsby"
|
||||
import Image from "gatsby-image"
|
||||
import React from 'react';
|
||||
import { useStaticQuery, graphql } from 'gatsby';
|
||||
import Image from 'gatsby-image';
|
||||
|
||||
import { rhythm } from "../utils/typography"
|
||||
import { rhythm } from '../utils/typography';
|
||||
|
||||
const Bio = () => {
|
||||
const data = useStaticQuery(graphql`
|
||||
|
|
@ -27,13 +27,13 @@ const Bio = () => {
|
|||
}
|
||||
}
|
||||
}
|
||||
`)
|
||||
`);
|
||||
|
||||
const { author } = data.site.siteMetadata
|
||||
const { author } = data.site.siteMetadata;
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
display: `flex`,
|
||||
display: 'flex',
|
||||
marginBottom: rhythm(2.5),
|
||||
}}
|
||||
>
|
||||
|
|
@ -44,18 +44,22 @@ const Bio = () => {
|
|||
marginRight: rhythm(1 / 2),
|
||||
marginBottom: 0,
|
||||
minWidth: 50,
|
||||
borderRadius: `100%`,
|
||||
borderRadius: '100%',
|
||||
}}
|
||||
imgStyle={{
|
||||
borderRadius: `50%`,
|
||||
borderRadius: '50%',
|
||||
}}
|
||||
/>
|
||||
<p>
|
||||
Written by <strong>{author}</strong> who lives and works in Germany trying to build useful things.
|
||||
{` `}
|
||||
Written by
|
||||
{' '}
|
||||
<strong>{author}</strong>
|
||||
{' '}
|
||||
who lives and works in Germany trying to build useful things.
|
||||
{' '}
|
||||
</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export default Bio
|
||||
export default Bio;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
import React, { useEffect } from 'react';
|
||||
|
||||
/**
|
||||
* Helper to add scripts to the page.
|
||||
* @param {string} src The source path for the script to insert.
|
||||
* @param {string} id The unique identifier for the script element to insert.
|
||||
* @param {HTMLElement} parentElement The DOM element to insert the script into.
|
||||
*/
|
||||
const insertScript = (src, id, parentElement) => {
|
||||
const script = window.document.createElement('script');
|
||||
script.async = true;
|
||||
script.src = src;
|
||||
script.id = id;
|
||||
parentElement.appendChild(script);
|
||||
return script;
|
||||
};
|
||||
|
||||
/**
|
||||
* Helper to remove scripts from the page.
|
||||
* @param {string} id The unique identifier for the script element to remove.
|
||||
* @param {HTMLElement} parentElement The DOM element to remove the script from
|
||||
*/
|
||||
const removeScript = (id, parentElement) => {
|
||||
const script = window.document.getElementById(id);
|
||||
if (script) {
|
||||
parentElement.removeChild(script);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const Commento = ({ id }) => {
|
||||
useEffect(() => {
|
||||
// If there's no window there's nothing to do for us
|
||||
if (!window) {
|
||||
return;
|
||||
}
|
||||
const { document } = window;
|
||||
// In case our #commento container exists we can add our commento script
|
||||
if (document.getElementById('commento')) {
|
||||
insertScript('https://comments.while-false.de/js/commento.js', 'commento-script', document.body);
|
||||
}
|
||||
// Cleanup; remove the script from the page
|
||||
return () => removeScript('commento-script', document.body);
|
||||
}, [id]);
|
||||
return <div id="commento" />;
|
||||
};
|
||||
|
||||
export default Commento;
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
import React from "react"
|
||||
import { Link } from "gatsby"
|
||||
import React from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
|
||||
import { rhythm, scale } from "../utils/typography"
|
||||
import { rhythm, scale } from '../utils/typography';
|
||||
|
||||
class Layout extends React.Component {
|
||||
render() {
|
||||
const { location, title, children } = this.props
|
||||
const rootPath = `${__PATH_PREFIX__}/`
|
||||
let header
|
||||
const { location, title, children } = this.props;
|
||||
const rootPath = `${__PATH_PREFIX__}/`;
|
||||
let header;
|
||||
|
||||
if (location.pathname === rootPath) {
|
||||
header = (
|
||||
|
|
@ -20,56 +20,59 @@ class Layout extends React.Component {
|
|||
>
|
||||
<Link
|
||||
style={{
|
||||
boxShadow: `none`,
|
||||
textDecoration: `none`,
|
||||
color: `inherit`,
|
||||
boxShadow: 'none',
|
||||
textDecoration: 'none',
|
||||
color: 'inherit',
|
||||
}}
|
||||
to={`/`}
|
||||
to="/"
|
||||
>
|
||||
{title}
|
||||
</Link>
|
||||
</h1>
|
||||
)
|
||||
);
|
||||
} else {
|
||||
header = (
|
||||
<h3
|
||||
style={{
|
||||
fontFamily: `Montserrat, sans-serif`,
|
||||
fontFamily: 'Montserrat, sans-serif',
|
||||
marginTop: 0,
|
||||
}}
|
||||
>
|
||||
<Link
|
||||
style={{
|
||||
boxShadow: `none`,
|
||||
textDecoration: `none`,
|
||||
color: `inherit`,
|
||||
boxShadow: 'none',
|
||||
textDecoration: 'none',
|
||||
color: 'inherit',
|
||||
}}
|
||||
to={`/`}
|
||||
to="/"
|
||||
>
|
||||
{title}
|
||||
</Link>
|
||||
</h3>
|
||||
)
|
||||
);
|
||||
}
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
marginLeft: `auto`,
|
||||
marginRight: `auto`,
|
||||
marginLeft: 'auto',
|
||||
marginRight: 'auto',
|
||||
maxWidth: rhythm(24),
|
||||
padding: `${rhythm(1.5)} ${rhythm(3 / 4)}`
|
||||
padding: `${rhythm(1.5)} ${rhythm(3 / 4)}`,
|
||||
}}
|
||||
>
|
||||
<header>{header}</header>
|
||||
<main>{children}</main>
|
||||
<footer>
|
||||
© {new Date().getFullYear()}, Built with
|
||||
{` `}
|
||||
©
|
||||
{' '}
|
||||
{new Date().getFullYear()}
|
||||
, Built with
|
||||
{' '}
|
||||
<a href="https://www.gatsbyjs.org">Gatsby</a>
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default Layout
|
||||
export default Layout;
|
||||
|
|
|
|||
|
|
@ -5,12 +5,14 @@
|
|||
* See: https://www.gatsbyjs.org/docs/use-static-query/
|
||||
*/
|
||||
|
||||
import React from "react"
|
||||
import PropTypes from "prop-types"
|
||||
import Helmet from "react-helmet"
|
||||
import { useStaticQuery, graphql } from "gatsby"
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import Helmet from 'react-helmet';
|
||||
import { useStaticQuery, graphql } from 'gatsby';
|
||||
|
||||
function SEO({ description, lang, meta, title }) {
|
||||
function SEO({
|
||||
description, lang, meta, title,
|
||||
}) {
|
||||
const { site } = useStaticQuery(
|
||||
graphql`
|
||||
query {
|
||||
|
|
@ -23,11 +25,11 @@ function SEO({ description, lang, meta, title }) {
|
|||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
)
|
||||
`,
|
||||
);
|
||||
|
||||
const metaDescription = description || site.siteMetadata.description
|
||||
const metaType = `website` || site.siteMetadata.type
|
||||
const metaDescription = description || site.siteMetadata.description;
|
||||
const metaType = 'website' || site.siteMetadata.type;
|
||||
|
||||
return (
|
||||
<Helmet
|
||||
|
|
@ -38,39 +40,39 @@ function SEO({ description, lang, meta, title }) {
|
|||
titleTemplate={`%s | ${site.siteMetadata.title}`}
|
||||
meta={[
|
||||
{
|
||||
name: `description`,
|
||||
name: 'description',
|
||||
content: metaDescription,
|
||||
},
|
||||
{
|
||||
property: `og:title`,
|
||||
property: 'og:title',
|
||||
content: title,
|
||||
},
|
||||
{
|
||||
property: `og:description`,
|
||||
property: 'og:description',
|
||||
content: metaDescription,
|
||||
},
|
||||
{
|
||||
property: `og:type`,
|
||||
property: 'og:type',
|
||||
content: metaType,
|
||||
},
|
||||
].concat(meta)}
|
||||
>
|
||||
<link href="https://fonts.googleapis.com/css?family=Oxygen+Mono&display=swap" rel="stylesheet"></link>
|
||||
<link href="https://fonts.googleapis.com/css?family=Oxygen+Mono&display=swap" rel="stylesheet" />
|
||||
</Helmet>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
SEO.defaultProps = {
|
||||
lang: `en`,
|
||||
lang: 'en',
|
||||
meta: [],
|
||||
description: `A selfmade developer blog.`,
|
||||
}
|
||||
description: 'A selfmade developer blog.',
|
||||
};
|
||||
|
||||
SEO.propTypes = {
|
||||
description: PropTypes.string,
|
||||
lang: PropTypes.string,
|
||||
meta: PropTypes.arrayOf(PropTypes.object),
|
||||
title: PropTypes.string.isRequired,
|
||||
}
|
||||
};
|
||||
|
||||
export default SEO
|
||||
export default SEO;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import React from "react"
|
||||
import { graphql } from "gatsby"
|
||||
import React from 'react';
|
||||
import { graphql } from 'gatsby';
|
||||
|
||||
import Layout from "../components/layout"
|
||||
import SEO from "../components/seo"
|
||||
import Layout from '../components/layout';
|
||||
import SEO from '../components/seo';
|
||||
|
||||
class NotFoundPage extends React.Component {
|
||||
render() {
|
||||
const { data } = this.props
|
||||
const siteTitle = data.site.siteMetadata.title
|
||||
const { data } = this.props;
|
||||
const siteTitle = data.site.siteMetadata.title;
|
||||
|
||||
return (
|
||||
<Layout location={this.props.location} title={siteTitle}>
|
||||
|
|
@ -15,11 +15,11 @@ class NotFoundPage extends React.Component {
|
|||
<h1>Not Found</h1>
|
||||
<p>You just hit a route that doesn't exist... the sadness.</p>
|
||||
</Layout>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default NotFoundPage
|
||||
export default NotFoundPage;
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query {
|
||||
|
|
@ -29,4 +29,4 @@ export const pageQuery = graphql`
|
|||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -1,23 +1,23 @@
|
|||
import React from "react"
|
||||
import { Link, graphql } from "gatsby"
|
||||
import React from 'react';
|
||||
import { Link, graphql } from 'gatsby';
|
||||
|
||||
import Bio from "../components/bio"
|
||||
import Layout from "../components/layout"
|
||||
import SEO from "../components/seo"
|
||||
import { rhythm } from "../utils/typography"
|
||||
import Bio from '../components/bio';
|
||||
import Layout from '../components/layout';
|
||||
import SEO from '../components/seo';
|
||||
import { rhythm } from '../utils/typography';
|
||||
|
||||
class BlogIndex extends React.Component {
|
||||
render() {
|
||||
const { data } = this.props
|
||||
const siteTitle = data.site.siteMetadata.title
|
||||
const posts = data.allMarkdownRemark.edges
|
||||
const { data } = this.props;
|
||||
const siteTitle = data.site.siteMetadata.title;
|
||||
const posts = data.allMarkdownRemark.edges;
|
||||
|
||||
return (
|
||||
<Layout location={this.props.location} title={siteTitle}>
|
||||
<SEO title="All posts" />
|
||||
<Bio />
|
||||
{posts.map(({ node }) => {
|
||||
const title = node.frontmatter.title || node.fields.slug
|
||||
const title = node.frontmatter.title || node.fields.slug;
|
||||
return (
|
||||
<article key={node.fields.slug}>
|
||||
<header>
|
||||
|
|
@ -26,7 +26,7 @@ class BlogIndex extends React.Component {
|
|||
marginBottom: rhythm(1 / 4),
|
||||
}}
|
||||
>
|
||||
<Link style={{ boxShadow: `none` }} to={node.fields.slug}>
|
||||
<Link style={{ boxShadow: 'none' }} to={node.fields.slug}>
|
||||
{title}
|
||||
</Link>
|
||||
</h3>
|
||||
|
|
@ -40,14 +40,14 @@ class BlogIndex extends React.Component {
|
|||
/>
|
||||
</section>
|
||||
</article>
|
||||
)
|
||||
);
|
||||
})}
|
||||
</Layout>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default BlogIndex
|
||||
export default BlogIndex;
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query {
|
||||
|
|
@ -72,4 +72,4 @@ export const pageQuery = graphql`
|
|||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -1,23 +1,24 @@
|
|||
import React from "react"
|
||||
import { Link, graphql } from "gatsby"
|
||||
import React from 'react';
|
||||
import { Link, graphql } from 'gatsby';
|
||||
|
||||
import Bio from "../components/bio"
|
||||
import Layout from "../components/layout"
|
||||
import SEO from "../components/seo"
|
||||
import { rhythm, scale } from "../utils/typography"
|
||||
import Bio from '../components/bio';
|
||||
import Layout from '../components/layout';
|
||||
import SEO from '../components/seo';
|
||||
import { rhythm, scale } from '../utils/typography';
|
||||
import Commento from '../components/commento';
|
||||
|
||||
class BlogPostTemplate extends React.Component {
|
||||
render() {
|
||||
const post = this.props.data.markdownRemark
|
||||
const siteTitle = this.props.data.site.siteMetadata.title
|
||||
const { previous, next } = this.props.pageContext
|
||||
const post = this.props.data.markdownRemark;
|
||||
const siteTitle = this.props.data.site.siteMetadata.title;
|
||||
const { previous, next } = this.props.pageContext;
|
||||
|
||||
return (
|
||||
<Layout location={this.props.location} title={siteTitle}>
|
||||
<SEO
|
||||
title={post.frontmatter.title}
|
||||
description={post.frontmatter.description || post.excerpt}
|
||||
type='article'
|
||||
type="article"
|
||||
/>
|
||||
<article>
|
||||
<header>
|
||||
|
|
@ -32,7 +33,7 @@ class BlogPostTemplate extends React.Component {
|
|||
<p
|
||||
style={{
|
||||
...scale(-1 / 5),
|
||||
display: `block`,
|
||||
display: 'block',
|
||||
marginBottom: rhythm(1),
|
||||
}}
|
||||
>
|
||||
|
|
@ -47,41 +48,46 @@ class BlogPostTemplate extends React.Component {
|
|||
/>
|
||||
<footer>
|
||||
<Bio />
|
||||
<Commento id={this.props.slug} />
|
||||
</footer>
|
||||
</article>
|
||||
|
||||
<nav>
|
||||
<ul
|
||||
style={{
|
||||
display: `flex`,
|
||||
flexWrap: `wrap`,
|
||||
justifyContent: `space-between`,
|
||||
listStyle: `none`,
|
||||
display: 'flex',
|
||||
flexWrap: 'wrap',
|
||||
justifyContent: 'space-between',
|
||||
listStyle: 'none',
|
||||
padding: 0,
|
||||
}}
|
||||
>
|
||||
<li>
|
||||
{previous && (
|
||||
<Link to={previous.fields.slug} rel="prev">
|
||||
← {previous.frontmatter.title}
|
||||
←
|
||||
{' '}
|
||||
{previous.frontmatter.title}
|
||||
</Link>
|
||||
)}
|
||||
</li>
|
||||
<li>
|
||||
{next && (
|
||||
<Link to={next.fields.slug} rel="next">
|
||||
{next.frontmatter.title} →
|
||||
{next.frontmatter.title}
|
||||
{' '}
|
||||
→
|
||||
</Link>
|
||||
)}
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</Layout>
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default BlogPostTemplate
|
||||
export default BlogPostTemplate;
|
||||
|
||||
export const pageQuery = graphql`
|
||||
query BlogPostBySlug($slug: String!) {
|
||||
|
|
@ -101,4 +107,4 @@ export const pageQuery = graphql`
|
|||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -1,23 +1,21 @@
|
|||
import Typography from "typography"
|
||||
import Moraga from "typography-theme-moraga"
|
||||
import Typography from 'typography';
|
||||
import Moraga from 'typography-theme-moraga';
|
||||
|
||||
Moraga.overrideThemeStyles = () => {
|
||||
return {
|
||||
"a.gatsby-resp-image-link": {
|
||||
boxShadow: `none`,
|
||||
Moraga.overrideThemeStyles = () => ({
|
||||
'a.gatsby-resp-image-link': {
|
||||
boxShadow: 'none',
|
||||
},
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Moraga.headerFontFamily = ['Oxygen Mono'];
|
||||
|
||||
const typography = new Typography(Moraga);
|
||||
|
||||
// Hot reload typography in development.
|
||||
if (process.env.NODE_ENV !== `production`) {
|
||||
typography.injectStyles()
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
typography.injectStyles();
|
||||
}
|
||||
|
||||
export default typography
|
||||
export const rhythm = typography.rhythm
|
||||
export const scale = typography.scale
|
||||
export default typography;
|
||||
export const { rhythm } = typography;
|
||||
export const { scale } = typography;
|
||||
|
|
|
|||
321
yarn.lock
321
yarn.lock
|
|
@ -2173,6 +2173,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339"
|
||||
integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==
|
||||
|
||||
"@types/json5@^0.0.29":
|
||||
version "0.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
|
||||
|
||||
"@types/lodash.sample@^4.2.6":
|
||||
version "4.2.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash.sample/-/lodash.sample-4.2.6.tgz#ec7f6a6dbd0401c4a1e5f5b3c85fa5a85a42a84a"
|
||||
|
|
@ -2916,7 +2921,7 @@ array-unique@^0.3.2:
|
|||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
||||
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
||||
|
||||
array.prototype.flat@^1.2.1:
|
||||
array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b"
|
||||
integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==
|
||||
|
|
@ -3947,14 +3952,6 @@ chalk@^3.0.0:
|
|||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chalk@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72"
|
||||
integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
character-entities-html4@^1.0.0:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125"
|
||||
|
|
@ -4648,7 +4645,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
|
|||
shebang-command "^1.2.0"
|
||||
which "^1.2.9"
|
||||
|
||||
cross-spawn@^7.0.0, cross-spawn@^7.0.2:
|
||||
cross-spawn@^7.0.0:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
||||
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
|
||||
|
|
@ -5055,7 +5052,7 @@ deep-extend@^0.6.0:
|
|||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
deep-is@^0.1.3, deep-is@~0.1.3:
|
||||
deep-is@~0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
|
||||
|
|
@ -5716,6 +5713,24 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
|
|||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
eslint-config-airbnb-base@^14.1.0:
|
||||
version "14.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4"
|
||||
integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==
|
||||
dependencies:
|
||||
confusing-browser-globals "^1.0.9"
|
||||
object.assign "^4.1.0"
|
||||
object.entries "^1.1.1"
|
||||
|
||||
eslint-config-airbnb@^18.1.0:
|
||||
version "18.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz#724d7e93dadd2169492ff5363c5aaa779e01257d"
|
||||
integrity sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw==
|
||||
dependencies:
|
||||
eslint-config-airbnb-base "^14.1.0"
|
||||
object.assign "^4.1.0"
|
||||
object.entries "^1.1.1"
|
||||
|
||||
eslint-config-react-app@^5.2.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df"
|
||||
|
|
@ -5723,7 +5738,7 @@ eslint-config-react-app@^5.2.1:
|
|||
dependencies:
|
||||
confusing-browser-globals "^1.0.9"
|
||||
|
||||
eslint-import-resolver-node@^0.3.2:
|
||||
eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.3:
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404"
|
||||
integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==
|
||||
|
|
@ -5742,7 +5757,7 @@ eslint-loader@^2.2.1:
|
|||
object-hash "^1.1.4"
|
||||
rimraf "^2.6.1"
|
||||
|
||||
eslint-module-utils@^2.4.1:
|
||||
eslint-module-utils@^2.4.1, eslint-module-utils@^2.6.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
|
||||
integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
|
||||
|
|
@ -5783,6 +5798,25 @@ eslint-plugin-import@^2.20.2:
|
|||
read-pkg-up "^2.0.0"
|
||||
resolve "^1.12.0"
|
||||
|
||||
eslint-plugin-import@^2.21.2:
|
||||
version "2.21.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.21.2.tgz#8fef77475cc5510801bedc95f84b932f7f334a7c"
|
||||
integrity sha512-FEmxeGI6yaz+SnEB6YgNHlQK1Bs2DKLM+YF+vuTk5H8J9CLbJLtlPvRFgZZ2+sXiKAlN5dpdlrWOjK8ZoZJpQA==
|
||||
dependencies:
|
||||
array-includes "^3.1.1"
|
||||
array.prototype.flat "^1.2.3"
|
||||
contains-path "^0.1.0"
|
||||
debug "^2.6.9"
|
||||
doctrine "1.5.0"
|
||||
eslint-import-resolver-node "^0.3.3"
|
||||
eslint-module-utils "^2.6.0"
|
||||
has "^1.0.3"
|
||||
minimatch "^3.0.4"
|
||||
object.values "^1.1.1"
|
||||
read-pkg-up "^2.0.0"
|
||||
resolve "^1.17.0"
|
||||
tsconfig-paths "^3.9.0"
|
||||
|
||||
eslint-plugin-jsx-a11y@^6.2.3:
|
||||
version "6.2.3"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa"
|
||||
|
|
@ -5803,6 +5837,11 @@ eslint-plugin-react-hooks@^1.7.0:
|
|||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04"
|
||||
integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==
|
||||
|
||||
eslint-plugin-react-hooks@^2.5.1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0"
|
||||
integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==
|
||||
|
||||
eslint-plugin-react@^7.20.0:
|
||||
version "7.20.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz#f98712f0a5e57dfd3e5542ef0604b8739cd47be3"
|
||||
|
|
@ -5898,48 +5937,6 @@ eslint@^6.8.0:
|
|||
text-table "^0.2.0"
|
||||
v8-compile-cache "^2.0.3"
|
||||
|
||||
eslint@^7.1.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.1.0.tgz#d9a1df25e5b7859b0a3d86bb05f0940ab676a851"
|
||||
integrity sha512-DfS3b8iHMK5z/YLSme8K5cge168I8j8o1uiVmFCgnnjxZQbCGyraF8bMl7Ju4yfBmCuxD7shOF7eqGkcuIHfsA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
ajv "^6.10.0"
|
||||
chalk "^4.0.0"
|
||||
cross-spawn "^7.0.2"
|
||||
debug "^4.0.1"
|
||||
doctrine "^3.0.0"
|
||||
eslint-scope "^5.0.0"
|
||||
eslint-utils "^2.0.0"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
espree "^7.0.0"
|
||||
esquery "^1.2.0"
|
||||
esutils "^2.0.2"
|
||||
file-entry-cache "^5.0.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
glob-parent "^5.0.0"
|
||||
globals "^12.1.0"
|
||||
ignore "^4.0.6"
|
||||
import-fresh "^3.0.0"
|
||||
imurmurhash "^0.1.4"
|
||||
inquirer "^7.0.0"
|
||||
is-glob "^4.0.0"
|
||||
js-yaml "^3.13.1"
|
||||
json-stable-stringify-without-jsonify "^1.0.1"
|
||||
levn "^0.4.1"
|
||||
lodash "^4.17.14"
|
||||
minimatch "^3.0.4"
|
||||
natural-compare "^1.4.0"
|
||||
optionator "^0.9.1"
|
||||
progress "^2.0.0"
|
||||
regexpp "^3.1.0"
|
||||
semver "^7.2.1"
|
||||
strip-ansi "^6.0.0"
|
||||
strip-json-comments "^3.1.0"
|
||||
table "^5.2.3"
|
||||
text-table "^0.2.0"
|
||||
v8-compile-cache "^2.0.3"
|
||||
|
||||
espree@^6.1.2:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
|
||||
|
|
@ -5949,21 +5946,12 @@ espree@^6.1.2:
|
|||
acorn-jsx "^5.2.0"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
espree@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-7.0.0.tgz#8a7a60f218e69f120a842dc24c5a88aa7748a74e"
|
||||
integrity sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw==
|
||||
dependencies:
|
||||
acorn "^7.1.1"
|
||||
acorn-jsx "^5.2.0"
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
esprima@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
||||
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
||||
|
||||
esquery@^1.0.1, esquery@^1.2.0:
|
||||
esquery@^1.0.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
|
||||
integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
|
||||
|
|
@ -6867,6 +6855,54 @@ gatsby-cli@^2.12.42:
|
|||
yargs "^15.3.1"
|
||||
yurnalist "^1.1.2"
|
||||
|
||||
gatsby-cli@^2.12.45:
|
||||
version "2.12.45"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.12.45.tgz#5f99e8ea96264c55e981d13147c1a387c9bf1164"
|
||||
integrity sha512-CY0ltZ5DvrSo30MkPcU2FFGiCrQUjirXAY7TdFEhc8IeV5Gj9E2AFmUF1FO4Dna6yv47WBBaHKFpsiKc5Iq0XA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.1"
|
||||
"@babel/runtime" "^7.10.2"
|
||||
"@hapi/joi" "^15.1.1"
|
||||
better-opn "^1.0.0"
|
||||
bluebird "^3.7.2"
|
||||
chalk "^2.4.2"
|
||||
clipboardy "^2.3.0"
|
||||
common-tags "^1.8.0"
|
||||
configstore "^5.0.1"
|
||||
convert-hrtime "^3.0.0"
|
||||
core-js "^2.6.11"
|
||||
envinfo "^7.5.1"
|
||||
execa "^3.4.0"
|
||||
fs-exists-cached "^1.0.0"
|
||||
fs-extra "^8.1.0"
|
||||
gatsby-core-utils "^1.3.5"
|
||||
gatsby-recipes "^0.1.39"
|
||||
gatsby-telemetry "^1.3.11"
|
||||
hosted-git-info "^3.0.4"
|
||||
ink "^2.7.1"
|
||||
ink-spinner "^3.0.1"
|
||||
is-valid-path "^0.1.1"
|
||||
lodash "^4.17.15"
|
||||
meant "^1.0.1"
|
||||
node-fetch "^2.6.0"
|
||||
object.entries "^1.1.2"
|
||||
opentracing "^0.14.4"
|
||||
pretty-error "^2.1.1"
|
||||
progress "^2.0.3"
|
||||
prompts "^2.3.2"
|
||||
react "^16.8.0"
|
||||
redux "^4.0.5"
|
||||
resolve-cwd "^3.0.0"
|
||||
semver "^6.3.0"
|
||||
signal-exit "^3.0.3"
|
||||
source-map "0.7.3"
|
||||
stack-trace "^0.0.10"
|
||||
strip-ansi "^5.2.0"
|
||||
update-notifier "^3.0.1"
|
||||
uuid "3.4.0"
|
||||
yargs "^15.3.1"
|
||||
yurnalist "^1.1.2"
|
||||
|
||||
gatsby-core-utils@^1.3.4:
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.3.4.tgz#a3adc461dc90e55b8aef03d9c4440c2018f7e06c"
|
||||
|
|
@ -6879,6 +6915,18 @@ gatsby-core-utils@^1.3.4:
|
|||
proper-lockfile "^4.1.1"
|
||||
xdg-basedir "^4.0.0"
|
||||
|
||||
gatsby-core-utils@^1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.3.5.tgz#3c8f2dc940cec6570d1317f02ba028f327d1e773"
|
||||
integrity sha512-kbwJ5BeQ8OixJVuBb1AGRL6vdkFz9nFBa6gXqjQ6AAXHhYDrjOYrRMIENT1QLoabWo6tlh0Hyl1agfWaQwW8lg==
|
||||
dependencies:
|
||||
ci-info "2.0.0"
|
||||
configstore "^5.0.1"
|
||||
fs-extra "^8.1.0"
|
||||
node-object-hash "^2.0.0"
|
||||
proper-lockfile "^4.1.1"
|
||||
xdg-basedir "^4.0.0"
|
||||
|
||||
gatsby-design-tokens@^2.0.2:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-design-tokens/-/gatsby-design-tokens-2.0.6.tgz#593aa969e360560369fc59054c01236beed9be7d"
|
||||
|
|
@ -7126,6 +7174,74 @@ gatsby-recipes@^0.1.36:
|
|||
ws "^7.3.0"
|
||||
xstate "^4.10.0"
|
||||
|
||||
gatsby-recipes@^0.1.39:
|
||||
version "0.1.39"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.1.39.tgz#6bd079e0011fbe41c14b371f9b757bcaa377c3ad"
|
||||
integrity sha512-Pf8EGKhCAv4E1rU0NL6pKH9mC8QB/0pW/9oAAb9Rs2N3TeBYcQ36hQP95ana63GZwY35eKoFzjdWGHmegQw90Q==
|
||||
dependencies:
|
||||
"@babel/core" "^7.10.2"
|
||||
"@babel/generator" "^7.10.2"
|
||||
"@babel/helper-plugin-utils" "^7.10.1"
|
||||
"@babel/plugin-transform-react-jsx" "^7.10.1"
|
||||
"@babel/standalone" "^7.10.2"
|
||||
"@babel/template" "^7.10.1"
|
||||
"@babel/types" "^7.10.2"
|
||||
"@hapi/hoek" "8.x"
|
||||
"@hapi/joi" "^15.1.1"
|
||||
"@mdx-js/mdx" "^1.6.5"
|
||||
"@mdx-js/react" "^1.6.5"
|
||||
"@mdx-js/runtime" "^1.6.5"
|
||||
acorn "^7.2.0"
|
||||
acorn-jsx "^5.2.0"
|
||||
cors "^2.8.5"
|
||||
debug "^4.1.1"
|
||||
detect-port "^1.3.0"
|
||||
execa "^4.0.2"
|
||||
express "^4.17.1"
|
||||
express-graphql "^0.9.0"
|
||||
fs-extra "^8.1.0"
|
||||
gatsby-core-utils "^1.3.5"
|
||||
gatsby-telemetry "^1.3.11"
|
||||
glob "^7.1.6"
|
||||
graphql "^14.6.0"
|
||||
graphql-compose "^6.3.8"
|
||||
graphql-subscriptions "^1.1.0"
|
||||
graphql-tools "^6.0.5"
|
||||
graphql-type-json "^0.3.1"
|
||||
hicat "^0.7.0"
|
||||
html-tag-names "^1.1.5"
|
||||
ink "^2.7.1"
|
||||
ink-box "^1.0.0"
|
||||
ink-link "^1.1.0"
|
||||
ink-select-input "^3.1.2"
|
||||
ink-spinner "^3.0.1"
|
||||
is-binary-path "^2.1.0"
|
||||
is-blank "^2.1.0"
|
||||
is-string "^1.0.5"
|
||||
is-url "^1.2.4"
|
||||
jest-diff "^25.5.0"
|
||||
lodash "^4.17.15"
|
||||
mkdirp "^0.5.1"
|
||||
node-fetch "^2.6.0"
|
||||
pkg-dir "^4.2.0"
|
||||
prettier "^2.0.5"
|
||||
react-reconciler "^0.25.1"
|
||||
remark-mdx "^1.6.5"
|
||||
remark-parse "^6.0.3"
|
||||
remark-stringify "^8.0.0"
|
||||
resolve-cwd "^3.0.0"
|
||||
semver "^7.3.2"
|
||||
single-trailing-newline "^1.0.0"
|
||||
strip-ansi "^6.0.0"
|
||||
style-to-object "^0.3.0"
|
||||
subscriptions-transport-ws "^0.9.16"
|
||||
svg-tag-names "^2.0.1"
|
||||
unified "^8.4.2"
|
||||
unist-util-visit "^2.0.2"
|
||||
urql "^1.9.7"
|
||||
ws "^7.3.0"
|
||||
xstate "^4.10.0"
|
||||
|
||||
gatsby-remark-copy-linked-files@^2.3.4:
|
||||
version "2.3.4"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-2.3.4.tgz#559cd7203e8633ef90fd0220a9ade7ae1405d327"
|
||||
|
|
@ -7246,6 +7362,29 @@ gatsby-telemetry@^1.3.10:
|
|||
stack-utils "1.0.2"
|
||||
uuid "3.4.0"
|
||||
|
||||
gatsby-telemetry@^1.3.11:
|
||||
version "1.3.11"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.3.11.tgz#2a5743387d84e796e11f9577f9981c9b46c34e11"
|
||||
integrity sha512-k5bzy0G0Me0aQYaW1cOWp0PQ9+wRXHU0lbztdinnRAWlqqb3EGMVPtfUhP7aMJvXtj3UfLy3pk0xBfsX8BHvfA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.1"
|
||||
"@babel/runtime" "^7.10.2"
|
||||
bluebird "^3.7.2"
|
||||
boxen "^4.2.0"
|
||||
configstore "^5.0.1"
|
||||
envinfo "^7.5.1"
|
||||
fs-extra "^8.1.0"
|
||||
gatsby-core-utils "^1.3.5"
|
||||
git-up "4.0.1"
|
||||
is-docker "2.0.0"
|
||||
lodash "^4.17.15"
|
||||
node-fetch "2.6.0"
|
||||
resolve-cwd "^2.0.0"
|
||||
source-map "^0.7.3"
|
||||
stack-trace "^0.0.10"
|
||||
stack-utils "1.0.2"
|
||||
uuid "3.4.0"
|
||||
|
||||
gatsby-transformer-remark@^2.8.14:
|
||||
version "2.8.14"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-2.8.14.tgz#15ff9c5d11fefc013b9354884a544442b0aae6e5"
|
||||
|
|
@ -9579,14 +9718,6 @@ levn@^0.3.0, levn@~0.3.0:
|
|||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
levn@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
|
||||
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
|
||||
dependencies:
|
||||
prelude-ls "^1.2.1"
|
||||
type-check "~0.4.0"
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
|
||||
|
|
@ -10949,18 +11080,6 @@ optionator@^0.8.3:
|
|||
type-check "~0.3.2"
|
||||
word-wrap "~1.2.3"
|
||||
|
||||
optionator@^0.9.1:
|
||||
version "0.9.1"
|
||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
|
||||
integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
|
||||
dependencies:
|
||||
deep-is "^0.1.3"
|
||||
fast-levenshtein "^2.0.6"
|
||||
levn "^0.4.1"
|
||||
prelude-ls "^1.2.1"
|
||||
type-check "^0.4.0"
|
||||
word-wrap "^1.2.3"
|
||||
|
||||
original@>=0.0.5, original@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
|
||||
|
|
@ -11951,11 +12070,6 @@ prebuild-install@^5.3.3:
|
|||
tunnel-agent "^0.6.0"
|
||||
which-pm-runs "^1.0.0"
|
||||
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
|
||||
|
||||
prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
|
|
@ -12661,7 +12775,7 @@ regexpp@^2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
|
||||
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
|
||||
|
||||
regexpp@^3.0.0, regexpp@^3.1.0:
|
||||
regexpp@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
|
||||
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
|
||||
|
|
@ -12985,7 +13099,7 @@ resolve-url@^0.2.1:
|
|||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
||||
|
||||
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1:
|
||||
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1:
|
||||
version "1.17.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
|
||||
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
|
||||
|
|
@ -13308,7 +13422,7 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
|
|||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
semver@^7.2.1, semver@^7.3.2:
|
||||
semver@^7.3.2:
|
||||
version "7.3.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
|
||||
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
|
||||
|
|
@ -14206,7 +14320,7 @@ strip-indent@^1.0.1:
|
|||
dependencies:
|
||||
get-stdin "^4.0.1"
|
||||
|
||||
strip-json-comments@^3.0.1, strip-json-comments@^3.1.0:
|
||||
strip-json-comments@^3.0.1:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
||||
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
||||
|
|
@ -14700,6 +14814,16 @@ ts-pnp@^1.1.6:
|
|||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
||||
|
||||
tsconfig-paths@^3.9.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
|
||||
integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
|
||||
dependencies:
|
||||
"@types/json5" "^0.0.29"
|
||||
json5 "^1.0.1"
|
||||
minimist "^1.2.0"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
tslib@^1.0.0, tslib@^1.10.0, tslib@^1.11.1, tslib@^1.11.2, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
|
||||
|
|
@ -14734,13 +14858,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
|||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
|
||||
|
||||
type-check@^0.4.0, type-check@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
|
||||
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
|
||||
dependencies:
|
||||
prelude-ls "^1.2.1"
|
||||
|
||||
type-check@~0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
||||
|
|
@ -15698,7 +15815,7 @@ wonka@^4.0.10, wonka@^4.0.9:
|
|||
resolved "https://registry.yarnpkg.com/wonka/-/wonka-4.0.14.tgz#77d680a84e575ed15a9f975eb87d6c530488f3a4"
|
||||
integrity sha512-v9vmsTxpZjrA8CYfztbuoTQSHEsG3ZH+NCYfasHm0V3GqBupXrjuuz0RJyUaw2cRO7ouW2js0P6i853/qxlDcA==
|
||||
|
||||
word-wrap@^1.2.3, word-wrap@~1.2.3:
|
||||
word-wrap@~1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
||||
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
|
||||
|
|
|
|||
Loading…
Reference in New Issue