diff --git a/.babelrc b/.babelrc index 854cb73..76a3ff0 100644 --- a/.babelrc +++ b/.babelrc @@ -1,4 +1,11 @@ { - "presets": ["next/babel"], - "plugins": [["styled-components", { "ssr": true }]] + "presets": [ + ["next/babel", { + }] + ], + "plugins": [ + "babel-plugin-transform-typescript-metadata", + ["@babel/plugin-proposal-decorators", { "legacy": true }], + ["styled-components", { "ssr": true }] + ] } diff --git a/config/plugins/withLatex/index.js b/config/plugins/withLatex/index.js new file mode 100644 index 0000000..c320646 --- /dev/null +++ b/config/plugins/withLatex/index.js @@ -0,0 +1,35 @@ +const withLatex = (nextConfig = {}) => { + return Object.assign({}, nextConfig, { + webpack(config, options) { + const {isServer, dev} = options; + let outputPath = ''; + if (isServer && dev) { + outputPath = "../"; + } else if (isServer) { + outputPath = "../../"; + } + config.module.rules.push({ + test: /\.tex.yml$/, + use: [{ + loader: 'file-loader', + options: { + + publicPath: `${nextConfig.assetPrefix || nextConfig.basePath || ''}/_next/static/images/`, + outputPath: `${outputPath}static/images/`, + name: "[name]-[hash].pdf", + esModule: nextConfig.esModule || false, + }, + }, { + loader: require.resolve('./webpack.js'), + }], + }); + if (typeof nextConfig.webpack === "function") { + return nextConfig.webpack(config, options); + } + + return config; + }, + }); +} + +module.exports = withLatex; diff --git a/config/plugins/withLatex/webpack.js b/config/plugins/withLatex/webpack.js new file mode 100644 index 0000000..9774adf --- /dev/null +++ b/config/plugins/withLatex/webpack.js @@ -0,0 +1,31 @@ +require('reflect-metadata'); +require('@babel/register')({ + extensions: [".es6", ".es", ".jsx", ".js", ".mjs", ".ts"], +}); +const latex = require("node-latex") +var Readable = require('stream').Readable +const { generateLatex } = require('../../../src/latex'); + +module.exports = function (source) { + var callback = this.async(); + const location = this.resourcePath; + generateLatex(source, location) + .then((result) => { + const chunks = []; + const input = new Readable(); + input.push(result); + input.push(null); + const latexStream = latex(input); + latexStream.on('data', (chunk) => { + chunks.push(Buffer.from(chunk)); + }) + latexStream.on('finish', () => { + const result = Buffer.concat(chunks); + callback(null, result); + }) + latexStream.on('error', (err) => { + callback(err); + }) + }) + .catch(callback); +} diff --git a/content/articles/hiring/a4.tex.yml b/content/articles/hiring/a4.tex.yml new file mode 100644 index 0000000..02b0302 --- /dev/null +++ b/content/articles/hiring/a4.tex.yml @@ -0,0 +1,3 @@ +data: + structure: ./index.yml +generator: article diff --git a/articles/hiring/cover.png b/content/articles/hiring/cover.png similarity index 100% rename from articles/hiring/cover.png rename to content/articles/hiring/cover.png diff --git a/articles/hiring/img1.png b/content/articles/hiring/img1.png similarity index 100% rename from articles/hiring/img1.png rename to content/articles/hiring/img1.png diff --git a/articles/hiring/index.yml b/content/articles/hiring/index.yml similarity index 78% rename from articles/hiring/index.yml rename to content/articles/hiring/index.yml index b1accb7..3ca30ab 100644 --- a/articles/hiring/index.yml +++ b/content/articles/hiring/index.yml @@ -1,5 +1,5 @@ title: How to hire engineers, by an engineer cover: cover.png -published: 2021-03-15 +published: 2022-03-16 parts: - main.md diff --git a/articles/hiring/main.md b/content/articles/hiring/main.md similarity index 100% rename from articles/hiring/main.md rename to content/articles/hiring/main.md diff --git a/content/articles/hyperconnect/a4.tex.yml b/content/articles/hyperconnect/a4.tex.yml new file mode 100644 index 0000000..02b0302 --- /dev/null +++ b/content/articles/hyperconnect/a4.tex.yml @@ -0,0 +1,3 @@ +data: + structure: ./index.yml +generator: article diff --git a/articles/hyperconnect/authentication.md b/content/articles/hyperconnect/authentication.md similarity index 100% rename from articles/hyperconnect/authentication.md rename to content/articles/hyperconnect/authentication.md diff --git a/articles/hyperconnect/definition.md b/content/articles/hyperconnect/definition.md similarity index 100% rename from articles/hyperconnect/definition.md rename to content/articles/hyperconnect/definition.md diff --git a/articles/hyperconnect/index.yml b/content/articles/hyperconnect/index.yml similarity index 100% rename from articles/hyperconnect/index.yml rename to content/articles/hyperconnect/index.yml diff --git a/content/articles/my-home-runs-redux/a4.tex.yml b/content/articles/my-home-runs-redux/a4.tex.yml new file mode 100644 index 0000000..02b0302 --- /dev/null +++ b/content/articles/my-home-runs-redux/a4.tex.yml @@ -0,0 +1,3 @@ +data: + structure: ./index.yml +generator: article diff --git a/articles/my-home-runs-redux/cover.png b/content/articles/my-home-runs-redux/cover.png similarity index 100% rename from articles/my-home-runs-redux/cover.png rename to content/articles/my-home-runs-redux/cover.png diff --git a/content/articles/my-home-runs-redux/graph.png b/content/articles/my-home-runs-redux/graph.png new file mode 100644 index 0000000..9f8a328 Binary files /dev/null and b/content/articles/my-home-runs-redux/graph.png differ diff --git a/articles/my-home-runs-redux/index.yml b/content/articles/my-home-runs-redux/index.yml similarity index 73% rename from articles/my-home-runs-redux/index.yml rename to content/articles/my-home-runs-redux/index.yml index c70704d..cb9084b 100644 --- a/articles/my-home-runs-redux/index.yml +++ b/content/articles/my-home-runs-redux/index.yml @@ -1,5 +1,5 @@ title: My home runs Redux cover: cover.png -published: 2021-03-15 +published: 2022-03-15 parts: - main.md diff --git a/articles/my-home-runs-redux/main.md b/content/articles/my-home-runs-redux/main.md similarity index 98% rename from articles/my-home-runs-redux/main.md rename to content/articles/my-home-runs-redux/main.md index 9765e36..b5b71b1 100644 --- a/articles/my-home-runs-redux/main.md +++ b/content/articles/my-home-runs-redux/main.md @@ -56,7 +56,7 @@ Now comes the part I have feared, where I need to draw a diagram. ...sorry -![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nhzfqbddv4otq6h4zprf.png) +![Image description](./graph.png) So this shows our final setup. diff --git a/articles/npm-safety/index.yml b/content/articles/npm-safety/index.yml similarity index 100% rename from articles/npm-safety/index.yml rename to content/articles/npm-safety/index.yml diff --git a/articles/npm-safety/main.md b/content/articles/npm-safety/main.md similarity index 100% rename from articles/npm-safety/main.md rename to content/articles/npm-safety/main.md diff --git a/experiences/bilzonen/description.md b/content/experiences/bilzonen/description.md similarity index 100% rename from experiences/bilzonen/description.md rename to content/experiences/bilzonen/description.md diff --git a/experiences/bilzonen/index.yml b/content/experiences/bilzonen/index.yml similarity index 100% rename from experiences/bilzonen/index.yml rename to content/experiences/bilzonen/index.yml diff --git a/experiences/haastrup-it/description.md b/content/experiences/haastrup-it/description.md similarity index 100% rename from experiences/haastrup-it/description.md rename to content/experiences/haastrup-it/description.md diff --git a/experiences/haastrup-it/index.yml b/content/experiences/haastrup-it/index.yml similarity index 100% rename from experiences/haastrup-it/index.yml rename to content/experiences/haastrup-it/index.yml diff --git a/experiences/sampension/description.md b/content/experiences/sampension/description.md similarity index 100% rename from experiences/sampension/description.md rename to content/experiences/sampension/description.md diff --git a/experiences/sampension/index.yml b/content/experiences/sampension/index.yml similarity index 100% rename from experiences/sampension/index.yml rename to content/experiences/sampension/index.yml diff --git a/experiences/sydbank/description.md b/content/experiences/sydbank/description.md similarity index 100% rename from experiences/sydbank/description.md rename to content/experiences/sydbank/description.md diff --git a/experiences/sydbank/index.yml b/content/experiences/sydbank/index.yml similarity index 100% rename from experiences/sydbank/index.yml rename to content/experiences/sydbank/index.yml diff --git a/experiences/trendsales-app-developer/description.md b/content/experiences/trendsales-app-developer/description.md similarity index 100% rename from experiences/trendsales-app-developer/description.md rename to content/experiences/trendsales-app-developer/description.md diff --git a/experiences/trendsales-app-developer/index.yml b/content/experiences/trendsales-app-developer/index.yml similarity index 100% rename from experiences/trendsales-app-developer/index.yml rename to content/experiences/trendsales-app-developer/index.yml diff --git a/experiences/trendsales-tech-lead/description.md b/content/experiences/trendsales-tech-lead/description.md similarity index 100% rename from experiences/trendsales-tech-lead/description.md rename to content/experiences/trendsales-tech-lead/description.md diff --git a/experiences/trendsales-tech-lead/index.yml b/content/experiences/trendsales-tech-lead/index.yml similarity index 100% rename from experiences/trendsales-tech-lead/index.yml rename to content/experiences/trendsales-tech-lead/index.yml diff --git a/experiences/trendsales-web-developer/description.md b/content/experiences/trendsales-web-developer/description.md similarity index 100% rename from experiences/trendsales-web-developer/description.md rename to content/experiences/trendsales-web-developer/description.md diff --git a/experiences/trendsales-web-developer/index.yml b/content/experiences/trendsales-web-developer/index.yml similarity index 100% rename from experiences/trendsales-web-developer/index.yml rename to content/experiences/trendsales-web-developer/index.yml diff --git a/experiences/zeronorth/description.md b/content/experiences/zeronorth/description.md similarity index 100% rename from experiences/zeronorth/description.md rename to content/experiences/zeronorth/description.md diff --git a/experiences/zeronorth/index.yml b/content/experiences/zeronorth/index.yml similarity index 100% rename from experiences/zeronorth/index.yml rename to content/experiences/zeronorth/index.yml diff --git a/content/profile/a4.tex.yml b/content/profile/a4.tex.yml new file mode 100644 index 0000000..e2933ee --- /dev/null +++ b/content/profile/a4.tex.yml @@ -0,0 +1 @@ +generator: resume diff --git a/profile/index.yml b/content/profile/index.yml similarity index 100% rename from profile/index.yml rename to content/profile/index.yml diff --git a/profile/logos/codingame.svg b/content/profile/logos/codingame.svg similarity index 100% rename from profile/logos/codingame.svg rename to content/profile/logos/codingame.svg diff --git a/profile/logos/github.svg b/content/profile/logos/github.svg similarity index 100% rename from profile/logos/github.svg rename to content/profile/logos/github.svg diff --git a/profile/logos/htb.svg b/content/profile/logos/htb.svg similarity index 100% rename from profile/logos/htb.svg rename to content/profile/logos/htb.svg diff --git a/profile/logos/linkedin.svg b/content/profile/logos/linkedin.svg similarity index 100% rename from profile/logos/linkedin.svg rename to content/profile/logos/linkedin.svg diff --git a/profile/logos/logo.svg b/content/profile/logos/logo.svg similarity index 100% rename from profile/logos/logo.svg rename to content/profile/logos/logo.svg diff --git a/profile/logos/resume.svg b/content/profile/logos/resume.svg similarity index 100% rename from profile/logos/resume.svg rename to content/profile/logos/resume.svg diff --git a/profile/logos/stackoverflow.svg b/content/profile/logos/stackoverflow.svg similarity index 100% rename from profile/logos/stackoverflow.svg rename to content/profile/logos/stackoverflow.svg diff --git a/profile/me.jpg b/content/profile/me.jpg similarity index 100% rename from profile/me.jpg rename to content/profile/me.jpg diff --git a/next.config.js b/next.config.js index c78cb53..c0b0b3a 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,7 @@ const withPlugins = require("next-compose-plugins"); const withImages = require("./config/plugins/withImages.js"); +const withLatex = require('./config/plugins/withLatex'); const withBundleAnalyzer = require("@next/bundle-analyzer")({ enabled: process.env.ANALYZE === "true", }); @@ -13,6 +14,7 @@ const nextConfig = { }; module.exports = withPlugins([ + withLatex, [withImages,{ esModule: true, // using ES modules is beneficial in the case of module concatenation and tree shaking. inlineImageLimit: 0, // disable image inlining to data:base64 diff --git a/package.json b/package.json index bedf2c6..c69b610 100644 --- a/package.json +++ b/package.json @@ -11,16 +11,25 @@ "@fontsource/pacifico": "^4.5.3", "@react-three/drei": "^8.18.6", "@react-three/fiber": "^7.0.26", + "date-fns": "^2.28.0", "next": "^12.1.0", + "node-latex": "^3.1.0", "react": "^17.0.2", "react-dom": "^17.0.2", "react-markdown": "^8.0.1", + "reflect-metadata": "^0.1.13", "rehype-img-size": "^1.0.1", "remark-html": "^15.0.1", "styled-components": "^5.3.3", - "three": "^0.138.3" + "three": "^0.138.3", + "typedi": "^0.10.0" }, "devDependencies": { + "@babel/core": "^7.17.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-decorators": "^7.17.8", + "@babel/plugin-transform-modules-commonjs": "^7.17.7", + "@babel/register": "^7.17.7", "@next/bundle-analyzer": "^12.1.0", "@types/fs-extra": "^9.0.13", "@types/marked": "^4.0.3", @@ -29,17 +38,24 @@ "@types/three": "^0.138.0", "@types/yaml": "^1.9.7", "babel-plugin-styled-components": "^2.0.6", + "babel-plugin-transform-typescript-metadata": "^0.3.2", + "babel-register-esm": "^1.2.1", "file-loader": "^6.2.0", "framer-motion": "^6.2.8", "fs-extra": "^10.0.1", + "html-entities": "^2.3.3", "marked": "^4.0.12", "next-compose-plugins": "^2.2.1", "next-images": "^1.8.4", "next-mdx-remote": "^4.0.0", - "remark": "^14.0.2", - "remark-behead": "^3.0.0", + "os": "^0.1.2", + "reading-time": "^1.5.0", + "remark": "^13.0.0", + "remark-behead": "^2.3.3", "remark-slug": "^7.0.1", + "ts-node": "^10.7.0", "typescript": "^4.6.2", + "unist-util-visit": "2.0.3", "url-loader": "^4.1.1", "yaml": "^1.10.2", "yarn": "^1.22.18" diff --git a/src/components/experiences/index.tsx b/src/components/experiences/index.tsx index e66aafc..8c64cc2 100644 --- a/src/components/experiences/index.tsx +++ b/src/components/experiences/index.tsx @@ -1,7 +1,7 @@ -import React, { useEffect, useRef, useState } from "react"; +import React, { useState } from "react"; import ReactMarkdown from "react-markdown"; import styled from "styled-components"; -import { Experience } from "../../data/experiences" +import { Experience } from "../../data/repos/experiences" import { SlideIn } from '../animations/slide-in'; type Props = { diff --git a/src/components/hero/index.tsx b/src/components/hero/index.tsx index c1f05db..26a1504 100644 --- a/src/components/hero/index.tsx +++ b/src/components/hero/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import styled from 'styled-components'; -import { Profile } from '../../data/profile'; +import { Profile } from '../../data/repos/profile'; import { HeroBackground } from './background'; import { SlideIn } from '../animations/slide-in'; diff --git a/src/components/tiles/article/index.tsx b/src/components/tiles/article/index.tsx index 5b40c62..a9b2c7d 100644 --- a/src/components/tiles/article/index.tsx +++ b/src/components/tiles/article/index.tsx @@ -1,8 +1,9 @@ import Link from 'next/link'; import React from 'react'; import styled from 'styled-components'; -import { Article } from '../../../data/articles'; +import { Article } from '../../../data/repos/articles'; import { SlideIn } from '../../animations/slide-in'; +import { formatDistanceToNow } from 'date-fns'; type Props = { article: Article; @@ -33,12 +34,15 @@ const Header = styled.h3` font-weight: 600; `; -const Published = styled.time` +const Meta = styled.time` display: block; font-size: 0.8rem; padding-bottom: 1rem; `; +const Published = styled.time` +`; + const Image = styled.div<{ src: string }>` @@ -56,10 +60,15 @@ const ArticleTile: React.FC = ({ article }) => ( + + {formatDistanceToNow(new Date(article.published || 0), { addSuffix: true })} +
{article.title}
- {article.published} + +
{article.stats.minutes.toFixed(0)} min read +
{article.cover && ( diff --git a/src/data/articles.ts b/src/data/articles.ts deleted file mode 100644 index c48af32..0000000 --- a/src/data/articles.ts +++ /dev/null @@ -1,140 +0,0 @@ -import fs from 'fs-extra'; -import path from 'path'; -import yaml from 'yaml'; -import { remark } from 'remark'; -import remarkHtml from 'remark-html'; -import behead from 'remark-behead'; -import { visit } from 'unist-util-visit'; -import { config } from '../config'; - -const imageModules = (require as any).context( - '../../articles', - true, - /\.(png|jpeg)$/, -) -const images = imageModules.keys().map((key) => ({ - key, - url: imageModules(key).default, -})); - -const replaceImages = ({ id }) => (tree: any) => { - visit(tree, 'image', (node) => { - if (!node.url.startsWith('./')) return; - const correctedUrl = `.${path.resolve('/', id, node.url)}`; - const image = images.find((i: any) => i.key === correctedUrl); - node.url = image.url; - }) -} - -export type ArticlePart = string | { - title?: string; - file?: string; - notes?: string; - parts?: ArticlePart[]; -} - -export type Article = { - id: string; - title: string; - parts: ArticlePart[]; - cover?: string; - summery?: string; - published?: string; - content: string; - html: string; -} - -export class Articles { - #articles: Promise; - #images: typeof images; - - constructor() { - this.#images = images; - this.#articles = this.#load(); - } - - #loadArticle = async (location: string) => { - const id = path.basename(location); - const structureLocation = path.join(location, 'index.yml'); - const structureContent = await fs.readFile(structureLocation, 'utf-8'); - const structure = yaml.parse(structureContent) as Article; - - const buildParts = async (part: ArticlePart, depth: number) => { - const content = []; - if (typeof part === 'string') { - part = { - file: part, - } - } - if (part.title) { - content.push( - ''.padStart(depth + 1, '#') + ' ' + part.title, - ); - } - if (part.file) { - const fileLocation = path.join(location, part.file); - const fileContent = await fs.readFile(fileLocation, 'utf-8'); - content.push( - await remark().use(behead, { depth }).use(replaceImages, { id }).process(fileContent), - ); - } - if (part.parts) { - content.push( - ...await Promise.all( - part.parts.map((part) => buildParts(part, depth + 1)), - ), - ); - } - return content.join('\n'); - }; - - const articleContent = await Promise.all( - structure.parts.map((part) => buildParts(part, 1)), - ); - const cover = structure.cover - ? this.getImage(id, structure.cover) - : null; - - - const article: Article = { - ...structure, - id, - cover, - content: articleContent.join('\n'), - html: String(await remark().use(remarkHtml).process(articleContent.join('\n'))), - }; - - return article; - }; - - #load = async () => { - const rootLocation = path.join(process.cwd(), 'articles'); - const articleLocations = await fs.readdir(rootLocation); - const articles = await Promise.all(articleLocations.map( - (location) => this.#loadArticle(path.join(rootLocation, location)), - )); - return articles - .sort((a, b) => new Date(b.published || 0).getTime() - new Date(a.published || 0).getTime()) - .filter(a => a.published || config.dev) - - } - - public getImage = (article: string, name: string) => { - const url = `.${path.resolve('/', article, name)}`; - const image = this.#images.find((i: any) => i.key === url); - return image ? image.url : null; - } - - public get = async (id: string) => { - const articles = await this.list(); - const article = articles.find(a => a.id === id); - return article; - }; - - public list = async () => { - const articles = await this.#articles; - return articles; - } -} - -export const articleDB = new Articles(); diff --git a/src/data/assets/WebpackAssets.ts b/src/data/assets/WebpackAssets.ts new file mode 100644 index 0000000..ab1349d --- /dev/null +++ b/src/data/assets/WebpackAssets.ts @@ -0,0 +1,30 @@ +import path from 'path'; +import { AssetResolver } from './'; + +const assetModules = (require as any).context( + '../../../content', + true, + /\.(png|jpe?g|svg|gif|tex\.yml)$/, +) +const assets = assetModules.keys().reduce((output, key: string) => ({ + ...output, + [path.resolve( + '/', + key, + )]: assetModules(key).default || assetModules(key), +}), {} as any); + +class WebpackAssetResolver extends AssetResolver { + #assets = assets; + + public getPath = (...location: string[]) => { + const target = path.resolve( + '/', + ...location, + ); + const assetModule = this.#assets[target]; + return assetModule; + } +} + +export { WebpackAssetResolver }; diff --git a/src/data/assets/index.ts b/src/data/assets/index.ts new file mode 100644 index 0000000..258578a --- /dev/null +++ b/src/data/assets/index.ts @@ -0,0 +1,8 @@ +import { Service } from "typedi"; + +@Service() +abstract class AssetResolver { + public abstract getPath(...loc: string[]): string; +} + +export { AssetResolver }; diff --git a/src/data/helpers/markdown.ts b/src/data/helpers/markdown.ts new file mode 100644 index 0000000..e34761b --- /dev/null +++ b/src/data/helpers/markdown.ts @@ -0,0 +1,66 @@ +import fs from 'fs-extra'; +import path from 'path'; +import behead from 'remark-behead'; +import remark from 'remark'; +import visit from 'unist-util-visit'; +import { AssetResolver } from '../assets'; + +type MarkdownSection = string | { + title?: string; + file?: string; + notes?: string; + parts?: MarkdownSection[]; +}; + +const replaceImages = ({ location, assets }: any) => (tree: any) => { + visit(tree, 'image', (node: any) => { + if (!node.url.startsWith('./')) return; + const resolvedLocation = assets.getPath( + path.resolve('/', location, node.url), + ); + node.url = resolvedLocation; + }) +}; + +const generate = async ( + location: string, + section: MarkdownSection, + depth: number, + assets: AssetResolver, +) => { + const result: string[] = []; + if (typeof section === 'string') { + section = { + file: section, + }; + } + if (section.title) { + result.push(''.padStart(depth, '#') + ' ' + section.title); + depth += 1; + } + if (section.file) { + const fileLocation = path.resolve('content', location, section.file); + const fileContent = await fs.readFile(fileLocation, 'utf-8'); + const markdown = String( + await remark() + .use(behead, { depth }) + .use(replaceImages, { location, assets }).process(fileContent), + ); + result.push(markdown); + } + if (section.parts) { + const sectionMarkdown = await Promise.all( + section.parts.map(s => generate( + location, + s, + depth + 1, + assets, + )), + ); + result.push(...sectionMarkdown); + } + return result.join('\n\n'); +} + +export type { MarkdownSection }; +export { generate }; diff --git a/src/data/repos/articles.ts b/src/data/repos/articles.ts new file mode 100644 index 0000000..6626853 --- /dev/null +++ b/src/data/repos/articles.ts @@ -0,0 +1,100 @@ +import fs from 'fs-extra'; +import path from 'path'; +import { Service } from 'typedi'; +import yaml from 'yaml'; +import { config } from '../../config'; +import { AssetResolver } from '../assets'; +import { generate, MarkdownSection } from '../helpers/markdown'; +import readingTime from 'reading-time'; + +export type ArticlePart = string | { + title?: string; + file?: string; + notes?: string; + parts?: ArticlePart[]; +} + +export type Article = { + id: string; + title: string; + parts: MarkdownSection[]; + cover?: string; + summery?: string; + published?: string; + content: string; + stats: ReturnType; + pdfs: { + a4: string; + }; +} + +@Service() +export class ArticleDB { + #articles: Promise; + #assets: AssetResolver; + + constructor( + assets: AssetResolver, + ) { + this.#assets = assets; + this.#articles = this.#load(); + } + + #loadArticle = async (location: string) => { + const id = path.basename(location); + const structureLocation = path.join('content', location, 'index.yml'); + const structureContent = await fs.readFile(structureLocation, 'utf-8'); + const structure = yaml.parse(structureContent) as Article; + + const articleContent = await Promise.all( + structure.parts.map((part) => generate( + location, + part, + 2, + this.#assets, + )), + ); + const cover = structure.cover + ? this.#assets.getPath(path.resolve('/', location, structure.cover)) + : null; + const stats = readingTime(articleContent.join('\n')); + + const article: Article = { + ...structure, + id, + cover, + content: articleContent.join('\n'), + stats, + pdfs: { + a4: this.#assets.getPath( + path.resolve('/', 'articles', id, 'a4.tex.yml'), + ) || null, + } + }; + + return article; + }; + + #load = async () => { + const rootLocation = path.join('content', 'articles'); + const articleLocations = await fs.readdir(rootLocation); + const articles = await Promise.all(articleLocations.map( + (location) => this.#loadArticle(path.join('articles', location)), + )); + return articles + .sort((a, b) => new Date(b.published || 0).getTime() - new Date(a.published || 0).getTime()) + .filter(a => a.published || config.dev) + + } + + public get = async (id: string) => { + const articles = await this.list(); + const article = articles.find(a => a.id === id); + return article; + }; + + public list = async () => { + const articles = await this.#articles; + return articles; + } +} diff --git a/src/data/experiences.ts b/src/data/repos/experiences.ts similarity index 50% rename from src/data/experiences.ts rename to src/data/repos/experiences.ts index 71f2354..13e7e16 100644 --- a/src/data/experiences.ts +++ b/src/data/repos/experiences.ts @@ -1,29 +1,9 @@ import fs from 'fs-extra'; import path from 'path'; +import { Service } from 'typedi'; import yaml from 'yaml'; -import { remark } from 'remark'; -import remarkHtml from 'remark-html'; -import behead from 'remark-behead'; -import { visit } from 'unist-util-visit'; - -const imageModules = (require as any).context( - '../../experiences', - true, - /\.(png|jpeg)$/, -) -const images = imageModules.keys().map((key) => ({ - key, - url: imageModules(key).default, -})); - -const replaceImages = ({ id }) => (tree: any) => { - visit(tree, 'image', (node) => { - if (!node.url.startsWith('./')) return; - const correctedUrl = `.${path.resolve('/', id, node.url)}`; - const image = images.find((i: any) => i.key === correctedUrl); - node.url = image.url; - }) -} +import { AssetResolver } from '../assets'; +import { generate } from '../helpers/markdown'; export type Experience = { id: string; @@ -31,18 +11,20 @@ export type Experience = { name: string; } title: string; + content: string; startDate: string; endDate: string; - content: string; - html: string; } +@Service() export class ExperienceDB { #experiences: Promise; - #images: typeof images; + #assets: AssetResolver; - constructor() { - this.#images = images; + constructor( + assets: AssetResolver, + ) { + this.#assets = assets; this.#experiences = this.#load(); } @@ -52,22 +34,24 @@ export class ExperienceDB { const structureContent = await fs.readFile(structureLocation, 'utf-8'); const structure = yaml.parse(structureContent) as Experience; - const fileLocation = path.join(location, 'description.md'); - const fileContent = await fs.readFile(fileLocation, 'utf-8'); - const content = await remark().use(replaceImages, { id }).process(fileContent); + const content = await generate( + location, + 'description.md', + 1, + this.#assets, + ) const experience: Experience = { ...structure, id, content: String(content), - html: String(await remark().use(remarkHtml).process(content)), }; return experience; }; #load = async () => { - const rootLocation = path.join(process.cwd(), 'experiences'); + const rootLocation = path.join(process.cwd(), 'content', 'experiences'); const articleLocations = await fs.readdir(rootLocation); const articles = await Promise.all(articleLocations.map( (location) => this.#loadExperience(path.join(rootLocation, location)), @@ -75,12 +59,6 @@ export class ExperienceDB { return articles.sort((a, b) => new Date(b.startDate).getTime() - new Date(a.startDate).getTime()); } - public getImage = (article: string, name: string) => { - const url = `.${path.resolve('/', article, name)}`; - const image = this.#images.find((i: any) => i.key === url); - return image ? image.url : null; - } - public get = async (id: string) => { const articles = await this.list(); const article = articles.find(a => a.id === id); @@ -92,5 +70,3 @@ export class ExperienceDB { return experiences; } } - -export const experienceDB = new ExperienceDB(); diff --git a/src/data/profile.ts b/src/data/repos/profile.ts similarity index 60% rename from src/data/profile.ts rename to src/data/repos/profile.ts index e125b06..efd0d65 100644 --- a/src/data/profile.ts +++ b/src/data/repos/profile.ts @@ -1,17 +1,9 @@ import fs from 'fs-extra'; import path from 'path'; +import { Service } from 'typedi'; import yaml from 'yaml'; - -const imageModules = (require as any).context( - '../../profile', - true, - /\.(png|jpe?g|svg)$/, -) -const images = imageModules.keys().map((key) => ({ - key, - url: imageModules(key).default, -})); +import { AssetResolver } from '../assets'; export type Profile = { name: string; @@ -27,27 +19,35 @@ export type Profile = { }[] } +@Service() export class ProfileDB { #profile: Promise; + #assets: AssetResolver; - constructor() { + constructor( + assets: AssetResolver, + ) { + this.#assets = assets; this.#profile = this.#load(); } #load = async () => { - const rootLocation = path.join(process.cwd(), 'profile'); + const rootLocation = path.join(process.cwd(), 'content', 'profile'); const structureLocation = path.join(rootLocation, 'index.yml'); const structureContent = await fs.readFile(structureLocation, 'utf-8'); const structure = yaml.parse(structureContent) as Profile; if (structure.avatar) { - const image = images.find((i: any) => i.key === `.${path.resolve('/', structure.avatar)}`) - structure.avatar = image.url; + const image = this.#assets.getPath( + 'profile', + structure.avatar, + ) + structure.avatar = image || null; } structure.social = structure.social.map((social) => { - const image = images.find((i: any) => i.key === `.${path.resolve('/', social.logo)}`) + const image = this.#assets.getPath('profile', social.logo); return { ...social, - logo: image?.url || null, + logo: image || null, }; }) return structure; @@ -58,5 +58,3 @@ export class ProfileDB { return profile; }; } - -export const profileDB = new ProfileDB(); diff --git a/src/latex/generators/Generator.ts b/src/latex/generators/Generator.ts new file mode 100644 index 0000000..f8c7019 --- /dev/null +++ b/src/latex/generators/Generator.ts @@ -0,0 +1,3 @@ +type LatexGenerator = (data: T, location: string) => Promise; + +export type { LatexGenerator }; diff --git a/src/latex/generators/article/index.ts b/src/latex/generators/article/index.ts new file mode 100644 index 0000000..34f76e8 --- /dev/null +++ b/src/latex/generators/article/index.ts @@ -0,0 +1,45 @@ +import type { Article } from "../../../data/repos/articles"; +import fs from 'fs-extra'; +import { LatexGenerator } from "../Generator"; +import { generate } from '../../../data/helpers/markdown'; +import path from 'path'; +import yaml from 'yaml'; +import { fromMarkdown } from "../../helpers/convert"; + +const assets = { + getPath: (source: string) => { + return source; + }, +} +type Data = { + structure: string; +} +const article: LatexGenerator = async (data, location) => { + const dir = path.dirname(location); + const structureLocation = path.resolve(dir, data.structure); + const structureContent = await fs.readFile(structureLocation, 'utf-8'); + const structure = yaml.parse(structureContent) as Article; + const sections = await Promise.all(structure.parts.map( + part => generate( + dir, + part, + 1, + assets, + ), + )); + const content = sections.join('\n\n'); + + return ` +\\documentclass[twocolumn]{article} +\\usepackage{graphicx} +\\usepackage[skip=5pt plus1pt, indent=10pt]{parskip} +\\setlength\\columnsep{1cm} +\\title{${structure.title}} +\\begin{document} +\\maketitle +${fromMarkdown(content, 0)} +\\end{document} + `; +} + +export { article }; diff --git a/src/latex/generators/index.ts b/src/latex/generators/index.ts new file mode 100644 index 0000000..b96996f --- /dev/null +++ b/src/latex/generators/index.ts @@ -0,0 +1,10 @@ +import { LatexGenerator } from "./Generator"; +import { article } from './article'; +import { resume } from './resume'; + +const generators: {[name: string]: LatexGenerator} = { + article, + resume, +}; + +export { generators }; diff --git a/src/latex/generators/resume/index.ts b/src/latex/generators/resume/index.ts new file mode 100644 index 0000000..df921cf --- /dev/null +++ b/src/latex/generators/resume/index.ts @@ -0,0 +1,35 @@ +import { LatexGenerator } from "../Generator"; +import Container from 'typedi'; +import { AssetResolver } from '../../../data/assets'; +import { ProfileDB } from '../../../data/repos/profile'; +import { ExperienceDB } from '../../../data/repos/experiences'; + +const assets = { + getPath: (source: string) => { + return source; + }, +} +type Data = { + structure: string; +} +const resume: LatexGenerator = async (data, location) => { + Container.set(AssetResolver, assets); + const profileDB = Container.get(ProfileDB); + const experienceDB = Container.get(ExperienceDB); + + const profile = await profileDB.get(); + const experiences = await experienceDB.list(); + + return ` +\\documentclass[twocolumn]{article} +\\usepackage{graphicx} +\\usepackage[skip=5pt plus1pt, indent=10pt]{parskip} +\\setlength\\columnsep{1cm} +\\title{${profile.name}} +\\begin{document} +\\maketitle +\\end{document} + `; +} + +export { resume }; diff --git a/src/latex/helpers/convert.ts b/src/latex/helpers/convert.ts new file mode 100644 index 0000000..8168b4f --- /dev/null +++ b/src/latex/helpers/convert.ts @@ -0,0 +1,82 @@ +import { existsSync } from 'fs-extra'; +import { decode } from 'html-entities'; +import { marked } from 'marked'; + +const latexTypes = [ + '', + 'section', + 'subsection', + 'paragraph', +]; + +const sanitize = (text?: string) => { + if (!text) return ''; + return decode(text) + .replace('&', '\\&') + .replace('_', '\\_') + .replace(/([^\\])\}/g, '$1\\}') + .replace(/([^\\])\{/g, '$1\\{') + .replace(/[^\\]\[/g, '\\[') + .replace('#', '\\#'); +}; + +const renderer = (outerDepth: number) => ({ + heading: (text: string, depth: number) => { + return `\\${latexTypes[outerDepth + depth]}{${sanitize(text)}}\n\n` + }, + code: (input: string) => { + return ` + \\begin{lstlisting} + ${input} + \\end{lstlisting} + ` + }, + text: (input: string) => { + return sanitize(input); + }, + paragraph: (input: string) => { + return `${input}\n\n` + }, + list: (input: string) => { + return ` + \\begin{itemize} + ${input} + \\end{itemize} + ` + }, + listitem: (input: string) => { + return `\\item{${input}}` + }, + link: (href: string, text: string) => { + if (!text || text === href) { + return `\\url{${sanitize(href)}}`; + } + return `${sanitize(text)} (\\url{${sanitize(href)}})` + }, + strong: (text: string) => { + return `\\textbf{${sanitize(text)}}` + }, + em: (text: string) => { + return `\\textbf{${sanitize(text)}}` + }, + codespan: (code: string) => { + return `\\texttt{${sanitize(code)}}` + }, + image: (link: string) => { + console.log('link', link); + if (!existsSync(link)) { + return 'Online image not supported'; + } + return `\\begin{figure}[h!] + \\includegraphics[width=0.5\\textwidth]{${link}} + \\centering +\\end{figure} +` + }, +}); + + +export const fromMarkdown = (md: string, depth: number) => { + marked.use({ renderer: renderer(depth) }); + return marked.parse(md); +} diff --git a/src/latex/index.ts b/src/latex/index.ts new file mode 100644 index 0000000..98d7e3f --- /dev/null +++ b/src/latex/index.ts @@ -0,0 +1,12 @@ +import { generators } from "./generators"; +import yaml from 'yaml'; +import path from 'path'; + +const generateLatex = async (source: string, location: string) => { + const definition = yaml.parse(source); + const generator = generators[definition.generator]; + const latex = await generator(definition.data, location); + return latex; +} + +export { generateLatex }; diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx index 42871f5..59340fa 100644 --- a/src/pages/_document.tsx +++ b/src/pages/_document.tsx @@ -1,3 +1,4 @@ +import 'reflect-metadata'; import Document from 'next/document'; import { ServerStyleSheet } from 'styled-components'; diff --git a/src/pages/articles/[id].tsx b/src/pages/articles/[id].tsx index 93ae2a7..0354046 100644 --- a/src/pages/articles/[id].tsx +++ b/src/pages/articles/[id].tsx @@ -1,11 +1,15 @@ import React from 'react'; import styled from 'styled-components'; -import { Article, articleDB } from '../../data/articles'; +import { formatDistanceToNow } from 'date-fns'; import { Content } from '../../components/content'; import ReactMarkdown, { Components } from 'react-markdown'; import { Navigation } from '../../components/navigation'; import Head from 'next/head'; -import { Profile, profileDB } from '../../data/profile'; +import { Article, ArticleDB } from '../../data/repos/articles'; +import { Profile, ProfileDB } from '../../data/repos/profile'; +import Container from 'typedi'; +import { AssetResolver } from '../../data/assets'; +import { WebpackAssetResolver } from '../../data/assets/WebpackAssets'; type Props = { article: Article; @@ -51,10 +55,13 @@ const Wrapper = styled.article` } `; -const Published = styled.time` +const Meta = styled.div` font-size: 0.8rem; `; +const Published = styled.time` +`; + const Cover = styled.img` width: 100%; max-width: 100%; @@ -82,7 +89,13 @@ const ArticleView: React.FC = ({

{article.title}

- 3 days ago + + {formatDistanceToNow(new Date(article.published || 0), { addSuffix: true })} + {' '} - {article.stats.minutes.toFixed(0)} minute read + {' '} - {article.pdfs.a4 &&( + Download as PDF + )} + {article.content} @@ -94,6 +107,8 @@ const ArticleView: React.FC = ({ }; export async function getStaticPaths() { + Container.set(AssetResolver, new WebpackAssetResolver()); + const articleDB = Container.get(ArticleDB); const articles = await articleDB.list(); return { paths: articles.map(a => `/articles/${a.id}`), @@ -103,6 +118,9 @@ export async function getStaticPaths() { export async function getStaticProps({ params }: any) { const { id } = params; + Container.set(AssetResolver, new WebpackAssetResolver()); + const articleDB = Container.get(ArticleDB); + const profileDB = Container.get(ProfileDB); const article = await articleDB.get(id); const profile = await profileDB.get(); return { diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 264da8b..063cc8d 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,44 +1,58 @@ import Head from 'next/head'; import React from 'react'; +import Container from 'typedi'; import { Content } from '../components/content'; import { Experiences } from '../components/experiences'; import { Featured } from '../components/featured'; import { Hero } from '../components/hero'; import { ArticleTile } from '../components/tiles/article'; -import { Article, articleDB } from '../data/articles'; -import { Experience, experienceDB } from '../data/experiences'; -import { Profile, profileDB } from '../data/profile'; +import { AssetResolver } from '../data/assets'; +import { WebpackAssetResolver } from '../data/assets/WebpackAssets'; +import { Article, ArticleDB } from '../data/repos/articles'; +import { Experience, ExperienceDB } from '../data/repos/experiences'; +import { Profile, ProfileDB } from '../data/repos/profile'; type Props = { + resume: string; articles: Article[]; profile: Profile; experiences: Experience[]; }; -const Home: React.FC = ({ articles, profile, experiences }) => ( - <> - - {profile.name} - {profile.tagline} - - - - - {articles.map((article) => ( - - ))} - - - - -); +const Home: React.FC = ({ resume, articles, profile, experiences }) => { + console.log('resume', resume); + return ( + <> + + {profile.name} - {profile.tagline} + + + + + {articles.map((article) => ( + + ))} + + + + + ); +}; export async function getStaticProps() { + Container.set(AssetResolver, new WebpackAssetResolver()); + const articleDB = Container.get(ArticleDB); + const profileDB = Container.get(ProfileDB); + const experienceDB = Container.get(ExperienceDB); + const assets = Container.get(AssetResolver); const articles = await articleDB.list(); const profile = await profileDB.get(); const experiences = await experienceDB.list(); + const resume = assets.getPath('profile', 'a4.tex.yml'); return { props: { + resume, profile, articles, experiences, diff --git a/tsconfig.json b/tsconfig.json index cd9bcb6..0dc1c85 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,14 +10,16 @@ "skipLibCheck": true, "strict": false, "forceConsistentCasingInFileNames": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, "noEmit": true, "esModuleInterop": true, - "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", - "incremental": true + "incremental": true, + "module": "esnext" }, "include": [ "next-env.d.ts", diff --git a/yarn.lock b/yarn.lock index 89f1dc0..8ca7d8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" @@ -9,7 +16,33 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/generator@^7.17.3": +"@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== + +"@babel/core@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" + integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + +"@babel/generator@^7.17.3", "@babel/generator@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== @@ -18,13 +51,36 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.16.0": +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: "@babel/types" "^7.16.7" +"@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" + integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -55,13 +111,64 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: "@babel/types" "^7.16.7" +"@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -74,6 +181,20 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helpers@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" + integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/highlight@^7.16.7": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" @@ -83,11 +204,58 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.16.7", "@babel/parser@^7.17.3": +"@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== +"@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-decorators@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz#4f0444e896bee85d35cf714a006fc5418f87ff00" + integrity sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/plugin-syntax-decorators" "^7.17.0" + charcodes "^0.2.0" + +"@babel/plugin-syntax-decorators@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" + integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-commonjs@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" + integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== + dependencies: + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/register@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.7.tgz#5eef3e0f4afc07e25e847720e7b987ae33f08d0b" + integrity sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" + "@babel/runtime@^7.11.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.7": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" @@ -104,7 +272,7 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.4.5": +"@babel/traverse@^7.16.7", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== @@ -155,6 +323,18 @@ resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-10.1.2.tgz#d2fb7b968141139e5c2419553e5295382c265e7d" integrity sha512-bbZIpW6fdyf7FMaeDmw3cBbkTqsecxEkwlVKgVfqqXWBPLH6azxhPA2V9F7OhoZSVrsnMYw7QuyK6qutXPjEew== +"@cspotcode/source-map-consumer@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + +"@cspotcode/source-map-support@0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" + integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + "@emotion/is-prop-valid@^0.8.2", "@emotion/is-prop-valid@^0.8.8": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" @@ -207,6 +387,24 @@ resolved "https://registry.yarnpkg.com/@fontsource/pacifico/-/pacifico-4.5.3.tgz#926ef7a399521df71377041bcd4ea1a4624e58b0" integrity sha512-Yrl1Ssdc837z3kenYFwK0BEZBhXwrzVfUqvJFQsVQOUSQnxEYaQ8sE/xhMkV6QhobZ3wpNYTQ5YtNKp+KJ8ZBg== +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mdx-js/mdx@^2.0.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.1.0.tgz#a984cee27a378619a82d193288031a7b83a54b26" @@ -395,6 +593,26 @@ utility-types "^3.10.0" zustand "^3.5.1" +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + "@types/acorn@^4.0.0": version "4.0.6" resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" @@ -495,6 +713,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.22.tgz#38b6c4b9b2f3ed9f2e376cce42a298fb2375251e" integrity sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw== +"@types/node@^11.12.0": + version "11.15.54" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.54.tgz#59ed60e7b0d56905a654292e8d73275034eb6283" + integrity sha512-1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g== + "@types/prop-types@*", "@types/prop-types@^15.0.0": version "15.7.4" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" @@ -528,7 +751,7 @@ resolved "https://registry.yarnpkg.com/@types/three/-/three-0.138.0.tgz#ec9f1d1fd8dffea2e0572f9d815ff5a35cf4dc6b" integrity sha512-D8AoV7h2kbCfrv/DcebHOFh1WDwyus3HdooBkAwcBikXArdqnsQ38PQ85JCunnvun160oA9jz53GszF3zch3tg== -"@types/unist@*", "@types/unist@^2.0.0": +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== @@ -562,12 +785,12 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.0.0: +acorn-walk@^8.0.0, acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.0.0, acorn@^8.0.4: +acorn@^8.0.0, acorn@^8.0.4, acorn@^8.4.1: version "8.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -624,6 +847,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -639,6 +867,13 @@ astring@^1.6.0: resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.1.tgz#a91c4afd4af3523e11f31242a3d5d9af62bb6cc6" integrity sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ== +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" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + "babel-plugin-styled-components@>= 1.12.0", babel-plugin-styled-components@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.6.tgz#6f76c7f7224b7af7edc24a4910351948c691fc90" @@ -655,11 +890,35 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= +babel-plugin-transform-typescript-metadata@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz#7a327842d8c36ffe07ee1b5276434e56c297c9b7" + integrity sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +babel-register-esm@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/babel-register-esm/-/babel-register-esm-1.2.1.tgz#2c1c925cfbc4d3ebf1cb98c29f12d14f53c3cafc" + integrity sha512-NCGOf8F7CxkHXW0I18SM4KT/BUaJ3HmtL4U79ynERkzUDIevGs1f/vCJmCKjsJyq7Bg0UpAZ70Lf1sjWxZIBZA== + dependencies: + package-resolver "^1.1.0" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + bail@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -686,6 +945,30 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +browserslist@^4.17.5: + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== + dependencies: + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" + escalade "^3.1.1" + node-releases "^2.0.2" + picocolors "^1.0.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -694,6 +977,14 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -704,6 +995,11 @@ caniuse-lite@^1.0.30001283: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz#eb4da4eb3ecdd409f7ba1907820061d56096e88f" integrity sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw== +caniuse-lite@^1.0.30001317: + version "1.0.30001322" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz#2e4c09d11e1e8f852767dab287069a8d0c29d623" + integrity sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew== + ccount@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" @@ -731,21 +1027,41 @@ character-entities-html4@^2.0.0: resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + character-entities-legacy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + character-entities@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + character-reference-invalid@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== +charcodes@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" + integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== + chevrotain@^10.1.1: version "10.1.2" resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-10.1.2.tgz#c990ab43e32fd0bfb176ad1cbdebf48302ac8542" @@ -763,6 +1079,15 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -818,16 +1143,38 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" @@ -847,6 +1194,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== +date-fns@^2.28.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== + debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -899,6 +1251,13 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -921,6 +1280,11 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diff@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -936,6 +1300,11 @@ duplexer@^0.1.2: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +electron-to-chromium@^1.4.84: + version "1.4.99" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.99.tgz#da97e2c116dc6de2f91a81b4ff8d1b19bf54dc1f" + integrity sha512-YXMzbvlo6pW12KWw0bj6cIGCJi1Moy8PLCuuzgRzg6WYIcHILK3szU+HHnHFx2b373qRv+cfmHhbmRbatyAbPA== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -953,6 +1322,11 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1025,6 +1399,22 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + framer-motion@^6.2.8: version "6.2.8" resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-6.2.8.tgz#02abb529191af7e2df444185fe27e932215b715d" @@ -1059,6 +1449,24 @@ fs-extra@^10.0.1: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" + integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1073,6 +1481,20 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" @@ -1083,6 +1505,18 @@ github-slugger@^1.0.0: resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== +glob@^7.1.3: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -1093,7 +1527,7 @@ glsl-noise@^0.0.0: resolved "https://registry.yarnpkg.com/glsl-noise/-/glsl-noise-0.0.0.tgz#367745f3a33382c0eeec4cb54b7e99cfc1d7670b" integrity sha1-NndF86MzgsDu7Ey1S36Zz8HXZws= -graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== @@ -1115,11 +1549,23 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbols@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + hast-util-is-element@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz#fc0b0dc7cef3895e839b8d66979d57b0338c68f3" @@ -1188,6 +1634,11 @@ hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" +html-entities@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== + html-void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f" @@ -1212,7 +1663,15 @@ image-size@^1.0.0: dependencies: queue "6.0.2" -inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1227,11 +1686,24 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== +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== + is-alphabetical@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-alphanumerical@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" @@ -1250,6 +1722,11 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + is-decimal@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" @@ -1267,16 +1744,33 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + is-hexadecimal@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-obj@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.0.0.tgz#06c0999fd7574edf5a906ba5644ad0feb3a84d22" integrity sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-reference@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.0.tgz#b1380c03d96ddf7089709781e3208fceb0c92cd6" @@ -1289,6 +1783,11 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -1316,6 +1815,13 @@ json5@^2.1.2: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -1325,6 +1831,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + kleur@^4.0.3: version "4.1.4" resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" @@ -1344,6 +1855,14 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.iteratee@^4.5.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz#be4177db289a8ccc3c0990f1db26b5b22fc1554c" @@ -1369,6 +1888,11 @@ lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +longest-streak@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== + longest-streak@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" @@ -1388,6 +1912,19 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + markdown-extensions@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" @@ -1407,6 +1944,17 @@ mdast-util-definitions@^5.0.0: "@types/unist" "^2.0.0" unist-util-visit "^3.0.0" +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + mdast-util-from-markdown@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" @@ -1488,6 +2036,18 @@ mdast-util-to-hast@^12.0.0, mdast-util-to-hast@^12.1.0: unist-util-position "^4.0.0" unist-util-visit "^4.0.0" +mdast-util-to-markdown@^0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" + integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" @@ -1501,6 +2061,11 @@ mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: unist-util-visit "^4.0.0" zwitch "^2.0.0" +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" @@ -1800,6 +2365,14 @@ micromark@^3.0.0: micromark-util-types "^1.0.1" uvu "^0.5.0" +micromark@~2.11.0: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -1822,6 +2395,13 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.0, minimist@^1.2.3: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -1939,6 +2519,22 @@ node-addon-api@^3.1.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== +node-latex@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/node-latex/-/node-latex-3.1.0.tgz#7e5173321fc434f1e5e5a2b9aee7b740a0a06594" + integrity sha512-9Enrc0bhYQREo/rjhLVYjEi0aHoCIS6gNQUIywJm2GwaXff8m4qeL55o5W0agYGZYOh2liJ2Zyguavyc2LUkOg== + dependencies: + "@types/node" "^11.12.0" + fs-extra "^2.0.0" + string-to-stream "^1.1.0" + temp "^0.8.3" + through2 "^2.0.3" + +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + npmlog@^4.0.1, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -1959,7 +2555,22 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -once@^1.3.1, once@^1.4.0: +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -1979,6 +2590,47 @@ opentype.js@^1.3.3: string.prototype.codepointat "^0.2.1" tiny-inflate "^1.0.3" +os@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/os/-/os-0.1.2.tgz#f29a50c62908516ba42652de42f7038600cadbc2" + integrity sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ== + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-resolver@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/package-resolver/-/package-resolver-1.1.0.tgz#cf2ba6c5217587b5f9cef3f49f5be5edb2fa3b02" + integrity sha512-HJGNWSxBaRn6mnfTwxyGP+bsL3FaFkXz1NVZWg2I7XJH7ivmXElQ0KVIHiqCwq1LKGmIveoWy289vCwHz3KQFw== + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-entities@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb" @@ -1993,6 +2645,16 @@ parse-entities@^4.0.0: is-decimal "^2.0.0" is-hexadecimal "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + periscopic@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1" @@ -2011,6 +2673,23 @@ picomatch@^2.3.0: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + popmotion@11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9" @@ -2198,7 +2877,7 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" -readable-stream@^2.0.6: +readable-stream@^2.0.6, readable-stream@^2.1.0, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -2220,6 +2899,16 @@ readable-stream@^3.1.1, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +reading-time@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" + integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== + +reflect-metadata@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== + regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" @@ -2238,16 +2927,16 @@ rehype-img-size@^1.0.1: image-size "^1.0.0" unist-util-visit "^4.1.0" -remark-behead@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remark-behead/-/remark-behead-3.0.0.tgz#d64530509b223d62c1a467f37e1259cd9f740443" - integrity sha512-qbP+4Qfc1ArpXd4MQAxg1zQ20W3rJZ+2FmVoH6VhcNfDQuOFcndFV7GWRVsYRVAj0+42uobwh6yPNastFG0WXQ== +remark-behead@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/remark-behead/-/remark-behead-2.3.3.tgz#536d7676e7f944433cf907e3c49d315591db74a6" + integrity sha512-quY6Of8Bwj4pgrG/Qce6a/sMMzFc0XxbfeYko+mPjOScIB+TKw3T0Y2GUcIEL8+xbQgAnCylkPQNt9haCEWK9w== dependencies: - unist-util-find "^1.0.2" - unist-util-find-all-after "^4.0.0" - unist-util-find-all-before "^4.0.0" - unist-util-find-all-between "^2.1.0" - unist-util-visit "^4.1.0" + unist-util-find "^1.0.1" + unist-util-find-all-after "^3.0.1" + unist-util-find-all-before "^2.0.5" + unist-util-find-all-between "^2.0.0" + unist-util-visit "^2.0.3" remark-html@^15.0.1: version "15.0.1" @@ -2277,6 +2966,13 @@ remark-parse@^10.0.0: mdast-util-from-markdown "^1.0.0" unified "^10.0.0" +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== + dependencies: + mdast-util-from-markdown "^0.8.0" + remark-rehype@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" @@ -2299,24 +2995,26 @@ remark-slug@^7.0.1: unified "^10.0.0" unist-util-visit "^4.0.0" -remark-stringify@^10.0.0: - version "10.0.2" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-10.0.2.tgz#50414a6983f5008eb9e72eed05f980582d1f69d7" - integrity sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw== +remark-stringify@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" + integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.0.0" - unified "^10.0.0" + mdast-util-to-markdown "^0.6.0" -remark@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/remark/-/remark-14.0.2.tgz#4a1833f7441a5c29e44b37bb1843fb820797b40f" - integrity sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA== +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" + integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== dependencies: - "@types/mdast" "^3.0.0" - remark-parse "^10.0.0" - remark-stringify "^10.0.0" - unified "^10.0.0" + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" + +repeat-string@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= require-from-string@^2.0.2: version "2.0.2" @@ -2328,6 +3026,13 @@ resize-observer-polyfill@^1.5.1: resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + sade@^1.7.3: version "1.8.1" resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" @@ -2372,11 +3077,16 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -semver@^5.4.1: +semver@^5.4.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@^7.3.4: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -2389,6 +3099,13 @@ set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -2459,11 +3176,24 @@ source-map-js@^1.0.1: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-support@^0.5.16: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" @@ -2481,6 +3211,14 @@ stream-parser@~0.3.1: dependencies: debug "2" +string-to-stream@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string-to-stream/-/string-to-stream-1.1.1.tgz#aba78f73e70661b130ee3e1c0192be4fef6cb599" + integrity sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw== + dependencies: + inherits "^2.0.1" + readable-stream "^2.1.0" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -2621,6 +3359,13 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" +temp@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + three-mesh-bvh@^0.5.4: version "0.5.6" resolved "https://registry.yarnpkg.com/three-mesh-bvh/-/three-mesh-bvh-0.5.6.tgz#4e5f8316ecfc669c7f97478a359eb6b59e72af02" @@ -2647,6 +3392,14 @@ three@^0.138.3: resolved "https://registry.yarnpkg.com/three/-/three-0.138.3.tgz#7be5153d79dcbf9e9baad82e7faf8c29edda4ed0" integrity sha512-4t1cKC8gimNyJChJbaklg8W/qj3PpsLJUIFm5LIuAy/hVxxNm1ru2FGTSfbTSsuHmC/7ipsyuGKqrSAKLNtkzg== +through2@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + tiny-inflate@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" @@ -2682,11 +3435,35 @@ troika-worker-utils@^0.46.0: resolved "https://registry.yarnpkg.com/troika-worker-utils/-/troika-worker-utils-0.46.0.tgz#1b698090af78b51a27e03881c90237a2e648d6c4" integrity sha512-bzOx5f2ZBxkFhXtIvDJlLn2AI3bzCkGVbCndl/2dL5QZrwHEKl45OEIilCxYQQWJG1rEbOD9O80tMjoYjw19OA== +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + trough@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== +ts-node@^10.7.0: + version "10.7.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" + integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== + dependencies: + "@cspotcode/source-map-support" "0.7.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.0" + yn "3.1.1" + tslib@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" @@ -2699,6 +3476,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +typedi@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/typedi/-/typedi-0.10.0.tgz#e8f9a5ee100b84addbdfb57fe90d8d9ed2a21dea" + integrity sha512-v3UJF8xm68BBj6AF4oQML3ikrfK2c9EmZUyLOfShpJuItAqVBHWP/KtpGinkSsIiP6EZyyb6Z3NXyW9dgS9X1w== + typescript@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" @@ -2717,6 +3499,18 @@ unified@^10.0.0: trough "^2.0.0" vfile "^5.0.0" +unified@^9.1.0: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + unist-builder@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04" @@ -2724,23 +3518,21 @@ unist-builder@^3.0.0: dependencies: "@types/unist" "^2.0.0" -unist-util-find-all-after@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-4.0.0.tgz#6ba05256a20ccb45e8140df98a8ae42d692674a0" - integrity sha512-/Rj2vJwB9Cl+6HtTZ9wrJ62UQNfYURAakaaskha/lv0jAjssu7SjDPcNvJphYW37lCQfSrEC6VQxt4g5KiGMiw== +unist-util-find-all-after@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6" + integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ== dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" + unist-util-is "^4.0.0" -unist-util-find-all-before@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-find-all-before/-/unist-util-find-all-before-4.0.0.tgz#da5c5395cd883d8005775b36d71a0b8606ef992f" - integrity sha512-iMW5OS5EGQzOAOK3yhRjZp/AYQ3HH21pv9rxnxhI5IbzWGmUFaGbFE3Az+DZ3s+km+oEEH+oLxNUkXRv48o82A== +unist-util-find-all-before@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/unist-util-find-all-before/-/unist-util-find-all-before-2.0.5.tgz#8b9958ae0590fc7c53cb16053f01d39a0452b1a4" + integrity sha512-lYakZyw3trON5qbsOsmtRARZTyKcQN8pkoMKLy558Nt8WhlqGAnRSD9qLrISkMKbS+0nhj8LiebgoheUtQXOZw== dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" + unist-util-is "^4.0.0" -unist-util-find-all-between@^2.1.0: +unist-util-find-all-between@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/unist-util-find-all-between/-/unist-util-find-all-between-2.1.0.tgz#18ddb51f7abc4e22c645b4321e82ab6a6decc640" integrity sha512-OCCUtDD8UHKeODw3TPXyFDxPCbpgBzbGTTaDpR68nvxkwiVcawBqMVrokfBMvUi7ij2F5q7S4s4Jq5dvkcBt+w== @@ -2748,7 +3540,7 @@ unist-util-find-all-between@^2.1.0: unist-util-find "^1.0.1" unist-util-is "^4.0.2" -unist-util-find@^1.0.1, unist-util-find@^1.0.2: +unist-util-find@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/unist-util-find/-/unist-util-find-1.0.2.tgz#4d5b01a69fca2a382ad4f55f9865e402129ecf56" integrity sha512-ft06UDYzqi9o9RmGP0sZWI/zvLLQiBW2/MD+rW6mDqbOWDcmknGX9orQPspfuGRYWr8eSJAmfsBcvOpfGRJseA== @@ -2798,6 +3590,13 @@ unist-util-remove-position@^4.0.0: "@types/unist" "^2.0.0" unist-util-visit "^4.0.0" +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + unist-util-stringify-position@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz#5c6aa07c90b1deffd9153be170dce628a869a447" @@ -2812,7 +3611,7 @@ unist-util-visit-parents@^2.0.0: dependencies: unist-util-is "^3.0.0" -unist-util-visit-parents@^3.1.1: +unist-util-visit-parents@^3.0.0, unist-util-visit-parents@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== @@ -2836,6 +3635,15 @@ unist-util-visit-parents@^5.0.0: "@types/unist" "^2.0.0" unist-util-is "^5.0.0" +unist-util-visit@2.0.3, unist-util-visit@^2.0.3: + 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== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + unist-util-visit@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" @@ -2916,6 +3724,11 @@ uvu@^0.5.0: kleur "^4.0.3" sade "^1.7.3" +v8-compile-cache-lib@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" + integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== + vfile-matter@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/vfile-matter/-/vfile-matter-3.0.1.tgz#85e26088e43aa85c04d42ffa3693635fa2bc5624" @@ -2925,6 +3738,14 @@ vfile-matter@^3.0.1: is-buffer "^2.0.0" js-yaml "^4.0.0" +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.2.tgz#a2908f64d9e557315ec9d7ea3a910f658ac05f7d" @@ -2933,6 +3754,16 @@ vfile-message@^3.0.0: "@types/unist" "^2.0.0" unist-util-stringify-position "^3.0.0" +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + vfile@^5.0.0, vfile@^5.3.0: version "5.3.2" resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.2.tgz#b499fbc50197ea50ad3749e9b60beb16ca5b7c54" @@ -2985,6 +3816,11 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -3000,6 +3836,11 @@ yarn@^1.22.18: resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.18.tgz#05b822ade8c672987bab8858635145da0850f78a" integrity sha512-oFffv6Jp2+BTUBItzx1Z0dpikTX+raRdqupfqzeMKnoh7WD6RuPAxcqDkMUy9vafJkrB0YaV708znpuMhEBKGQ== +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + zstddec@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.0.2.tgz#57e2f28dd1ff56b750e07d158a43f0611ad9eeb4" @@ -3010,6 +3851,11 @@ zustand@^3.5.1, zustand@^3.5.13: resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.7.1.tgz#7388f0a7175a6c2fd9a2880b383a4bf6cdf6b7c6" integrity sha512-wHBCZlKj+bg03/hP+Tzv24YhnqqP8MCeN9ECPDXoF01062SIbnfl3j9O0znkDw1lNTY0a8WN3F///a0UhhaEqg== +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== + zwitch@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1"