diff --git a/website/gatsby-browser.js b/website/gatsby-browser.js index aeb631bda50..a04965d5213 100644 --- a/website/gatsby-browser.js +++ b/website/gatsby-browser.js @@ -1 +1,10 @@ +// https://github.com/FormidableLabs/prism-react-renderer/issues/53#issuecomment-546653848 +import Prism from "prismjs"; import "prismjs/themes/prism-tomorrow.css"; + +(typeof global !== "undefined" ? global : window).Prism = Prism; +require("prismjs/components/prism-csharp"); +require("prismjs/components/prism-graphql"); +require("prismjs/components/prism-json"); +require("prismjs/components/prism-bash"); +require("prismjs/components/prism-sql"); diff --git a/website/gatsby-config.js b/website/gatsby-config.js index 5dd092e779b..491cd3de901 100644 --- a/website/gatsby-config.js +++ b/website/gatsby-config.js @@ -38,6 +38,30 @@ module.exports = { `gatsby-plugin-ts`, `gatsby-plugin-styled-components`, `gatsby-plugin-react-helmet`, + `gatsby-remark-reading-time`, + { + resolve: `gatsby-plugin-mdx`, + options: { + extensions: [`.mdx`, `.md`], + gatsbyRemarkPlugins: [ + { + resolve: `gatsby-remark-mermaid`, + options: { + mermaidOptions: { + fontFamily: "sans-serif", + }, + }, + }, + { + resolve: `gatsby-remark-images`, + options: { + maxWidth: 800, + quality: 90, + }, + }, + ], + }, + }, { resolve: `gatsby-plugin-react-redux`, options: { @@ -80,58 +104,6 @@ module.exports = { }, }, `gatsby-transformer-json`, - { - resolve: `gatsby-transformer-remark`, - options: { - plugins: [ - { - resolve: `gatsby-remark-autolink-headers`, - options: { - offsetY: 60, - icon: ``, - }, - }, - `gatsby-remark-reading-time`, - { - resolve: `gatsby-remark-mermaid`, - options: { - mermaidOptions: { - fontFamily: "sans-serif", - }, - }, - }, - { - resolve: `gatsby-remark-code-buttons`, - options: { - tooltipText: `Copy`, - toasterText: "Copied code example", - }, - }, - { - resolve: `gatsby-remark-prismjs`, - options: { - showLineNumbers: false, - inlineCodeMarker: `±`, - languageExtensions: [ - { - language: "sdl", - extend: "graphql", - definition: {}, - insertBefore: {}, - }, - ], - }, - }, - { - resolve: `gatsby-remark-images`, - options: { - maxWidth: 800, - quality: 90, - }, - }, - ], - }, - }, `gatsby-transformer-sharp`, `gatsby-plugin-sharp`, { @@ -215,7 +187,7 @@ module.exports = { feeds: [ { query: `{ - allMarkdownRemark( + allMdx( limit: 100 filter: { frontmatter: { path: { regex: "//blog(/.*)?/" } } } sort: { order: DESC, fields: [frontmatter___date] }, @@ -244,14 +216,14 @@ module.exports = { }`, serialize: ({ query: { - allMarkdownRemark, + allMdx, site: { pathPrefix, siteMetadata: { siteUrl }, }, }, }) => - allMarkdownRemark.edges.map(({ node }) => { + allMdx.edges.map(({ node }) => { const date = new Date(Date.parse(node.frontmatter.date)); const imgSrcPattern = new RegExp( `(${pathPrefix})?/static/`, diff --git a/website/gatsby-node.js b/website/gatsby-node.js index 639ed5dad60..578ac8f7d04 100644 --- a/website/gatsby-node.js +++ b/website/gatsby-node.js @@ -8,7 +8,7 @@ exports.createPages = async ({ actions, graphql, reporter }) => { ); const result = await graphql(` { - blog: allMarkdownRemark( + blog: allMdx( limit: 1000 filter: { frontmatter: { path: { regex: "//blog(/.*)?/" } } } sort: { order: DESC, fields: [frontmatter___date] } @@ -124,7 +124,7 @@ exports.createPages = async ({ actions, graphql, reporter }) => { exports.onCreateNode = ({ node, actions, getNode }) => { const { createNodeField } = actions; - if (node.internal.type === `MarkdownRemark`) { + if (node.internal.type === `Mdx`) { const value = createFilePath({ node, getNode }); createNodeField({ name: `slug`, diff --git a/website/mdx.types.ts b/website/mdx.types.ts new file mode 100644 index 00000000000..540f929b0eb --- /dev/null +++ b/website/mdx.types.ts @@ -0,0 +1,34 @@ +declare module "@mdx-js/react" { + import * as React from "react"; + type ComponentType = + | "a" + | "blockquote" + | "code" + | "del" + | "em" + | "h1" + | "h2" + | "h3" + | "h4" + | "h5" + | "h6" + | "hr" + | "img" + | "inlineCode" + | "li" + | "ol" + | "p" + | "pre" + | "strong" + | "sup" + | "table" + | "td" + | "thematicBreak" + | "tr" + | "ul"; + export interface MDXProviderProps { + children: React.ReactNode; + components: Record>; + } + export class MDXProvider extends React.Component {} +} diff --git a/website/package.json b/website/package.json index a52659e5e8e..e9afd63cb8c 100644 --- a/website/package.json +++ b/website/package.json @@ -23,12 +23,15 @@ }, "dependencies": { "@darth-knoppix/gatsby-plugin-feed": "^2.0.2", + "@mdx-js/mdx": "^1.6.22", + "@mdx-js/react": "^1.6.22", "algoliasearch": "^4.8.3", "gatsby": "^2.30.1", "gatsby-image": "^2.9.0", "gatsby-plugin-disqus": "^1.2.2", "gatsby-plugin-google-analytics": "^2.9.0", "gatsby-plugin-manifest": "^2.10.0", + "gatsby-plugin-mdx": "^1.7.1", "gatsby-plugin-offline": "^3.8.0", "gatsby-plugin-react-helmet": "^3.8.0", "gatsby-plugin-react-redux": "^1.1.0-0", @@ -38,16 +41,14 @@ "gatsby-plugin-styled-components": "^3.8.0", "gatsby-plugin-ts": "^2.2.3", "gatsby-plugin-web-font-loader": "^1.0.4", - "gatsby-remark-autolink-headers": "^2.9.0", - "gatsby-remark-code-buttons": "^2.0.4", "gatsby-remark-images": "^3.9.0", "gatsby-remark-mermaid": "^2.1.0", - "gatsby-remark-prismjs": "^3.11.0", "gatsby-remark-reading-time": "^1.1.0", "gatsby-source-filesystem": "^2.9.0", "gatsby-transformer-json": "^2.9.0", - "gatsby-transformer-remark": "^2.14.0", "gatsby-transformer-sharp": "^2.10.0", + "github-slugger": "^1.3.0", + "prism-react-renderer": "^1.1.1", "prismjs": "^1.23.0", "puppeteer": "^5.5.0", "react": "^17.0.1", @@ -62,6 +63,7 @@ }, "devDependencies": { "@types/algoliasearch": "^3.34.10", + "@types/prismjs": "^1.16.2", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "@types/react-helmet": "^6.1.0", @@ -81,4 +83,4 @@ "pre-commit": "pretty-quick --pattern \"./**/*\" --staged" } } -} +} \ No newline at end of file diff --git a/website/src/blog/2019-01-24-schema-stitching.md b/website/src/blog/2019-01-24-schema-stitching.md index 723c4bcd023..20c152ff48a 100644 --- a/website/src/blog/2019-01-24-schema-stitching.md +++ b/website/src/blog/2019-01-24-schema-stitching.md @@ -171,7 +171,7 @@ foo(id:123) { Since, we did not want to cram a query like this into one string we allow this to be done with a flat path. -``` +```text foo(id:$arguments:arg1).bar.baz(top:1) ``` @@ -307,7 +307,7 @@ HTTP directives let you decorate a schema SDL and thus let you map REST services Moreover, we will introduce a cast feature to our delegation path. This will basically allow you to use fragments without having to write the code. -``` +```text foo.bar(a:1).qux(b:1) ``` diff --git a/website/src/components/articles/article-elements.tsx b/website/src/components/articles/article-elements.tsx index 95bbe7fb1e4..b2eede39a20 100644 --- a/website/src/components/articles/article-elements.tsx +++ b/website/src/components/articles/article-elements.tsx @@ -60,23 +60,6 @@ export const ArticleContent = styled.div` } } - > .gatsby-code-button-container { - padding: 0; - } - - > .gatsby-highlight { - padding-right: 0; - padding-left: 0; - - > pre[class*="language-"] { - padding: 30px 20px; - - ::before { - left: 20px; - } - } - } - @media only screen and (min-width: 820px) { > * { padding-right: 50px; @@ -108,10 +91,6 @@ export const ArticleContent = styled.div` } } - > .gatsby-code-button-container { - padding: 0; - } - > .gatsby-highlight { > pre[class*="language-"] { padding-right: 50px; diff --git a/website/src/components/articles/article-sections.tsx b/website/src/components/articles/article-sections.tsx index f65643e23be..31592b8715f 100644 --- a/website/src/components/articles/article-sections.tsx +++ b/website/src/components/articles/article-sections.tsx @@ -1,8 +1,15 @@ -import { graphql } from "gatsby"; -import React, { FunctionComponent, useCallback, useEffect } from "react"; -import { useDispatch } from "react-redux"; +import { graphql, Link } from "gatsby"; +import React, { + Fragment, + FunctionComponent, + useCallback, + useEffect, + useState, +} from "react"; +import { useDispatch, useSelector } from "react-redux"; import styled from "styled-components"; import { ArticleSectionsFragment } from "../../../graphql-types"; +import { State } from "../../state"; import { closeAside } from "../../state/common"; import { MostProminentSection } from "../doc-page/doc-page-elements"; @@ -14,86 +21,92 @@ export const ArticleSections: FunctionComponent = ({ data, }) => { const dispatch = useDispatch(); + const [activeHeadingId, setActiveHeadingId] = useState(); + const [headings, setHeadings] = useState([]); + const yScrollPosition = useSelector( + (state) => state.common.yScrollPosition + ); const handleCloseClick = useCallback(() => { dispatch(closeAside()); }, []); useEffect(() => { - const ids = data - .tableOfContents!.split(/"|\//) - .filter((item) => item.indexOf("#") === 0) - .map((item) => { - const id = item.substring(1); - - return { - id: `toc-${id}`, - position: document.getElementById(id)!.offsetTop - 80, - }; - }) + const result = ((data.tableOfContents.items as TableOfContentItem[]) ?? []) + .flatMap((item) => [item, ...(item.items ?? [])]) + .map((item) => ({ + id: item.url, + position: + document.getElementById(item.url.substring(1))!.offsetTop - 80, + })) .reverse(); - let currentActiveId: string | undefined; - - const handler = () => { - const currentScrollPosition = - document.body.scrollTop || document.documentElement.scrollTop; - let newActiveId: string | undefined; - - for (let i = 0; i < ids.length; i++) { - if (currentScrollPosition >= ids[i].position) { - newActiveId = ids[i].id; - break; - } - } - - if (currentActiveId !== newActiveId) { - if (currentActiveId) { - document.getElementById(currentActiveId)!.parentElement!.className = - ""; - } - - currentActiveId = newActiveId; - - if (currentActiveId) { - document.getElementById(currentActiveId)!.parentElement!.className = - "active"; - } - } - }; - - if (ids.length > 0) { - document.addEventListener("scroll", handler); - } - - return () => { - if (ids.length > 0) { - document.removeEventListener("scroll", handler); - } - }; + + setHeadings(result); }, [data]); - return data.tableOfContents!.length > 0 ? ( + useEffect(() => { + setActiveHeadingId( + headings.find((id) => yScrollPosition >= id.position)?.id + ); + }, [headings, yScrollPosition]); + + const tocItems: TableOfContentItem[] = data.tableOfContents.items ?? []; + + return tocItems.length > 0 ? ( In this article - +
+ +
- ) : ( - <> + ) : null; +}; + +interface Heading { + id: string; + position: number; +} + +interface TableOfContentProps { + items: TableOfContentItem[]; + activeHeadingId: string | undefined; +} + +const TableOfContent: FunctionComponent = ({ + items, + activeHeadingId, +}) => { + return ( + + {items.map((item) => ( + + + {item.title} + + {item.items && ( + + )} + + ))} + ); }; +interface TableOfContentItem { + title: string; + url: string; + items?: TableOfContentItem[]; +} + export const ArticleSectionsGraphQLFragment = graphql` - fragment ArticleSections on MarkdownRemark { + fragment ArticleSections on Mdx { tableOfContents(maxDepth: 2) } `; @@ -111,47 +124,38 @@ const Title = styled.h6` } `; -const Content = styled.div` - ul { - display: flex; - flex-direction: column; - margin: 0; - padding: 0 25px 10px; - list-style-type: none; - - li { - flex: 0 0 auto; - margin: 5px 0; - padding: 0; - line-height: initial; - - > p { - margin: 0; - padding: 0; - } - - > ul { - padding-right: 0; - } - - &.active > a, - > p.active > a { - font-weight: bold; - } - - > a, - > p > a { - font-size: 0.833em; - color: #666; - - :hover { - color: #000; - } - } - } - - @media only screen and (min-width: 1320px) { - padding: 0 20px 10px; - } +const TocItemContainer = styled.ul` + display: flex; + flex-direction: column; + margin: 0; + padding: 0 25px 10px; + list-style-type: none; + + @media only screen and (min-width: 1320px) { + padding: 0 20px 10px; + } +`; + +const TocLink = styled((props) => )` + font-size: 0.833em; + color: #666; + + :hover { + color: #000; + } +`; + +const TocListItem = styled.li` + flex: 0 0 auto; + margin: 5px 0; + padding: 0; + line-height: initial; + + > ${TocItemContainer} { + padding-right: 0; + } + + &.active > ${TocLink} { + font-weight: bold; } `; diff --git a/website/src/components/blog-article/blog-article-metadata.tsx b/website/src/components/blog-article/blog-article-metadata.tsx index afc3b55f34d..5f2e74b7f99 100644 --- a/website/src/components/blog-article/blog-article-metadata.tsx +++ b/website/src/components/blog-article/blog-article-metadata.tsx @@ -23,7 +23,7 @@ export const BlogArticleMetadata: FunctionComponent = ({ - data: { markdownRemark, site }, + data: { mdx, site }, tags, }) => { - const { frontmatter } = markdownRemark!; + const { frontmatter } = mdx!; const articelUrl = site!.siteMetadata!.siteUrl! + frontmatter!.path!; const title = frontmatter!.title!; @@ -39,7 +39,7 @@ export const BlogArticleSharebar: FunctionComponent = ({ }; export const BlogArticleTagsGraphQLFragment = graphql` - fragment BlogArticleTags on MarkdownRemarkFrontmatter { + fragment BlogArticleTags on MdxFrontmatter { tags } `; diff --git a/website/src/components/blog-article/blog-article.tsx b/website/src/components/blog-article/blog-article.tsx index 80f6da1b79b..656350002a4 100644 --- a/website/src/components/blog-article/blog-article.tsx +++ b/website/src/components/blog-article/blog-article.tsx @@ -1,5 +1,6 @@ import { graphql } from "gatsby"; import Img, { FluidObject } from "gatsby-image"; +import { MDXRenderer } from "gatsby-plugin-mdx"; import React, { FunctionComponent } from "react"; import styled from "styled-components"; import { BlogArticleFragment } from "../../../graphql-types"; @@ -22,8 +23,8 @@ interface BlogArticleProperties { export const BlogArticle: FunctionComponent = ({ data, }) => { - const { markdownRemark } = data; - const { frontmatter, html } = markdownRemark!; + const { mdx } = data; + const { frontmatter, body } = mdx!; const path = frontmatter!.path!; const title = frontmatter!.title!; const existingTags: string[] = frontmatter!.tags! @@ -40,10 +41,12 @@ export const BlogArticle: FunctionComponent = ({ {featuredImage && } {title} - + - + + {body} + @@ -53,7 +56,7 @@ export const BlogArticle: FunctionComponent = ({ export const BlogArticleGraphQLFragment = graphql` fragment BlogArticle on Query { - markdownRemark(frontmatter: { path: { eq: $path } }) { + mdx(frontmatter: { path: { eq: $path } }) { excerpt frontmatter { featuredImage { @@ -67,7 +70,7 @@ export const BlogArticleGraphQLFragment = graphql` title ...BlogArticleTags } - html + body ...BlogArticleMetadata } ...ArticleComments diff --git a/website/src/components/doc-page/doc-page.tsx b/website/src/components/doc-page/doc-page.tsx index c92deb02510..a7379687299 100644 --- a/website/src/components/doc-page/doc-page.tsx +++ b/website/src/components/doc-page/doc-page.tsx @@ -31,6 +31,7 @@ import { ArticleWrapperElement, } from "./doc-page-article-wrapper"; import { State } from "../../state"; +import { MDXRenderer } from "gatsby-plugin-mdx"; interface DocPageProperties { data: DocPageFragment; @@ -42,7 +43,7 @@ export const DocPage: FunctionComponent = ({ originPath, }) => { const dispatch = useDispatch(); - const { fields, frontmatter, html } = data.file!.childMarkdownRemark!; + const { fields, frontmatter, body } = data.file!.childMdx!; const slug = fields!.slug!.substring(1); const path = `/docs/${slug}`; const productAndVersionPattern = /^([\w-]*?)\/(v\d+)?/g; @@ -91,14 +92,16 @@ export const DocPage: FunctionComponent = ({ {title} - + + {body} + {false && } - + ); @@ -110,14 +113,14 @@ export const DocPageGraphQLFragment = graphql` sourceInstanceName: { eq: "docs" } relativePath: { eq: $originPath } ) { - childMarkdownRemark { + childMdx { fields { slug } frontmatter { title } - html + body ...ArticleSections } } diff --git a/website/src/components/mdx/auto-linked-heading.tsx b/website/src/components/mdx/auto-linked-heading.tsx new file mode 100644 index 00000000000..807da26649b --- /dev/null +++ b/website/src/components/mdx/auto-linked-heading.tsx @@ -0,0 +1,66 @@ +import { Link } from "gatsby"; +import React, { FunctionComponent } from "react"; +import styled from "styled-components"; +import { IsSmallDesktop, IsPhablet } from "../doc-page/shared-style"; +const slugger = require("github-slugger").slug; + +interface AutoLinkedHeadingProps { + size: "h1" | "h2" | "h3" | "h4" | "h5" | "h6"; +} + +export const AutoLinkedHeading: FunctionComponent = ({ + children, + size, +}) => { + const slug = slugger(children); + + return ( + + + + + + + + + {children} + + ); +}; + +const RelativeAnchor = styled.span` + position: relative; +`; + +const AutoLink = styled(Link)` + position: absolute; + top: 0; + left: -20px; + + scroll-margin-top: 26px; + + ${IsSmallDesktop(` + scroll-margin-top: 58px; + `)} + + ${IsPhablet(` + scroll-margin-top: 64px; + `)} +`; + +const Heading = styled.h1` + ${AutoLink} { + visibility: hidden; + } + + :hover { + ${AutoLink} { + visibility: visible; + } + } +`; diff --git a/website/src/components/mdx/code-block.tsx b/website/src/components/mdx/code-block.tsx new file mode 100644 index 00000000000..d18f338bc42 --- /dev/null +++ b/website/src/components/mdx/code-block.tsx @@ -0,0 +1,210 @@ +import React, { FunctionComponent } from "react"; +import styled from "styled-components"; +import Highlight, { Language } from "prism-react-renderer"; +import Prism from "prismjs"; +import { Copy } from "./copy"; + +interface CodeBlockProps { + children: any; +} + +export const CodeBlock: FunctionComponent = ({ children }) => { + const language = children.props.className.replace( + /language-/, + "" + ) as Language; + const meta = children.props.metastring; + const shouldHighlightLine = calculateLinesToHighlight(meta); + const code = children.props.children; + + return ( + + + + + + + {({ className, style, tokens, getLineProps, getTokenProps }) => ( +
+            {tokens.map((line, i) => (
+              
+                
+                  {line.map((token, key) => (
+                    
+                  ))}
+                
+              
+            ))}
+          
+ )} +
+
+ ); +}; + +interface CodeIndicatorProps { + language: string; +} + +const CodeIndicator: FunctionComponent = ({ language }) => { + const codeLanguage = codeLanguages[language]; + + return codeLanguage ? ( + + {codeLanguage.content} + + ) : null; +}; + +const codeLanguages: Record< + string, + { content: string; color: string; background: string } +> = { + csharp: { + content: "C#", + color: "#4f3903", + background: "#ffb806", + }, + bash: { + content: "Bash", + color: "#333", + background: "#0fd", + }, + graphql: { + content: "GraphQL", + color: "#fff", + background: "#e535ab", + }, + http: { + content: "HTTP", + color: "#efeaff", + background: "#8b76cc", + }, + json: { + content: "JSON", + color: "#fff", + background: "#1da0f2", + }, + sdl: { + content: "SDL", + + color: "#fff", + background: "#e535ab", + }, + sql: { + content: "SQL", + color: "#fff", + background: "#80f", + }, + xml: { + content: "XML", + color: "#fff", + background: "#999", + }, +}; + +const IndicatorContent = styled.div` + position: absolute; + z-index: 1; + top: 0; + left: 50px; + border-radius: 0px 0px 4px 4px; + padding: 2px 8px; + font-size: 0.8em; + font-weight: bold; + letter-spacing: 0.075em; + line-height: 1em; + text-transform: uppercase; +`; + +const matchHighlights = /{([\d,-]+)}/; + +const calculateLinesToHighlight = ( + meta: string +): ((index: number) => boolean) => { + if (!matchHighlights.test(meta)) { + return () => false; + } + + const lineNumbers = matchHighlights + .exec(meta)![1] + .split(",") + .map((v) => v.split("-").map((v) => parseInt(v, 10))); + + return (index) => { + const lineNumber = index + 1; + const inRange = lineNumbers.some(([start, end]) => + end ? lineNumber >= start && lineNumber <= end : lineNumber === start + ); + return inRange; + }; +}; + +const Pre = styled.pre` + position: relative; + overflow: scroll; + + & .token-line { + line-height: 1.3em; + height: 1.3em; + } +`; + +interface LineProps { + highlight: boolean; +} + +const Line = styled.div` + display: table-row; + + ${({ highlight }) => + highlight && + ` + display: block; + background-color: #444; + margin: 0 -50px; + padding: 0 50px; + `}; +`; + +const LineContent = styled.span` + display: table-cell; +`; + +const Container = styled.div` + position: relative; + margin: 20px 0; + overflow: initial; + font-size: 0.833em !important; + padding-right: 0 !important; + padding-left: 0 !important; + + * { + font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; + line-height: 1.5em !important; + } + + > pre[class*="language-"] { + margin: 0; + padding: 30px 20px; + } +`; + +const CopyPosition = styled.div` + position: absolute; + z-index: 1; + top: 0; + right: 0; +`; diff --git a/website/src/components/mdx/copy.tsx b/website/src/components/mdx/copy.tsx new file mode 100644 index 00000000000..d3c981d09a4 --- /dev/null +++ b/website/src/components/mdx/copy.tsx @@ -0,0 +1,105 @@ +import React, { FunctionComponent, useState } from "react"; +import styled from "styled-components"; + +function copyToClipboard(content: string): void { + const el = document.createElement(`textarea`); + el.value = content; + el.setAttribute(`readonly`, ``); + el.style.position = `absolute`; + el.style.left = `-9999px`; + document.body.appendChild(el); + el.select(); + document.execCommand(`copy`); + document.body.removeChild(el); +} + +interface CoopyProps { + content: string; +} + +export const Copy: FunctionComponent = ({ content }) => { + const [showToast, setShowToast] = useState(false); + + return ( + <> + { + copyToClipboard(content); + + setShowToast(true); + setTimeout(() => { + setShowToast(false); + }, 3000); + }} + > + + + + + + {showToast && } + + ); +}; + +const CopySuccessToast: FunctionComponent = () => { + return ( + + Copied code example + + ); +}; + +const ToastText = styled.div` + font-size: 1.25rem; + font-family: sans-serif; + font-weight: bold; + color: #fff; +`; + +const ToastContainer = styled.div` + position: fixed; + left: 50%; + bottom: 30px; + transform: translateX(-50%); + z-index: 9999; + + background-color: #f40010; + box-shadow: 0px 3px 6px 0px #828282; + padding: 20px; + border-radius: 4px; + opacity: 0; + animation: animation 3s cubic-bezier(0.98, 0.01, 0.53, 0.47); + + @keyframes animation { + 0%, + 50% { + opacity: 1; + } + + 50%, + 100% { + opacity: 0; + } + } +`; + +const CopyIconButton = styled.button` + display: flex; + align-items: center; + justify-content: center; + border-radius: 0 0 0 4px; + padding: 8px 8px; + background-color: #aaa; + + > svg { + width: 18px; + height: 18px; + fill: #2d2d2d; + } +`; diff --git a/website/src/components/mdx/example-tabs.tsx b/website/src/components/mdx/example-tabs.tsx new file mode 100644 index 00000000000..26a0b865254 --- /dev/null +++ b/website/src/components/mdx/example-tabs.tsx @@ -0,0 +1,39 @@ +import React, { FunctionComponent } from "react"; +import { Tabs } from "./tabs"; + +export interface ExampleTabsComposition { + Annotation: FunctionComponent; + Code: FunctionComponent; + Schema: FunctionComponent; +} + +export const ExampleTabs: FunctionComponent & ExampleTabsComposition = ({ + children, +}) => { + return ( + + + Annotation-based + Code-first + Schema-first + + {children} + + ); +}; + +const Annotation: FunctionComponent = ({ children }) => ( + {children} +); + +const Code: FunctionComponent = ({ children }) => ( + {children} +); + +const Schema: FunctionComponent = ({ children }) => ( + {children} +); + +ExampleTabs.Annotation = Annotation; +ExampleTabs.Code = Code; +ExampleTabs.Schema = Schema; diff --git a/website/src/components/mdx/tabs/index.tsx b/website/src/components/mdx/tabs/index.tsx new file mode 100644 index 00000000000..aee022070b6 --- /dev/null +++ b/website/src/components/mdx/tabs/index.tsx @@ -0,0 +1 @@ +export { Tabs } from "./tabs"; diff --git a/website/src/components/mdx/tabs/list.tsx b/website/src/components/mdx/tabs/list.tsx new file mode 100644 index 00000000000..cc1dad02e10 --- /dev/null +++ b/website/src/components/mdx/tabs/list.tsx @@ -0,0 +1,15 @@ +import styled from "styled-components"; + +export const List = styled.div` + display: flex; + gap: 2rem; + background-color: #e7e9eb; + + ~ .gatsby-highlight { + margin-top: 0; + } + + ~ p { + margin-top: 14px; + } +`; diff --git a/website/src/components/mdx/tabs/panel.tsx b/website/src/components/mdx/tabs/panel.tsx new file mode 100644 index 00000000000..9ee6cce501f --- /dev/null +++ b/website/src/components/mdx/tabs/panel.tsx @@ -0,0 +1,12 @@ +import React, { FunctionComponent } from "react"; +import { useTabs } from "./tabs"; + +export interface PanelProps { + value: string; +} + +export const Panel: FunctionComponent = (props) => { + const { activeTab } = useTabs(); + + return activeTab === props.value ? <>{props.children} : null; +}; diff --git a/website/src/components/mdx/tabs/tab.tsx b/website/src/components/mdx/tabs/tab.tsx new file mode 100644 index 00000000000..ee6082c68b3 --- /dev/null +++ b/website/src/components/mdx/tabs/tab.tsx @@ -0,0 +1,40 @@ +import React, { FunctionComponent } from "react"; +import styled from "styled-components"; +import { useTabs } from "./tabs"; + +export interface TabProps { + value: string; +} + +export const Tab: FunctionComponent = ({ value, children }) => { + const { activeTab, setActiveTab } = useTabs(); + + return ( + setActiveTab(value)} + > + {children} + + ); +}; + +const TabButton = styled.button` + padding: 1rem 0.25rem; + font-size: 0.95rem; + line-height: 1.2; + color: #666677; + + :hover { + color: #2d2d35; + } + + &.active { + color: #000; + font-weight: 700; + } + + @media only screen and (min-width: 820px) { + font-size: 18px; + } +`; diff --git a/website/src/components/mdx/tabs/tabs.tsx b/website/src/components/mdx/tabs/tabs.tsx new file mode 100644 index 00000000000..04dbd4cbe66 --- /dev/null +++ b/website/src/components/mdx/tabs/tabs.tsx @@ -0,0 +1,60 @@ +import React, { + createContext, + FunctionComponent, + useContext, + useMemo, + useState, +} from "react"; +import { Tab, TabProps } from "./tab"; +import { Panel, PanelProps } from "./panel"; +import { List } from "./list"; + +interface TabsContext { + activeTab: string; + setActiveTab: (value: string) => void; +} + +export interface TabsComposition { + Tab: FunctionComponent; + Panel: FunctionComponent; + List: FunctionComponent; +} + +const TabsContext = createContext(undefined); + +export interface TabsProps { + defaultValue: string; +} + +export const Tabs: FunctionComponent & TabsComposition = ({ + defaultValue, + children, +}) => { + const [activeTab, setActiveTab] = useState(defaultValue); + + const memoizedContextValue = useMemo( + () => ({ + activeTab, + setActiveTab, + }), + [activeTab, setActiveTab] + ); + + return ( + + {children} + + ); +}; + +export const useTabs = (): TabsContext => { + const context = useContext(TabsContext); + if (!context) { + throw new Error("This component must be used within a component."); + } + return context; +}; + +Tabs.Tab = Tab; +Tabs.Panel = Panel; +Tabs.List = List; diff --git a/website/src/components/misc/global-style.tsx b/website/src/components/misc/global-style.tsx index e0f2830856a..611b93d8b81 100644 --- a/website/src/components/misc/global-style.tsx +++ b/website/src/components/misc/global-style.tsx @@ -44,7 +44,6 @@ export const GlobalStyle = createGlobalStyle` * { margin: 0; padding: 0; - /*user-select: none;*/ font-family: sans-serif; font-size: 1em; line-height: 1em; @@ -88,8 +87,9 @@ export const GlobalStyle = createGlobalStyle` margin-bottom: 20px; line-height: 1.667em; - code[class*="language-"] { + code { padding: 2px 5px; + font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 0.833em; } } @@ -219,165 +219,6 @@ export const GlobalStyle = createGlobalStyle` padding-right: 0; } - .gatsby-code-button-container { - position: relative; - top: 54px; - z-index: 1; - display: flex; - margin: -34px 0 0; - - > .gatsby-code-button { - position: relative; - display: flex; - align-items: center; - justify-content: center; - border-radius: 0 0 0 4px; - padding: 8px 8px; - background-color: #aaa; - transition: all 0.4s ease-in; - - &:after { - visibility: hidden; - position: initial; - display: none; - } - - &:hover { - &:after { - visibility: hidden; - display: none; - } - - > svg { - fill: #2d2d2d; - } - } - - &:focus:after { - visibility: hidden; - display: none; - } - - > svg { - width: 18px; - height: 18px; - fill: #2d2d2d; - } - } - } - - .gatsby-code-button-toaster { - top: initial; - right: 0; - bottom: 30px; - left: 0; - display: flex; - justify-content: center; - width: 100%; - height: initial; - - > .gatsby-code-button-toaster-text { - flex: 0 0 60%; - border-radius: 4px; - font-family: sans-serif; - font-size: 1em; - font-weight: bold; - line-height: 1em; - background-color: #aaa; - color: #667; - } - - @media only screen and (min-width: 400px) { - > .gatsby-code-button-toaster-text { - max-width: 300px; - } - } - } - - .gatsby-highlight { - position: relative; - margin: 20px 0; - overflow: initial; - font-size: 0.833em !important; - - * { - font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; - line-height: 1.5em !important; - } - - > pre[class*="language-"] { - margin: 0; - - ::before { - position: absolute; - top: 0; - left: 50px; - border-radius: 0px 0px 4px 4px; - padding: 6px 8px; - font-size: 0.800em; - font-weight: bold; - letter-spacing: 0.075em; - line-height: 1em; - text-transform: uppercase; - } - } - - > pre[class="language-bash"]::before { - content: "Bash"; - color: #333; - background: #0fd; - } - - > pre[class="language-csharp"]::before { - content: "C#"; - color: #4f3903; - background: #ffb806; - } - - > pre[class="language-graphql"]::before { - content: "GraphQL"; - color: #fff; - background: #e535ab; - } - - > pre[class="language-http"]::before { - content: "HTTP"; - color: #efeaff; - background: #8b76cc; - } - - > pre[class="language-json"]::before { - content: "JSON"; - color: #fff; - background: #1da0f2; - } - - > pre[class="language-sdl"]::before { - content: "SDL"; - color: #fff; - background: #e535ab; - } - - > pre[class="language-sql"]::before { - content: "SQL"; - color: #fff; - background: #80f; - } - - > pre[class="language-xml"]::before { - content: "XML"; - color: #fff; - background: #999; - } - } - - .gatsby-highlight-code-line { - background-color: #444; - display: block; - margin: 0 -50px; - padding: 0 50px; - } - .mermaid { display: flex; justify-content: center; @@ -386,71 +227,10 @@ export const GlobalStyle = createGlobalStyle` } /* Inline code style */ - :not(pre) > code[class*="language-"] { + :not(pre) > code { border: 1px solid #aaa; + border-radius: .3em; background-color: initial; color: #666; - - .token.comment, - .token.block-comment, - .token.prolog, - .token.doctype, - .token.cdata { - color: #999; - } - - .token.punctuation { - color: #666; - } - - .token.tag, - .token.attr-name, - .token.namespace, - .token.deleted { - color: #e2777a; - } - - .token.function-name { - color: #6196cc; - } - - .token.boolean, - .token.number, - .token.function { - color: #f08d49; - } - - .token.property, - .token.class-name, - .token.constant, - .token.symbol { - color: #f8c555; - } - - .token.selector, - .token.important, - .token.atrule, - .token.keyword, - .token.builtin { - color: #cc99cd; - } - - .token.string, - .token.char, - .token.attr-value, - .token.regex, - .token.variable { - color: #7ec699; - } - - .token.operator, - .token.entity, - .token.url { - color: #67cdcc; - } - - .token.inserted { - color: green; - } } `; diff --git a/website/src/components/structure/layout.tsx b/website/src/components/structure/layout.tsx index ca29f90af79..76f6d41ef5e 100644 --- a/website/src/components/structure/layout.tsx +++ b/website/src/components/structure/layout.tsx @@ -3,6 +3,9 @@ import { GlobalStyle } from "../misc/global-style"; import { Header } from "./header"; import { CookieConsent } from "../misc/cookie-consent"; import { MainContentContainer } from "./main-content-container/main-content-container"; +import { MDXProvider } from "@mdx-js/react"; +import { CodeBlock } from "../mdx/code-block"; +import { AutoLinkedHeading } from "../mdx/auto-linked-heading"; export const Layout: FunctionComponent = ({ children }) => { useEffect(() => { @@ -20,11 +23,23 @@ export const Layout: FunctionComponent = ({ children }) => { } }); + const components = { + pre: CodeBlock, + h1: (props: any) => , + h2: (props: any) => , + h3: (props: any) => , + h4: (props: any) => , + h5: (props: any) => , + h6: (props: any) => , + }; + return ( <>
- {children} + + {children} + ); diff --git a/website/src/components/widgets/blog-articles.tsx b/website/src/components/widgets/blog-articles.tsx index 58742b05394..ef14bf7e52f 100644 --- a/website/src/components/widgets/blog-articles.tsx +++ b/website/src/components/widgets/blog-articles.tsx @@ -56,7 +56,7 @@ export const BlogArticles: FunctionComponent = ({ }; export const BlogArticlesGraphQLFragment = graphql` - fragment BlogArticles on MarkdownRemarkConnection { + fragment BlogArticles on MdxConnection { edges { node { id diff --git a/website/src/docs/greendonut/index.md b/website/src/docs/greendonut/index.md index da4aaf895b0..430da743bbe 100644 --- a/website/src/docs/greendonut/index.md +++ b/website/src/docs/greendonut/index.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/greendonut/v10/api.md b/website/src/docs/greendonut/v10/api.md index 41aec213d60..acbceb892e9 100644 --- a/website/src/docs/greendonut/v10/api.md +++ b/website/src/docs/greendonut/v10/api.md @@ -1,5 +1,5 @@ --- -title: IDataLoader +title: IDataLoader --- **Description:** Represents a minimal set of _DataLoader_ functionality. @@ -78,7 +78,7 @@ values and enqueues requests which were not cached for batching if enabled. --- -## LoadAsync(IReadOnlyCollection keys) +## LoadAsync(IReadOnlyCollection keys) **Description:** Loads multiple values by keys. This call may return cached values and enqueues requests which were not cached for batching if enabled. @@ -103,7 +103,7 @@ values and enqueues requests which were not cached for batching if enabled. --- -## Set(TKey key, Task value) +## Set(TKey key, Task value) **Description:** Adds a new entry to the cache if not already exists. diff --git a/website/src/docs/hotchocolate/api-reference/coding-approaches.md b/website/src/docs/hotchocolate/api-reference/coding-approaches.md index 6d1af590367..0f272921eb7 100644 --- a/website/src/docs/hotchocolate/api-reference/coding-approaches.md +++ b/website/src/docs/hotchocolate/api-reference/coding-approaches.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/api-reference/extending-filtering.md b/website/src/docs/hotchocolate/api-reference/extending-filtering.md index 7bb50b148ba..90c5a0c7835 100644 --- a/website/src/docs/hotchocolate/api-reference/extending-filtering.md +++ b/website/src/docs/hotchocolate/api-reference/extending-filtering.md @@ -19,34 +19,22 @@ Usually, it makes sense to divide the structure into two parts. The _field_ and The query below returns all movies where the franchise is equal to "Star Wars". The _field_ `franchise` where the filter is applied to and the _operation_ equals (`eq`) that should operate on this field. -``` +```graphql { - movies( - where: { - franchise: { - eq: "Star Wars" - } - }) { - name - } + movies(where: { franchise: { eq: "Star Wars" } }) { + name + } } ``` Fields can also form paths. In the query below there are two _fields_ `genre` and `totalMovieCount` and one operation equals `eq` -``` +```graphql { - movies( - where: { - genre: { - totalMovieCount: { - eq: 100 - } - } - }) { - name - } + movies(where: { genre: { totalMovieCount: { eq: 100 } } }) { + name + } } ``` @@ -296,8 +284,7 @@ A little simplified this is what happens during visitation: ```graphql { users( - where: # Create SCOPE 1 with parameter x of type User - # instance[0] = x + where: # instance[0] = x # Create SCOPE 1 with parameter x of type User # level[0] = [] { # Push property User.Company onto the scope diff --git a/website/src/docs/hotchocolate/api-reference/filtering.md b/website/src/docs/hotchocolate/api-reference/filtering.md index fecc4570d5b..8f84f3aaa8d 100644 --- a/website/src/docs/hotchocolate/api-reference/filtering.md +++ b/website/src/docs/hotchocolate/api-reference/filtering.md @@ -46,7 +46,7 @@ Getting started with filters is very easy, especially if you do not want to expl Hot Chocolate will infer the filters directly from your .Net Model and then use a Middleware to apply filters to `IQueryable` or `IEnumerable` on execution. -> ⚠️ **Note:** If you use more than middleware, keep in mind that **ORDER MATTERS** _Why order matters_ <> +> ⚠️ **Note:** If you use more than middleware, keep in mind that **ORDER MATTERS**. > ⚠️ **Note:** Be sure to install the `HotChocolate.Types.Filters` NuGet package. @@ -711,7 +711,7 @@ public class UserFilterType : FilterInputType # Naming Conventions -\_Hot Chocolate already provides two naming schemes for filters. If you would like to define your own naming scheme or extend existing ones have a look at the documentation of <> +\_Hot Chocolate already provides two naming schemes for filters. If you would like to define your own naming scheme or extend existing ones have a look at the documentation of TODO:Link-Filtering ## Snake Case @@ -942,7 +942,7 @@ input UserFilter { To add or customize a filter you must use `Filter(x => x.Foo)` for scalars `List(x => x.Bar)` for lists and `Object(x => x.Baz)` for nested objects. These methods will return fluent interfaces to configure the filter for the selected field. -A field has different filter operations that you can configure. You will find more about filter types and filter operations here <> +A field has different filter operations that you can configure. You will find more about filter types and filter operations here TODO:Link When fields are bound implicitly, meaning filters are added for all properties, you may want to hide a few fields. You can do this with `Ignore(x => Bar)`. Operations on fields can again be bound implicitly or explicitly. By default, Hot Chocolate generates operations for all fields of the type. If you do want to specify the operations by yourself you can change this behavior with `BindFilters`, `BindFiltersExplicitly` or `BindFiltersImplicitly`. @@ -1030,14 +1030,12 @@ SchemaBuilder.New().AddConvention(new FilterConvention(x => /* Config */)); In this section, we will take a look at the basic features of the filter convention. The documentation will reference often to `descriptor`. Imagine this `descriptor` as the parameter of the Configure method of the filter convention in the following context: -```csharp +```csharp {5} public class CustomConvention : FilterConvention { protected override void Configure( - /**highlight-start**/ IFilterConventionDescriptor descriptor - /**highlight-end**/ ) { } } @@ -1202,7 +1200,7 @@ You can drill up with `And()`. ### Configuration of the type system -In this section, we will focus on the generation of the schema. If you are interested in changing how filters translate to the database, you have to look here <> +In this section, we will focus on the generation of the schema. If you are interested in changing how filters translate to the database, you have to look here TODO:Link #### Configure Filter Operations @@ -1265,7 +1263,7 @@ public delegate NameString CreateFieldName( **Configuration** -```csharp{1, 6} +```csharp {1, 6} // (A) // specifies that all not equals operations should be extended with _nada descriptor @@ -1282,7 +1280,7 @@ public delegate NameString CreateFieldName( **result** -```graphql{8,18} +```graphql {8,18} input UserFilter { loggingCount: Int loggingCount_gt: Int @@ -1333,7 +1331,7 @@ You can either set the description for all operations of this kind or only for a **result** -```graphql{2-4,11-14, 20-22,27-29} +```graphql {2-4,11-14, 20-22,27-29} input UserFilter { """ has to be equal @@ -1396,7 +1394,7 @@ There are multiple ways to ignore an operation: **result** -```graphql{2,4, 8,14,18} +```graphql {2,4, 8,14,18} input UserFilter { ↵ loggingCount_gt: Int @@ -1969,7 +1967,7 @@ This delegate might seem intimidating first, but it is not bad as it looks. If t Operations handlers can be configured like the following: -```csharp{10,13} +```csharp {10,13} public class CustomConvention : FilterConvention { protected override void Configure( diff --git a/website/src/docs/hotchocolate/api-reference/index.md b/website/src/docs/hotchocolate/api-reference/index.md index a8d7018834a..b666f99adb9 100644 --- a/website/src/docs/hotchocolate/api-reference/index.md +++ b/website/src/docs/hotchocolate/api-reference/index.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/api-reference/migrate-from-10-to-11.md b/website/src/docs/hotchocolate/api-reference/migrate-from-10-to-11.md index 70fe926b3f2..8c490ef4f92 100644 --- a/website/src/docs/hotchocolate/api-reference/migrate-from-10-to-11.md +++ b/website/src/docs/hotchocolate/api-reference/migrate-from-10-to-11.md @@ -666,6 +666,7 @@ downstream schemas. ``` ## Batch responses + In v10, responses to batched operations were returned as a JsonArray. In v11 the default is to return MultiPartChunked responses. To switch back to JsonArray, configure the HttpResult serializer as follows: ```csharp diff --git a/website/src/docs/hotchocolate/api-reference/object-type.md b/website/src/docs/hotchocolate/api-reference/object-type.md index 1d79c57fa7b..693d51b6c2b 100644 --- a/website/src/docs/hotchocolate/api-reference/object-type.md +++ b/website/src/docs/hotchocolate/api-reference/object-type.md @@ -2,6 +2,8 @@ title: Object Type --- +import { ExampleTabs } from "../../../components/mdx/example-tabs" + The object type is the most important output type in GraphQL and represents the data we can fetch from our GraphQL server. The GraphQL SDL representation of an object looks like the following: ```sdl @@ -17,7 +19,8 @@ represent raw data that is passed into a field. > **Note:** Every single code example will be shown in three different approaches, annotation-based (previously known as pure code-first), code-first, and schema-first. However, they will always result in the same outcome on a GraphQL schema perspective and internally in Hot Chocolate. All three approaches have their pros and cons and can be combined when needed with each other. If you would like to learn more about the three approaches in Hot Chocolate, click on [Coding Approaches](/docs/hotchocolate/api-reference/coding-approaches). -**Annotation-based approach** + + ```csharp // Query.cs @@ -49,7 +52,8 @@ public class Startup } ``` -**Code-first approach** + + ```csharp // Query.cs @@ -108,7 +112,8 @@ public class Startup } ``` -**Schema-first approach** + + ```csharp // Query.cs @@ -142,6 +147,9 @@ public class Startup } ``` + + + # Extension The GraphQL SDL supports extending object types, this means that we can add fields to an existing object type without changing the code of our initial type definition. diff --git a/website/src/docs/hotchocolate/api-reference/visitors.md b/website/src/docs/hotchocolate/api-reference/visitors.md index 8eec9ee5bdd..84501df8032 100644 --- a/website/src/docs/hotchocolate/api-reference/visitors.md +++ b/website/src/docs/hotchocolate/api-reference/visitors.md @@ -82,7 +82,7 @@ If `Continue` is returned from the `Enter` or `Leave` method visitation on the c In the following example `Continue` is returned from the onEnter method. The visitor calls `VisitChildren` and continues to by _entering_ the selection set. -```graphql{4} +```graphql {4} query { foo { bar @@ -100,7 +100,7 @@ If `Skip` is returned from the `Enter` or `Leave` method, further visitation on In the following example `Skip` is returned from the onEnter method. The visitor skips the field _baz_. It continues visitation by _entering_ the field _qux_. -```graphql{4} +```graphql {4} query { foo { bar @@ -118,7 +118,7 @@ If `SkipAndLeave` is returned from the Enter method, further visitation on this In the following example `SkipAndLeave` is returned from the onEnter method. The visitor skips the field _baz_. Before it continues visitation with the field _qux_ it calls the _leaves_ the field _baz_ by calling `Leave` -```graphql{4} +```graphql {4} query { foo { bar @@ -136,7 +136,7 @@ If `Break` is returned from the `Enter` or `Leave` method, further visitation on In the following example `Break` is returned from the onEnter method. The visitor immediately starts walking back up. The visitor calls the `Leave` on `foo` instead of visiting the selections set of _baz_ it skips _baz_ and _qux_. -```graphql{4} +```graphql {4} query { foo { bar diff --git a/website/src/docs/hotchocolate/defining-a-schema/index.md b/website/src/docs/hotchocolate/defining-a-schema/index.md index 9b55ee17508..bbc0f573e91 100644 --- a/website/src/docs/hotchocolate/defining-a-schema/index.md +++ b/website/src/docs/hotchocolate/defining-a-schema/index.md @@ -2,13 +2,15 @@ title: "Schema basics" --- +import { ExampleTabs } from "../../../components/mdx/example-tabs" + The schema in GraphQL represents the type system and exposes your business model in a strong and rich way. The schema fully describes the shape of your data and how you can interact with it. # Object Type The most important type in a GraphQL schema is the object type which lets you consume data. Every object type has to have at least one field which holds the data of an object. Fields can return simple scalars like String, Int, or again object types. -```SDL +```sdl type Book { title: String author: String @@ -19,7 +21,7 @@ type Book { In GraphQL, we have three root types from which only the Query type has to be defined. Root types provide the entry points that let you fetch data, mutate data, or subscribe to events. Root types themself are object types. -```SDL +```sdl schema { query: Query } @@ -38,7 +40,8 @@ In Hot Chocolate, there are three ways to define an object type. > **Note:** Every single code example will be shown in three different approaches, annotation-based (previously known as pure code-first), code-first, and schema-first. However, they will always result in the same outcome on a GraphQL schema perspective and internally in Hot Chocolate. All three approaches have their pros and cons and can be combined when needed with each other. If you would like to learn more about the three approaches in Hot Chocolate, click on [Coding Approaches](/docs/hotchocolate/api-reference/coding-approaches). -**Annotation-based approach** + + ```csharp // Query.cs @@ -70,7 +73,8 @@ public class Startup } ``` -**Code-first approach** + + ```csharp // Query.cs @@ -129,7 +133,8 @@ public class Startup } ``` -**Schema-first approach** + + ```csharp // Query.cs @@ -163,6 +168,9 @@ public class Startup } ``` + + + ## Fields Fields of object types can be compared to methods in C# and allow us to pass in arguments. @@ -186,7 +194,8 @@ type Book { } ``` -**Annotation-based approach** + + ```csharp // Query.cs @@ -221,7 +230,8 @@ public class Startup } ``` -**Code-first approach** + + ```csharp // Query.cs @@ -283,7 +293,8 @@ public class Startup } ``` -**Schema-first approach** + + ```csharp // Query.cs @@ -320,6 +331,9 @@ public class Startup } ``` + + + > Further reading: > > - [Object Types](/docs/hotchocolate/api-reference/object-type). @@ -338,7 +352,8 @@ input BookInput { If we wanted for instance to create a new book with a mutation we could do that like the following. -**Annotation-based approach** + + ```csharp // Query.cs @@ -379,7 +394,8 @@ public class Startup } ``` -**Code-first approach** + + ```csharp // Query.cs @@ -441,7 +457,8 @@ public class Startup } ``` -**Schema-first approach** + + ```csharp // Query.cs @@ -478,6 +495,9 @@ public class Startup } ``` + + + # Lists # Nullability diff --git a/website/src/docs/hotchocolate/defining-a-schema/scalars.md b/website/src/docs/hotchocolate/defining-a-schema/scalars.md index b7a1fc8000e..1d2d882d9aa 100644 --- a/website/src/docs/hotchocolate/defining-a-schema/scalars.md +++ b/website/src/docs/hotchocolate/defining-a-schema/scalars.md @@ -2,15 +2,15 @@ title: "Scalars" --- -A GraphQL schema should be built as expressive as possible. -Just from looking at the schema, a developer should know how to use the API. +A GraphQL schema should be built as expressive as possible. +Just from looking at the schema, a developer should know how to use the API. In GraphQL you are not limited to only describing the structure of a type, you can even describe value types. Scalar types represent types that can hold data of a specific kind. Scalars are leaf types, meaning you cannot use e.g. `{ fieldname }` to further drill down into the type. -A scalar must only know how to serialize and deserialize the value of the field. -GraphQL gives you the freedom to define custom scalar types. -This makes them the perfect tool for expressive value types. +A scalar must only know how to serialize and deserialize the value of the field. +GraphQL gives you the freedom to define custom scalar types. +This makes them the perfect tool for expressive value types. You could create a scalar for `CreditCardNumber` or `NonEmptyString`. The GraphQL specification defines the following scalars @@ -39,9 +39,10 @@ In addition to the scalars defined by the specification, HotChocolate also suppo | `Any` | This type can be anything, string, int, list or object etc. | # Using Scalars + HotChocolate will automatically detect which scalars are in use and will only expose those in the introspection. This keeps the schema definition small, simple and clean. -The schema discovers .NET types and binds the matching scalar to the type. +The schema discovers .NET types and binds the matching scalar to the type. HotChocolate, for example, automatically binds the `StringType` on a member of the type `System.String`. You can override these mappings by explicitly specifying type bindings on the request executor builder. @@ -71,7 +72,7 @@ public void ConfigureServices(IServiceCollection services) # Any Type -The `Any` scalar is a special type that can be compared to `object` in C#. +The `Any` scalar is a special type that can be compared to `object` in C#. `Any` allows us to specify any literal or return any output type. Consider the following type: @@ -131,13 +132,14 @@ If you want to access an object dynamically without serializing it to a strongly Lists can be accessed generically by getting them as `IReadOnlyList` or as `ListValueNode`. # Custom Converter + HotChocolate converts .Net types to match the types supported by the scalar of the field. -By default, all standard .Net types have converters registered. +By default, all standard .Net types have converters registered. You can register converters and reuse the built-in scalar types. In case you use a non-standard library, e.g. [NodeTime](https://nodatime.org/), you can register a converter and use the standard `DateTimeType`. ```csharp -public class Query +public class Query { public OffsetDateTime GetDateTime(OffsetDateTime offsetDateTime) { @@ -145,7 +147,9 @@ public class Query } } ``` -*Startup* + +_Startup_ + ```csharp public void ConfigureServices(IServiceCollection services) { @@ -160,8 +164,8 @@ public void ConfigureServices(IServiceCollection services) } ``` - # Custom Scalars + All scalars in HotChocolate are defined though a `ScalarType` The easiest way to create a custom scalar is to extend `ScalarType`. This base class already includes basic serialization and parsing logic. @@ -223,7 +227,7 @@ public sealed class CreditCardNumberType } ``` -By extending `ScalarType` you have full control over serialization and parsing. +By extending `ScalarType` you have full control over serialization and parsing. ```csharp public sealed class CreditCardNumberType diff --git a/website/src/docs/hotchocolate/defining-a-schema/unions-and-interfaces.md b/website/src/docs/hotchocolate/defining-a-schema/unions-and-interfaces.md index 5cbea1c25dc..8a89401f8d4 100644 --- a/website/src/docs/hotchocolate/defining-a-schema/unions-and-interfaces.md +++ b/website/src/docs/hotchocolate/defining-a-schema/unions-and-interfaces.md @@ -2,6 +2,8 @@ title: "Unions and Interfaces" --- +import { ExampleTabs } from "../../../components/mdx/example-tabs" + Similar to most type systems, GraphQL knows abstract types. There are two kinds of abstract types: [Interfaces](https://graphql.org/learn/schema/#interfaces) and [Unions](https://graphql.org/learn/schema/#unions) @@ -41,7 +43,7 @@ type VideoMessage implements MediaMessage { A type can also implement multiple interfaces. -``` +```sdl type VideoMessage implements Message & HasMediaType { sendBy: User! createdAt: DateTime! @@ -105,24 +107,26 @@ HotChocolate tries to infer interfaces from the .Net types. When a resolver returns an interface, you just have to register the implementation on the schema builder. HotChocolate will register the types as implementations of the interface. -### Annotation Based + + + In the annotation based approach, you most likely do not need to worry about interfaces at all. ```csharp -public class Query +public class Query { public IMessage[] GetMessages([Service]IMessageRepo repo) => repo.GetMessages(); } [GraphQLName("Message")] -public interface IMessage +public interface IMessage { User SendBy { get; } DateTime CreatedAt { get; } } -public class TextMessage : IMessage +public class TextMessage : IMessage { public User SendBy { get; set; } @@ -134,6 +138,7 @@ public class TextMessage : IMessage ``` _Configure Services_ + ```csharp public void ConfigureServices(IServiceCollection services) { @@ -148,12 +153,12 @@ _Configure Services_ } ``` -You can also use classes as definitions for interfaces. +You can also use classes as definitions for interfaces. To mark a base class as an interface definition you can use `[InterfaceType]`. ```csharp [InterfaceType] -public abstract class Message +public abstract class Message { public User SendBy { get; set; } @@ -161,8 +166,9 @@ public abstract class Message } ``` + + -**Code First** HotChocolate provides a fluent configuration API for interfaces that is very similar to the `ObjectType` interface. ```csharp @@ -190,6 +196,7 @@ public class MediaMessageType : InterfaceType ``` In a `ObjectType` you can declare what interface this object type implements. + ```csharp public class VideoMessageType : ObjectType { @@ -200,8 +207,11 @@ public class VideoMessageType : ObjectType } ``` -**Schema First** + + + In schema first interfaces can be declared directly in SDL: + ```csharp public void ConfigureServices(IServiceCollection services) { @@ -245,13 +255,17 @@ public void ConfigureServices(IServiceCollection services) } ") .AddResolver( - "Query", - "messages", + "Query", + "messages", (context, token) => context.Service().GetMessages()); } ``` + + + # Unions + Unions are very similar to interfaces. The difference is that members of an unions do not have fields in common. Unions are useful if you have completely disjunct structured types. @@ -270,50 +284,53 @@ union GroupMember = User | Group ## Querying Unions -Union types do not have fields in common. +Union types do not have fields in common. You have to use [Inline Fragments 📄](https://spec.graphql.org/June2018/#sec-Inline-Fragments) to query for fields of a specific implementation. ```graphql { - accessControl { - __typename - ... on Group { - id - } - ... on User { - userName - } - } + accessControl { + __typename + ... on Group { + id + } + ... on User { + userName + } + } } ``` + ```json { - "accessControl": [ - { - "__typename": "Group", - "id": "R3JvdXA6MQ==" - }, - { - "__typename": "User", - "userName": "SpicyChicken404" - }, - { - "__typename": "User", - "userName": "CookingMaster86" - } - ] + "accessControl": [ + { + "__typename": "Group", + "id": "R3JvdXA6MQ==" + }, + { + "__typename": "User", + "userName": "SpicyChicken404" + }, + { + "__typename": "User", + "userName": "CookingMaster86" + } + ] } ``` -## Interface Definition +## Union Definition + + + -### Annotation Based In the annotation based approach, HotChocolate tries to infer union types from the .Net types. You can manage the membership of union types with a marker interface. ```csharp [UnionType("GroupMember")] -public interface IGroupMember +public interface IGroupMember { } @@ -325,18 +342,19 @@ public class Group : IGroupMember public IGroupMember[] Members { get; set; } } -public class User : IGroupMember +public class User : IGroupMember { public string UserName { get; set; } } -public class Query +public class Query { public IGroupMember[] GetAccessControl([Service]IAccessRepo repo) => repo.GetItems(); } ``` _Configure Services_ + ```csharp public void ConfigureServices(IServiceCollection services) { @@ -345,14 +363,16 @@ _Configure Services_ .AddGraphQLServer() // HotChocolate will pick up IGroupMember as a UnionType .AddQueryType() - // HotChocolate knows that User and Group implement IGroupMember and will add it to the + // HotChocolate knows that User and Group implement IGroupMember and will add it to the // list of possible types of the UnionType .AddType() .AddType() } ``` -**Code First** + + + HotChocolate provides a fluent configuration API for union types that is very similar to the `ObjectType` interface. ```csharp @@ -371,8 +391,11 @@ public class GroupMemberType : UnionType } ``` -**Schema First** + + + In schema first unions can be declared directly in SDL: + ```csharp public void ConfigureServices(IServiceCollection services) { @@ -396,7 +419,11 @@ public void ConfigureServices(IServiceCollection services) union GroupMember = User | Group ") .AddResolver( - "Query", - "accessControl", + "Query", + "accessControl", (context, token) => context.Service().GetItems()); } +``` + + + diff --git a/website/src/docs/hotchocolate/defining-a-schema/versioning.md b/website/src/docs/hotchocolate/defining-a-schema/versioning.md index c8d9a7a7ce4..b92a6e137f2 100644 --- a/website/src/docs/hotchocolate/defining-a-schema/versioning.md +++ b/website/src/docs/hotchocolate/defining-a-schema/versioning.md @@ -2,28 +2,34 @@ title: "Versioning" --- +import { ExampleTabs } from "../../../components/mdx/example-tabs" + GraphQL versioning works differently as the versioning you know from REST. While nothing stops you from versioning a GraphQL API like a REST API, it is not best practice to do so and most often is not needed. -A GraphQL API can evolve. Many changes to a GraphQL Schema are non-breaking changes. +A GraphQL API can evolve. Many changes to a GraphQL Schema are non-breaking changes. You are free to add fields to a type for example. This does not break existing queries. If you remove fields or change the nullability of a field, the contract with existing queries is broken. -In GraphQL it is possible to deprecate fields. +In GraphQL it is possible to deprecate fields. You can mark a field as deprecated to signal API consumers that a field is obsolete and will be removed in the future. -**Annotation Based** + + + ```csharp -public class Query +public class Query { [Deprecated("Use `persons` field instead")] - public User[] GetUsers() { ... } + public User[] GetUsers() { ... } - public User[] GetPersons() { ... } + public User[] GetPersons() { ... } } ``` -**Code First** + + + ```csharp public class Query : QueryType { @@ -34,10 +40,15 @@ public class Query : QueryType } ``` -**Schema First** + + + ```sdl type Query { users: [Users] @deprecated("Use `persons` field instead") - persons: [Users] + persons: [Users] } ``` + + + diff --git a/website/src/docs/hotchocolate/fetching-data/dataloader.md b/website/src/docs/hotchocolate/fetching-data/dataloader.md index 0d59f10821c..b978f6217cf 100644 --- a/website/src/docs/hotchocolate/fetching-data/dataloader.md +++ b/website/src/docs/hotchocolate/fetching-data/dataloader.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/fetching-data/fetching-from-databases.md b/website/src/docs/hotchocolate/fetching-data/fetching-from-databases.md index 2189319901d..4d73dd4a58a 100644 --- a/website/src/docs/hotchocolate/fetching-data/fetching-from-databases.md +++ b/website/src/docs/hotchocolate/fetching-data/fetching-from-databases.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/fetching-data/fetching-from-rest.md b/website/src/docs/hotchocolate/fetching-data/fetching-from-rest.md index d3846730ca6..5639a208741 100644 --- a/website/src/docs/hotchocolate/fetching-data/fetching-from-rest.md +++ b/website/src/docs/hotchocolate/fetching-data/fetching-from-rest.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/fetching-data/filtering.md b/website/src/docs/hotchocolate/fetching-data/filtering.md index f143bf582e6..a40e51c6f8c 100644 --- a/website/src/docs/hotchocolate/fetching-data/filtering.md +++ b/website/src/docs/hotchocolate/fetching-data/filtering.md @@ -120,7 +120,7 @@ public class PersonFilterType If you want to limit the operations on a field, you need to declare you own operation type. Given you want to only allow `eq` and `neq` on a string field, this could look like this -```csharp{7} +```csharp {7} public class PersonFilterType : FilterInputType { @@ -199,7 +199,9 @@ Example: query { posts( first: 5 - where: { OR: [{ title: {contains: "Doe" }}, { title: {contains: "John" }}] } + where: { + OR: [{ title: { contains: "Doe" } }, { title: { contains: "John" } }] + } ) { edges { node { @@ -217,7 +219,7 @@ query { query { posts( first: 5 - where: { title: {contains: "John", OR: { title: {contains: "Doe" }}} } + where: { title: { contains: "John", OR: { title: { contains: "Doe" } } } } ) { edges { node { @@ -231,7 +233,8 @@ query { In this case the filters are applied like `title.Contains("John") && title.Contains("Doe")` rather than `title.Contains("John") || title.Contains("Doe")` how you probably intended it. -## Removing AND / OR +## Removing AND / OR + If you do not want to expose `AND` and `OR` you can remove these fields with the descriptor API: ```csharp diff --git a/website/src/docs/hotchocolate/fetching-data/index.md b/website/src/docs/hotchocolate/fetching-data/index.md index ffbd66e03dc..258f0297823 100644 --- a/website/src/docs/hotchocolate/fetching-data/index.md +++ b/website/src/docs/hotchocolate/fetching-data/index.md @@ -2,6 +2,8 @@ title: "Resolver" --- +import { ExampleTabs } from "../../../components/mdx/example-tabs" + Here we will learn what resolvers are, how they are defined, and what else we could do with them in Hot Chocolate. # Introduction @@ -88,7 +90,8 @@ A resolver is a function that takes zero or many arguments and returns one value ## Basic resolver example -**Annotation-based approach** + + ```csharp // Query.cs @@ -112,7 +115,8 @@ public class Startup } ``` -**Code-first approach** + + ```csharp // Query.cs @@ -149,7 +153,8 @@ public class Startup } ``` -**Schema-first approach** + + ```csharp // Query.cs @@ -178,6 +183,9 @@ public class Startup } ``` + + + When comparing all three approaches side-by-side, we can see very quickly that they all look nearly the same. They all have the `Query` type in common, which is identical in all three approaches. Regardless, the `Query` type contains a method named `Say`, which is our resolver, in fact, the most significant bit here. The `Say` method will be translated into the `say` field on the schema side as soon as Hot Chocolate is initialized. As a small side note here, all three approaches will result in the same `SDL`. ```sdl diff --git a/website/src/docs/hotchocolate/fetching-data/pagination.md b/website/src/docs/hotchocolate/fetching-data/pagination.md index 8f97fab82ef..de384ef9c04 100644 --- a/website/src/docs/hotchocolate/fetching-data/pagination.md +++ b/website/src/docs/hotchocolate/fetching-data/pagination.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/fetching-data/sorting.md b/website/src/docs/hotchocolate/fetching-data/sorting.md index fa4092f3ddc..d8a01914f8b 100644 --- a/website/src/docs/hotchocolate/fetching-data/sorting.md +++ b/website/src/docs/hotchocolate/fetching-data/sorting.md @@ -130,7 +130,7 @@ public class UserSortType If you want to change the sorting operations on a field, you need to declare you own operation enum type. -```csharp{7} +```csharp {7} public class UserSortType : SortInputType { diff --git a/website/src/docs/hotchocolate/integrations/index.md b/website/src/docs/hotchocolate/integrations/index.md index a8d7018834a..b666f99adb9 100644 --- a/website/src/docs/hotchocolate/integrations/index.md +++ b/website/src/docs/hotchocolate/integrations/index.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/integrations/spatial-data.md b/website/src/docs/hotchocolate/integrations/spatial-data.md index bf7d079fe9f..b8285948fce 100644 --- a/website/src/docs/hotchocolate/integrations/spatial-data.md +++ b/website/src/docs/hotchocolate/integrations/spatial-data.md @@ -247,7 +247,7 @@ public IQueryable GetPubs([ScopedService] SomeDbContext someDbContext) } ``` -```sdl{10} +```sdl {10} type Query { pubs(where: PubFilterInput): [Pub!]! } diff --git a/website/src/docs/hotchocolate/performance/persisted-queries.md b/website/src/docs/hotchocolate/performance/persisted-queries.md index 89b34ecb2e1..d30c8cc3958 100644 --- a/website/src/docs/hotchocolate/performance/persisted-queries.md +++ b/website/src/docs/hotchocolate/performance/persisted-queries.md @@ -11,5 +11,3 @@ In case you might need help, check out our [Slack channel](https://join.slack.co Sorry for any inconvenience, and thank you for being patient! The ChilliCream Team - -


diff --git a/website/src/docs/hotchocolate/v10/schema/code-first-object-type.md b/website/src/docs/hotchocolate/v10/schema/code-first-object-type.md index 8798e767bc4..404bf00c3d6 100644 --- a/website/src/docs/hotchocolate/v10/schema/code-first-object-type.md +++ b/website/src/docs/hotchocolate/v10/schema/code-first-object-type.md @@ -4,7 +4,7 @@ title: Object Type The object type is the most prominent type in GraphQL. There are currently two ways to describe an object type with the code-first approach. -# ObjectType +# ObjectType The first approach is by using the generic object type class which lets you specify an entity type that shall represent your schema type in .NET. The object type descriptor will then try to automatically infer the GraphQL schema type from your .NET type. diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx index 46e2c7bd2f4..55236543f1a 100644 --- a/website/src/pages/index.tsx +++ b/website/src/pages/index.tsx @@ -60,7 +60,7 @@ const IndexPage: FunctionComponent = () => { } } } - allMarkdownRemark( + allMdx( limit: 3 filter: { frontmatter: { path: { glob: "/blog/**/*" } } } sort: { fields: [frontmatter___date], order: DESC } @@ -91,7 +91,7 @@ const IndexPage: FunctionComponent = () => { } `); const { - allMarkdownRemark: { edges }, + allMdx: { edges }, } = data; return ( diff --git a/website/src/state/common/index.ts b/website/src/state/common/index.ts index a4faea251c2..28a878d956f 100644 --- a/website/src/state/common/index.ts +++ b/website/src/state/common/index.ts @@ -1,3 +1,3 @@ export * from "./common.actions"; export { commonReducer } from "./common.reducer"; -export { CommonState } from "./common.state"; +export type { CommonState } from "./common.state"; diff --git a/website/src/state/index.ts b/website/src/state/index.ts index d212e62a4dc..cbe1e298a95 100644 --- a/website/src/state/index.ts +++ b/website/src/state/index.ts @@ -1 +1,2 @@ -export { default, State } from "./state"; +export { default } from "./state"; +export type { State } from "./state"; diff --git a/website/src/templates/blog-article-template.tsx b/website/src/templates/blog-article-template.tsx index 6022a6d4e65..f63b0ba3f34 100644 --- a/website/src/templates/blog-article-template.tsx +++ b/website/src/templates/blog-article-template.tsx @@ -15,13 +15,12 @@ const BlogArticleTemplate: FunctionComponent = ({ return ( diff --git a/website/src/templates/blog-articles-template.tsx b/website/src/templates/blog-articles-template.tsx index 0f26284f8b2..60bca35b3e6 100644 --- a/website/src/templates/blog-articles-template.tsx +++ b/website/src/templates/blog-articles-template.tsx @@ -12,14 +12,14 @@ interface BlogArticlesTemplateProperties { const BlogArticlesTemplate: FunctionComponent = ({ pageContext: { currentPage, numPages }, - data: { allMarkdownRemark }, + data: { allMdx }, }) => { return ( @@ -30,7 +30,7 @@ export default BlogArticlesTemplate; export const pageQuery = graphql` query getBlogArticles($skip: Int!, $limit: Int!) { - allMarkdownRemark( + allMdx( limit: $limit skip: $skip filter: { frontmatter: { path: { glob: "/blog/**/*" } } } diff --git a/website/src/templates/blog-tag-template.tsx b/website/src/templates/blog-tag-template.tsx index e501cf20239..5f6cb55c613 100644 --- a/website/src/templates/blog-tag-template.tsx +++ b/website/src/templates/blog-tag-template.tsx @@ -14,12 +14,12 @@ interface BlogTagTemplateProperties { const BlogTagTemplate: FunctionComponent = ({ pageContext: { tag }, - data: { allMarkdownRemark }, + data: { allMdx }, }) => { return ( - + ); }; @@ -28,7 +28,7 @@ export default BlogTagTemplate; export const pageQuery = graphql` query getBlogArticlesByTag($tag: String) { - allMarkdownRemark( + allMdx( limit: 100 filter: { frontmatter: { tags: { in: [$tag] } } } sort: { fields: [frontmatter___date], order: DESC } diff --git a/website/src/templates/doc-page-template.tsx b/website/src/templates/doc-page-template.tsx index e43b81ebebd..39b187f04dd 100644 --- a/website/src/templates/doc-page-template.tsx +++ b/website/src/templates/doc-page-template.tsx @@ -16,7 +16,7 @@ const DocPageTemplate: FunctionComponent = ({ }) => { return ( - + ); diff --git a/website/tsconfig.json b/website/tsconfig.json index 197c33cad4d..d3ea406f40b 100644 --- a/website/tsconfig.json +++ b/website/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "target": "ESNext", "module": "ESNext", - "lib": ["dom"], + "lib": ["dom", "es2019.array"], "jsx": "preserve", "moduleResolution": "node", "allowJs": true, diff --git a/website/yarn.lock b/website/yarn.lock index edd3442848d..c544b87f5db 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -152,19 +152,19 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.0.0": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== +"@babel/core@7.12.9", "@babel/core@^7.12.3": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" + integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" + "@babel/generator" "^7.12.5" "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -174,19 +174,19 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.12.3": - version "7.12.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" - integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== +"@babel/core@^7.0.0": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.5" + "@babel/generator" "^7.12.1" "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.7" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.9" - "@babel/types" "^7.12.7" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -521,7 +521,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.12.1": +"@babel/plugin-proposal-object-rest-spread@7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== @@ -621,7 +621,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.1": +"@babel/plugin-syntax-jsx@7.12.1", "@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== @@ -649,7 +649,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -1901,6 +1901,41 @@ "@babel/runtime" "^7.7.2" regenerator-runtime "^0.13.3" +"@mdx-js/mdx@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== + dependencies: + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" + "@babel/plugin-syntax-object-rest-spread" "7.8.3" + "@mdx-js/util" "1.6.22" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" + camelcase-css "2.0.1" + detab "2.0.4" + hast-util-raw "6.0.1" + lodash.uniq "4.5.0" + mdast-util-to-hast "10.0.1" + remark-footnotes "2.0.0" + remark-mdx "1.6.22" + remark-parse "8.0.3" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.2.0" + unist-builder "2.0.3" + unist-util-visit "2.0.3" + +"@mdx-js/react@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== + +"@mdx-js/util@1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" + integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== + "@mdx-js/util@^2.0.0-next.8": version "2.0.0-next.8" resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-2.0.0-next.8.tgz#66ecc27b78e07a3ea2eb1a8fc5a99dfa0ba96690" @@ -2122,6 +2157,13 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" + integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== + dependencies: + "@types/unist" "*" + "@types/history@*": version "4.7.8" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" @@ -2189,7 +2231,7 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.164.tgz#52348bcf909ac7b4c1bcbeda5c23135176e5dfa0" integrity sha512-fXCEmONnrtbYUc5014avwBeMdhHHO8YJCkOBflUL9EoJBSKZ1dei+VO74fA7JkTHZ1GvZack2TyIw5U+1lT8jg== -"@types/mdast@^3.0.3": +"@types/mdast@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== @@ -2231,6 +2273,16 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/parse5@^5.0.0": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" + integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== + +"@types/prismjs@^1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.16.2.tgz#c130c977191c988cb35e97585da5d580948cc2d2" + integrity sha512-1M/j21xgTde7RPtpJVQebW5rzrquj7S+wnqt4x9uWrIPpr0Ya/uXypcqC2aUQL5gtLXFCKSH7GnjfAijMdfbuA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -3213,6 +3265,14 @@ babel-plugin-add-module-exports@^0.3.3: optionalDependencies: chokidar "^2.0.4" +babel-plugin-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" + integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + "@mdx-js/util" "1.6.22" + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -3220,6 +3280,13 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" + integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + babel-plugin-lodash@3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196" @@ -3544,7 +3611,7 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.0.5, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -3992,6 +4059,11 @@ camel-case@^3.0.0: no-case "^2.2.0" upper-case "^1.1.1" +camelcase-css@2.0.1, camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -4050,7 +4122,7 @@ caw@^2.0.0, caw@^2.0.1: tunnel-agent "^0.6.0" url-to-options "^1.0.1" -ccount@^1.0.0, ccount@^1.0.3: +ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== @@ -4091,6 +4163,30 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +change-case@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e" + integrity sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw== + dependencies: + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.3.2" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.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" @@ -4121,6 +4217,28 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +cheerio@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" + integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash.assignin "^4.0.9" + lodash.bind "^4.1.4" + lodash.defaults "^4.0.1" + lodash.filter "^4.4.0" + lodash.flatten "^4.2.0" + lodash.foreach "^4.3.0" + lodash.map "^4.4.0" + lodash.merge "^4.4.0" + lodash.pick "^4.2.1" + lodash.reduce "^4.4.0" + lodash.reject "^4.4.0" + lodash.some "^4.4.0" + cheerio@^1.0.0-rc.3: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" @@ -4315,7 +4433,7 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: +collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== @@ -4385,7 +4503,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.1: +comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== @@ -4524,6 +4642,14 @@ constant-case@3.0.3: tslib "^1.10.0" upper-case "^2.0.1" +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + integrity sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY= + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -5329,6 +5455,11 @@ dataloader@2.0.0: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== +dataloader@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" + integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== + date-fns@^2.14.0: version "2.16.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" @@ -5609,7 +5740,7 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detab@^2.0.0: +detab@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== @@ -5766,16 +5897,7 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -dom-serializer@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58" - integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - entities "^2.0.0" - -dom-serializer@~0.1.1: +dom-serializer@~0.1.0, dom-serializer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== @@ -5810,13 +5932,6 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^3.0.0, domhandler@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" - integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== - dependencies: - domelementtype "^2.0.1" - domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -5833,14 +5948,12 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" - integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA== +dot-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" + integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4= dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.0.1" - domhandler "^3.3.0" + no-case "^2.2.0" dot-case@^3.0.3: version "3.0.3" @@ -6439,6 +6552,13 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +eval@^0.1.0, eval@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.4.tgz#e05dbe0dab4b9330215cbb7bf4886eb24bd58700" + integrity sha512-npGsebJejyjMRnLdFu+T/97dnigqIU0Ov3IGrZ8ygd1v7RL1vGkEKtvyWZobqUH1AQgKlg0Yqqe2BtMA9/QZLw== + dependencies: + require-like ">= 0.1.1" + event-source-polyfill@^1.0.15: version "1.0.21" resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.21.tgz#6b11b1299517a48e04540748b7c23f5a7620155b" @@ -6449,7 +6569,7 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -6663,7 +6783,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -7409,6 +7529,48 @@ gatsby-plugin-manifest@^2.10.0: semver "^7.3.2" sharp "^0.27.0" +gatsby-plugin-mdx@^1.7.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-mdx/-/gatsby-plugin-mdx-1.8.0.tgz#bb4c4fde5406c742bf4eff602b982e69c2f3e861" + integrity sha512-ic33apQvN9o+FU327ZDueisVPvOE8h/83nhGRjR+Xdkk9kqZOasGL6I9X6iGg6B7KAAh/xrrDmjIagfZMux9QA== + dependencies: + "@babel/core" "^7.12.3" + "@babel/generator" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@babel/types" "^7.12.6" + camelcase-css "^2.0.1" + change-case "^3.1.0" + core-js "^3.6.5" + dataloader "^1.4.0" + debug "^4.1.1" + escape-string-regexp "^1.0.5" + eval "^0.1.4" + fs-extra "^8.1.0" + gatsby-core-utils "^1.8.0" + gray-matter "^4.0.2" + json5 "^2.1.3" + loader-utils "^1.4.0" + lodash "^4.17.20" + mdast-util-to-string "^1.1.0" + mdast-util-toc "^3.1.0" + mime "^2.4.6" + p-queue "^6.6.2" + pretty-bytes "^5.3.0" + remark "^10.0.1" + remark-retext "^3.1.3" + retext-english "^3.0.4" + slugify "^1.4.4" + static-site-generator-webpack-plugin "^3.4.2" + style-to-object "^0.3.0" + underscore.string "^3.3.5" + unified "^8.4.2" + unist-util-map "^1.0.5" + unist-util-remove "^1.0.3" + unist-util-visit "^1.4.1" + gatsby-plugin-offline@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/gatsby-plugin-offline/-/gatsby-plugin-offline-3.8.0.tgz#4cc1e4b24921aedc456248b4b425e073e4e866eb" @@ -7609,25 +7771,6 @@ gatsby-recipes@^0.7.0: xstate "^4.9.1" yoga-layout-prebuilt "^1.9.6" -gatsby-remark-autolink-headers@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-2.9.0.tgz#737e8520b43b0d509a1fc22e5464f6ba499fed07" - integrity sha512-68Pb+BfUVj1OXwO0Llln5IN4oGbWoTBxK3CZYzzhxI43rskBGnfrocPHsyIf1ltKXJKbeIzTuJnXSAaLm50oPQ== - dependencies: - "@babel/runtime" "^7.12.5" - github-slugger "^1.3.0" - lodash "^4.17.20" - mdast-util-to-string "^1.1.0" - unist-util-visit "^1.4.1" - -gatsby-remark-code-buttons@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/gatsby-remark-code-buttons/-/gatsby-remark-code-buttons-2.0.4.tgz#1fc02fd8beacab6a4c07e7b335095f0a7ff6bf55" - integrity sha512-VPwYnXEAC3rNffhc43E6KfFfV/xYrIzdlsNvcFarAukIvArB2AlXHC3BFfbYTjw93fio8UIfLZjQJweNwDQSoQ== - dependencies: - query-string "^6.5.0" - unist-util-visit "^1.4.0" - gatsby-remark-images@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-3.9.0.tgz#f9b37a538be22ab5dd011550c11acee11f281766" @@ -7653,15 +7796,6 @@ gatsby-remark-mermaid@^2.1.0: mermaid "^8.7.0" unist-util-visit "^1.4.0" -gatsby-remark-prismjs@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/gatsby-remark-prismjs/-/gatsby-remark-prismjs-3.11.0.tgz#68305976b2331e368f90f736e36aa9531102195f" - integrity sha512-aMiky/kEKfnJfByMwkPq53h9k7GUvJkPMCecu4HwCYmvM8KqCXhpqH070h7QlTuk6yAjTnxa3Ck4y3aMpkOOIw== - dependencies: - "@babel/runtime" "^7.12.5" - parse-numeric-range "^0.0.2" - unist-util-visit "^1.4.1" - gatsby-remark-reading-time@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/gatsby-remark-reading-time/-/gatsby-remark-reading-time-1.1.0.tgz#f23590ae34233c3625e656e0368ad0e0e84761a1" @@ -7716,33 +7850,6 @@ gatsby-transformer-json@^2.9.0: "@babel/runtime" "^7.12.5" bluebird "^3.7.2" -gatsby-transformer-remark@^2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-2.14.0.tgz#d7fd3d8cdbea4993180f94b720abe8eb1ca637db" - integrity sha512-GYtJjDRVdXbvp3BqQ4wObiSu+1We05aV5B+ifOVX1sxNXLKOUOw14tkEb6Uij6pJ3mNe3azHTkChqTe0LboYPA== - dependencies: - "@babel/runtime" "^7.12.5" - bluebird "^3.7.2" - gatsby-core-utils "^1.8.0" - gray-matter "^4.0.2" - hast-util-raw "^4.0.0" - hast-util-to-html "^4.0.1" - lodash "^4.17.20" - mdast-util-to-hast "^3.0.4" - mdast-util-to-string "^1.1.0" - mdast-util-toc "^5.0" - remark "^10.0.1" - remark-parse "^6.0.3" - remark-retext "^3.1.3" - remark-stringify "6.0.4" - retext-english "^3.0.4" - sanitize-html "^1.27.5" - underscore.string "^3.3.5" - unified "^6.2.0" - unist-util-remove-position "^1.1.4" - unist-util-select "^1.5.0" - unist-util-visit "^1.4.1" - gatsby-transformer-sharp@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-2.10.0.tgz#19740e3afe2fc574a7568619c3106e1f82d9ce4c" @@ -8521,93 +8628,72 @@ hasha@^5.2.0: is-stream "^2.0.0" type-fest "^0.8.0" -hast-to-hyperscript@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz#5106cbba78edb7c95e2e8a49079371eb196c1ced" - integrity sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg== +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== dependencies: + "@types/unist" "^2.0.3" comma-separated-tokens "^1.0.0" - property-information "^4.0.0" + property-information "^5.3.0" space-separated-tokens "^1.0.0" - style-to-object "^0.2.1" - unist-util-is "^2.0.0" - web-namespaces "^1.1.2" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.0.0" -hast-util-from-parse5@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz#b7164a7ffc88da4f751dc7c2f801ff8d7c143bab" - integrity sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ== +hast-util-from-parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" + integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== dependencies: - ccount "^1.0.3" - hastscript "^4.0.0" - property-information "^4.0.0" - web-namespaces "^1.1.2" - xtend "^4.0.1" - -hast-util-is-element@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425" - integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ== + "@types/parse5" "^5.0.0" + hastscript "^6.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + vfile-location "^3.2.0" + web-namespaces "^1.0.0" -hast-util-parse-selector@^2.2.0: +hast-util-parse-selector@^2.0.0: version "2.2.5" resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== -hast-util-raw@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-4.0.0.tgz#2dc10c9facd9b810ea6ac51df251e6f87c2ed5b5" - integrity sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw== +hast-util-raw@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" + integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== dependencies: - hast-util-from-parse5 "^4.0.2" - hast-util-to-parse5 "^4.0.1" - html-void-elements "^1.0.1" - parse5 "^5.0.0" + "@types/hast" "^2.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" unist-util-position "^3.0.0" + vfile "^4.0.0" web-namespaces "^1.0.0" - xtend "^4.0.1" + xtend "^4.0.0" zwitch "^1.0.0" -hast-util-to-html@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz#3666b05afb62bd69f8f5e6c94db04dea19438e2a" - integrity sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg== - dependencies: - ccount "^1.0.0" - comma-separated-tokens "^1.0.1" - hast-util-is-element "^1.0.0" - hast-util-whitespace "^1.0.0" - html-void-elements "^1.0.0" - property-information "^4.0.0" - space-separated-tokens "^1.0.0" - stringify-entities "^1.0.1" - unist-util-is "^2.0.0" - xtend "^4.0.1" - -hast-util-to-parse5@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz#e52534b4bf40dc4e7d0428fcaf6d32bc75c62ee5" - integrity sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw== +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" + integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== dependencies: - hast-to-hyperscript "^5.0.0" - property-information "^4.0.0" + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" web-namespaces "^1.0.0" - xtend "^4.0.1" + xtend "^4.0.0" zwitch "^1.0.0" -hast-util-whitespace@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" - integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== - -hastscript@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-4.1.0.tgz#ea5593fa6f6709101fc790ced818393ddaa045ce" - integrity sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ== +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: + "@types/hast" "^2.0.0" comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.2.0" - property-information "^4.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" space-separated-tokens "^1.0.0" he@^1.1.0, he@^1.1.1, he@^1.2.0: @@ -8615,6 +8701,14 @@ he@^1.1.0, he@^1.1.1, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +header-case@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" + integrity sha1-lTWXMZfBRLCWE81l0xfvGZY70C0= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.3" + hex-color-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" @@ -8711,7 +8805,7 @@ html-minifier@^4.0.0: relateurl "^0.2.7" uglify-js "^3.5.1" -html-void-elements@^1.0.0, html-void-elements@^1.0.1: +html-void-elements@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== @@ -8728,16 +8822,6 @@ htmlparser2@^3.3.0, htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" -htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - http-cache-semantics@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -9203,7 +9287,7 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-alphabetical@^1.0.0: +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== @@ -9250,7 +9334,7 @@ is-binary-path@^2.1.0, is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.4, is-buffer@^1.1.5: +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -9445,6 +9529,13 @@ is-jpg@^2.0.0: resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc= +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + integrity sha1-fhR75HaNxGbbO/shzGCzHmrWk5M= + dependencies: + lower-case "^1.1.0" + is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" @@ -9627,6 +9718,13 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + integrity sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8= + dependencies: + upper-case "^1.1.0" + is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -9887,7 +9985,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: +json5@^2.1.2, json5@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== @@ -10161,6 +10259,16 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.assignin@^4.0.9: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" + integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= + +lodash.bind@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" + integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= + lodash.clonedeep@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -10176,12 +10284,22 @@ lodash.deburr@^4.1.0: resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b" integrity sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s= +lodash.defaults@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + lodash.every@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= -lodash.flatten@^4.4.0: +lodash.filter@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" + integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= + +lodash.flatten@^4.2.0, lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= @@ -10191,12 +10309,12 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.foreach@^4.5.0: +lodash.foreach@^4.3.0, lodash.foreach@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= -lodash.map@^4.6.0: +lodash.map@^4.4.0, lodash.map@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= @@ -10211,6 +10329,31 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.merge@^4.4.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + +lodash.reduce@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" + integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= + +lodash.reject@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" + integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= + +lodash.some@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= + lodash.template@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" @@ -10231,7 +10374,7 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -lodash.uniq@^4.5.0: +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= @@ -10297,6 +10440,13 @@ loud-rejection@^2.2.0: currently-unhandled "^0.4.1" signal-exit "^3.0.2" +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + integrity sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E= + dependencies: + lower-case "^1.1.2" + lower-case@2.0.1, lower-case@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" @@ -10304,7 +10454,7 @@ lower-case@2.0.1, lower-case@^2.0.1: dependencies: tslib "^1.10.0" -lower-case@^1.1.1: +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= @@ -10434,6 +10584,13 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" + integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== + dependencies: + unist-util-remove "^2.0.0" + mdast-util-compact@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" @@ -10448,29 +10605,33 @@ mdast-util-compact@^2.0.0: dependencies: unist-util-visit "^2.0.0" -mdast-util-definitions@^1.2.0, mdast-util-definitions@^1.2.5: +mdast-util-definitions@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz#3fe622a4171c774ebd06f11e9f8af7ec53ea5c74" integrity sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA== dependencies: unist-util-visit "^1.0.0" -mdast-util-to-hast@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz#132001b266031192348d3366a6b011f28e54dc40" - integrity sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA== +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== dependencies: - collapse-white-space "^1.0.0" - detab "^2.0.0" - mdast-util-definitions "^1.2.0" - mdurl "^1.0.1" - trim "0.0.1" - trim-lines "^1.0.0" - unist-builder "^1.0.1" - unist-util-generated "^1.1.0" + unist-util-visit "^2.0.0" + +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" + integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" unist-util-position "^3.0.0" - unist-util-visit "^1.1.0" - xtend "^4.0.1" + unist-util-visit "^2.0.0" mdast-util-to-nlcst@^3.2.0: version "3.2.3" @@ -10487,18 +10648,15 @@ mdast-util-to-string@^1.0.5, mdast-util-to-string@^1.1.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== -mdast-util-toc@^5.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-5.0.4.tgz#5c7bc8ff64914546384d81ea155478ba34802c12" - integrity sha512-JjLlJfcnsQlAJKWCY8CfTp9gA5A2Mk5PeDmPmCLLvq+2SjlJKyGUQTiDdSO5WvPRzpwnghO3ByyJc4OngadB3w== +mdast-util-toc@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz#395eeb877f067f9d2165d990d77c7eea6f740934" + integrity sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w== dependencies: - "@types/mdast" "^3.0.3" - "@types/unist" "^2.0.3" - extend "^3.0.2" github-slugger "^1.2.1" mdast-util-to-string "^1.0.5" - unist-util-is "^4.0.0" - unist-util-visit "^2.0.0" + unist-util-is "^2.1.2" + unist-util-visit "^1.1.0" mdn-data@2.0.12: version "2.0.12" @@ -10510,7 +10668,7 @@ mdn-data@2.0.4: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== -mdurl@^1.0.1: +mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= @@ -10994,7 +11152,7 @@ nlcst-to-string@^2.0.0: resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc" integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg== -no-case@^2.2.0: +no-case@^2.2.0, no-case@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== @@ -11626,6 +11784,14 @@ p-pipe@^3.0.0: resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" @@ -11652,7 +11818,7 @@ p-timeout@^2.0.1: dependencies: p-finally "^1.0.0" -p-timeout@^3.1.0: +p-timeout@^3.1.0, p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== @@ -11701,7 +11867,7 @@ param-case@3.0.3: dot-case "^3.0.3" tslib "^1.10.0" -param-case@^2.1.1: +param-case@^2.1.0, param-case@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= @@ -11826,11 +11992,6 @@ parse-latin@^4.0.0: unist-util-modify-children "^2.0.0" unist-util-visit-children "^1.0.0" -parse-numeric-range@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz#b4f09d413c7adbcd987f6e9233c7b4b210c938e4" - integrity sha1-tPCdQTx6282Yf26SM8e0shDJOOQ= - parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -11844,11 +12005,6 @@ parse-path@^4.0.0: is-ssh "^1.3.0" protocols "^1.4.0" -parse-srcset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" - integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE= - parse-url@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.2.tgz#856a3be1fcdf78dc93fc8b3791f169072d898b59" @@ -11866,10 +12022,10 @@ parse5@^3.0.1: dependencies: "@types/node" "*" -parse5@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseqs@0.0.5: version "0.0.5" @@ -11908,6 +12064,14 @@ pascal-case@3.1.1, pascal-case@^3.1.1: no-case "^3.0.3" tslib "^1.10.0" +pascal-case@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" + integrity sha1-LVeNNFX2YNpl7KGO+VtODekSdh4= + dependencies: + camel-case "^3.0.0" + upper-case-first "^1.1.0" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -11926,6 +12090,13 @@ path-browserify@0.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" + integrity sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU= + dependencies: + no-case "^2.2.0" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -12572,6 +12743,11 @@ pretty-bytes@^5.1.0, pretty-bytes@^5.4.1: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== +pretty-bytes@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" + integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== + pretty-error@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" @@ -12602,6 +12778,11 @@ pretty-quick@^3.0.2: mri "^1.1.5" multimatch "^4.0.0" +prism-react-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz#1c1be61b1eb9446a146ca7a50b7bcf36f2a70a44" + integrity sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug== + prismjs@^1.23.0: version "1.23.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.23.0.tgz#d3b3967f7d72440690497652a9d40ff046067f33" @@ -12678,12 +12859,12 @@ proper-lockfile@^4.1.1: retry "^0.12.0" signal-exit "^3.0.2" -property-information@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-4.2.0.tgz#f0e66e07cbd6fed31d96844d958d153ad3eb486e" - integrity sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ== +property-information@^5.0.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: - xtend "^4.0.1" + xtend "^4.0.0" proto-list@~1.2.1: version "1.2.4" @@ -12837,7 +13018,7 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.13.1, query-string@^6.13.3, query-string@^6.5.0: +query-string@^6.13.1, query-string@^6.13.3: version "6.13.6" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.6.tgz#e5ac7c74f2a5da43fbca0b883b4f0bafba439966" integrity sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ== @@ -13340,6 +13521,25 @@ relay-runtime@10.0.1: "@babel/runtime" "^7.0.0" fbjs "^1.0.0" +remark-footnotes@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" + integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== + +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" + integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== + dependencies: + "@babel/core" "7.12.9" + "@babel/helper-plugin-utils" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.12.1" + "@babel/plugin-syntax-jsx" "7.12.1" + "@mdx-js/util" "1.6.22" + is-alphabetical "1.0.4" + remark-parse "8.0.3" + unified "9.2.0" + remark-mdx@^2.0.0-next.4: version "2.0.0-next.8" resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0-next.8.tgz#db1c3cbc606ea0d01526242199bb134d99020363" @@ -13362,6 +13562,28 @@ remark-mdxjs@^2.0.0-next.4: "@babel/plugin-syntax-jsx" "7.10.4" "@mdx-js/util" "^2.0.0-next.8" +remark-parse@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" + integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== + dependencies: + ccount "^1.0.0" + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^2.0.0" + vfile-location "^3.0.0" + xtend "^4.0.1" + remark-parse@^6.0.0, remark-parse@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" @@ -13390,7 +13612,14 @@ remark-retext@^3.1.3: dependencies: mdast-util-to-nlcst "^3.2.0" -remark-stringify@6.0.4, remark-stringify@^6.0.0: +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" + integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== + dependencies: + mdast-squeeze-paragraphs "^4.0.0" + +remark-stringify@^6.0.0: version "6.0.4" resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== @@ -13513,6 +13742,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +"require-like@>= 0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o= + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -13738,16 +13972,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sanitize-html@^1.27.5: - version "1.27.5" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.27.5.tgz#6c8149462adb23e360e1bb71cc0bae7f08c823c7" - integrity sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A== - dependencies: - htmlparser2 "^4.1.0" - lodash "^4.17.15" - parse-srcset "^1.0.2" - postcss "^7.0.27" - sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -13894,6 +14118,14 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +sentence-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" + integrity sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ= + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -14121,6 +14353,13 @@ slugify@^1.4.4: resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace" integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ== +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8= + dependencies: + no-case "^2.2.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -14260,6 +14499,11 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" +source-list-map@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" + integrity sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE= + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -14294,7 +14538,7 @@ source-map@0.7.3, source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -14460,6 +14704,17 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +static-site-generator-webpack-plugin@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-3.4.2.tgz#ad9fd0a4fb8b6f439a7a66018320b459bdb6d916" + integrity sha512-39Kn+fZDVjolLYuX5y1rDvksJIW0QEUaEC/AVO/UewNXxGzoSQI1UYnRsL+ocAcN5Yti6d6rJgEL0qZ5tNXfdw== + dependencies: + bluebird "^3.0.5" + cheerio "^0.22.0" + eval "^0.1.0" + url "^0.11.0" + webpack-sources "^0.2.0" + "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -14768,14 +15023,7 @@ style-loader@^0.23.1: loader-utils "^1.1.0" schema-utils "^1.0.0" -style-to-object@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" - integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== - dependencies: - inline-style-parser "0.1.1" - -style-to-object@^0.3.0: +style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== @@ -14893,6 +15141,14 @@ svgo@1.3.2, svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + integrity sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM= + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + symbol-observable@^1.0.4, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -15077,6 +15333,14 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== +title-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -15179,11 +15443,6 @@ traverse@0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= -trim-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" - integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA== - trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -15447,17 +15706,17 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unified@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" - integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== +unified@9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== dependencies: bail "^1.0.0" extend "^3.0.0" - is-plain-obj "^1.1.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" + vfile "^4.0.0" unified@^7.0.0: version "7.1.0" @@ -15525,19 +15784,17 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-builder@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17" - integrity sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg== - dependencies: - object-assign "^4.1.0" +unist-builder@2.0.3, unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== -unist-util-generated@^1.1.0: +unist-util-generated@^1.0.0: version "1.1.6" resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== -unist-util-is@^2.0.0: +unist-util-is@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20" integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA== @@ -15552,6 +15809,13 @@ unist-util-is@^4.0.0: resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.3.tgz#e8b44db55fc20c43752b3346c116344d45d7c91d" integrity sha512-bTofCFVx0iQM8Jqb1TBDVRIQW03YkD3p66JOd/aCWuqzlLyUtx1ZAGw/u+Zw+SttKvSVcvTiKYbfrtLoLefykw== +unist-util-map@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unist-util-map/-/unist-util-map-1.0.5.tgz#701069b72e1d1cc02db265502a5e82b77c2eb8b7" + integrity sha512-dFil/AN6vqhnQWNCZk0GF/G3+Q5YwsB+PqjnzvpO2wzdRtUJ1E8PN+XRE/PRr/G3FzKjRTJU0haqE0Ekl+O3Ag== + dependencies: + object-assign "^4.0.1" + unist-util-modify-children@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz#9c9c30d4e32502aabb3fde10d7872a17c86801e2" @@ -15564,13 +15828,27 @@ unist-util-position@^3.0.0: resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== -unist-util-remove-position@^1.0.0, unist-util-remove-position@^1.1.4: +unist-util-remove-position@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== dependencies: unist-util-visit "^1.1.0" +unist-util-remove-position@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" + integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== + dependencies: + unist-util-visit "^2.0.0" + +unist-util-remove@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-1.0.3.tgz#58ec193dfa84b52d5a055ffbc58e5444eb8031a3" + integrity sha512-mB6nCHCQK0pQffUAcCVmKgIWzG/AXs/V8qpS8K72tMPtOSCMSjDeMc5yN+Ye8rB0FhcE+JvW++o1xRNc0R+++g== + dependencies: + unist-util-is "^3.0.0" + unist-util-remove@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.1.tgz#fa13c424ff8e964f3aa20d1098b9a690c6bfaa39" @@ -15619,14 +15897,7 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.4.0, unist-util-visit@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" - integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== - dependencies: - unist-util-visit-parents "^2.0.0" - -unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: +unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -15635,6 +15906,13 @@ unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.4.0, unist-util-visit@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + universal-cookie@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-4.0.4.tgz#06e8b3625bf9af049569ef97109b4bb226ad798d" @@ -15713,6 +15991,13 @@ update-notifier@^5.0.1: semver-diff "^3.1.1" xdg-basedir "^4.0.0" +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + integrity sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU= + dependencies: + upper-case "^1.1.1" + upper-case@2.0.1, upper-case@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.1.tgz#6214d05e235dc817822464ccbae85822b3d8665f" @@ -15720,7 +16005,7 @@ upper-case@2.0.1, upper-case@^2.0.1: dependencies: tslib "^1.10.0" -upper-case@^1.1.1: +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= @@ -15901,6 +16186,11 @@ vfile-location@^2.0.0: resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== +vfile-location@^3.0.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" + integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== + vfile-message@*, vfile-message@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" @@ -15916,16 +16206,6 @@ vfile-message@^1.0.0: dependencies: unist-util-stringify-position "^1.1.1" -vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" - integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== - dependencies: - is-buffer "^1.1.4" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - vfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" @@ -16036,7 +16316,7 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -web-namespaces@^1.0.0, web-namespaces@^1.1.2: +web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== @@ -16121,6 +16401,14 @@ webpack-merge@^4.2.2: dependencies: lodash "^4.17.15" +webpack-sources@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" + integrity sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s= + dependencies: + source-list-map "^1.1.1" + source-map "~0.5.3" + webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"