mirror of
https://github.com/fergalmoran/supanextail.git
synced 2025-12-22 09:17:54 +00:00
Blog V1 (functionnal)
Need to clean TS code / replace placeholders / Design V1 to-do
This commit is contained in:
@@ -78,7 +78,8 @@
|
|||||||
{
|
{
|
||||||
"cases": {
|
"cases": {
|
||||||
"camelCase": true,
|
"camelCase": true,
|
||||||
"pascalCase": true
|
"pascalCase": true,
|
||||||
|
"kebabCase": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
27
_posts/another-example.md
Normal file
27
_posts/another-example.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Another example
|
||||||
|
description: A very small example of a blog post with a title and a description.
|
||||||
|
date: '2022-01-17'
|
||||||
|
coverImage: '/blog/coverdefault.png'
|
||||||
|
author:
|
||||||
|
name: 'Michael B'
|
||||||
|
picture: '/blog/author/Avatar1.svg'
|
||||||
|
ogImage:
|
||||||
|
url: '/blog/Blog.png'
|
||||||
|
---
|
||||||
|
|
||||||
|
## A header
|
||||||
|
|
||||||
|
This is a small example of a blog post.
|
||||||
|
Can you make it bigger?
|
||||||
|
I'm sure you can!
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id pulvinar velit, ut dignissim nibh. Nullam commodo pharetra sem. Donec in erat diam. Donec efficitur arcu sagittis felis vulputate feugiat in in enim. Sed ultricies tincidunt eros, et mattis erat hendrerit nec. Cras congue nec augue non imperdiet. Proin tincidunt luctus erat sit amet lobortis. Sed urna erat, ornare vel suscipit id, pharetra vel elit.
|
||||||
|
|
||||||
|
Suspendisse fringilla sit amet lorem nec semper. Curabitur aliquet ultrices rhoncus. Morbi facilisis, nibh eu dapibus maximus, lectus ante porttitor ante, quis dictum ipsum dui in velit. Pellentesque sapien enim, laoreet eu aliquam non, pellentesque in dui. Curabitur tristique magna lacus, ac pulvinar ex aliquam luctus. Etiam volutpat faucibus purus. Integer non euismod diam. Nam tincidunt vulputate nulla, a porta est accumsan non. Morbi et suscipit arcu. Cras placerat turpis eu mauris placerat, quis commodo ipsum iaculis. Vivamus turpis diam, posuere id ligula a, rhoncus volutpat risus. Fusce accumsan magna vitae odio molestie ultrices. Donec efficitur tellus ut leo posuere, vitae porttitor ipsum consectetur. Mauris tempor odio non laoreet luctus. Curabitur finibus vestibulum justo nec auctor.
|
||||||
|
|
||||||
|
## A second header
|
||||||
|
|
||||||
|
Integer egestas nulla non ultricies ultricies. Nulla et ultrices odio. Etiam eget tempor ipsum. Pellentesque sit amet commodo est. Praesent tincidunt faucibus orci. Proin at aliquet orci. Sed eget ultrices ligula. Maecenas bibendum, leo quis suscipit posuere, tellus libero maximus nibh, vel bibendum eros leo non nulla. Proin quis gravida leo. Cras efficitur mi congue lacus viverra placerat quis in leo. Nam faucibus est sollicitudin, suscipit erat ac, ultrices metus. Fusce sagittis vulputate turpis eget laoreet.
|
||||||
|
|
||||||
|
### A smaller header
|
||||||
27
_posts/example-post.md
Normal file
27
_posts/example-post.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: A small example
|
||||||
|
description: A very small example
|
||||||
|
date: '2022-01-17'
|
||||||
|
author:
|
||||||
|
name: Michael B
|
||||||
|
picture: '/blog/author/Avatar1.svg'
|
||||||
|
coverImage: '/blog/coverdefault.png'
|
||||||
|
ogImage:
|
||||||
|
url: '/blog/Blog.png'
|
||||||
|
---
|
||||||
|
|
||||||
|
## A header
|
||||||
|
|
||||||
|
This is a small example of a blog post.
|
||||||
|
Can you make it bigger?
|
||||||
|
I'm sure you can!
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id pulvinar velit, ut dignissim nibh. Nullam commodo pharetra sem. Donec in erat diam. Donec efficitur arcu sagittis felis vulputate feugiat in in enim. Sed ultricies tincidunt eros, et mattis erat hendrerit nec. Cras congue nec augue non imperdiet. Proin tincidunt luctus erat sit amet lobortis. Sed urna erat, ornare vel suscipit id, pharetra vel elit.
|
||||||
|
|
||||||
|
Suspendisse fringilla sit amet lorem nec semper. Curabitur aliquet ultrices rhoncus. Morbi facilisis, nibh eu dapibus maximus, lectus ante porttitor ante, quis dictum ipsum dui in velit. Pellentesque sapien enim, laoreet eu aliquam non, pellentesque in dui. Curabitur tristique magna lacus, ac pulvinar ex aliquam luctus. Etiam volutpat faucibus purus. Integer non euismod diam. Nam tincidunt vulputate nulla, a porta est accumsan non. Morbi et suscipit arcu. Cras placerat turpis eu mauris placerat, quis commodo ipsum iaculis. Vivamus turpis diam, posuere id ligula a, rhoncus volutpat risus. Fusce accumsan magna vitae odio molestie ultrices. Donec efficitur tellus ut leo posuere, vitae porttitor ipsum consectetur. Mauris tempor odio non laoreet luctus. Curabitur finibus vestibulum justo nec auctor.
|
||||||
|
|
||||||
|
## A second header
|
||||||
|
|
||||||
|
Integer egestas nulla non ultricies ultricies. Nulla et ultrices odio. Etiam eget tempor ipsum. Pellentesque sit amet commodo est. Praesent tincidunt faucibus orci. Proin at aliquet orci. Sed eget ultrices ligula. Maecenas bibendum, leo quis suscipit posuere, tellus libero maximus nibh, vel bibendum eros leo non nulla. Proin quis gravida leo. Cras efficitur mi congue lacus viverra placerat quis in leo. Nam faucibus est sollicitudin, suscipit erat ac, ultrices metus. Fusce sagittis vulputate turpis eget laoreet.
|
||||||
|
|
||||||
|
### A smaller header
|
||||||
27
_posts/lorem-ipsum1.md
Normal file
27
_posts/lorem-ipsum1.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Lorem Ipsum 1
|
||||||
|
description: A very small example
|
||||||
|
date: '2022-01-17'
|
||||||
|
author:
|
||||||
|
name: Michael B
|
||||||
|
picture: '/blog/author/Avatar1.svg'
|
||||||
|
coverImage: '/cardServer.svg'
|
||||||
|
ogImage:
|
||||||
|
url: '/blog/Blog.png'
|
||||||
|
---
|
||||||
|
|
||||||
|
## A header
|
||||||
|
|
||||||
|
This is a small example of a blog post.
|
||||||
|
Can you make it bigger?
|
||||||
|
I'm sure you can!
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id pulvinar velit, ut dignissim nibh. Nullam commodo pharetra sem. Donec in erat diam. Donec efficitur arcu sagittis felis vulputate feugiat in in enim. Sed ultricies tincidunt eros, et mattis erat hendrerit nec. Cras congue nec augue non imperdiet. Proin tincidunt luctus erat sit amet lobortis. Sed urna erat, ornare vel suscipit id, pharetra vel elit.
|
||||||
|
|
||||||
|
Suspendisse fringilla sit amet lorem nec semper. Curabitur aliquet ultrices rhoncus. Morbi facilisis, nibh eu dapibus maximus, lectus ante porttitor ante, quis dictum ipsum dui in velit. Pellentesque sapien enim, laoreet eu aliquam non, pellentesque in dui. Curabitur tristique magna lacus, ac pulvinar ex aliquam luctus. Etiam volutpat faucibus purus. Integer non euismod diam. Nam tincidunt vulputate nulla, a porta est accumsan non. Morbi et suscipit arcu. Cras placerat turpis eu mauris placerat, quis commodo ipsum iaculis. Vivamus turpis diam, posuere id ligula a, rhoncus volutpat risus. Fusce accumsan magna vitae odio molestie ultrices. Donec efficitur tellus ut leo posuere, vitae porttitor ipsum consectetur. Mauris tempor odio non laoreet luctus. Curabitur finibus vestibulum justo nec auctor.
|
||||||
|
|
||||||
|
## A second header
|
||||||
|
|
||||||
|
Integer egestas nulla non ultricies ultricies. Nulla et ultrices odio. Etiam eget tempor ipsum. Pellentesque sit amet commodo est. Praesent tincidunt faucibus orci. Proin at aliquet orci. Sed eget ultrices ligula. Maecenas bibendum, leo quis suscipit posuere, tellus libero maximus nibh, vel bibendum eros leo non nulla. Proin quis gravida leo. Cras efficitur mi congue lacus viverra placerat quis in leo. Nam faucibus est sollicitudin, suscipit erat ac, ultrices metus. Fusce sagittis vulputate turpis eget laoreet.
|
||||||
|
|
||||||
|
### A smaller header
|
||||||
44
components/Blog.tsx
Normal file
44
components/Blog.tsx
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/* eslint-disable unicorn/prevent-abbreviations */
|
||||||
|
|
||||||
|
import { format, parseISO } from 'date-fns';
|
||||||
|
|
||||||
|
import Link from 'next/link';
|
||||||
|
import PostType from 'types/post';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
posts: PostType[];
|
||||||
|
};
|
||||||
|
|
||||||
|
const Blog = (props: Properties): JSX.Element => {
|
||||||
|
const { posts } = props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="max-w-xl px-5 py-10 m-auto">
|
||||||
|
<h1>Welcome on the SupaNexTail blog</h1>
|
||||||
|
|
||||||
|
{posts.map((post) => (
|
||||||
|
<article key={post.slug} className="mt-12">
|
||||||
|
<p className="mb-1 text-sm text-gray-500 dark:text-gray-400">
|
||||||
|
{post.date && format(parseISO(post.date), 'MMMM dd, yyyy')}
|
||||||
|
</p>
|
||||||
|
<h1 className="mb-2 text-xl">
|
||||||
|
<Link as={`/posts/${post.slug}`} href={`/posts/[slug]`}>
|
||||||
|
<a className="text-gray-900 dark:text-white dark:hover:text-blue-400">
|
||||||
|
{post.title}
|
||||||
|
</a>
|
||||||
|
</Link>
|
||||||
|
</h1>
|
||||||
|
<p className="mb-3">{post.description}</p>
|
||||||
|
<p>
|
||||||
|
<Link as={`/posts/${post.slug}`} href={`/posts/[slug]`}>
|
||||||
|
<a>Read More</a>
|
||||||
|
</Link>
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Blog;
|
||||||
23
components/blog/avatar.tsx
Normal file
23
components/blog/avatar.tsx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import Image from 'next/image';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
name: string;
|
||||||
|
picture: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Avatar = ({ name, picture }: Properties): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Image
|
||||||
|
src={picture}
|
||||||
|
className="w-12 h-12 rounded-full mr-4"
|
||||||
|
alt={name}
|
||||||
|
width={48}
|
||||||
|
height={48}
|
||||||
|
/>
|
||||||
|
<div className="text-xl font-bold">{name}</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Avatar;
|
||||||
11
components/blog/container.tsx
Normal file
11
components/blog/container.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { FunctionComponent, ReactNode } from 'react';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
children?: ReactNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Container: FunctionComponent = ({ children }: Properties) => {
|
||||||
|
return <div className="container mx-auto px-5">{children}</div>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Container;
|
||||||
33
components/blog/cover-image.tsx
Normal file
33
components/blog/cover-image.tsx
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import Image from 'next/image';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
title: string;
|
||||||
|
src: string;
|
||||||
|
slug?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const CoverImage = ({ title, src, slug }: Properties): JSX.Element => {
|
||||||
|
const image = (
|
||||||
|
<Image
|
||||||
|
src={src}
|
||||||
|
alt={`Cover Image for ${title}`}
|
||||||
|
layout="fill"
|
||||||
|
objectFit="contain"
|
||||||
|
objectPosition={'center top'}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<div className="sm:mx-0 flex justify-center relative max-w-2xl h-48">
|
||||||
|
{slug ? (
|
||||||
|
<Link as={`/posts/${slug}`} href="/posts/[slug]">
|
||||||
|
<a aria-label={title}>{image}</a>
|
||||||
|
</Link>
|
||||||
|
) : (
|
||||||
|
image
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CoverImage;
|
||||||
12
components/blog/date-formatter.tsx
Normal file
12
components/blog/date-formatter.tsx
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { format, parseISO } from 'date-fns';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
dateString: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const DateFormatter = ({ dateString }: Properties): JSX.Element => {
|
||||||
|
const date = parseISO(dateString);
|
||||||
|
return <time dateTime={dateString}>{format(date, 'LLLL d, yyyy')}</time>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default DateFormatter;
|
||||||
13
components/blog/header.tsx
Normal file
13
components/blog/header.tsx
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
|
const Header = (): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<h2 className="text-sm md:text-xl font-semibold tracking-tight md:tracking-tighter leading-tight mb-16 mt-8">
|
||||||
|
<Link href="/blog">
|
||||||
|
<a className="hover:underline">Return to the blog</a>
|
||||||
|
</Link>
|
||||||
|
</h2>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Header;
|
||||||
49
components/blog/hero-post.tsx
Normal file
49
components/blog/hero-post.tsx
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import Author from 'types/author';
|
||||||
|
import Avatar from './avatar';
|
||||||
|
import CoverImage from './cover-image';
|
||||||
|
import DateFormatter from './date-formatter';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
title: string;
|
||||||
|
coverImage: string;
|
||||||
|
date: string;
|
||||||
|
excerpt: string;
|
||||||
|
author: Author;
|
||||||
|
slug: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const HeroPost = ({
|
||||||
|
title,
|
||||||
|
coverImage,
|
||||||
|
date,
|
||||||
|
excerpt,
|
||||||
|
author,
|
||||||
|
slug,
|
||||||
|
}: Properties): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<section>
|
||||||
|
<div className="mb-8 md:mb-16">
|
||||||
|
<CoverImage title={title} src={coverImage} slug={slug} />
|
||||||
|
</div>
|
||||||
|
<div className="md:grid md:grid-cols-2 md:gap-x-16 lg:gap-x-8 mb-20 md:mb-28">
|
||||||
|
<div>
|
||||||
|
<h3 className="mb-4 text-4xl lg:text-5xl leading-tight">
|
||||||
|
<Link as={`/blog/${slug}`} href="/blog/[slug]">
|
||||||
|
<a className="hover:underline">{title}</a>
|
||||||
|
</Link>
|
||||||
|
</h3>
|
||||||
|
<div className="mb-4 md:mb-0 text-lg">
|
||||||
|
<DateFormatter dateString={date} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg leading-relaxed mb-4">{excerpt}</p>
|
||||||
|
<Avatar name={author.name} picture={author.picture} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default HeroPost;
|
||||||
34
components/blog/more-stories.tsx
Normal file
34
components/blog/more-stories.tsx
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import Post from 'types/post';
|
||||||
|
import PostPreview from './post-preview';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
posts: Post[];
|
||||||
|
};
|
||||||
|
|
||||||
|
const MoreStories = ({ posts }: Properties): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<section>
|
||||||
|
<h2 className="mb-8 text-2xl md:text-4xl font-semibold tracking-tighter leading-tight">
|
||||||
|
More Stories
|
||||||
|
</h2>
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 md:gap-x-16 lg:gap-x-32 gap-y-20 md:gap-y-32 mb-32">
|
||||||
|
{posts.map(
|
||||||
|
(post) =>
|
||||||
|
post && (
|
||||||
|
<PostPreview
|
||||||
|
key={post.slug}
|
||||||
|
title={post.title}
|
||||||
|
coverImage={post.coverImage}
|
||||||
|
date={post.date}
|
||||||
|
author={post.author}
|
||||||
|
slug={post.slug}
|
||||||
|
excerpt={post.excerpt}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default MoreStories;
|
||||||
13
components/blog/post-body.tsx
Normal file
13
components/blog/post-body.tsx
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
type Properties = {
|
||||||
|
content: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const PostBody = ({ content }: Properties): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<div className="max-w-2xl mx-auto">
|
||||||
|
<div dangerouslySetInnerHTML={{ __html: content }} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PostBody;
|
||||||
41
components/blog/post-header.tsx
Normal file
41
components/blog/post-header.tsx
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import Author from 'types/author';
|
||||||
|
import Avatar from './avatar';
|
||||||
|
import CoverImage from './cover-image';
|
||||||
|
import DateFormatter from './date-formatter';
|
||||||
|
import PostTitle from './post-title';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
title: string;
|
||||||
|
coverImage: string;
|
||||||
|
date: string;
|
||||||
|
author: Author;
|
||||||
|
};
|
||||||
|
|
||||||
|
const PostHeader = ({
|
||||||
|
title,
|
||||||
|
coverImage,
|
||||||
|
date,
|
||||||
|
author,
|
||||||
|
}: Properties): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<PostTitle>{title}</PostTitle>
|
||||||
|
<div className="hidden md:block md:mb-12">
|
||||||
|
<Avatar name={author.name} picture={author.picture} />
|
||||||
|
</div>
|
||||||
|
<div className="mb-8 md:mb-16 sm:mx-0">
|
||||||
|
<CoverImage title={title} src={coverImage} />
|
||||||
|
</div>
|
||||||
|
<div className="max-w-2xl mx-auto">
|
||||||
|
<div className="block md:hidden mb-6">
|
||||||
|
<Avatar name={author.name} picture={author.picture} />
|
||||||
|
</div>
|
||||||
|
<div className="mb-6 text-lg">
|
||||||
|
<DateFormatter dateString={date} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PostHeader;
|
||||||
43
components/blog/post-preview.tsx
Normal file
43
components/blog/post-preview.tsx
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import Author from 'types/author';
|
||||||
|
import Avatar from './avatar';
|
||||||
|
import CoverImage from './cover-image';
|
||||||
|
import DateFormatter from './date-formatter';
|
||||||
|
import Link from 'next/link';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
title: string;
|
||||||
|
coverImage: string;
|
||||||
|
date: string;
|
||||||
|
excerpt: string;
|
||||||
|
author: Author;
|
||||||
|
slug: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const PostPreview = ({
|
||||||
|
title,
|
||||||
|
coverImage,
|
||||||
|
date,
|
||||||
|
excerpt,
|
||||||
|
author,
|
||||||
|
slug,
|
||||||
|
}: Properties): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className="mb-5">
|
||||||
|
<CoverImage slug={slug} title={title} src={coverImage} />
|
||||||
|
</div>
|
||||||
|
<h3 className="text-3xl mb-3 leading-snug">
|
||||||
|
<Link as={`/blog/${slug}`} href="/blog/[slug]">
|
||||||
|
<a className="hover:underline">{title}</a>
|
||||||
|
</Link>
|
||||||
|
</h3>
|
||||||
|
<div className="text-lg mb-4">
|
||||||
|
<DateFormatter dateString={date} />
|
||||||
|
</div>
|
||||||
|
<p className="text-lg leading-relaxed mb-4">{excerpt}</p>
|
||||||
|
<Avatar name={author.name} picture={author.picture} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PostPreview;
|
||||||
15
components/blog/post-title.tsx
Normal file
15
components/blog/post-title.tsx
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { ReactNode } from 'react';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
children?: ReactNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
const PostTitle = ({ children }: Properties): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<h1 className="text-5xl md:text-7xl lg:text-8xl font-bold tracking-tighter leading-tight md:leading-none mb-12 text-center md:text-left">
|
||||||
|
{children}
|
||||||
|
</h1>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PostTitle;
|
||||||
5
components/blog/section-separator.tsx
Normal file
5
components/blog/section-separator.tsx
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
const SectionSeparator = (): JSX.Element => {
|
||||||
|
return <hr className="border-neutral-200 mt-28 mb-24" />;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default SectionSeparator;
|
||||||
47
lib/api.ts
Normal file
47
lib/api.ts
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import fs from 'fs'
|
||||||
|
import { join } from 'path'
|
||||||
|
import matter from 'gray-matter'
|
||||||
|
|
||||||
|
const postsDirectory = join(process.cwd(), '_posts')
|
||||||
|
|
||||||
|
export function getPostSlugs() {
|
||||||
|
return fs.readdirSync(postsDirectory)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getPostBySlug(slug: string, fields: string[] = []) {
|
||||||
|
const realSlug = slug.replace(/\.md$/, '')
|
||||||
|
const fullPath = join(postsDirectory, `${realSlug}.md`)
|
||||||
|
const fileContents = fs.readFileSync(fullPath, 'utf8')
|
||||||
|
const { data, content } = matter(fileContents)
|
||||||
|
|
||||||
|
type Items = {
|
||||||
|
[key: string]: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const items: Items = {}
|
||||||
|
|
||||||
|
// Ensure only the minimal needed data is exposed
|
||||||
|
fields.forEach((field) => {
|
||||||
|
if (field === 'slug') {
|
||||||
|
items[field] = realSlug
|
||||||
|
}
|
||||||
|
if (field === 'content') {
|
||||||
|
items[field] = content
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof data[field] !== 'undefined') {
|
||||||
|
items[field] = data[field]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getAllPosts(fields: string[] = []) {
|
||||||
|
const slugs = getPostSlugs()
|
||||||
|
const posts = slugs
|
||||||
|
.map((slug) => getPostBySlug(slug, fields))
|
||||||
|
// sort posts by date in descending order
|
||||||
|
.sort((post1, post2) => (post1.date > post2.date ? -1 : 1))
|
||||||
|
return posts
|
||||||
|
}
|
||||||
7
lib/markdownToHtml.ts
Normal file
7
lib/markdownToHtml.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import html from 'remark-html';
|
||||||
|
import { remark } from 'remark';
|
||||||
|
|
||||||
|
export default async function markdownToHtml(markdown: string) {
|
||||||
|
const result = await remark().use(html).process(markdown);
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
@@ -21,7 +21,9 @@
|
|||||||
"axios": "^0.24.0",
|
"axios": "^0.24.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"daisyui": "^1.20.0",
|
"daisyui": "^1.20.0",
|
||||||
|
"date-fns": "^2.28.0",
|
||||||
"express-rate-limit": "^6.0.1",
|
"express-rate-limit": "^6.0.1",
|
||||||
|
"gray-matter": "^4.0.3",
|
||||||
"micro": "^9.3.4",
|
"micro": "^9.3.4",
|
||||||
"next": ">=12.0.7",
|
"next": ">=12.0.7",
|
||||||
"next-seo": "^4.28.1",
|
"next-seo": "^4.28.1",
|
||||||
@@ -30,6 +32,8 @@
|
|||||||
"react-feather": "^2.0.9",
|
"react-feather": "^2.0.9",
|
||||||
"react-icons": "^4.3.1",
|
"react-icons": "^4.3.1",
|
||||||
"react-toastify": "^8.1.0",
|
"react-toastify": "^8.1.0",
|
||||||
|
"remark": "^14.0.2",
|
||||||
|
"remark-html": "^15.0.1",
|
||||||
"stripe": "^8.195.0"
|
"stripe": "^8.195.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
59
pages/blog.tsx
Normal file
59
pages/blog.tsx
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import Container from 'components/blog/container';
|
||||||
|
import { GetStaticProps } from 'next/types';
|
||||||
|
import Head from 'next/head';
|
||||||
|
import HeroPost from 'components/blog/hero-post';
|
||||||
|
import Layout from 'components/Layout';
|
||||||
|
import MoreStories from 'components/blog/more-stories';
|
||||||
|
import Post from '../types/post';
|
||||||
|
import { getAllPosts } from '../lib/api';
|
||||||
|
|
||||||
|
type Properties = {
|
||||||
|
allPosts: Post[];
|
||||||
|
};
|
||||||
|
|
||||||
|
const Index = ({ allPosts }: Properties) => {
|
||||||
|
const heroPost = allPosts[0];
|
||||||
|
const morePosts = allPosts.slice(1);
|
||||||
|
return (
|
||||||
|
<Layout>
|
||||||
|
<>
|
||||||
|
<Head>
|
||||||
|
<title>{`${
|
||||||
|
process.env.NEXT_PUBLIC_TITLE ? process.env.NEXT_PUBLIC_TITLE : ''
|
||||||
|
} | Blog`}</title>
|
||||||
|
</Head>
|
||||||
|
<Container>
|
||||||
|
{heroPost && (
|
||||||
|
<HeroPost
|
||||||
|
title={heroPost.title}
|
||||||
|
coverImage={heroPost.coverImage}
|
||||||
|
date={heroPost.date}
|
||||||
|
author={heroPost.author}
|
||||||
|
slug={heroPost.slug}
|
||||||
|
excerpt={heroPost.excerpt}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{morePosts.length > 0 && <MoreStories posts={morePosts} />}
|
||||||
|
</Container>
|
||||||
|
</>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Index;
|
||||||
|
|
||||||
|
// eslint-disable-next-line unicorn/prevent-abbreviations
|
||||||
|
export const getStaticProps = (): GetStaticProps => {
|
||||||
|
const allPosts = getAllPosts([
|
||||||
|
'title',
|
||||||
|
'date',
|
||||||
|
'slug',
|
||||||
|
'author',
|
||||||
|
'coverImage',
|
||||||
|
'excerpt',
|
||||||
|
]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
props: { allPosts },
|
||||||
|
};
|
||||||
|
};
|
||||||
100
pages/blog/[slug].tsx
Normal file
100
pages/blog/[slug].tsx
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
import { getAllPosts, getPostBySlug } from 'lib/api';
|
||||||
|
|
||||||
|
import Container from 'components/blog/container';
|
||||||
|
import ErrorPage from 'next/error';
|
||||||
|
import Head from 'next/head';
|
||||||
|
import Header from 'components/blog/header';
|
||||||
|
import Layout from 'components/Layout';
|
||||||
|
import PostBody from 'components/blog/post-body';
|
||||||
|
import PostHeader from 'components/blog/post-header';
|
||||||
|
import PostTitle from 'components/blog/post-title';
|
||||||
|
import PostType from 'types/post';
|
||||||
|
import markdownToHtml from 'lib/markdownToHtml';
|
||||||
|
import { useRouter } from 'next/router';
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
post: PostType;
|
||||||
|
morePosts: PostType[];
|
||||||
|
preview?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Post = ({ post, morePosts, preview }: Props) => {
|
||||||
|
const router = useRouter();
|
||||||
|
if (!router.isFallback && !post?.slug) {
|
||||||
|
return <ErrorPage statusCode={404} />;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<Layout preview={preview}>
|
||||||
|
<Container>
|
||||||
|
{router.isFallback ? (
|
||||||
|
<PostTitle>Loading…</PostTitle>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<article className="mb-32">
|
||||||
|
<Head>
|
||||||
|
<title>
|
||||||
|
{post.title} | Next.js Blog Example with{' '}
|
||||||
|
{process.env.NEXT_PUBLIC_TITLE}
|
||||||
|
</title>
|
||||||
|
<meta property="og:image" content={post.ogImage.url} />
|
||||||
|
</Head>
|
||||||
|
<Header />
|
||||||
|
<PostHeader
|
||||||
|
title={post.title}
|
||||||
|
coverImage={post.coverImage}
|
||||||
|
date={post.date}
|
||||||
|
author={post.author}
|
||||||
|
/>
|
||||||
|
<PostBody content={post.content} />
|
||||||
|
</article>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</Container>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Post;
|
||||||
|
|
||||||
|
type Params = {
|
||||||
|
params: {
|
||||||
|
slug: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function getStaticProps({ params }: Params) {
|
||||||
|
const post = getPostBySlug(params.slug, [
|
||||||
|
'title',
|
||||||
|
'date',
|
||||||
|
'slug',
|
||||||
|
'author',
|
||||||
|
'content',
|
||||||
|
'ogImage',
|
||||||
|
'coverImage',
|
||||||
|
]);
|
||||||
|
const content = await markdownToHtml(post.content || '');
|
||||||
|
|
||||||
|
return {
|
||||||
|
props: {
|
||||||
|
post: {
|
||||||
|
...post,
|
||||||
|
content,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getStaticPaths() {
|
||||||
|
const posts = getAllPosts(['slug']);
|
||||||
|
|
||||||
|
return {
|
||||||
|
paths: posts.map((post) => {
|
||||||
|
return {
|
||||||
|
params: {
|
||||||
|
slug: post.slug,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
fallback: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
613
pnpm-lock.yaml
generated
613
pnpm-lock.yaml
generated
@@ -19,6 +19,7 @@ specifiers:
|
|||||||
axios: ^0.24.0
|
axios: ^0.24.0
|
||||||
cors: ^2.8.5
|
cors: ^2.8.5
|
||||||
daisyui: ^1.20.0
|
daisyui: ^1.20.0
|
||||||
|
date-fns: ^2.28.0
|
||||||
eslint: ^8.5.0
|
eslint: ^8.5.0
|
||||||
eslint-config-airbnb: ^19.0.4
|
eslint-config-airbnb: ^19.0.4
|
||||||
eslint-config-next: ^12.0.7
|
eslint-config-next: ^12.0.7
|
||||||
@@ -34,6 +35,7 @@ specifiers:
|
|||||||
eslint-plugin-sonarjs: ^0.11.0
|
eslint-plugin-sonarjs: ^0.11.0
|
||||||
eslint-plugin-unicorn: ^40.0.0
|
eslint-plugin-unicorn: ^40.0.0
|
||||||
express-rate-limit: ^6.0.1
|
express-rate-limit: ^6.0.1
|
||||||
|
gray-matter: ^4.0.3
|
||||||
micro: ^9.3.4
|
micro: ^9.3.4
|
||||||
next: '>=12.0.7'
|
next: '>=12.0.7'
|
||||||
next-seo: ^4.28.1
|
next-seo: ^4.28.1
|
||||||
@@ -44,6 +46,8 @@ specifiers:
|
|||||||
react-feather: ^2.0.9
|
react-feather: ^2.0.9
|
||||||
react-icons: ^4.3.1
|
react-icons: ^4.3.1
|
||||||
react-toastify: ^8.1.0
|
react-toastify: ^8.1.0
|
||||||
|
remark: ^14.0.2
|
||||||
|
remark-html: ^15.0.1
|
||||||
stripe: ^8.195.0
|
stripe: ^8.195.0
|
||||||
tailwindcss: ^3.0.7
|
tailwindcss: ^3.0.7
|
||||||
typescript: ^4.5.4
|
typescript: ^4.5.4
|
||||||
@@ -59,7 +63,9 @@ dependencies:
|
|||||||
axios: 0.24.0
|
axios: 0.24.0
|
||||||
cors: 2.8.5
|
cors: 2.8.5
|
||||||
daisyui: 1.20.0
|
daisyui: 1.20.0
|
||||||
|
date-fns: 2.28.0
|
||||||
express-rate-limit: 6.0.1
|
express-rate-limit: 6.0.1
|
||||||
|
gray-matter: 4.0.3
|
||||||
micro: 9.3.4
|
micro: 9.3.4
|
||||||
next: 12.0.7_react-dom@17.0.2+react@17.0.2
|
next: 12.0.7_react-dom@17.0.2+react@17.0.2
|
||||||
next-seo: 4.28.1_d837ce8f3acb2f60f8b7454672a9bcea
|
next-seo: 4.28.1_d837ce8f3acb2f60f8b7454672a9bcea
|
||||||
@@ -68,6 +74,8 @@ dependencies:
|
|||||||
react-feather: 2.0.9_react@17.0.2
|
react-feather: 2.0.9_react@17.0.2
|
||||||
react-icons: 4.3.1_react@17.0.2
|
react-icons: 4.3.1_react@17.0.2
|
||||||
react-toastify: 8.1.0_react-dom@17.0.2+react@17.0.2
|
react-toastify: 8.1.0_react-dom@17.0.2+react@17.0.2
|
||||||
|
remark: 14.0.2
|
||||||
|
remark-html: 15.0.1
|
||||||
stripe: 8.195.0
|
stripe: 8.195.0
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
@@ -1034,6 +1042,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==}
|
resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/debug/4.1.7:
|
||||||
|
resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
|
||||||
|
dependencies:
|
||||||
|
'@types/ms': 0.7.31
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/engine.io/3.1.7:
|
/@types/engine.io/3.1.7:
|
||||||
resolution: {integrity: sha512-qNjVXcrp+1sS8YpRUa714r0pgzOwESdW5UjHL7D/2ZFdBX0BXUXtg1LUrp+ylvqbvMcMWUy73YpRoxPN2VoKAQ==}
|
resolution: {integrity: sha512-qNjVXcrp+1sS8YpRUa714r0pgzOwESdW5UjHL7D/2ZFdBX0BXUXtg1LUrp+ylvqbvMcMWUy73YpRoxPN2VoKAQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1063,6 +1077,12 @@ packages:
|
|||||||
'@types/serve-static': 1.13.10
|
'@types/serve-static': 1.13.10
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/hast/2.3.4:
|
||||||
|
resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/istanbul-lib-coverage/2.0.3:
|
/@types/istanbul-lib-coverage/2.0.3:
|
||||||
resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==}
|
resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1087,6 +1107,16 @@ packages:
|
|||||||
resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=}
|
resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/mdast/3.0.10:
|
||||||
|
resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@types/mdurl/1.0.2:
|
||||||
|
resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/micro/7.3.6:
|
/@types/micro/7.3.6:
|
||||||
resolution: {integrity: sha512-rZHvZ3+Ev3cGJJSy/wtSiXZmafU8guI07PHXf4ku9sQLfDuFALHMCiV+LuH4VOaeMMMnRs8nqxU392gxfn661g==}
|
resolution: {integrity: sha512-rZHvZ3+Ev3cGJJSy/wtSiXZmafU8guI07PHXf4ku9sQLfDuFALHMCiV+LuH4VOaeMMMnRs8nqxU392gxfn661g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1100,6 +1130,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==}
|
resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/ms/0.7.31:
|
||||||
|
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/node/17.0.4:
|
/@types/node/17.0.4:
|
||||||
resolution: {integrity: sha512-6xwbrW4JJiJLgF+zNypN5wr2ykM9/jHcL7rQ8fZe2vuftggjzZeRSM4OwRc6Xk8qWjwJ99qVHo/JgOGmomWRog==}
|
resolution: {integrity: sha512-6xwbrW4JJiJLgF+zNypN5wr2ykM9/jHcL7rQ8fZe2vuftggjzZeRSM4OwRc6Xk8qWjwJ99qVHo/JgOGmomWRog==}
|
||||||
|
|
||||||
@@ -1168,6 +1202,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
|
resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/unist/2.0.6:
|
||||||
|
resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/websocket/1.0.4:
|
/@types/websocket/1.0.4:
|
||||||
resolution: {integrity: sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==}
|
resolution: {integrity: sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1441,6 +1479,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==}
|
resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/argparse/1.0.10:
|
||||||
|
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
|
||||||
|
dependencies:
|
||||||
|
sprintf-js: 1.0.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/argparse/2.0.1:
|
/argparse/2.0.1:
|
||||||
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1561,6 +1605,10 @@ packages:
|
|||||||
object.assign: 4.1.2
|
object.assign: 4.1.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/bail/2.0.2:
|
||||||
|
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/balanced-match/1.0.2:
|
/balanced-match/1.0.2:
|
||||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1742,6 +1790,10 @@ packages:
|
|||||||
/caniuse-lite/1.0.30001279:
|
/caniuse-lite/1.0.30001279:
|
||||||
resolution: {integrity: sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==}
|
resolution: {integrity: sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==}
|
||||||
|
|
||||||
|
/ccount/2.0.1:
|
||||||
|
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/chalk/2.4.2:
|
/chalk/2.4.2:
|
||||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -1766,6 +1818,18 @@ packages:
|
|||||||
supports-color: 7.2.0
|
supports-color: 7.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/character-entities-html4/2.1.0:
|
||||||
|
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/character-entities-legacy/3.0.0:
|
||||||
|
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/character-entities/2.0.1:
|
||||||
|
resolution: {integrity: sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/chokidar/3.5.1:
|
/chokidar/3.5.1:
|
||||||
resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==}
|
resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==}
|
||||||
engines: {node: '>= 8.10.0'}
|
engines: {node: '>= 8.10.0'}
|
||||||
@@ -1849,6 +1913,10 @@ packages:
|
|||||||
engines: {node: '>=0.1.90'}
|
engines: {node: '>=0.1.90'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/comma-separated-tokens/2.0.2:
|
||||||
|
resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/commander/8.3.0:
|
/commander/8.3.0:
|
||||||
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
|
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
|
||||||
engines: {node: '>= 12'}
|
engines: {node: '>= 12'}
|
||||||
@@ -2024,6 +2092,11 @@ packages:
|
|||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/date-fns/2.28.0:
|
||||||
|
resolution: {integrity: sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==}
|
||||||
|
engines: {node: '>=0.11'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/debug/2.6.9:
|
/debug/2.6.9:
|
||||||
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
|
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2045,7 +2118,12 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.2
|
ms: 2.1.2
|
||||||
dev: true
|
|
||||||
|
/decode-named-character-reference/1.0.1:
|
||||||
|
resolution: {integrity: sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==}
|
||||||
|
dependencies:
|
||||||
|
character-entities: 2.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/deep-is/0.1.4:
|
/deep-is/0.1.4:
|
||||||
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
||||||
@@ -2081,6 +2159,11 @@ packages:
|
|||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/dequal/2.0.2:
|
||||||
|
resolution: {integrity: sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/des.js/1.0.1:
|
/des.js/1.0.1:
|
||||||
resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==}
|
resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2107,6 +2190,11 @@ packages:
|
|||||||
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
|
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/diff/5.0.0:
|
||||||
|
resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==}
|
||||||
|
engines: {node: '>=0.3.1'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/diffie-hellman/5.0.3:
|
/diffie-hellman/5.0.3:
|
||||||
resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==}
|
resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2618,6 +2706,12 @@ packages:
|
|||||||
eslint-visitor-keys: 3.1.0
|
eslint-visitor-keys: 3.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/esprima/4.0.1:
|
||||||
|
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
|
||||||
|
engines: {node: '>=4'}
|
||||||
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/esquery/1.4.0:
|
/esquery/1.4.0:
|
||||||
resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
|
resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
|
||||||
engines: {node: '>=0.10'}
|
engines: {node: '>=0.10'}
|
||||||
@@ -2689,6 +2783,17 @@ packages:
|
|||||||
type: 2.5.0
|
type: 2.5.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/extend-shallow/2.0.1:
|
||||||
|
resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dependencies:
|
||||||
|
is-extendable: 0.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/extend/3.0.2:
|
||||||
|
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/extract-zip/2.0.1:
|
/extract-zip/2.0.1:
|
||||||
resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
|
resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
|
||||||
engines: {node: '>= 10.17.0'}
|
engines: {node: '>= 10.17.0'}
|
||||||
@@ -2924,6 +3029,16 @@ packages:
|
|||||||
/graceful-fs/4.2.8:
|
/graceful-fs/4.2.8:
|
||||||
resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==}
|
resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==}
|
||||||
|
|
||||||
|
/gray-matter/4.0.3:
|
||||||
|
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
|
||||||
|
engines: {node: '>=6.0'}
|
||||||
|
dependencies:
|
||||||
|
js-yaml: 3.14.1
|
||||||
|
kind-of: 6.0.3
|
||||||
|
section-matter: 1.0.0
|
||||||
|
strip-bom-string: 1.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/has-bigints/1.0.1:
|
/has-bigints/1.0.1:
|
||||||
resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==}
|
resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==}
|
||||||
|
|
||||||
@@ -2967,6 +3082,38 @@ packages:
|
|||||||
minimalistic-assert: 1.0.1
|
minimalistic-assert: 1.0.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/hast-util-is-element/2.1.2:
|
||||||
|
resolution: {integrity: sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==}
|
||||||
|
dependencies:
|
||||||
|
'@types/hast': 2.3.4
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/hast-util-sanitize/4.0.0:
|
||||||
|
resolution: {integrity: sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==}
|
||||||
|
dependencies:
|
||||||
|
'@types/hast': 2.3.4
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/hast-util-to-html/8.0.3:
|
||||||
|
resolution: {integrity: sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==}
|
||||||
|
dependencies:
|
||||||
|
'@types/hast': 2.3.4
|
||||||
|
ccount: 2.0.1
|
||||||
|
comma-separated-tokens: 2.0.2
|
||||||
|
hast-util-is-element: 2.1.2
|
||||||
|
hast-util-whitespace: 2.0.0
|
||||||
|
html-void-elements: 2.0.1
|
||||||
|
property-information: 6.1.1
|
||||||
|
space-separated-tokens: 2.0.1
|
||||||
|
stringify-entities: 4.0.2
|
||||||
|
unist-util-is: 5.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/hast-util-whitespace/2.0.0:
|
||||||
|
resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/he/1.2.0:
|
/he/1.2.0:
|
||||||
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
|
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -2984,6 +3131,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
|
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/html-void-elements/2.0.1:
|
||||||
|
resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/http-errors/1.6.2:
|
/http-errors/1.6.2:
|
||||||
resolution: {integrity: sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=}
|
resolution: {integrity: sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
@@ -3148,6 +3299,11 @@ packages:
|
|||||||
call-bind: 1.0.2
|
call-bind: 1.0.2
|
||||||
has-tostringtag: 1.0.0
|
has-tostringtag: 1.0.0
|
||||||
|
|
||||||
|
/is-buffer/2.0.5:
|
||||||
|
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
|
||||||
|
engines: {node: '>=4'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-builtin-module/3.1.0:
|
/is-builtin-module/3.1.0:
|
||||||
resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==}
|
resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -3177,6 +3333,11 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-extendable/0.1.1:
|
||||||
|
resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-extglob/2.1.1:
|
/is-extglob/2.1.1:
|
||||||
resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
|
resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -3216,6 +3377,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||||
engines: {node: '>=0.12.0'}
|
engines: {node: '>=0.12.0'}
|
||||||
|
|
||||||
|
/is-plain-obj/4.0.0:
|
||||||
|
resolution: {integrity: sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-regex/1.1.4:
|
/is-regex/1.1.4:
|
||||||
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
|
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@@ -3335,6 +3501,14 @@ packages:
|
|||||||
/js-tokens/4.0.0:
|
/js-tokens/4.0.0:
|
||||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||||
|
|
||||||
|
/js-yaml/3.14.1:
|
||||||
|
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
argparse: 1.0.10
|
||||||
|
esprima: 4.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/js-yaml/4.1.0:
|
/js-yaml/4.1.0:
|
||||||
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -3382,6 +3556,16 @@ packages:
|
|||||||
object.assign: 4.1.2
|
object.assign: 4.1.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/kind-of/6.0.3:
|
||||||
|
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/kleur/4.1.4:
|
||||||
|
resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/language-subtag-registry/0.3.21:
|
/language-subtag-registry/0.3.21:
|
||||||
resolution: {integrity: sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==}
|
resolution: {integrity: sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -3444,6 +3628,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/longest-streak/3.0.1:
|
||||||
|
resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/loose-envify/1.4.0:
|
/loose-envify/1.4.0:
|
||||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -3472,6 +3660,68 @@ packages:
|
|||||||
safe-buffer: 5.2.1
|
safe-buffer: 5.2.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/mdast-util-definitions/5.1.0:
|
||||||
|
resolution: {integrity: sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==}
|
||||||
|
dependencies:
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
unist-util-visit: 3.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/mdast-util-from-markdown/1.2.0:
|
||||||
|
resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==}
|
||||||
|
dependencies:
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
decode-named-character-reference: 1.0.1
|
||||||
|
mdast-util-to-string: 3.1.0
|
||||||
|
micromark: 3.0.10
|
||||||
|
micromark-util-decode-numeric-character-reference: 1.0.0
|
||||||
|
micromark-util-decode-string: 1.0.2
|
||||||
|
micromark-util-normalize-identifier: 1.0.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
unist-util-stringify-position: 3.0.0
|
||||||
|
uvu: 0.5.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/mdast-util-to-hast/12.1.0:
|
||||||
|
resolution: {integrity: sha512-dHfCt9Yh05AXEeghoziB3DjJV8oCIKdQmBJOPoAT1NlgMDBy+/MQn7Pxfq0jI8YRO1IfzcnmA/OU3FVVn/E5Sg==}
|
||||||
|
dependencies:
|
||||||
|
'@types/hast': 2.3.4
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
'@types/mdurl': 1.0.2
|
||||||
|
mdast-util-definitions: 5.1.0
|
||||||
|
mdurl: 1.0.1
|
||||||
|
micromark-util-sanitize-uri: 1.0.0
|
||||||
|
unist-builder: 3.0.0
|
||||||
|
unist-util-generated: 2.0.0
|
||||||
|
unist-util-position: 4.0.1
|
||||||
|
unist-util-visit: 4.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/mdast-util-to-markdown/1.2.6:
|
||||||
|
resolution: {integrity: sha512-doJZmTEGagHypWvJ8ltinmwUsT9ZaNgNIQW6Gl7jNdsI1QZkTHTimYW561Niy2s8AEPAqEgV0dIh2UOVlSXUJA==}
|
||||||
|
dependencies:
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
longest-streak: 3.0.1
|
||||||
|
mdast-util-to-string: 3.1.0
|
||||||
|
micromark-util-decode-string: 1.0.2
|
||||||
|
unist-util-visit: 4.1.0
|
||||||
|
zwitch: 2.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/mdast-util-to-string/3.1.0:
|
||||||
|
resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/mdurl/1.0.1:
|
||||||
|
resolution: {integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/merge-stream/2.0.0:
|
/merge-stream/2.0.0:
|
||||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -3492,6 +3742,182 @@ packages:
|
|||||||
raw-body: 2.3.2
|
raw-body: 2.3.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/micromark-core-commonmark/1.0.6:
|
||||||
|
resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==}
|
||||||
|
dependencies:
|
||||||
|
decode-named-character-reference: 1.0.1
|
||||||
|
micromark-factory-destination: 1.0.0
|
||||||
|
micromark-factory-label: 1.0.2
|
||||||
|
micromark-factory-space: 1.0.0
|
||||||
|
micromark-factory-title: 1.0.2
|
||||||
|
micromark-factory-whitespace: 1.0.0
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-chunked: 1.0.0
|
||||||
|
micromark-util-classify-character: 1.0.0
|
||||||
|
micromark-util-html-tag-name: 1.0.0
|
||||||
|
micromark-util-normalize-identifier: 1.0.0
|
||||||
|
micromark-util-resolve-all: 1.0.0
|
||||||
|
micromark-util-subtokenize: 1.0.2
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
uvu: 0.5.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-factory-destination/1.0.0:
|
||||||
|
resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-factory-label/1.0.2:
|
||||||
|
resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
uvu: 0.5.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-factory-space/1.0.0:
|
||||||
|
resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-factory-title/1.0.2:
|
||||||
|
resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==}
|
||||||
|
dependencies:
|
||||||
|
micromark-factory-space: 1.0.0
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
uvu: 0.5.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-factory-whitespace/1.0.0:
|
||||||
|
resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==}
|
||||||
|
dependencies:
|
||||||
|
micromark-factory-space: 1.0.0
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-character/1.1.0:
|
||||||
|
resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-chunked/1.0.0:
|
||||||
|
resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-classify-character/1.0.0:
|
||||||
|
resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-combine-extensions/1.0.0:
|
||||||
|
resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-chunked: 1.0.0
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-decode-numeric-character-reference/1.0.0:
|
||||||
|
resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-decode-string/1.0.2:
|
||||||
|
resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==}
|
||||||
|
dependencies:
|
||||||
|
decode-named-character-reference: 1.0.1
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-decode-numeric-character-reference: 1.0.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-encode/1.0.1:
|
||||||
|
resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-html-tag-name/1.0.0:
|
||||||
|
resolution: {integrity: sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-normalize-identifier/1.0.0:
|
||||||
|
resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-resolve-all/1.0.0:
|
||||||
|
resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-sanitize-uri/1.0.0:
|
||||||
|
resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-encode: 1.0.1
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-subtokenize/1.0.2:
|
||||||
|
resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==}
|
||||||
|
dependencies:
|
||||||
|
micromark-util-chunked: 1.0.0
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
uvu: 0.5.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-symbol/1.0.1:
|
||||||
|
resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark-util-types/1.0.2:
|
||||||
|
resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/micromark/3.0.10:
|
||||||
|
resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==}
|
||||||
|
dependencies:
|
||||||
|
'@types/debug': 4.1.7
|
||||||
|
debug: 4.3.2
|
||||||
|
decode-named-character-reference: 1.0.1
|
||||||
|
micromark-core-commonmark: 1.0.6
|
||||||
|
micromark-factory-space: 1.0.0
|
||||||
|
micromark-util-character: 1.1.0
|
||||||
|
micromark-util-chunked: 1.0.0
|
||||||
|
micromark-util-combine-extensions: 1.0.0
|
||||||
|
micromark-util-decode-numeric-character-reference: 1.0.0
|
||||||
|
micromark-util-encode: 1.0.1
|
||||||
|
micromark-util-normalize-identifier: 1.0.0
|
||||||
|
micromark-util-resolve-all: 1.0.0
|
||||||
|
micromark-util-sanitize-uri: 1.0.0
|
||||||
|
micromark-util-subtokenize: 1.0.2
|
||||||
|
micromark-util-symbol: 1.0.1
|
||||||
|
micromark-util-types: 1.0.2
|
||||||
|
uvu: 0.5.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
/micromatch/4.0.4:
|
/micromatch/4.0.4:
|
||||||
resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
|
resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
|
||||||
engines: {node: '>=8.6'}
|
engines: {node: '>=8.6'}
|
||||||
@@ -3536,12 +3962,16 @@ packages:
|
|||||||
/minimist/1.2.5:
|
/minimist/1.2.5:
|
||||||
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
|
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
|
||||||
|
|
||||||
|
/mri/1.2.0:
|
||||||
|
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
|
||||||
|
engines: {node: '>=4'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/ms/2.0.0:
|
/ms/2.0.0:
|
||||||
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
|
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
|
||||||
|
|
||||||
/ms/2.1.2:
|
/ms/2.1.2:
|
||||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ms/2.1.3:
|
/ms/2.1.3:
|
||||||
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
||||||
@@ -4124,6 +4554,10 @@ packages:
|
|||||||
signal-exit: 3.0.5
|
signal-exit: 3.0.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/property-information/6.1.1:
|
||||||
|
resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/proxy-from-env/1.1.0:
|
/proxy-from-env/1.1.0:
|
||||||
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
|
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -4335,6 +4769,45 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/remark-html/15.0.1:
|
||||||
|
resolution: {integrity: sha512-7ta5UPRqj8nP0GhGMYUAghZ/DRno7dgq7alcW90A7+9pgJsXzGJlFgwF8HOP1b1tMgT3WwbeANN+CaTimMfyNQ==}
|
||||||
|
dependencies:
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
hast-util-sanitize: 4.0.0
|
||||||
|
hast-util-to-html: 8.0.3
|
||||||
|
mdast-util-to-hast: 12.1.0
|
||||||
|
unified: 10.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/remark-parse/10.0.1:
|
||||||
|
resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==}
|
||||||
|
dependencies:
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
mdast-util-from-markdown: 1.2.0
|
||||||
|
unified: 10.1.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/remark-stringify/10.0.2:
|
||||||
|
resolution: {integrity: sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==}
|
||||||
|
dependencies:
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
mdast-util-to-markdown: 1.2.6
|
||||||
|
unified: 10.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/remark/14.0.2:
|
||||||
|
resolution: {integrity: sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==}
|
||||||
|
dependencies:
|
||||||
|
'@types/mdast': 3.0.10
|
||||||
|
remark-parse: 10.0.1
|
||||||
|
remark-stringify: 10.0.2
|
||||||
|
unified: 10.1.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: false
|
||||||
|
|
||||||
/resolve-from/4.0.0:
|
/resolve-from/4.0.0:
|
||||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -4389,6 +4862,13 @@ packages:
|
|||||||
queue-microtask: 1.2.3
|
queue-microtask: 1.2.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/sade/1.8.1:
|
||||||
|
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
dependencies:
|
||||||
|
mri: 1.2.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/safe-buffer/5.1.2:
|
/safe-buffer/5.1.2:
|
||||||
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
|
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
|
||||||
|
|
||||||
@@ -4413,6 +4893,14 @@ packages:
|
|||||||
object-assign: 4.1.1
|
object-assign: 4.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/section-matter/1.0.0:
|
||||||
|
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
|
||||||
|
engines: {node: '>=4'}
|
||||||
|
dependencies:
|
||||||
|
extend-shallow: 2.0.1
|
||||||
|
kind-of: 6.0.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/semver/5.7.1:
|
/semver/5.7.1:
|
||||||
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
|
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -4549,6 +5037,10 @@ packages:
|
|||||||
whatwg-url: 7.1.0
|
whatwg-url: 7.1.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/space-separated-tokens/2.0.1:
|
||||||
|
resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/spdx-correct/3.1.1:
|
/spdx-correct/3.1.1:
|
||||||
resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==}
|
resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4571,6 +5063,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==}
|
resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/sprintf-js/1.0.3:
|
||||||
|
resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/stack-utils/2.0.5:
|
/stack-utils/2.0.5:
|
||||||
resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==}
|
resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -4647,12 +5143,24 @@ packages:
|
|||||||
safe-buffer: 5.2.1
|
safe-buffer: 5.2.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/stringify-entities/4.0.2:
|
||||||
|
resolution: {integrity: sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==}
|
||||||
|
dependencies:
|
||||||
|
character-entities-html4: 2.1.0
|
||||||
|
character-entities-legacy: 3.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/strip-ansi/6.0.1:
|
/strip-ansi/6.0.1:
|
||||||
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex: 5.0.1
|
ansi-regex: 5.0.1
|
||||||
|
|
||||||
|
/strip-bom-string/1.0.0:
|
||||||
|
resolution: {integrity: sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/strip-bom/3.0.0:
|
/strip-bom/3.0.0:
|
||||||
resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=}
|
resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -4804,6 +5312,10 @@ packages:
|
|||||||
punycode: 2.1.1
|
punycode: 2.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/trough/2.0.2:
|
||||||
|
resolution: {integrity: sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/tsconfig-paths/3.11.0:
|
/tsconfig-paths/3.11.0:
|
||||||
resolution: {integrity: sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==}
|
resolution: {integrity: sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4886,6 +5398,72 @@ packages:
|
|||||||
has-symbols: 1.0.2
|
has-symbols: 1.0.2
|
||||||
which-boxed-primitive: 1.0.2
|
which-boxed-primitive: 1.0.2
|
||||||
|
|
||||||
|
/unified/10.1.1:
|
||||||
|
resolution: {integrity: sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
bail: 2.0.2
|
||||||
|
extend: 3.0.2
|
||||||
|
is-buffer: 2.0.5
|
||||||
|
is-plain-obj: 4.0.0
|
||||||
|
trough: 2.0.2
|
||||||
|
vfile: 5.3.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-builder/3.0.0:
|
||||||
|
resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-generated/2.0.0:
|
||||||
|
resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-is/5.1.1:
|
||||||
|
resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-position/4.0.1:
|
||||||
|
resolution: {integrity: sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-stringify-position/3.0.0:
|
||||||
|
resolution: {integrity: sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-visit-parents/4.1.1:
|
||||||
|
resolution: {integrity: sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
unist-util-is: 5.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-visit-parents/5.1.0:
|
||||||
|
resolution: {integrity: sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
unist-util-is: 5.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-visit/3.1.0:
|
||||||
|
resolution: {integrity: sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
unist-util-is: 5.1.1
|
||||||
|
unist-util-visit-parents: 4.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/unist-util-visit/4.1.0:
|
||||||
|
resolution: {integrity: sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
unist-util-is: 5.1.1
|
||||||
|
unist-util-visit-parents: 5.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/unpipe/1.0.0:
|
/unpipe/1.0.0:
|
||||||
resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=}
|
resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
@@ -4928,6 +5506,17 @@ packages:
|
|||||||
which-typed-array: 1.1.7
|
which-typed-array: 1.1.7
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/uvu/0.5.3:
|
||||||
|
resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
dequal: 2.0.2
|
||||||
|
diff: 5.0.0
|
||||||
|
kleur: 4.1.4
|
||||||
|
sade: 1.8.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/v8-compile-cache/2.3.0:
|
/v8-compile-cache/2.3.0:
|
||||||
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
|
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -4944,6 +5533,22 @@ packages:
|
|||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/vfile-message/3.1.0:
|
||||||
|
resolution: {integrity: sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
unist-util-stringify-position: 3.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/vfile/5.3.0:
|
||||||
|
resolution: {integrity: sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ==}
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.6
|
||||||
|
is-buffer: 2.0.5
|
||||||
|
unist-util-stringify-position: 3.0.0
|
||||||
|
vfile-message: 3.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/vm-browserify/1.1.2:
|
/vm-browserify/1.1.2:
|
||||||
resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
|
resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -5066,3 +5671,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/zwitch/2.0.2:
|
||||||
|
resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==}
|
||||||
|
dev: false
|
||||||
|
|||||||
1
public/blog/author/Avatar1.svg
Normal file
1
public/blog/author/Avatar1.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 6.8 KiB |
1
public/blog/author/Avatar2.svg
Normal file
1
public/blog/author/Avatar2.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 6.8 KiB |
BIN
public/blog/coverdefault.png
Normal file
BIN
public/blog/coverdefault.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
6
types/author.ts
Normal file
6
types/author.ts
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
type Author = {
|
||||||
|
name: string;
|
||||||
|
picture: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Author;
|
||||||
16
types/post.ts
Normal file
16
types/post.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import Author from './author';
|
||||||
|
|
||||||
|
type PostType = {
|
||||||
|
slug: string;
|
||||||
|
title: string;
|
||||||
|
date: string;
|
||||||
|
coverImage: string;
|
||||||
|
author: Author;
|
||||||
|
excerpt: string;
|
||||||
|
ogImage: {
|
||||||
|
url: string;
|
||||||
|
};
|
||||||
|
content: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default PostType;
|
||||||
Reference in New Issue
Block a user