diff --git a/website/src/components/Navbar.astro b/website/src/components/Navbar.astro
new file mode 100644
index 00000000..aaa093de
--- /dev/null
+++ b/website/src/components/Navbar.astro
@@ -0,0 +1,22 @@
+
+
diff --git a/website/src/env.d.ts b/website/src/env.d.ts
new file mode 100644
index 00000000..f964fe0c
--- /dev/null
+++ b/website/src/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/website/src/layouts/Layout.astro b/website/src/layouts/Layout.astro
new file mode 100644
index 00000000..05593c8f
--- /dev/null
+++ b/website/src/layouts/Layout.astro
@@ -0,0 +1,71 @@
+---
+import '../../assets/css/tailwind.pcss'
+
+import Navbar from '../components/Navbar.astro'
+
+export interface Props {
+ title: string;
+}
+
+const { title } = Astro.props;
+
+interface Link {
+ title: string,
+ href: string,
+}
+
+const footerLinks = [
+ {
+ title: 'About',
+ href: '/',
+ },
+ {
+ title: 'Blog',
+ href: '/blog',
+ },
+ {
+ title: 'Talks',
+ href: '/talks',
+ },
+ {
+ title: 'Daily list',
+ href: '/daily',
+ },
+]
+---
+
+
+
+
+
+
+
+
+
+
+
{title}
+
+
+
+
+
+
+
{title}
+
+
+
+
+
+
+
+
+ {footerLinks && footerLinks.map(link => (
+ {link.title}
+ ))}
+
+
+
+
+
+
+
diff --git a/website/src/layouts/PageLayout.astro b/website/src/layouts/PageLayout.astro
new file mode 100644
index 00000000..3b9a4943
--- /dev/null
+++ b/website/src/layouts/PageLayout.astro
@@ -0,0 +1,11 @@
+---
+import BaseLayout from './Layout.astro'
+
+const { title } = Astro.props.frontmatter || Astro.props;
+---
+
+
+
+
+
+
diff --git a/website/src/pages/ansible-course.mdx b/website/src/pages/ansible-course.mdx
new file mode 100644
index 00000000..a5d2a12f
--- /dev/null
+++ b/website/src/pages/ansible-course.mdx
@@ -0,0 +1,19 @@
+---
+layout: ../layouts/PageLayout.astro
+title: Ansible email course
+---
+
+
+
+Register for my upcoming Ansible email course.
+
+
diff --git a/website/src/pages/archive.xml.js b/website/src/pages/archive.xml.js
new file mode 100644
index 00000000..00bf66cd
--- /dev/null
+++ b/website/src/pages/archive.xml.js
@@ -0,0 +1,8 @@
+import rss from '@astrojs/rss';
+
+export const get = () => rss({
+ title: 'Daily list',
+ description: '',
+ site: 'https://www.oliverdavies.uk',
+ items: import.meta.glob('./daily-emails/**/*.{md,mdx}'),
+})
diff --git a/website/src/pages/archive/[...slug].astro b/website/src/pages/archive/[...slug].astro
new file mode 100644
index 00000000..534626bf
--- /dev/null
+++ b/website/src/pages/archive/[...slug].astro
@@ -0,0 +1,21 @@
+---
+import DailyEmailForm from '../../components/DailyEmailForm.astro'
+import PageLayout from '../../layouts/PageLayout.astro'
+
+export async function getStaticPaths() {
+ const emails = await Astro.glob('../daily-emails/*.md')
+
+ return emails.map(email => ({
+ params: {
+ slug: email.frontmatter.permalink.replace('archive/', ''),
+ },
+ props: {
+ email,
+ }
+ }))
+}
+
+const { Content } = Astro.props.email
+---
+
+
diff --git a/website/src/pages/archive/index.astro b/website/src/pages/archive/index.astro
new file mode 100644
index 00000000..b56def2f
--- /dev/null
+++ b/website/src/pages/archive/index.astro
@@ -0,0 +1,28 @@
+---
+import PageLayout from '../../layouts/PageLayout.astro'
+
+const emails = await Astro.glob('../daily-emails/*.md');
+
+const sortedEmails = emails
+ .sort((a, b) =>
+ new Date(b.frontmatter.pubDate).valueOf() -
+ new Date(a.frontmatter.pubDate).valueOf()
+ )
+---
+
+
+
+
diff --git a/website/src/pages/blog/[slug].astro b/website/src/pages/blog/[slug].astro
new file mode 100644
index 00000000..16fc9f32
--- /dev/null
+++ b/website/src/pages/blog/[slug].astro
@@ -0,0 +1,29 @@
+---
+import Layout from '../../layouts/Layout.astro'
+
+export async function getStaticPaths() {
+ const posts = await Astro.glob('../../posts/*.md')
+
+ return posts
+ .map(post => {
+ const parts = post.file.replace('.md', '').split('/')
+ const slug = parts[parts.length - 1]
+
+ return {
+ params: { slug },
+ props: { post },
+ }
+ })
+}
+
+const { Content } = Astro.props.post
+const { title } = Astro.props.post.frontmatter
+---
+
+
+
+
diff --git a/website/src/pages/blog/index.astro b/website/src/pages/blog/index.astro
new file mode 100644
index 00000000..8bff3188
--- /dev/null
+++ b/website/src/pages/blog/index.astro
@@ -0,0 +1,50 @@
+---
+import PageLayout from '../../layouts/PageLayout.astro'
+
+const posts = await Astro.glob("../../posts/*.md")
+
+// TODO: show all posts when running locally.
+const filteredPosts = posts
+ .filter(post => !post.frontmatter.draft)
+ .filter(post => post.frontmatter.date)
+
+const sortedPosts = filteredPosts
+ .map(post => {
+ const parts = post.file.replace('.md', '').split('/')
+ const slug = parts[parts.length - 1]
+
+ return { post, slug }
+ })
+ .sort((a, b) =>
+ new Date(b.post.frontmatter.date).valueOf() -
+ new Date(a.post.frontmatter.date).valueOf()
+ )
+---
+
+
+ This is where I publish my personal blog posts as well as technical posts and tutorials on topics such as Drupal, PHP, Tailwind CSS, automated testing, and systems administration.
+
+
+ {sortedPosts.map((post) => (
+
+
+ {post.post.frontmatter.title}
+
+
+ {post.post.frontmatter.date && (
+
+ {new Date(post.post.frontmatter.date).toLocaleDateString('en-GB', {
+ day: 'numeric',
+ month: 'long',
+ year: 'numeric',
+ })}
+
+ )}
+
+
+
{post.post.frontmatter.excerpt}
+
+
+ ))}
+
+
diff --git a/website/source/_pages/call.md b/website/src/pages/call.mdx
similarity index 50%
rename from website/source/_pages/call.md
rename to website/src/pages/call.mdx
index 867b4f1a..fdb1d53e 100644
--- a/website/source/_pages/call.md
+++ b/website/src/pages/call.mdx
@@ -1,4 +1,5 @@
---
+layout: ../layouts/PageLayout.astro
title: Book a 1-on-1 consulting call
link: https://savvycal.com/opdavies/consulting-call
price: 149
@@ -6,30 +7,25 @@ price: 149
## How it works
-- You book a 60 minute consulting call with me.
-- Once payment is received, you’ll obtain a link to schedule a meeting in my calendar.
-- The meeting will take place over Zoom.
+- You book a 60 minute consulting call with me.
+- Once payment is received, you’ll obtain a link to schedule a meeting in my calendar.
+- The meeting will take place over Zoom.
-
Book your call now →
+
Book your call now →
If you don’t find the call valuable, I’ll refund 100% of the cost.
### Typical subjects of interest include
-- How to approach a new project or task.
-- Help writing your first automated test or starting with test-driven development.
-- Introducing static analysis or other code quality tools to your project.
-- Automating tasks with Docker and/or Ansible.
-- Help to fix a bug or some broken code.
-- Reviewing your code and providing advice and suggestions.
+- How to approach a new project or task.
+- Help writing your first automated test or starting with test-driven development.
+- Introducing static analysis or other code quality tools to your project.
+- Automating tasks with Docker and/or Ansible.
+- Help to fix a bug or some broken code.
+- Reviewing your code and providing advice and suggestions.
-
-{% include 'about-author' with {
- avatar: site.avatar,
- work: site.work,
-} only %}
diff --git a/website/source/_pages/company-information.md b/website/src/pages/company-information.mdx
similarity index 72%
rename from website/source/_pages/company-information.md
rename to website/src/pages/company-information.mdx
index 1ade56c8..d10b5cd3 100644
--- a/website/source/_pages/company-information.md
+++ b/website/src/pages/company-information.mdx
@@ -1,11 +1,10 @@
---
-title: Company Information
+layout: ../layouts/PageLayout.astro
+title: Company information
---
-
Company name : Oliver Davies Ltd (previously Oliver Davies Web Development Ltd)
Registered address : 3 Westfield Close, Caerleon, Newport, NP18 3ED
Company number : 8017706
-
diff --git a/website/src/pages/contact.mdx b/website/src/pages/contact.mdx
new file mode 100644
index 00000000..f02680c9
--- /dev/null
+++ b/website/src/pages/contact.mdx
@@ -0,0 +1,12 @@
+---
+layout: ../layouts/PageLayout.astro
+title: Contact Oliver
+---
+
+export const email = 'oliver@oliverdavies.uk'
+
+The best way to get in touch with me is via email:
{email} . I usually reply within one business day.
+
+I'm also on [LinkedIn][linkedin].
+
+[linkedin]: https://www.linkedin.com/in/opdavies
diff --git a/website/source/_daily_emails/2022-08-12-git-worktrees-docker-compose.md b/website/src/pages/daily-emails/2022-08-12-git-worktrees-docker-compose.md
similarity index 97%
rename from website/source/_daily_emails/2022-08-12-git-worktrees-docker-compose.md
rename to website/src/pages/daily-emails/2022-08-12-git-worktrees-docker-compose.md
index ae7cbdaa..c235f8b2 100644
--- a/website/source/_daily_emails/2022-08-12-git-worktrees-docker-compose.md
+++ b/website/src/pages/daily-emails/2022-08-12-git-worktrees-docker-compose.md
@@ -1,5 +1,7 @@
---
+permalink: archive/2022/08/12/git-worktrees-docker-compose
title: Git Worktrees and Docker Compose
+pubDate: 2022-08-12
---
I've recently started trialing Git worktrees again as part of my development workflow.
diff --git a/website/source/_daily_emails/2022-08-13-i-wrote-a-neovim-plugin.md b/website/src/pages/daily-emails/2022-08-13-i-wrote-a-neovim-plugin.md
similarity index 96%
rename from website/source/_daily_emails/2022-08-13-i-wrote-a-neovim-plugin.md
rename to website/src/pages/daily-emails/2022-08-13-i-wrote-a-neovim-plugin.md
index cfd750a8..f8456457 100644
--- a/website/source/_daily_emails/2022-08-13-i-wrote-a-neovim-plugin.md
+++ b/website/src/pages/daily-emails/2022-08-13-i-wrote-a-neovim-plugin.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/13/i-wrote-a-neovim-plugin
+pubDate: 2022-08-13
title: I wrote a Neovim plugin
tags:
- neovim
diff --git a/website/source/_daily_emails/2022-08-14-why-i-write-tests.md b/website/src/pages/daily-emails/2022-08-14-why-i-write-tests.md
similarity index 97%
rename from website/source/_daily_emails/2022-08-14-why-i-write-tests.md
rename to website/src/pages/daily-emails/2022-08-14-why-i-write-tests.md
index dc4f48e2..3347a630 100644
--- a/website/source/_daily_emails/2022-08-14-why-i-write-tests.md
+++ b/website/src/pages/daily-emails/2022-08-14-why-i-write-tests.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/14/why-i-write-tests
+pubDate: 2022-08-14
title: "Why I write automated tests"
tags: [testing]
---
diff --git a/website/source/_daily_emails/2022-08-15-using-run-file-simplify-project-tasks.md b/website/src/pages/daily-emails/2022-08-15-using-run-file-simplify-project-tasks.md
similarity index 97%
rename from website/source/_daily_emails/2022-08-15-using-run-file-simplify-project-tasks.md
rename to website/src/pages/daily-emails/2022-08-15-using-run-file-simplify-project-tasks.md
index aafae489..6d2435d3 100644
--- a/website/source/_daily_emails/2022-08-15-using-run-file-simplify-project-tasks.md
+++ b/website/src/pages/daily-emails/2022-08-15-using-run-file-simplify-project-tasks.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/15/using-run-file-simplify-project-tasks
+pubDate: 2022-08-15
title: Using a "run" file to simplify project tasks
tags: ["php"]
---
diff --git a/website/source/_daily_emails/2022-08-16-what-are-git-hooks-why-are-they-useful.md b/website/src/pages/daily-emails/2022-08-16-what-are-git-hooks-why-are-they-useful.md
similarity index 97%
rename from website/source/_daily_emails/2022-08-16-what-are-git-hooks-why-are-they-useful.md
rename to website/src/pages/daily-emails/2022-08-16-what-are-git-hooks-why-are-they-useful.md
index efa7b2ef..c94c05d5 100644
--- a/website/source/_daily_emails/2022-08-16-what-are-git-hooks-why-are-they-useful.md
+++ b/website/src/pages/daily-emails/2022-08-16-what-are-git-hooks-why-are-they-useful.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/16/what-are-git-hooks-why-are-they-useful
+pubDate: 2022-08-16
title: "What are Git hooks and why are they useful?"
tags: ["git"]
---
diff --git a/website/source/_daily_emails/2022-08-17-one-more-run-command-git-worktrees.md b/website/src/pages/daily-emails/2022-08-17-one-more-run-command-git-worktrees.md
similarity index 95%
rename from website/source/_daily_emails/2022-08-17-one-more-run-command-git-worktrees.md
rename to website/src/pages/daily-emails/2022-08-17-one-more-run-command-git-worktrees.md
index ec3423a2..e0474f33 100644
--- a/website/source/_daily_emails/2022-08-17-one-more-run-command-git-worktrees.md
+++ b/website/src/pages/daily-emails/2022-08-17-one-more-run-command-git-worktrees.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/17/one-more-run-command-git-worktrees
+pubDate: 2022-08-17
title: One more "run" command, for Git worktrees
tags: ["drupal", "git"]
---
diff --git a/website/source/_daily_emails/2022-08-18-talking-drupal-tailwind-css.md b/website/src/pages/daily-emails/2022-08-18-talking-drupal-tailwind-css.md
similarity index 96%
rename from website/source/_daily_emails/2022-08-18-talking-drupal-tailwind-css.md
rename to website/src/pages/daily-emails/2022-08-18-talking-drupal-tailwind-css.md
index 9236698d..c3d004b0 100644
--- a/website/source/_daily_emails/2022-08-18-talking-drupal-tailwind-css.md
+++ b/website/src/pages/daily-emails/2022-08-18-talking-drupal-tailwind-css.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/18/talking-drupal-tailwind-css
+pubDate: 2022-08-18
title: "'Talking Drupal' and Tailwind CSS"
tags:
- css
diff --git a/website/source/_daily_emails/2022-08-19-pair-programming-or-code-reviews.md b/website/src/pages/daily-emails/2022-08-19-pair-programming-or-code-reviews.md
similarity index 95%
rename from website/source/_daily_emails/2022-08-19-pair-programming-or-code-reviews.md
rename to website/src/pages/daily-emails/2022-08-19-pair-programming-or-code-reviews.md
index 8e031587..dcda3afc 100644
--- a/website/source/_daily_emails/2022-08-19-pair-programming-or-code-reviews.md
+++ b/website/src/pages/daily-emails/2022-08-19-pair-programming-or-code-reviews.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/19/pair-programming-or-code-reviews
+pubDate: 2022-08-19
title: Pair programming or code reviews?
---
diff --git a/website/source/_daily_emails/2022-08-20.md b/website/src/pages/daily-emails/2022-08-20.md
similarity index 95%
rename from website/source/_daily_emails/2022-08-20.md
rename to website/src/pages/daily-emails/2022-08-20.md
index d318abe9..f5b7dcc3 100644
--- a/website/source/_daily_emails/2022-08-20.md
+++ b/website/src/pages/daily-emails/2022-08-20.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-08-20
title: "A return to offline meetups and conferences"
-permalink: "/archive/2022/08/20/return-to-offline-meetups-conferences"
+permalink: "archive/2022/08/20/return-to-offline-meetups-conferences"
tags: ["community"]
---
diff --git a/website/source/_daily_emails/2022-08-21.md b/website/src/pages/daily-emails/2022-08-21.md
similarity index 98%
rename from website/source/_daily_emails/2022-08-21.md
rename to website/src/pages/daily-emails/2022-08-21.md
index 4a90f22f..a1916fbe 100644
--- a/website/source/_daily_emails/2022-08-21.md
+++ b/website/src/pages/daily-emails/2022-08-21.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/21/2022-08-21
+pubDate: 2022-08-21
title: "Why I use Docker and Docker Compose for my projects"
tags:
- docker
diff --git a/website/source/_daily_emails/2022-08-22.md b/website/src/pages/daily-emails/2022-08-22.md
similarity index 96%
rename from website/source/_daily_emails/2022-08-22.md
rename to website/src/pages/daily-emails/2022-08-22.md
index 13d3af41..45af8ed7 100644
--- a/website/source/_daily_emails/2022-08-22.md
+++ b/website/src/pages/daily-emails/2022-08-22.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/22/2022-08-22
+pubDate: 2022-08-22
title: "Being a T-shaped Developer"
---
diff --git a/website/source/_daily_emails/2022-08-23.md b/website/src/pages/daily-emails/2022-08-23.md
similarity index 97%
rename from website/source/_daily_emails/2022-08-23.md
rename to website/src/pages/daily-emails/2022-08-23.md
index 99728033..7b546f53 100644
--- a/website/source/_daily_emails/2022-08-23.md
+++ b/website/src/pages/daily-emails/2022-08-23.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-08-23
title: "Git: GUI or command-line?"
-permalink: "/archive/2022/08/23/git-gui-command-line"
+permalink: "archive/2022/08/23/git-gui-command-line"
tags:
- "git"
---
diff --git a/website/source/_daily_emails/2022-08-24.md b/website/src/pages/daily-emails/2022-08-24.md
similarity index 98%
rename from website/source/_daily_emails/2022-08-24.md
rename to website/src/pages/daily-emails/2022-08-24.md
index 200ed095..3790c2a2 100644
--- a/website/source/_daily_emails/2022-08-24.md
+++ b/website/src/pages/daily-emails/2022-08-24.md
@@ -1,4 +1,6 @@
---
+permalink: archive/2022/08/24/2022-08-24
+pubDate: 2022-08-24
title: "How I've configured Git"
tags:
- "git"
diff --git a/website/source/_daily_emails/2022-08-25.md b/website/src/pages/daily-emails/2022-08-25.md
similarity index 95%
rename from website/source/_daily_emails/2022-08-25.md
rename to website/src/pages/daily-emails/2022-08-25.md
index 50f1333c..304e1a53 100644
--- a/website/source/_daily_emails/2022-08-25.md
+++ b/website/src/pages/daily-emails/2022-08-25.md
@@ -1,7 +1,8 @@
---
+pubDate: 2022-08-25
title: "Why I work in Neovim"
tags: ["vim", "neovim"]
-permalink: "/archive/2022/08/25/why-i-work-in-neovim"
+permalink: "archive/2022/08/25/why-i-work-in-neovim"
---
Over a year ago, I posted that I was [switching to using Neovim full-time]({{site.url}}/blog/going-full-vim) for my development work.
diff --git a/website/source/_daily_emails/2022-08-26.md b/website/src/pages/daily-emails/2022-08-26.md
similarity index 95%
rename from website/source/_daily_emails/2022-08-26.md
rename to website/src/pages/daily-emails/2022-08-26.md
index 096c5db9..d6cb695f 100644
--- a/website/source/_daily_emails/2022-08-26.md
+++ b/website/src/pages/daily-emails/2022-08-26.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-08-26
title: "Always be learning"
-permalink: "/archive/2022/08/26/always-be-learning"
+permalink: "archive/2022/08/26/always-be-learning"
---
I've been a Developer for 15 years and one thing that I've always focussed on is to always keep learning.
diff --git a/website/source/_daily_emails/2022-08-27.md b/website/src/pages/daily-emails/2022-08-27.md
similarity index 94%
rename from website/source/_daily_emails/2022-08-27.md
rename to website/src/pages/daily-emails/2022-08-27.md
index 8717a647..3e6950ec 100644
--- a/website/source/_daily_emails/2022-08-27.md
+++ b/website/src/pages/daily-emails/2022-08-27.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-08-27
title: "Giving back"
-permalink: "/archive/2022/08/27/giving-back"
+permalink: "archive/2022/08/27/giving-back"
---
Today, I've been at an event run by a local animal rescue charity. It's one that we attend often as my children like to enter the dog show, but this year, I've also sponsored one of the categories.
diff --git a/website/source/_daily_emails/2022-08-28.md b/website/src/pages/daily-emails/2022-08-28.md
similarity index 96%
rename from website/source/_daily_emails/2022-08-28.md
rename to website/src/pages/daily-emails/2022-08-28.md
index b6f6ef16..c531f4e4 100644
--- a/website/source/_daily_emails/2022-08-28.md
+++ b/website/src/pages/daily-emails/2022-08-28.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-08-28
title: "How I started programming"
-permalink: "/archive/2022-08-28/how-started-programming"
+permalink: "archive/2022-08-28/how-started-programming"
---
In 2007, I was working in the IT sector in a Desktop Support role but hadn't done any coding professionally.
diff --git a/website/source/_daily_emails/2022-08-29.md b/website/src/pages/daily-emails/2022-08-29.md
similarity index 96%
rename from website/source/_daily_emails/2022-08-29.md
rename to website/src/pages/daily-emails/2022-08-29.md
index c7f42dc3..78ba11f0 100644
--- a/website/source/_daily_emails/2022-08-29.md
+++ b/website/src/pages/daily-emails/2022-08-29.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-08-29
title: "Why I like Drupal"
-permalink: "/archive/2022/08/29/why-like-drupal"
+permalink: "archive/2022/08/29/why-like-drupal"
tags: ["drupal"]
---
diff --git a/website/source/_daily_emails/2022-08-30.md b/website/src/pages/daily-emails/2022-08-30.md
similarity index 96%
rename from website/source/_daily_emails/2022-08-30.md
rename to website/src/pages/daily-emails/2022-08-30.md
index fd4a8040..7b1a3577 100644
--- a/website/source/_daily_emails/2022-08-30.md
+++ b/website/src/pages/daily-emails/2022-08-30.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-08-30
title: "Why I don't only use Drupal"
-permalink: "/archive/2022/08/30/why-dont-only-use-drupal"
+permalink: "archive/2022/08/30/why-dont-only-use-drupal"
tags: ["drupal"]
---
diff --git a/website/source/_daily_emails/2022-09-01.md b/website/src/pages/daily-emails/2022-09-01.md
similarity index 96%
rename from website/source/_daily_emails/2022-09-01.md
rename to website/src/pages/daily-emails/2022-09-01.md
index fe40e571..638335fb 100644
--- a/website/source/_daily_emails/2022-09-01.md
+++ b/website/src/pages/daily-emails/2022-09-01.md
@@ -1,7 +1,8 @@
---
+pubDate: 2022-09-01
title: "Conventional commits and CHANGELOGs"
tags: []
-permalink: "/archive/2022/09/01/conventional-commits-changelogs"
+permalink: "archive/2022/09/01/conventional-commits-changelogs"
---
One of the things that I've done since joining my current team is to implement a standard approach for our commit messages.
diff --git a/website/source/_daily_emails/2022-09-02.md b/website/src/pages/daily-emails/2022-09-02.md
similarity index 93%
rename from website/source/_daily_emails/2022-09-02.md
rename to website/src/pages/daily-emails/2022-09-02.md
index 88cc2081..ed423a13 100644
--- a/website/source/_daily_emails/2022-09-02.md
+++ b/website/src/pages/daily-emails/2022-09-02.md
@@ -1,7 +1,7 @@
---
title: "Automating all the things with Ansible"
-date: "2022-09-02"
-permalink: "/archive/2022/09/02/automating-all-the-things-with-ansible"
+pubDate: "2022-09-02"
+permalink: "archive/2022/09/02/automating-all-the-things-with-ansible"
tags: ["ansible"]
---
diff --git a/website/source/_daily_emails/2022-09-03.md b/website/src/pages/daily-emails/2022-09-03.md
similarity index 96%
rename from website/source/_daily_emails/2022-09-03.md
rename to website/src/pages/daily-emails/2022-09-03.md
index f836c372..479cec25 100644
--- a/website/source/_daily_emails/2022-09-03.md
+++ b/website/src/pages/daily-emails/2022-09-03.md
@@ -1,6 +1,7 @@
---
+pubDate: 2022-09-03
title: Creating infrastructure with Ansible
-permalink: /archives/2022/09/03/creating-infrastructure-with-ansible
+permalink: archives/2022/09/03/creating-infrastructure-with-ansible
tags: ["ansible"]
---
diff --git a/website/source/_daily_emails/2022-09-04.md b/website/src/pages/daily-emails/2022-09-04.md
similarity index 94%
rename from website/source/_daily_emails/2022-09-04.md
rename to website/src/pages/daily-emails/2022-09-04.md
index dd83eaaf..10152648 100644
--- a/website/source/_daily_emails/2022-09-04.md
+++ b/website/src/pages/daily-emails/2022-09-04.md
@@ -1,7 +1,7 @@
---
title: "Using Ansible for server configuration"
-date: "2022-09-04"
-permalink: "/archive/2022/09/04/using-ansible-for-server-configuration"
+pubDate: "2022-09-04"
+permalink: "archive/2022/09/04/using-ansible-for-server-configuration"
---
[In yesterday's email]({{site.url}}/archives/2022/09/03/creating-infrastructure-with-ansible), I described how to set up a blank server with Ansible.
diff --git a/website/source/_daily_emails/2022-09-05.md b/website/src/pages/daily-emails/2022-09-05.md
similarity index 92%
rename from website/source/_daily_emails/2022-09-05.md
rename to website/src/pages/daily-emails/2022-09-05.md
index e6d1b4bb..b8145fb4 100644
--- a/website/source/_daily_emails/2022-09-05.md
+++ b/website/src/pages/daily-emails/2022-09-05.md
@@ -1,7 +1,7 @@
---
title: "Using Ansible for local environment configuration"
-date: "2022-09-05"
-permalink: "/archive/2022/09/05/using-ansible-for-local-configuration"
+pubDate: "2022-09-05"
+permalink: "archive/2022/09/05/using-ansible-for-local-configuration"
---
As well as [configuring servers]({{site.url}}/archive/2022/09/04/using-ansible-for-server-configuration), you can use Ansible to configure your own local machine and development environment.
diff --git a/website/source/_daily_emails/2022-09-06.md b/website/src/pages/daily-emails/2022-09-06.md
similarity index 94%
rename from website/source/_daily_emails/2022-09-06.md
rename to website/src/pages/daily-emails/2022-09-06.md
index c75e80ed..8810aa3b 100644
--- a/website/source/_daily_emails/2022-09-06.md
+++ b/website/src/pages/daily-emails/2022-09-06.md
@@ -1,7 +1,7 @@
---
title: "Deploying applications with Ansible"
-date: "2022-09-06"
-permalink: "/archive/2022/09/06/deploying-applications-with-ansible"
+pubDate: "2022-09-06"
+permalink: "archive/2022/09/06/deploying-applications-with-ansible"
---
The last few days' emails have been about using Ansible to create and configure infrastructure, but it can also be used to deploy application code.
diff --git a/website/source/_daily_emails/2022-09-07.md b/website/src/pages/daily-emails/2022-09-07.md
similarity index 97%
rename from website/source/_daily_emails/2022-09-07.md
rename to website/src/pages/daily-emails/2022-09-07.md
index fbdca355..25e4a794 100644
--- a/website/source/_daily_emails/2022-09-07.md
+++ b/website/src/pages/daily-emails/2022-09-07.md
@@ -1,7 +1,7 @@
---
title: "My Tailwind CSS origin story"
-date: "2022-09-07"
-permalink: "/archive/2022/09/07/my-tailwind-css-origin-story"
+pubDate: "2022-09-07"
+permalink: "archive/2022/09/07/my-tailwind-css-origin-story"
tags: ["tailwind-css"]
---
diff --git a/website/source/_daily_emails/2022-09-08.md b/website/src/pages/daily-emails/2022-09-08.md
similarity index 95%
rename from website/source/_daily_emails/2022-09-08.md
rename to website/src/pages/daily-emails/2022-09-08.md
index 047f2a2e..4e86b0d2 100644
--- a/website/source/_daily_emails/2022-09-08.md
+++ b/website/src/pages/daily-emails/2022-09-08.md
@@ -1,7 +1,7 @@
---
title: "Keeping secrets with Ansible Vault"
-date: "2022-09-08"
-permalink: "/archive/2022/09/08/keeping-secrets-with-ansible-vault"
+pubDate: "2022-09-08"
+permalink: "archive/2022/09/08/keeping-secrets-with-ansible-vault"
tags: ["ansible"]
---
diff --git a/website/source/_daily_emails/2022-09-09.md b/website/src/pages/daily-emails/2022-09-09.md
similarity index 94%
rename from website/source/_daily_emails/2022-09-09.md
rename to website/src/pages/daily-emails/2022-09-09.md
index 0bccdc40..132a338b 100644
--- a/website/source/_daily_emails/2022-09-09.md
+++ b/website/src/pages/daily-emails/2022-09-09.md
@@ -1,7 +1,7 @@
---
title: "Refactoring a Tailwind CSS component"
-date: "2022-09-09"
-permalink: "/archive/2022/09/09/refactoring-tailwind-component"
+pubDate: "2022-09-09"
+permalink: "archive/2022/09/09/refactoring-tailwind-component"
tags: ["tailwind-css"]
---
diff --git a/website/source/_daily_emails/2022-09-10.md b/website/src/pages/daily-emails/2022-09-10.md
similarity index 95%
rename from website/source/_daily_emails/2022-09-10.md
rename to website/src/pages/daily-emails/2022-09-10.md
index ed55a9a1..96095bf7 100644
--- a/website/source/_daily_emails/2022-09-10.md
+++ b/website/src/pages/daily-emails/2022-09-10.md
@@ -1,7 +1,7 @@
---
title: "Automating Ansible deployments in CI"
-date: "2022-09-10"
-permalink: "/archive/2022/09/10/automating-ansible-deployments-ci"
+pubDate: "2022-09-10"
+permalink: "archive/2022/09/10/automating-ansible-deployments-ci"
tags: ["ansible"]
---
diff --git a/website/source/_daily_emails/2022-09-11.md b/website/src/pages/daily-emails/2022-09-11.md
similarity index 95%
rename from website/source/_daily_emails/2022-09-11.md
rename to website/src/pages/daily-emails/2022-09-11.md
index 11b3dab5..31621ca8 100644
--- a/website/source/_daily_emails/2022-09-11.md
+++ b/website/src/pages/daily-emails/2022-09-11.md
@@ -1,7 +1,7 @@
---
title: "Custom styles in Tailwind CSS: `@apply`, `theme` or custom plugins"
-date: "2022-09-11"
-permalink: "/archive/2022/09/11/custom-styles-tailwind-css-apply-theme-custom-plugins"
+pubDate: "2022-09-11"
+permalink: "archive/2022/09/11/custom-styles-tailwind-css-apply-theme-custom-plugins"
tags: ["tailwind-css"]
---
diff --git a/website/source/_daily_emails/2022-09-12.md b/website/src/pages/daily-emails/2022-09-12.md
similarity index 94%
rename from website/source/_daily_emails/2022-09-12.md
rename to website/src/pages/daily-emails/2022-09-12.md
index 7e8848fd..b144ce51 100644
--- a/website/source/_daily_emails/2022-09-12.md
+++ b/website/src/pages/daily-emails/2022-09-12.md
@@ -1,7 +1,7 @@
---
title: "A month of daily emails"
-date: "2022-09-12"
-permalink: "/archive/2022/09/12/month-daily-emails"
+pubDate: "2022-09-12"
+permalink: "archive/2022/09/12/month-daily-emails"
---
It’s already been a month since I started my email list and writing daily emails.
diff --git a/website/source/_daily_emails/2022-09-14.md b/website/src/pages/daily-emails/2022-09-14.md
similarity index 97%
rename from website/source/_daily_emails/2022-09-14.md
rename to website/src/pages/daily-emails/2022-09-14.md
index 4ffc99f0..c385097b 100644
--- a/website/source/_daily_emails/2022-09-14.md
+++ b/website/src/pages/daily-emails/2022-09-14.md
@@ -1,7 +1,7 @@
---
title: "The simplest Drupal test"
-date: "2022-09-14"
-permalink: "/archive/2022/09/14/simpletest-drupal-test"
+pubDate: "2022-09-14"
+permalink: "archive/2022/09/14/simpletest-drupal-test"
---
Most of my work uses the Drupal framework, and I've given talks and workshops on automated testing and building custom Drupal modules with test-driven development. Today, I wanted to see how quickly I could get a working test suite on a new Drupal project.
diff --git a/website/source/_daily_emails/2022-09-16.md b/website/src/pages/daily-emails/2022-09-16.md
similarity index 97%
rename from website/source/_daily_emails/2022-09-16.md
rename to website/src/pages/daily-emails/2022-09-16.md
index 11606b37..b235153b 100644
--- a/website/source/_daily_emails/2022-09-16.md
+++ b/website/src/pages/daily-emails/2022-09-16.md
@@ -1,7 +1,7 @@
---
title: "Why I mostly write functional and integration tests"
-date: "2022-09-16"
-permalink: "/archive/2022/09/16/why-mostly-write-functional-and-integration-tests"
+pubDate: "2022-09-16"
+permalink: "archive/2022/09/16/why-mostly-write-functional-and-integration-tests"
tags: ["drupal"]
---
diff --git a/website/source/_daily_emails/2022-09-17.md b/website/src/pages/daily-emails/2022-09-17.md
similarity index 95%
rename from website/source/_daily_emails/2022-09-17.md
rename to website/src/pages/daily-emails/2022-09-17.md
index 1eca2771..63f78d2c 100644
--- a/website/source/_daily_emails/2022-09-17.md
+++ b/website/src/pages/daily-emails/2022-09-17.md
@@ -1,7 +1,7 @@
---
title: "Thoughts on automated code formatting"
-date: "2022-09-17"
-permalink: "/archive/2022/09/17/thoughts-automated-code-formatting"
+pubDate: "2022-09-17"
+permalink: "archive/2022/09/17/thoughts-automated-code-formatting"
---
For a long time, I've been focused on writing code that complies with defined coding standards, either to pass an automated check from a tool like PHP Code Sniffer (PHPCS) or eslint, or a code review from a team member.
diff --git a/website/source/_daily_emails/2022-09-19.md b/website/src/pages/daily-emails/2022-09-19.md
similarity index 95%
rename from website/source/_daily_emails/2022-09-19.md
rename to website/src/pages/daily-emails/2022-09-19.md
index 9dfd0690..5f7a6dbe 100644
--- a/website/source/_daily_emails/2022-09-19.md
+++ b/website/src/pages/daily-emails/2022-09-19.md
@@ -1,7 +1,7 @@
---
title: "Useful Git configuration"
-date: "2022-09-19"
-permalink: "/archive/2022/09/19/useful-git-configuration"
+pubDate: "2022-09-19"
+permalink: "archive/2022/09/19/useful-git-configuration"
tags: ["git"]
---
diff --git a/website/source/_daily_emails/2022-09-20.md b/website/src/pages/daily-emails/2022-09-20.md
similarity index 96%
rename from website/source/_daily_emails/2022-09-20.md
rename to website/src/pages/daily-emails/2022-09-20.md
index dba4998c..c3fd07d9 100644
--- a/website/source/_daily_emails/2022-09-20.md
+++ b/website/src/pages/daily-emails/2022-09-20.md
@@ -1,7 +1,7 @@
---
title: "Why I like trunk-based development"
-date: "2022-09-20"
-permalink: "/archive/2022/09/20/why-like-trunk-based-development"
+pubDate: "2022-09-20"
+permalink: "archive/2022/09/20/why-like-trunk-based-development"
tags: ["git"]
---
diff --git a/website/source/_daily_emails/2022-09-21.md b/website/src/pages/daily-emails/2022-09-21.md
similarity index 96%
rename from website/source/_daily_emails/2022-09-21.md
rename to website/src/pages/daily-emails/2022-09-21.md
index 1cec3965..e50dabed 100644
--- a/website/source/_daily_emails/2022-09-21.md
+++ b/website/src/pages/daily-emails/2022-09-21.md
@@ -1,7 +1,7 @@
---
title: "Being a Drupal contribution mentor"
-date: "2022-09-21"
-permalink: "/archive/2022/09/21/being-drupal-contribution-mentor"
+pubDate: "2022-09-21"
+permalink: "archive/2022/09/21/being-drupal-contribution-mentor"
tags: ["drupal"]
---
diff --git a/website/source/_daily_emails/2022-09-22.md b/website/src/pages/daily-emails/2022-09-22.md
similarity index 93%
rename from website/source/_daily_emails/2022-09-22.md
rename to website/src/pages/daily-emails/2022-09-22.md
index 82dceb21..f3031de8 100644
--- a/website/source/_daily_emails/2022-09-22.md
+++ b/website/src/pages/daily-emails/2022-09-22.md
@@ -1,7 +1,7 @@
---
title: "Releasing a Drupal module template"
-date: "2022-09-22"
-permalink: "/archive/2022/09/22/releasing-drupal-module-template"
+pubDate: "2022-09-22"
+permalink: "archive/2022/09/22/releasing-drupal-module-template"
tags: ["drupal"]
---
diff --git a/website/source/_daily_emails/2022-09-23.md b/website/src/pages/daily-emails/2022-09-23.md
similarity index 96%
rename from website/source/_daily_emails/2022-09-23.md
rename to website/src/pages/daily-emails/2022-09-23.md
index d3bb879f..239b85b4 100644
--- a/website/source/_daily_emails/2022-09-23.md
+++ b/website/src/pages/daily-emails/2022-09-23.md
@@ -1,7 +1,7 @@
---
title: "ADRs and Technical Design Documents"
-date: "2022-09-23"
-permalink: "/archive/2022/09/23/adrs-technical-design-documents"
+pubDate: "2022-09-23"
+permalink: "archive/2022/09/23/adrs-technical-design-documents"
tags: []
---
diff --git a/website/source/_daily_emails/2022-09-25.md b/website/src/pages/daily-emails/2022-09-25.md
similarity index 95%
rename from website/source/_daily_emails/2022-09-25.md
rename to website/src/pages/daily-emails/2022-09-25.md
index f56850a9..1c2b8356 100644
--- a/website/source/_daily_emails/2022-09-25.md
+++ b/website/src/pages/daily-emails/2022-09-25.md
@@ -1,7 +1,7 @@
---
title: "Using a component library for front-end development"
-date: "2022-09-25"
-permalink: "/archive/2022/09/25/using-component-library-for-front-end-development"
+pubDate: "2022-09-25"
+permalink: "archive/2022/09/25/using-component-library-for-front-end-development"
tags: []
---
diff --git a/website/source/_daily_emails/2022-09-26.md b/website/src/pages/daily-emails/2022-09-26.md
similarity index 94%
rename from website/source/_daily_emails/2022-09-26.md
rename to website/src/pages/daily-emails/2022-09-26.md
index 5f447a1e..650c4d20 100644
--- a/website/source/_daily_emails/2022-09-26.md
+++ b/website/src/pages/daily-emails/2022-09-26.md
@@ -1,7 +1,7 @@
---
title: "Experimenting with the Nix package manager"
-date: "2022-09-26"
-permalink: "/archive/2022/09/26/experimenting-with-the-nix-package-manager"
+pubDate: "2022-09-26"
+permalink: "archive/2022/09/26/experimenting-with-the-nix-package-manager"
tags: ["nix"]
---
diff --git a/website/source/_daily_emails/2022-09-27.md b/website/src/pages/daily-emails/2022-09-27.md
similarity index 93%
rename from website/source/_daily_emails/2022-09-27.md
rename to website/src/pages/daily-emails/2022-09-27.md
index 35ec449a..353fee7a 100644
--- a/website/source/_daily_emails/2022-09-27.md
+++ b/website/src/pages/daily-emails/2022-09-27.md
@@ -1,7 +1,7 @@
---
title: "Mentoring with Drupal Career Online"
-date: "2022-09-27"
-permalink: "/archive/2022/09/27/mentoring-with-drupal-career-online"
+pubDate: "2022-09-27"
+permalink: "archive/2022/09/27/mentoring-with-drupal-career-online"
tags: ["drupal"]
---
diff --git a/website/source/_daily_emails/2022-09-28.md b/website/src/pages/daily-emails/2022-09-28.md
similarity index 92%
rename from website/source/_daily_emails/2022-09-28.md
rename to website/src/pages/daily-emails/2022-09-28.md
index 44a5770c..703811a6 100644
--- a/website/source/_daily_emails/2022-09-28.md
+++ b/website/src/pages/daily-emails/2022-09-28.md
@@ -1,7 +1,7 @@
---
title: "Mob programming at PHP South Wales"
-date: "2022-09-28"
-permalink: "/archive/2022/09/28/mob-programming-php-south-wales"
+pubDate: "2022-09-28"
+permalink: "archive/2022/09/28/mob-programming-php-south-wales"
tags: []
---
diff --git a/website/source/_daily_emails/2022-09-30.md b/website/src/pages/daily-emails/2022-09-30.md
similarity index 97%
rename from website/source/_daily_emails/2022-09-30.md
rename to website/src/pages/daily-emails/2022-09-30.md
index f5a63ebe..9429f338 100644
--- a/website/source/_daily_emails/2022-09-30.md
+++ b/website/src/pages/daily-emails/2022-09-30.md
@@ -1,7 +1,7 @@
---
title: "Store Wars: different state management in Vue.js"
-date: "2022-09-30"
-permalink: "/archive/2022/09/30/store-wars-vuejs"
+pubDate: "2022-09-30"
+permalink: "archive/2022/09/30/store-wars-vuejs"
tags: ["vue"]
---
diff --git a/website/source/_daily_emails/2022-10-01.md b/website/src/pages/daily-emails/2022-10-01.md
similarity index 97%
rename from website/source/_daily_emails/2022-10-01.md
rename to website/src/pages/daily-emails/2022-10-01.md
index 643ce240..37b2d565 100644
--- a/website/source/_daily_emails/2022-10-01.md
+++ b/website/src/pages/daily-emails/2022-10-01.md
@@ -1,7 +1,7 @@
---
title: Why do code katas?
-date: "2022-10-01"
-permalink: /archive/2022/10/01/code-katas
+pubDate: "2022-10-01"
+permalink: archive/2022/10/01/code-katas
tags: []
---
diff --git a/website/source/_daily_emails/2022-10-02.md b/website/src/pages/daily-emails/2022-10-02.md
similarity index 97%
rename from website/source/_daily_emails/2022-10-02.md
rename to website/src/pages/daily-emails/2022-10-02.md
index 0f029d13..44c29176 100644
--- a/website/source/_daily_emails/2022-10-02.md
+++ b/website/src/pages/daily-emails/2022-10-02.md
@@ -1,7 +1,7 @@
---
title: Minimum viable CI pipelines
-date: "2022-10-02"
-permalink: /archive/2022/10/02/minimum-viable-pipelines
+pubDate: "2022-10-02"
+permalink: archive/2022/10/02/minimum-viable-pipelines
tags: []
---
diff --git a/website/source/_daily_emails/2022-10-03.md b/website/src/pages/daily-emails/2022-10-03.md
similarity index 92%
rename from website/source/_daily_emails/2022-10-03.md
rename to website/src/pages/daily-emails/2022-10-03.md
index d65dafa9..660e26c6 100644
--- a/website/source/_daily_emails/2022-10-03.md
+++ b/website/src/pages/daily-emails/2022-10-03.md
@@ -1,7 +1,7 @@
---
title: Refactoring to value objects
-date: "2022-10-03"
-permalink: /archive/2022/10/03/refactoring-value-objects
+pubDate: "2022-10-03"
+permalink: archive/2022/10/03/refactoring-value-objects
tags: [php]
---
@@ -66,6 +66,10 @@ return Collection::make($stationNodes)
->map(fn (StationInterface $station): string => $station->getStationCode())
->values();
```
+<<<<<<< HEAD:website/source/_daily_emails/2022-10-03.md
+=======
+
+>>>>>>> b9cea6d (chore: replace Sculpin with Astro):website/src/pages/daily-emails/2022-10-03.md
I've added an additional `map` to convert the nodes to the value object, but the second map can now use the new typehint - ensuring better type safety and also giving us auto-completion in IDEs and text editors. If an incorrect node type is passed in, then the Exception will be thrown and a much clearer error message will be shown.
Finally, I can use the helper method to get the field value, encapsulating the logic within the value object and making it intention clearer and easier to read.
diff --git a/website/source/_daily_emails/2022-10-08.md b/website/src/pages/daily-emails/2022-10-08.md
similarity index 91%
rename from website/source/_daily_emails/2022-10-08.md
rename to website/src/pages/daily-emails/2022-10-08.md
index 72c722c9..af6e9ebe 100644
--- a/website/source/_daily_emails/2022-10-08.md
+++ b/website/src/pages/daily-emails/2022-10-08.md
@@ -1,7 +1,8 @@
---
+layout: ../../layouts/PageLayout.astro
title: First impressions of Astro
-date: "2022-10-08"
-permalink: /archive/2022/10/08/first-impressions-astro
+pubDate: "2022-10-08"
+permalink: archive/2022/10/08/first-impressions-astro
tags: [astro]
---
diff --git a/website/source/_daily_emails/monorepo-or-not.md b/website/src/pages/daily-emails/monorepo-or-not.md
similarity index 96%
rename from website/source/_daily_emails/monorepo-or-not.md
rename to website/src/pages/daily-emails/monorepo-or-not.md
index 7e156d7e..0b5db415 100644
--- a/website/source/_daily_emails/monorepo-or-not.md
+++ b/website/src/pages/daily-emails/monorepo-or-not.md
@@ -1,7 +1,7 @@
---
title: "To monorepo, or not to monorepo?"
-permalink: "/archive/2022/08/31/monorepo-or-not"
-date: "2022-08-31"
+permalink: "archive/2022/08/31/monorepo-or-not"
+pubDate: "2022-08-31"
tags: ["git"]
---
diff --git a/website/src/pages/daily.mdx b/website/src/pages/daily.mdx
new file mode 100644
index 00000000..7c77425f
--- /dev/null
+++ b/website/src/pages/daily.mdx
@@ -0,0 +1,10 @@
+---
+layout: ../layouts/PageLayout.astro
+title: Oliver's Daily List
+---
+
+import DailyEmailForm from '../components/DailyEmailForm.astro';
+
+A daily newsletter on software development, DevOps, community, and open-source.
+
+
diff --git a/website/src/pages/drupal-consulting.mdx b/website/src/pages/drupal-consulting.mdx
new file mode 100644
index 00000000..b7560566
--- /dev/null
+++ b/website/src/pages/drupal-consulting.mdx
@@ -0,0 +1,39 @@
+---
+layout: ../layouts/PageLayout.astro
+title: Oliver Davies - PHP Developer and Drupal Specialist
+---
+
+export const email = "oliver@oliverdavies.uk"
+
+I'm a long-time Web Developer and consultant. I’ve led, delivered, and maintained PHP, Drupal, and Drupal Commerce based websites, have worked for some of the UK’s largest and well-known PHP and Drupal agencies, and even for the Drupal Association - the nonprofit organisation behind the Drupal project - where I was employed to work on and improve the Drupal.org websites.
+
+
Send me an email to discuss your project.
+
+## My Drupal Experience
+
+I have contributed code to Drupal core and to various other Drupal modules, and maintain modules and themes like Override Node Options which is used on over 30, 000 Drupal sites according to Drupal.org. I’ve been a mentor at various in-person events, helping new contributors to the Drupal project, and regularly write blog posts, present talks and workshops, and create videos and live streams.
+
+As well as Drupal, I’ve worked with other PHP projects like Symfony and Laravel, static site generators like Sculpin and Jekyll, and JavaScript frameworks such as Vue.js and Angular.
+
+## Certifications
+
+- Acquia certified Developer - Drupal 8 (2017)
+- Acquia certified Back-End Specialist - Drupal 8 (2017)
+- Acquia certified Front-End Specialist - Drupal 8 (2017)
+- Acquia certified Cloud Pro (2018)
+- Platform.sh Gold partner certification (2021, for Inviqa)
+
+## Community contributions
+
+- Authored an article on Drupal development using distributions for Linux Journal's Drupal issue.
+- Mentored new contributors at DrupalCon contribution days with their first patches to Drupal core.
+- Organised the Drupal Bristol and PHP South West (PHPSW) user groups, and the DrupalCamp Bristol conference.
+- Currently organise and sponsor the [PHP South Wales user group](https://www.phpsouthwales.uk).
+- Board member for the [Drupal England and Wales Association](https://drupal-england-wales.github.io) (2020 to present).
+- Selecting sessions for DrupalCon Europe 2021 as part of the DrupalCon track team.
+- Mentored students on the DrupalEasy [Drupal Career Online](https://www.drupaleasy.com/academy/dco/course-information) course.
+- Currently writing "Test-Driven Drupal", an eBook about automated testing and test-driven development in Drupal.
+
+## Podcasts
+
+I've been a guest on a number of podcasts, including [Talking Drupal](https://talkingdrupal.com), [How to Code Well](https://howtocodewell.fm), [That Podcast](https://thatpodcast.io), and [Voices of the ElePHPant](https://voicesoftheelephpant.com), where I've discussed topics including PHP, Drupal, CSS frameworks, and automated testing.
diff --git a/website/src/pages/drupal-testing.mdx b/website/src/pages/drupal-testing.mdx
new file mode 100644
index 00000000..3050b94a
--- /dev/null
+++ b/website/src/pages/drupal-testing.mdx
@@ -0,0 +1,76 @@
+---
+layout: ../layouts/PageLayout.astro
+title: Introduction to Automated Testing and Test-Driven Development with Drupal
+---
+
+import { chain as _ } from 'lodash'
+
+export const drupalVersions = '9 and 10'
+
+export const prices = {
+ early: "395.00",
+ full: "495.00",
+}
+
+export const isEarlyBird = true
+
+export const nextDate = '2022-04-04'
+
+export const testimonials = [
+ {
+ name: 'Scott Euser, Head of Web Development',
+ image: '/images/scott-euser.jpg',
+ text: 'Oliver really knows his stuff. Whether you are just starting out or looking to take your knowledge to the next level, his patient and clear way of explaining will help get you there.',
+ },
+]
+
+Are you a Drupal Developer who wants to learn about automated testing and test-driven development, or do you manage a development team that you'd like to train?
+
+I've delivered large Drupal projects using automated tests and test-driven development for custom functionality, and maintain Drupal modules with thousands of installations whilst using their tests to ensure working code and prevent regressions.
+
+I offer an interactive full-day workshop (previously presented at DrupalCamp London, and remotely for DrupalCamp NYC) that provides an introduction to automated testing in Drupal and how to utilise test-driven development - which I've updated specifically for Drupal {drupalVersions}.
+
+## Contents
+
+* What is automated testing, and why write tests?
+* What types of tests are available in Drupal?
+* Outside-in vs. inside-out testing.
+* Configuring Drupal and PHPUnit to run tests locally.
+* Exercise: writing tests for existing Drupal core functionality.
+* Exercise: adding tests to an existing custom module.
+* What is test-driven development?
+* Exercise: writing a new Drupal module from scratch with test-driven development.
+* Q&A
+
+
+
+## Dates and prices
+
+The workshop is currently only available remotely, and the next available date is
{new Date(nextDate).toLocaleDateString('en-GB', { day: 'numeric', month: 'long', year: 'numeric', })} .
+
+Seats are available at
{isEarlyBird ? `an early bird price of £${prices.early}` : `a price of £${prices.full}`} , with a 10% discount for bulk orders of 5 or more seats.
+
+
+
+
+
+## Testimonials
+
+{testimonials.map(testimonial => (
+
+
+ {testimonial.text}
+
+
+
+ {testimonial.name}
+
+
+
+
+
+))}
diff --git a/website/source/_pages/index.md b/website/src/pages/index.md
similarity index 51%
rename from website/source/_pages/index.md
rename to website/src/pages/index.md
index 7532bcc4..1c9a5054 100644
--- a/website/source/_pages/index.md
+++ b/website/src/pages/index.md
@@ -1,29 +1,23 @@
---
+layout: ../layouts/PageLayout.astro
title: Oliver Davies - Software Developer and Consultant, PHP and Drupal specialist
-permalink: /
-is_front: true
-exclude_from_sitemap: true
-meta:
- description: Oliver Davies is a UK-based Software Developer and Consultant, specialising in Drupal, PHP, and JavaScript.
---
-{% set thisYear = 'today'|date('Y') %}
-{% set yearsOfExperience = thisYear - site.experience.start_year %}
+
+
+
-
-
Hi, I’m Oliver. I’m a Full Stack Software Consultant based in South Wales in the UK.
I architect, develop, and consult on large web applications, and work with organisations, agencies, and freelance Developers to improve their code quality by using tools and workflows such as continuous integration and deployment, automated testing, test-driven development, and static analysis.
-I have {{ yearsOfExperience }} years of software development and Drupal experience, have worked for the Drupal Association, and am an
Acquia-certified Drupal expert . I also work with complementary technologies such as Symfony, Vue.js, TypeScript, Docker, and Ansible.
+I have years of software development and Drupal experience, have worked for the Drupal Association, and am an
Acquia-certified Drupal expert . I also work with complementary technologies such as Symfony, Vue.js, TypeScript, Docker, and Ansible.
I enjoy writing and contributing open-source code which you can find on my [Drupal.org] and [GitHub] profiles.
I regularly
present talks and workshops at user groups and conferences and am the organiser of the
PHP South Wales user group.
Contact me if you’d like any more information or to discuss a project.
-
-[drupal.org]: {{site.drupalorg.url}}
-[github]: {{site.github.url}}
+[drupal.org]: https://drupal.org/u/opdavies
+[github]: https://github.com/opdavies
diff --git a/website/src/pages/links.mdx b/website/src/pages/links.mdx
new file mode 100644
index 00000000..e2d108c7
--- /dev/null
+++ b/website/src/pages/links.mdx
@@ -0,0 +1,29 @@
+---
+layout: ../layouts/PageLayout.astro
+title: Links
+---
+
+export const links = [
+ { title: 'My daily email list', url: '/daily' },
+ { title: 'Twitter', url: 'https://twitter.com/opdavies' },
+ { title: 'YouTube', url: 'https://www.youtube.com/channel/UCkeK0qF9HHUPQH_fvn4ghqQ' },
+ { title: 'LinkedIn', url: 'https://www.linkedin.com/in/opdavies' },
+ { title: 'Drupal.org', url: 'https://www.drupal.org/u/opdavies' },
+ { title: 'GitHub', url: 'https://github.com/opdavies' },
+ { title: 'GitHub Gists', url: 'https://gist.github.com/opdavies' },
+ { title: 'Packagist', url: 'https://packagist.org/packages/opdavies' },
+ { title: 'Speakerdeck', url: 'https://speakerdeck.com/opdavies' },
+ { title: 'PHP South Wales', url: 'https://www.phpsouthwales.uk' },
+];
+
+
diff --git a/website/source/_pages/pair.md b/website/src/pages/pair.mdx
similarity index 87%
rename from website/source/_pages/pair.md
rename to website/src/pages/pair.mdx
index 593fd44b..4523c66e 100644
--- a/website/source/_pages/pair.md
+++ b/website/src/pages/pair.mdx
@@ -1,4 +1,5 @@
---
+layout: ../layouts/PageLayout.astro
title: Pair program with me
---
@@ -14,4 +15,5 @@ I also offer free sessions for open source projects.
To arrange a pairing session, [find an available time on my calendar][1].
[0]: /drupal-php-developer
-[1]: {{site.savvycal.url}}/pairing
+[1]: https://savvycal.com/opdavies/pairing
+
diff --git a/website/src/pages/search.astro b/website/src/pages/search.astro
new file mode 100644
index 00000000..28f15399
--- /dev/null
+++ b/website/src/pages/search.astro
@@ -0,0 +1,17 @@
+---
+---
+
+
+
+
+
+
diff --git a/website/source/_pages/speaker-information.md b/website/src/pages/speaker-information.mdx
similarity index 56%
rename from website/source/_pages/speaker-information.md
rename to website/src/pages/speaker-information.mdx
index 42547a04..f0680076 100644
--- a/website/source/_pages/speaker-information.md
+++ b/website/src/pages/speaker-information.mdx
@@ -1,20 +1,19 @@
---
-
+layout: ../layouts/PageLayout.astro
title: Speaker Information
---
-
## Bio
-
Oliver Davies (
@{{ site.twitter.name }} ) has been building websites since 2007, and speaking at meetups and conferences since 2012. He is a Full Stack Developer and a certified Drupal expert who also has experience developing with Symfony, Laravel, Sculpin and Vue.js, as well as with DevOps and systems administration.
+
Oliver Davies (
@opdavies ) has been building websites since 2007, and speaking at meetups and conferences since 2012. He is a Full Stack Developer and a certified Drupal expert who also has experience developing with Symfony, Laravel, Sculpin and Vue.js, as well as with DevOps and systems administration.
-He is a {{ site.work.role}} at
{{ site.work.company.name }} , a Drupal core contributor and mentor, and an open source and contribution advocate.
+He is a Lead Software Developer at
Transport for Wales , a Drupal core contributor and mentor, and an open source and contribution advocate.
He regularly blogs and gives talks on various topics, maintains and contributes to various open source projects, and organises the PHP South Wales user group.
## Photos
--
+- https://www.dropbox.com/s/say1muiqedik0l4/0188395_thumb.jpg
## Some events that I’ve spoken at
@@ -33,4 +32,3 @@ He regularly blogs and gives talks on various topics, maintains and contributes
- WordCamp Bristol 2019
I also [gave a number of talks remotely](/blog/speaking-remotely-during-lockdown) for various user groups and conferences during COVID-19.
-
diff --git a/website/src/pages/talks/[slug].astro b/website/src/pages/talks/[slug].astro
new file mode 100644
index 00000000..1de7827a
--- /dev/null
+++ b/website/src/pages/talks/[slug].astro
@@ -0,0 +1,61 @@
+---
+import Layout from '../../layouts/Layout.astro'
+
+export async function getStaticPaths() {
+ const talks = await Astro.glob('../../talks/*.md')
+
+ return talks.map(talk => {
+ const parts = talk.file.replace('.md', '').split('/')
+ const slug = parts[parts.length - 1]
+
+ return {
+ params: { slug },
+ props: { talk }
+ }
+ })
+}
+
+const { Content } = Astro.props.talk
+const { title, speakerdeck, video } = Astro.props.talk.frontmatter
+---
+
+
+
+
+
+
+
+ {speakerdeck && speakerdeck.id && (
+
+
Slides
+
+
+ **Please enable JavaScript to view slides.**
+
+
+
+ )}
+
+ {video && video.type == "youtube" && (
+
+ )}
+
+
diff --git a/website/src/pages/talks/index.astro b/website/src/pages/talks/index.astro
new file mode 100644
index 00000000..719c7b25
--- /dev/null
+++ b/website/src/pages/talks/index.astro
@@ -0,0 +1,38 @@
+---
+import PageLayout from '../../layouts/PageLayout.astro'
+
+const talks = await Astro.glob("../../talks/*.md")
+
+const sortedTalks = talks
+ .map(talk => {
+ const parts = talk.file.replace('.md', '').split('/')
+ const slug = parts[parts.length - 1]
+
+ return { slug, talk }
+ })
+ .sort((b, a) => {
+ const events = [
+ a.talk.frontmatter.events[a.talk.frontmatter.events.length - 1],
+ b.talk.frontmatter.events[b.talk.frontmatter.events.length - 1],
+ ]
+
+ return new Date(events[0].date).valueOf() -
+ new Date(events[1].date).valueOf()
+ })
+---
+
+
+ Starting with my first talk in September 2012, I have given 85 presentations and workshops at various conferences and meetups, in-person and remotely, on topics including PHP, Drupal, automated testing, Git, CSS, and systems administration.
+
+
+
diff --git a/website/source/_pages/things-about-php.md b/website/src/pages/things-about-php.mdx
similarity index 84%
rename from website/source/_pages/things-about-php.md
rename to website/src/pages/things-about-php.mdx
index 677bef21..252e5ccc 100644
--- a/website/source/_pages/things-about-php.md
+++ b/website/src/pages/things-about-php.mdx
@@ -1,7 +1,10 @@
---
+layout: ../layouts/PageLayout.astro
title: Things you should know about PHP
---
+export const email = "oliver@oliverdavies.uk"
+
Thanks for attending my [Things you should know about PHP](/talks/things-you-should-know-about-php) talk.
I hope that you learned some things about PHP, its ecosystem, and its communities, and if you haven't tried using PHP yet, I'd encourage you to do so.
@@ -46,8 +49,6 @@ Here are links to the resources that I mention in the talk, plus a couple of ext
- [The PHP Roundtable](https://phproundtable.com)
- [Voices of the elePHPant](https://voicesoftheelephpant.com)
-{% include "horizontal-rule" %}
-
## Can I help?
Do you want to introduce PHP to your company or team, or add one of these tools to your existing PHP application?
@@ -55,8 +56,5 @@ Do you want to introduce PHP to your company or team, or add one of these tools
I offer consulting calls and services to reduce your onboarding time and get you up and running quicker and easier.
- {% set href = "mailto:" ~ site.email ~ "?subject=Book in my call" %}
- {% embed "link-button" with { href: href, size: "normal" } only %}
- {% block text "Book in your call →" %}
- {% endembed %}
+
Book in your call →
diff --git a/website/source/_posts/10-years-working-full-time-drupal-php.md b/website/src/posts/10-years-working-full-time-drupal-php.md
similarity index 100%
rename from website/source/_posts/10-years-working-full-time-drupal-php.md
rename to website/src/posts/10-years-working-full-time-drupal-php.md
diff --git a/website/source/_posts/2014.md b/website/src/posts/2014.md
similarity index 100%
rename from website/source/_posts/2014.md
rename to website/src/posts/2014.md
diff --git a/website/source/_posts/accessible-bristol-site.md b/website/src/posts/accessible-bristol-site.md
similarity index 100%
rename from website/source/_posts/accessible-bristol-site.md
rename to website/src/posts/accessible-bristol-site.md
diff --git a/website/source/_posts/add-taxonomy-term-multiple-nodes-using-sql.md b/website/src/posts/add-taxonomy-term-multiple-nodes-using-sql.md
similarity index 100%
rename from website/source/_posts/add-taxonomy-term-multiple-nodes-using-sql.md
rename to website/src/posts/add-taxonomy-term-multiple-nodes-using-sql.md
diff --git a/website/source/_posts/adding-custom-theme-templates-drupal-7.md b/website/src/posts/adding-custom-theme-templates-drupal-7.md
similarity index 100%
rename from website/source/_posts/adding-custom-theme-templates-drupal-7.md
rename to website/src/posts/adding-custom-theme-templates-drupal-7.md
diff --git a/website/source/_posts/announcing-the-drupal-vm-generator.md b/website/src/posts/announcing-the-drupal-vm-generator.md
similarity index 100%
rename from website/source/_posts/announcing-the-drupal-vm-generator.md
rename to website/src/posts/announcing-the-drupal-vm-generator.md
diff --git a/website/source/_posts/automating-sculpin-jenkins.md b/website/src/posts/automating-sculpin-jenkins.md
similarity index 99%
rename from website/source/_posts/automating-sculpin-jenkins.md
rename to website/src/posts/automating-sculpin-jenkins.md
index 46a8a205..fca55b8c 100644
--- a/website/source/_posts/automating-sculpin-jenkins.md
+++ b/website/src/posts/automating-sculpin-jenkins.md
@@ -106,7 +106,7 @@ talks:
The Twig layout:
```language-twig
-{% verbatim -%}
+
{% for talk in talks|reverse if talk.date >= now %}
{# Upcoming talks #}
{% endfor %}
@@ -114,7 +114,7 @@ The Twig layout:
{% for talk in talks if talk.date < now %}
{# Previous talks #}
{% endfor%}
-{%- endverbatim %}
+
```
I also didn’t want to have to push an empty commit or manually trigger a job in
diff --git a/website/source/_posts/back-future-gits-diff-apply-commands.md b/website/src/posts/back-future-gits-diff-apply-commands.md
similarity index 100%
rename from website/source/_posts/back-future-gits-diff-apply-commands.md
rename to website/src/posts/back-future-gits-diff-apply-commands.md
diff --git a/website/source/_posts/building-gmail-filters-in-php.md b/website/src/posts/building-gmail-filters-in-php.md
similarity index 95%
rename from website/source/_posts/building-gmail-filters-in-php.md
rename to website/src/posts/building-gmail-filters-in-php.md
index fcb1184a..869a918c 100644
--- a/website/source/_posts/building-gmail-filters-in-php.md
+++ b/website/src/posts/building-gmail-filters-in-php.md
@@ -65,7 +65,7 @@ Before:
```language-twig
-{% verbatim %}{{ filter.isArchive ? 'true' : 'false' }}{% endverbatim %}
+{{ filter.isArchive ? 'true' : 'false' }}
```
@@ -73,7 +73,7 @@ After:
```language-twig
-{% verbatim %}{{ filter.isArchive|boolean_string }}{% endverbatim %}
+{{ filter.isArchive|boolean_string }}
```
diff --git a/website/source/_posts/building-oliverdavies-uk-1-initial-setup.md b/website/src/posts/building-oliverdavies-uk-1-initial-setup.md
similarity index 100%
rename from website/source/_posts/building-oliverdavies-uk-1-initial-setup.md
rename to website/src/posts/building-oliverdavies-uk-1-initial-setup.md
diff --git a/website/source/_posts/building-the-new-phpsw-website.md b/website/src/posts/building-the-new-phpsw-website.md
similarity index 100%
rename from website/source/_posts/building-the-new-phpsw-website.md
rename to website/src/posts/building-the-new-phpsw-website.md
diff --git a/website/source/_posts/change-content-type-multiple-nodes-using-sql.md b/website/src/posts/change-content-type-multiple-nodes-using-sql.md
similarity index 100%
rename from website/source/_posts/change-content-type-multiple-nodes-using-sql.md
rename to website/src/posts/change-content-type-multiple-nodes-using-sql.md
diff --git a/website/source/_posts/checking-if-user-logged-drupal-right-way.md b/website/src/posts/checking-if-user-logged-drupal-right-way.md
similarity index 100%
rename from website/source/_posts/checking-if-user-logged-drupal-right-way.md
rename to website/src/posts/checking-if-user-logged-drupal-right-way.md
diff --git a/website/source/_posts/checkout-specific-revision-svn-command-line.md b/website/src/posts/checkout-specific-revision-svn-command-line.md
similarity index 100%
rename from website/source/_posts/checkout-specific-revision-svn-command-line.md
rename to website/src/posts/checkout-specific-revision-svn-command-line.md
diff --git a/website/source/_posts/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper.md b/website/src/posts/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper.md
similarity index 100%
rename from website/source/_posts/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper.md
rename to website/src/posts/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper.md
diff --git a/website/source/_posts/conditional-email-addresses-webform.md b/website/src/posts/conditional-email-addresses-webform.md
similarity index 100%
rename from website/source/_posts/conditional-email-addresses-webform.md
rename to website/src/posts/conditional-email-addresses-webform.md
diff --git a/website/source/_posts/configuring-the-reroute-email-module.md b/website/src/posts/configuring-the-reroute-email-module.md
similarity index 100%
rename from website/source/_posts/configuring-the-reroute-email-module.md
rename to website/src/posts/configuring-the-reroute-email-module.md
diff --git a/website/source/_posts/continuous-integration-vs-continuous-integration.md b/website/src/posts/continuous-integration-vs-continuous-integration.md
similarity index 100%
rename from website/source/_posts/continuous-integration-vs-continuous-integration.md
rename to website/src/posts/continuous-integration-vs-continuous-integration.md
diff --git a/website/source/_posts/create-better-photo-gallery-drupal-part-1.md b/website/src/posts/create-better-photo-gallery-drupal-part-1.md
similarity index 100%
rename from website/source/_posts/create-better-photo-gallery-drupal-part-1.md
rename to website/src/posts/create-better-photo-gallery-drupal-part-1.md
diff --git a/website/source/_posts/create-better-photo-gallery-drupal-part-2.md b/website/src/posts/create-better-photo-gallery-drupal-part-2.md
similarity index 100%
rename from website/source/_posts/create-better-photo-gallery-drupal-part-2.md
rename to website/src/posts/create-better-photo-gallery-drupal-part-2.md
diff --git a/website/source/_posts/create-better-photo-gallery-drupal-part-21.md b/website/src/posts/create-better-photo-gallery-drupal-part-21.md
similarity index 100%
rename from website/source/_posts/create-better-photo-gallery-drupal-part-21.md
rename to website/src/posts/create-better-photo-gallery-drupal-part-21.md
diff --git a/website/source/_posts/create-better-photo-gallery-drupal-part-3.md b/website/src/posts/create-better-photo-gallery-drupal-part-3.md
similarity index 100%
rename from website/source/_posts/create-better-photo-gallery-drupal-part-3.md
rename to website/src/posts/create-better-photo-gallery-drupal-part-3.md
diff --git a/website/source/_posts/create-block-social-media-icons-using-cck-views-and-nodequeue.md b/website/src/posts/create-block-social-media-icons-using-cck-views-and-nodequeue.md
similarity index 100%
rename from website/source/_posts/create-block-social-media-icons-using-cck-views-and-nodequeue.md
rename to website/src/posts/create-block-social-media-icons-using-cck-views-and-nodequeue.md
diff --git a/website/source/_posts/create-flickr-photo-gallery-using-feeds-cck-views.md b/website/src/posts/create-flickr-photo-gallery-using-feeds-cck-views.md
similarity index 100%
rename from website/source/_posts/create-flickr-photo-gallery-using-feeds-cck-views.md
rename to website/src/posts/create-flickr-photo-gallery-using-feeds-cck-views.md
diff --git a/website/source/_posts/create-multigroups-drupal-7-using-field-collections.md b/website/src/posts/create-multigroups-drupal-7-using-field-collections.md
similarity index 100%
rename from website/source/_posts/create-multigroups-drupal-7-using-field-collections.md
rename to website/src/posts/create-multigroups-drupal-7-using-field-collections.md
diff --git a/website/source/_posts/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush.md b/website/src/posts/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush.md
similarity index 100%
rename from website/source/_posts/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush.md
rename to website/src/posts/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush.md
diff --git a/website/source/_posts/create-slideshow-multiple-images-using-fancy-slide.md b/website/src/posts/create-slideshow-multiple-images-using-fancy-slide.md
similarity index 100%
rename from website/source/_posts/create-slideshow-multiple-images-using-fancy-slide.md
rename to website/src/posts/create-slideshow-multiple-images-using-fancy-slide.md
diff --git a/website/source/_posts/create-virtual-hosts-mac-os-x-using-virtualhostx.md b/website/src/posts/create-virtual-hosts-mac-os-x-using-virtualhostx.md
similarity index 100%
rename from website/source/_posts/create-virtual-hosts-mac-os-x-using-virtualhostx.md
rename to website/src/posts/create-virtual-hosts-mac-os-x-using-virtualhostx.md
diff --git a/website/source/_posts/create-zen-sub-theme-using-drush.md b/website/src/posts/create-zen-sub-theme-using-drush.md
similarity index 100%
rename from website/source/_posts/create-zen-sub-theme-using-drush.md
rename to website/src/posts/create-zen-sub-theme-using-drush.md
diff --git a/website/source/_posts/creating-custom-phpunit-command-ddev.md b/website/src/posts/creating-custom-phpunit-command-ddev.md
similarity index 100%
rename from website/source/_posts/creating-custom-phpunit-command-ddev.md
rename to website/src/posts/creating-custom-phpunit-command-ddev.md
diff --git a/website/source/_posts/creating-custom-phpunit-command-docksal.md b/website/src/posts/creating-custom-phpunit-command-docksal.md
similarity index 100%
rename from website/source/_posts/creating-custom-phpunit-command-docksal.md
rename to website/src/posts/creating-custom-phpunit-command-docksal.md
diff --git a/website/source/_posts/creating-local-and-staging-sites-drupals-domain-module-enabled.md b/website/src/posts/creating-local-and-staging-sites-drupals-domain-module-enabled.md
similarity index 100%
rename from website/source/_posts/creating-local-and-staging-sites-drupals-domain-module-enabled.md
rename to website/src/posts/creating-local-and-staging-sites-drupals-domain-module-enabled.md
diff --git a/website/source/_posts/creating-using-custom-tokens-drupal-7.md b/website/src/posts/creating-using-custom-tokens-drupal-7.md
similarity index 100%
rename from website/source/_posts/creating-using-custom-tokens-drupal-7.md
rename to website/src/posts/creating-using-custom-tokens-drupal-7.md
diff --git a/website/source/_posts/croeso-php-south-wales.md b/website/src/posts/croeso-php-south-wales.md
similarity index 100%
rename from website/source/_posts/croeso-php-south-wales.md
rename to website/src/posts/croeso-php-south-wales.md
diff --git a/website/source/_posts/debugging-drupal-commerce-illuminate-collections.md b/website/src/posts/debugging-drupal-commerce-illuminate-collections.md
similarity index 100%
rename from website/source/_posts/debugging-drupal-commerce-illuminate-collections.md
rename to website/src/posts/debugging-drupal-commerce-illuminate-collections.md
diff --git a/website/source/_posts/debugging-php-docker-xdebug-neovim-dap.md b/website/src/posts/debugging-php-docker-xdebug-neovim-dap.md
similarity index 100%
rename from website/source/_posts/debugging-php-docker-xdebug-neovim-dap.md
rename to website/src/posts/debugging-php-docker-xdebug-neovim-dap.md
diff --git a/website/source/_posts/decorating-entity-metadata-wrapper-add-refactor-methods.md b/website/src/posts/decorating-entity-metadata-wrapper-add-refactor-methods.md
similarity index 100%
rename from website/source/_posts/decorating-entity-metadata-wrapper-add-refactor-methods.md
rename to website/src/posts/decorating-entity-metadata-wrapper-add-refactor-methods.md
diff --git a/website/source/_posts/display-custom-menu-drupal-7-theme-template-file.md b/website/src/posts/display-custom-menu-drupal-7-theme-template-file.md
similarity index 100%
rename from website/source/_posts/display-custom-menu-drupal-7-theme-template-file.md
rename to website/src/posts/display-custom-menu-drupal-7-theme-template-file.md
diff --git a/website/source/_posts/display-git-branch-or-tag-names-your-bash-prompt.md b/website/src/posts/display-git-branch-or-tag-names-your-bash-prompt.md
similarity index 100%
rename from website/source/_posts/display-git-branch-or-tag-names-your-bash-prompt.md
rename to website/src/posts/display-git-branch-or-tag-names-your-bash-prompt.md
diff --git a/website/source/_posts/display-number-facebook-fans-php.md b/website/src/posts/display-number-facebook-fans-php.md
similarity index 100%
rename from website/source/_posts/display-number-facebook-fans-php.md
rename to website/src/posts/display-number-facebook-fans-php.md
diff --git a/website/source/_posts/dividing-drupals-process-and-preprocess-functions-separate-files.md b/website/src/posts/dividing-drupals-process-and-preprocess-functions-separate-files.md
similarity index 100%
rename from website/source/_posts/dividing-drupals-process-and-preprocess-functions-separate-files.md
rename to website/src/posts/dividing-drupals-process-and-preprocess-functions-separate-files.md
diff --git a/website/source/_posts/docker-resources.md b/website/src/posts/docker-resources.md
similarity index 100%
rename from website/source/_posts/docker-resources.md
rename to website/src/posts/docker-resources.md
diff --git a/website/source/_posts/dont-bootstrap-drupal-use-drush.md b/website/src/posts/dont-bootstrap-drupal-use-drush.md
similarity index 100%
rename from website/source/_posts/dont-bootstrap-drupal-use-drush.md
rename to website/src/posts/dont-bootstrap-drupal-use-drush.md
diff --git a/website/source/_posts/download-different-versions-drupal-drush.md b/website/src/posts/download-different-versions-drupal-drush.md
similarity index 100%
rename from website/source/_posts/download-different-versions-drupal-drush.md
rename to website/src/posts/download-different-versions-drupal-drush.md
diff --git a/website/source/_posts/drupal-8-5-released.md b/website/src/posts/drupal-8-5-released.md
similarity index 100%
rename from website/source/_posts/drupal-8-5-released.md
rename to website/src/posts/drupal-8-5-released.md
diff --git a/website/source/_posts/drupal-8-commerce-fixing-error-on-user-checkout.md b/website/src/posts/drupal-8-commerce-fixing-error-on-user-checkout.md
similarity index 100%
rename from website/source/_posts/drupal-8-commerce-fixing-error-on-user-checkout.md
rename to website/src/posts/drupal-8-commerce-fixing-error-on-user-checkout.md
diff --git a/website/source/_posts/drupal-association.md b/website/src/posts/drupal-association.md
similarity index 100%
rename from website/source/_posts/drupal-association.md
rename to website/src/posts/drupal-association.md
diff --git a/website/source/_posts/drupal-automated-testing-workshop-notes.md b/website/src/posts/drupal-automated-testing-workshop-notes.md
similarity index 100%
rename from website/source/_posts/drupal-automated-testing-workshop-notes.md
rename to website/src/posts/drupal-automated-testing-workshop-notes.md
diff --git a/website/source/_posts/drupal-body-classes-tailwind-css.md b/website/src/posts/drupal-body-classes-tailwind-css.md
similarity index 93%
rename from website/source/_posts/drupal-body-classes-tailwind-css.md
rename to website/src/posts/drupal-body-classes-tailwind-css.md
index f1749b87..a0d2b9ca 100644
--- a/website/source/_posts/drupal-body-classes-tailwind-css.md
+++ b/website/src/posts/drupal-body-classes-tailwind-css.md
@@ -5,10 +5,6 @@ date: 2022-07-02
tags:
- drupal
- tailwind-css
-toc:
- - Adding classes to a safelist
- - Extracting the safelist to a file
- - Creating a safelist file automatically with Drush
---
I was recently [asked a question](https://www.drupal.org/project/tailwindcss/issues/3271487) in the issue queue for my [Tailwind starter kit Drupal theme](https://www.drupal.org/project/tailwindcss), about how to use classes within content with Tailwind CSS.
@@ -17,7 +13,7 @@ The 5.x version of the theme has the JIT (just in time) compiler enabled by defa
This is something that I've needed to solve in some of my own projects before too so there are a few options but I'd not recommend turning off the JIT compiler or PurgeCSS.
-{% include "post/heading-with-anchor" with { text: page.toc.0 } only %}
+## Adding classes to a safelist
The first option is to use the `safelist` option within the `tailwind.config.js` file:
@@ -40,7 +36,7 @@ This is refered to within the Tailwind CSS documentation for [safelisting classe
> One example of where this can be useful is if your site displays user-generated content and you want users to be able to use a constrained set of Tailwind classes in their content that might not exist in your own site’s source files.
-{% include "post/heading-with-anchor" with { text: page.toc.1 } only %}
+## Extracting the safelist to a file
In some projects, I found that I was adding a lot of classes to the safelist so I extracted the classes into a file instead.
@@ -63,7 +59,7 @@ module.exports = {
}
```
-{% include "post/heading-with-anchor" with { text: page.toc.2 } only %}
+## Creating a safelist file automatically with Drush
What we could also do is create the safelist file automatically based on the contents of the database using a custom Drush command.
@@ -129,7 +125,8 @@ private string $filename = 'safelist.txt';
```
Within the `handle()` method, I'm using an [Illuminate Collection](/talks/using-illuminate-collections-outside-laravel) to loop over the array of tables, query the database, export the values, and write them into the file:
-```
+
+```php
public function handle(): void {
$values = collect(self::$tableNames)
->flatMap(fn(string $tableName) =>
diff --git a/website/source/_posts/drupal-bristol-testing-workshop.md b/website/src/posts/drupal-bristol-testing-workshop.md
similarity index 100%
rename from website/source/_posts/drupal-bristol-testing-workshop.md
rename to website/src/posts/drupal-bristol-testing-workshop.md
diff --git a/website/source/_posts/drupal-vm-generator-updates.md b/website/src/posts/drupal-vm-generator-updates.md
similarity index 100%
rename from website/source/_posts/drupal-vm-generator-updates.md
rename to website/src/posts/drupal-vm-generator-updates.md
diff --git a/website/source/_posts/drupalcamp-bristol-2018.md b/website/src/posts/drupalcamp-bristol-2018.md
similarity index 100%
rename from website/source/_posts/drupalcamp-bristol-2018.md
rename to website/src/posts/drupalcamp-bristol-2018.md
diff --git a/website/source/_posts/drupalcamp-bristol-2019-speakers-sessions-announced.md b/website/src/posts/drupalcamp-bristol-2019-speakers-sessions-announced.md
similarity index 100%
rename from website/source/_posts/drupalcamp-bristol-2019-speakers-sessions-announced.md
rename to website/src/posts/drupalcamp-bristol-2019-speakers-sessions-announced.md
diff --git a/website/source/_posts/drupalcamp-bristol-early-bird-tickets-sessions-sponsors.md b/website/src/posts/drupalcamp-bristol-early-bird-tickets-sessions-sponsors.md
similarity index 100%
rename from website/source/_posts/drupalcamp-bristol-early-bird-tickets-sessions-sponsors.md
rename to website/src/posts/drupalcamp-bristol-early-bird-tickets-sessions-sponsors.md
diff --git a/website/source/_posts/drupalcamp-london-2014.md b/website/src/posts/drupalcamp-london-2014.md
similarity index 100%
rename from website/source/_posts/drupalcamp-london-2014.md
rename to website/src/posts/drupalcamp-london-2014.md
diff --git a/website/source/_posts/drupalcamp-london-2019-tickets.md b/website/src/posts/drupalcamp-london-2019-tickets.md
similarity index 100%
rename from website/source/_posts/drupalcamp-london-2019-tickets.md
rename to website/src/posts/drupalcamp-london-2019-tickets.md
diff --git a/website/source/_posts/drupalcamp-london-testing-workshop.md b/website/src/posts/drupalcamp-london-testing-workshop.md
similarity index 100%
rename from website/source/_posts/drupalcamp-london-testing-workshop.md
rename to website/src/posts/drupalcamp-london-testing-workshop.md
diff --git a/website/source/_posts/easier-git-repository-cloning-insteadof.md b/website/src/posts/easier-git-repository-cloning-insteadof.md
similarity index 100%
rename from website/source/_posts/easier-git-repository-cloning-insteadof.md
rename to website/src/posts/easier-git-repository-cloning-insteadof.md
diff --git a/website/source/_posts/easier-sculpin-commands-composer-npm-scripts.md b/website/src/posts/easier-sculpin-commands-composer-npm-scripts.md
similarity index 100%
rename from website/source/_posts/easier-sculpin-commands-composer-npm-scripts.md
rename to website/src/posts/easier-sculpin-commands-composer-npm-scripts.md
diff --git a/website/source/_posts/easily-embed-typekit-fonts-your-drupal-website.md b/website/src/posts/easily-embed-typekit-fonts-your-drupal-website.md
similarity index 100%
rename from website/source/_posts/easily-embed-typekit-fonts-your-drupal-website.md
rename to website/src/posts/easily-embed-typekit-fonts-your-drupal-website.md
diff --git a/website/source/_posts/entityform.md b/website/src/posts/entityform.md
similarity index 100%
rename from website/source/_posts/entityform.md
rename to website/src/posts/entityform.md
diff --git a/website/source/_posts/experimenting-events-drupal-8.md b/website/src/posts/experimenting-events-drupal-8.md
similarity index 100%
rename from website/source/_posts/experimenting-events-drupal-8.md
rename to website/src/posts/experimenting-events-drupal-8.md
diff --git a/website/source/_posts/feature-flags-sculpin.md b/website/src/posts/feature-flags-sculpin.md
similarity index 83%
rename from website/source/_posts/feature-flags-sculpin.md
rename to website/src/posts/feature-flags-sculpin.md
index 0ab85913..9bf2cf57 100644
--- a/website/source/_posts/feature-flags-sculpin.md
+++ b/website/src/posts/feature-flags-sculpin.md
@@ -4,18 +4,13 @@ excerpt: |
How I've started using feature flags within a client's Sculpin website.
tags: [sculpin]
date: "2022-01-09"
-toc:
- - Background
- - Introducing feature flags
- - Feature flags in Sculpin
- - Using the Facebook pixel feature flag
---
-{% include "post/heading-with-anchor" with { text: page.toc.0 } only %}
+## Background
I was asked last week to add a new feature, a Facebook pixel for measuring and
building advertising campaigns, to a client's website which I built using the
@@ -30,7 +25,7 @@ facebook:
id: "abc123"
```
-It can then be retrieved with {% verbatim %}`{{ site.facebook.pixel.id }}`{% endverbatim %}.
+It can then be retrieved with `{{ site.facebook.pixel.id }}`.
If I then needed to disable the pixel, then I'd typically remove the pixel
ID:
@@ -41,7 +36,7 @@ facebook:
id: ~
```
-{% include "post/heading-with-anchor" with { text: page.toc.1 } only %}
+## Introducing feature flags
A technique that I like to use on other projects is using
[feature flags](https://www.atlassian.com/continuous-delivery/principles/feature-flags)
@@ -52,7 +47,7 @@ toggling a feature - a static site will need to be re-generated and deployed -
I thought that there was value in being able to easily toggle a feature without
changing its configuration or removing code within the site's templates.
-{% include "post/heading-with-anchor" with { text: page.toc.2 } only %}
+## Feature flags in Sculpin
My Sculpin feature flag implementation was to add a `feature_flags` key within
`sculpin_site.yml`, with each feature's name as the key and a boolean value to
@@ -66,13 +61,13 @@ feature_flags:
add_facebook_pixel: true
```
-{% include "post/heading-with-anchor" with { text: page.toc.3 } only %}
+## Using the Facebook pixel feature flag
The Facebook pixel code is stored within it's own partial that I can include
from my `source/_layouts/app.html.twig` layout, including the pixel ID and
whether or not the feature flag is enabled.
-{% verbatim %}
+
```twig
{% include "facebook-pixel" with {
@@ -81,13 +76,13 @@ whether or not the feature flag is enabled.
} only %}
```
-{% endverbatim %}
+
Within the partial, I can check that both the feature flag is enabled and that
there is a Facebook pixel ID, and only add the pixel code if both conditions
return a truthy value.
-{% verbatim -%}
+
```twig
{% if is_enabled and pixel_id %}
@@ -106,7 +101,7 @@ return a truthy value.
{% endif %}
```
-{% endverbatim %}
+
Now the pixel can be removed just by setting `add_facebook_pixel: false` in
`sculpin_site.yml`, and without changing any other configuration or templates.
diff --git a/website/source/_posts/finding-the-last-commit-that-a-patch-applies-to.md b/website/src/posts/finding-the-last-commit-that-a-patch-applies-to.md
similarity index 100%
rename from website/source/_posts/finding-the-last-commit-that-a-patch-applies-to.md
rename to website/src/posts/finding-the-last-commit-that-a-patch-applies-to.md
diff --git a/website/source/_posts/fixing-drupal-simpletest-issues-inside-docker-containers.md b/website/src/posts/fixing-drupal-simpletest-issues-inside-docker-containers.md
similarity index 100%
rename from website/source/_posts/fixing-drupal-simpletest-issues-inside-docker-containers.md
rename to website/src/posts/fixing-drupal-simpletest-issues-inside-docker-containers.md
diff --git a/website/source/_posts/forward-one-domain-another-using-modrewrite-htaccess.md b/website/src/posts/forward-one-domain-another-using-modrewrite-htaccess.md
similarity index 100%
rename from website/source/_posts/forward-one-domain-another-using-modrewrite-htaccess.md
rename to website/src/posts/forward-one-domain-another-using-modrewrite-htaccess.md
diff --git a/website/source/_posts/git-format-patch-your-friend.md b/website/src/posts/git-format-patch-your-friend.md
similarity index 100%
rename from website/source/_posts/git-format-patch-your-friend.md
rename to website/src/posts/git-format-patch-your-friend.md
diff --git a/website/source/_posts/github-actions-phpunit-colours.md b/website/src/posts/github-actions-phpunit-colours.md
similarity index 100%
rename from website/source/_posts/github-actions-phpunit-colours.md
rename to website/src/posts/github-actions-phpunit-colours.md
diff --git a/website/source/_posts/going-drupalcon.md b/website/src/posts/going-drupalcon.md
similarity index 100%
rename from website/source/_posts/going-drupalcon.md
rename to website/src/posts/going-drupalcon.md
diff --git a/website/source/_posts/going-full-vim.md b/website/src/posts/going-full-vim.md
similarity index 100%
rename from website/source/_posts/going-full-vim.md
rename to website/src/posts/going-full-vim.md
diff --git a/website/source/_posts/how-add-date-popup-calendar-custom-form.md b/website/src/posts/how-add-date-popup-calendar-custom-form.md
similarity index 100%
rename from website/source/_posts/how-add-date-popup-calendar-custom-form.md
rename to website/src/posts/how-add-date-popup-calendar-custom-form.md
diff --git a/website/source/_posts/how-create-apply-patches.md b/website/src/posts/how-create-apply-patches.md
similarity index 100%
rename from website/source/_posts/how-create-apply-patches.md
rename to website/src/posts/how-create-apply-patches.md
diff --git a/website/source/_posts/how-fix-vagrant-loading-wrong-virtual-machine.md b/website/src/posts/how-fix-vagrant-loading-wrong-virtual-machine.md
similarity index 100%
rename from website/source/_posts/how-fix-vagrant-loading-wrong-virtual-machine.md
rename to website/src/posts/how-fix-vagrant-loading-wrong-virtual-machine.md
diff --git a/website/source/_posts/how-install-configure-subversion-svn-server-ubuntu.md b/website/src/posts/how-install-configure-subversion-svn-server-ubuntu.md
similarity index 100%
rename from website/source/_posts/how-install-configure-subversion-svn-server-ubuntu.md
rename to website/src/posts/how-install-configure-subversion-svn-server-ubuntu.md
diff --git a/website/source/_posts/how-put-your-php-application-subdirectory-another-site-nginx.md b/website/src/posts/how-put-your-php-application-subdirectory-another-site-nginx.md
similarity index 100%
rename from website/source/_posts/how-put-your-php-application-subdirectory-another-site-nginx.md
rename to website/src/posts/how-put-your-php-application-subdirectory-another-site-nginx.md
diff --git a/website/source/_posts/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm.md b/website/src/posts/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm.md
similarity index 100%
rename from website/source/_posts/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm.md
rename to website/src/posts/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm.md
diff --git a/website/source/_posts/how-use-environment-variables-your-drupal-settings-docksal.md b/website/src/posts/how-use-environment-variables-your-drupal-settings-docksal.md
similarity index 100%
rename from website/source/_posts/how-use-environment-variables-your-drupal-settings-docksal.md
rename to website/src/posts/how-use-environment-variables-your-drupal-settings-docksal.md
diff --git a/website/source/_posts/ignoring-phpcs-sniffs-phpunit-tests.md b/website/src/posts/ignoring-phpcs-sniffs-phpunit-tests.md
similarity index 100%
rename from website/source/_posts/ignoring-phpcs-sniffs-phpunit-tests.md
rename to website/src/posts/ignoring-phpcs-sniffs-phpunit-tests.md
diff --git a/website/source/_posts/imagefield-import-archive.md b/website/src/posts/imagefield-import-archive.md
similarity index 100%
rename from website/source/_posts/imagefield-import-archive.md
rename to website/src/posts/imagefield-import-archive.md
diff --git a/website/source/_posts/improve-jpg-quality-imagecache-and-imageapi.md b/website/src/posts/improve-jpg-quality-imagecache-and-imageapi.md
similarity index 100%
rename from website/source/_posts/improve-jpg-quality-imagecache-and-imageapi.md
rename to website/src/posts/improve-jpg-quality-imagecache-and-imageapi.md
diff --git a/website/source/_posts/include-css-fonts-using-sass-each-loop.md b/website/src/posts/include-css-fonts-using-sass-each-loop.md
similarity index 100%
rename from website/source/_posts/include-css-fonts-using-sass-each-loop.md
rename to website/src/posts/include-css-fonts-using-sass-each-loop.md
diff --git a/website/source/_posts/include-environment-specific-settings-files-pantheon.md b/website/src/posts/include-environment-specific-settings-files-pantheon.md
similarity index 100%
rename from website/source/_posts/include-environment-specific-settings-files-pantheon.md
rename to website/src/posts/include-environment-specific-settings-files-pantheon.md
diff --git a/website/source/_posts/include-local-drupal-settings-file-environment-configuration-and-overrides.md b/website/src/posts/include-local-drupal-settings-file-environment-configuration-and-overrides.md
similarity index 100%
rename from website/source/_posts/include-local-drupal-settings-file-environment-configuration-and-overrides.md
rename to website/src/posts/include-local-drupal-settings-file-environment-configuration-and-overrides.md
diff --git a/website/source/_posts/install-nomensa-media-player-drupal.md b/website/src/posts/install-nomensa-media-player-drupal.md
similarity index 100%
rename from website/source/_posts/install-nomensa-media-player-drupal.md
rename to website/src/posts/install-nomensa-media-player-drupal.md
diff --git a/website/source/_posts/installing-nagios-centos.md b/website/src/posts/installing-nagios-centos.md
similarity index 100%
rename from website/source/_posts/installing-nagios-centos.md
rename to website/src/posts/installing-nagios-centos.md
diff --git a/website/source/_posts/interview-drupal-expert-code-enigma.md b/website/src/posts/interview-drupal-expert-code-enigma.md
similarity index 100%
rename from website/source/_posts/interview-drupal-expert-code-enigma.md
rename to website/src/posts/interview-drupal-expert-code-enigma.md
diff --git a/website/source/_posts/introducing-drupal-distribution-meetups.md b/website/src/posts/introducing-drupal-distribution-meetups.md
similarity index 100%
rename from website/source/_posts/introducing-drupal-distribution-meetups.md
rename to website/src/posts/introducing-drupal-distribution-meetups.md
diff --git a/website/source/_posts/introducing-the-drupal-meetups-twitterbot.md b/website/src/posts/introducing-the-drupal-meetups-twitterbot.md
similarity index 100%
rename from website/source/_posts/introducing-the-drupal-meetups-twitterbot.md
rename to website/src/posts/introducing-the-drupal-meetups-twitterbot.md
diff --git a/website/source/_posts/leaving-nomensa-joining-precedent.md b/website/src/posts/leaving-nomensa-joining-precedent.md
similarity index 100%
rename from website/source/_posts/leaving-nomensa-joining-precedent.md
rename to website/src/posts/leaving-nomensa-joining-precedent.md
diff --git a/website/source/_posts/live-blogging-symfonylive-london-2019.md b/website/src/posts/live-blogging-symfonylive-london-2019.md
similarity index 100%
rename from website/source/_posts/live-blogging-symfonylive-london-2019.md
rename to website/src/posts/live-blogging-symfonylive-london-2019.md
diff --git a/website/source/_posts/looking-forward-to-drupalcamp-london.md b/website/src/posts/looking-forward-to-drupalcamp-london.md
similarity index 100%
rename from website/source/_posts/looking-forward-to-drupalcamp-london.md
rename to website/src/posts/looking-forward-to-drupalcamp-london.md
diff --git a/website/source/_posts/mediacurrent-contrib-half-hour-is-back.md b/website/src/posts/mediacurrent-contrib-half-hour-is-back.md
similarity index 100%
rename from website/source/_posts/mediacurrent-contrib-half-hour-is-back.md
rename to website/src/posts/mediacurrent-contrib-half-hour-is-back.md
diff --git a/website/source/_posts/migrating-drupal-8-introduction.md b/website/src/posts/migrating-drupal-8-introduction.md
similarity index 100%
rename from website/source/_posts/migrating-drupal-8-introduction.md
rename to website/src/posts/migrating-drupal-8-introduction.md
diff --git a/website/source/_posts/minimum-core-version.md b/website/src/posts/minimum-core-version.md
similarity index 100%
rename from website/source/_posts/minimum-core-version.md
rename to website/src/posts/minimum-core-version.md
diff --git a/website/source/_posts/my-first-blog-post-published-for-inviqa.md b/website/src/posts/my-first-blog-post-published-for-inviqa.md
similarity index 100%
rename from website/source/_posts/my-first-blog-post-published-for-inviqa.md
rename to website/src/posts/my-first-blog-post-published-for-inviqa.md
diff --git a/website/source/_posts/my-first-six-months-transport-wales.md b/website/src/posts/my-first-six-months-transport-wales.md
similarity index 100%
rename from website/source/_posts/my-first-six-months-transport-wales.md
rename to website/src/posts/my-first-six-months-transport-wales.md
diff --git a/website/source/_posts/my-new-drupal-modules.md b/website/src/posts/my-new-drupal-modules.md
similarity index 100%
rename from website/source/_posts/my-new-drupal-modules.md
rename to website/src/posts/my-new-drupal-modules.md
diff --git a/website/source/_posts/my-sublime-text-2-settings.md b/website/src/posts/my-sublime-text-2-settings.md
similarity index 100%
rename from website/source/_posts/my-sublime-text-2-settings.md
rename to website/src/posts/my-sublime-text-2-settings.md
diff --git a/website/source/_posts/neovim-database-plugin-vim-dadbod-ui.md b/website/src/posts/neovim-database-plugin-vim-dadbod-ui.md
similarity index 100%
rename from website/source/_posts/neovim-database-plugin-vim-dadbod-ui.md
rename to website/src/posts/neovim-database-plugin-vim-dadbod-ui.md
diff --git a/website/source/_posts/nginx-redirects-query-string-arguments.md b/website/src/posts/nginx-redirects-query-string-arguments.md
similarity index 100%
rename from website/source/_posts/nginx-redirects-query-string-arguments.md
rename to website/src/posts/nginx-redirects-query-string-arguments.md
diff --git a/website/source/_posts/null-users-system-users-drupal.md b/website/src/posts/null-users-system-users-drupal.md
similarity index 100%
rename from website/source/_posts/null-users-system-users-drupal.md
rename to website/src/posts/null-users-system-users-drupal.md
diff --git a/website/source/_posts/open-sublime-text-2-mac-os-x-command-line.md b/website/src/posts/open-sublime-text-2-mac-os-x-command-line.md
similarity index 100%
rename from website/source/_posts/open-sublime-text-2-mac-os-x-command-line.md
rename to website/src/posts/open-sublime-text-2-mac-os-x-command-line.md
diff --git a/website/source/_posts/presenting-on-tailwind-css-and-ansible-at-cms-philly.md b/website/src/posts/presenting-on-tailwind-css-and-ansible-at-cms-philly.md
similarity index 100%
rename from website/source/_posts/presenting-on-tailwind-css-and-ansible-at-cms-philly.md
rename to website/src/posts/presenting-on-tailwind-css-and-ansible-at-cms-philly.md
diff --git a/website/source/_posts/presenting-pdf-slides-using-pdfpc-pdf-presenter-console.md b/website/src/posts/presenting-pdf-slides-using-pdfpc-pdf-presenter-console.md
similarity index 100%
rename from website/source/_posts/presenting-pdf-slides-using-pdfpc-pdf-presenter-console.md
rename to website/src/posts/presenting-pdf-slides-using-pdfpc-pdf-presenter-console.md
diff --git a/website/source/_posts/prevent-apache-displaying-text-files-within-web-browser.md b/website/src/posts/prevent-apache-displaying-text-files-within-web-browser.md
similarity index 100%
rename from website/source/_posts/prevent-apache-displaying-text-files-within-web-browser.md
rename to website/src/posts/prevent-apache-displaying-text-files-within-web-browser.md
diff --git a/website/source/_posts/proctor-stevenson.md b/website/src/posts/proctor-stevenson.md
similarity index 100%
rename from website/source/_posts/proctor-stevenson.md
rename to website/src/posts/proctor-stevenson.md
diff --git a/website/source/_posts/proctors-hosting-next-drupal-meetup.md b/website/src/posts/proctors-hosting-next-drupal-meetup.md
similarity index 100%
rename from website/source/_posts/proctors-hosting-next-drupal-meetup.md
rename to website/src/posts/proctors-hosting-next-drupal-meetup.md
diff --git a/website/source/_posts/psr4-autoloading-test-cases-drupal-7.md b/website/src/posts/psr4-autoloading-test-cases-drupal-7.md
similarity index 100%
rename from website/source/_posts/psr4-autoloading-test-cases-drupal-7.md
rename to website/src/posts/psr4-autoloading-test-cases-drupal-7.md
diff --git a/website/source/_posts/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf.md b/website/src/posts/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf.md
similarity index 100%
rename from website/source/_posts/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf.md
rename to website/src/posts/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf.md
diff --git a/website/source/_posts/published-my-first-npm-package.md b/website/src/posts/published-my-first-npm-package.md
similarity index 96%
rename from website/source/_posts/published-my-first-npm-package.md
rename to website/src/posts/published-my-first-npm-package.md
index ec237650..af8caf04 100644
--- a/website/source/_posts/published-my-first-npm-package.md
+++ b/website/src/posts/published-my-first-npm-package.md
@@ -66,7 +66,7 @@ make it `display: block` whilst Vue is compiling and the element is cloaked, and
In my `base.html.twig` template, I’ve added `v-cloak` to the wrapper div within
the `body`.
-{% verbatim %}
+
```twig
@@ -76,14 +76,14 @@ the `body`.
```
-
{% endverbatim %}
+
Within my `navbar.html.twig` partial, I have a placeholder div that also
contains the site name, which is instantly visible but has the `v-cloak-block`
class so it’s hidden once Vue has compiled and the `Navbar` Vue component is
visible instead.
-{% verbatim %}
+
```twig
@@ -100,7 +100,7 @@ visible instead.
```
-
{% endverbatim %}
+
I was originally surprised that these classes weren’t included as part of
Tailwind or as part of an existing plugin, but as I’ve already used these styles
diff --git a/website/source/_posts/publishing-sculpin-sites-with-github-pages.md b/website/src/posts/publishing-sculpin-sites-with-github-pages.md
similarity index 100%
rename from website/source/_posts/publishing-sculpin-sites-with-github-pages.md
rename to website/src/posts/publishing-sculpin-sites-with-github-pages.md
diff --git a/website/source/_posts/queuing-private-messages-drupal-8.md b/website/src/posts/queuing-private-messages-drupal-8.md
similarity index 100%
rename from website/source/_posts/queuing-private-messages-drupal-8.md
rename to website/src/posts/queuing-private-messages-drupal-8.md
diff --git a/website/source/_posts/quick-project-switching-phpstorm.md b/website/src/posts/quick-project-switching-phpstorm.md
similarity index 100%
rename from website/source/_posts/quick-project-switching-phpstorm.md
rename to website/src/posts/quick-project-switching-phpstorm.md
diff --git a/website/source/_posts/quickest-way-install-sublime-text-2-ubuntu.md b/website/src/posts/quickest-way-install-sublime-text-2-ubuntu.md
similarity index 100%
rename from website/source/_posts/quickest-way-install-sublime-text-2-ubuntu.md
rename to website/src/posts/quickest-way-install-sublime-text-2-ubuntu.md
diff --git a/website/source/_posts/quickly-apply-patches-using-git-curl-or-wget.md b/website/src/posts/quickly-apply-patches-using-git-curl-or-wget.md
similarity index 100%
rename from website/source/_posts/quickly-apply-patches-using-git-curl-or-wget.md
rename to website/src/posts/quickly-apply-patches-using-git-curl-or-wget.md
diff --git a/website/source/_posts/quickly-import-multiples-images-using-imagefieldimport-module.md b/website/src/posts/quickly-import-multiples-images-using-imagefieldimport-module.md
similarity index 100%
rename from website/source/_posts/quickly-import-multiples-images-using-imagefieldimport-module.md
rename to website/src/posts/quickly-import-multiples-images-using-imagefieldimport-module.md
diff --git a/website/source/_posts/rebuilding-acquia-dashboard-with-vuejs-tailwind-css.md b/website/src/posts/rebuilding-acquia-dashboard-with-vuejs-tailwind-css.md
similarity index 100%
rename from website/source/_posts/rebuilding-acquia-dashboard-with-vuejs-tailwind-css.md
rename to website/src/posts/rebuilding-acquia-dashboard-with-vuejs-tailwind-css.md
diff --git a/website/source/_posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2.md b/website/src/posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2.md
similarity index 99%
rename from website/source/_posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2.md
rename to website/src/posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2.md
index 824bd7a5..a4af7392 100644
--- a/website/source/_posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2.md
+++ b/website/src/posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2.md
@@ -70,7 +70,7 @@ I added a `style` section within `Welcome.vue`, and added some default styling
for links based on their location on the page -
[extracting some Tailwind components](https://tailwindcss.com/docs/extracting-components).
-
{% verbatim %}
+
```vuejs
...
@@ -126,7 +126,7 @@ onto every link.
```
-{% endverbatim %}
+
## Extracting a Vue component for Drupal blocks
diff --git a/website/source/_posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css.md b/website/src/posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css.md
similarity index 98%
rename from website/source/_posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css.md
rename to website/src/posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css.md
index ba774a2c..22b908b6 100644
--- a/website/source/_posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css.md
+++ b/website/src/posts/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css.md
@@ -88,7 +88,7 @@ export default {
`src/components/Welcome.vue`:
-
{% verbatim %}
+
```vuejs
@@ -192,7 +192,7 @@ export default {
````
-{% endverbatim %}
+
## Making it responsive
@@ -231,7 +231,7 @@ markup which makes the component easier to read and maintain.
`src/components/MainMenu.vue`:
-{% verbatim %}
+
```vuejs
@@ -317,7 +317,7 @@ markup which makes the component easier to read and maintain.
```
-
{% endverbatim %}
+
## The result
diff --git a/website/source/_posts/reflections-speaking-unifieddiff.md b/website/src/posts/reflections-speaking-unifieddiff.md
similarity index 100%
rename from website/source/_posts/reflections-speaking-unifieddiff.md
rename to website/src/posts/reflections-speaking-unifieddiff.md
diff --git a/website/source/_posts/renaming-gray-grey-tailwind-css.md b/website/src/posts/renaming-gray-grey-tailwind-css.md
similarity index 100%
rename from website/source/_posts/renaming-gray-grey-tailwind-css.md
rename to website/src/posts/renaming-gray-grey-tailwind-css.md
diff --git a/website/source/_posts/restructuring-my-tailwindjs-configuration-files.md b/website/src/posts/restructuring-my-tailwindjs-configuration-files.md
similarity index 100%
rename from website/source/_posts/restructuring-my-tailwindjs-configuration-files.md
rename to website/src/posts/restructuring-my-tailwindjs-configuration-files.md
diff --git a/website/source/_posts/review-adminhover-module.md b/website/src/posts/review-adminhover-module.md
similarity index 100%
rename from website/source/_posts/review-adminhover-module.md
rename to website/src/posts/review-adminhover-module.md
diff --git a/website/source/_posts/review-image-caption-module.md b/website/src/posts/review-image-caption-module.md
similarity index 100%
rename from website/source/_posts/review-image-caption-module.md
rename to website/src/posts/review-image-caption-module.md
diff --git a/website/source/_posts/review-teleport-module.md b/website/src/posts/review-teleport-module.md
similarity index 100%
rename from website/source/_posts/review-teleport-module.md
rename to website/src/posts/review-teleport-module.md
diff --git a/website/source/_posts/running-drupal-88-symfony-local-server.md b/website/src/posts/running-drupal-88-symfony-local-server.md
similarity index 100%
rename from website/source/_posts/running-drupal-88-symfony-local-server.md
rename to website/src/posts/running-drupal-88-symfony-local-server.md
diff --git a/website/source/_posts/sculpin-twig-resources.md b/website/src/posts/sculpin-twig-resources.md
similarity index 100%
rename from website/source/_posts/sculpin-twig-resources.md
rename to website/src/posts/sculpin-twig-resources.md
diff --git a/website/source/_posts/simplifying-drupal-migrations-xautoload.md b/website/src/posts/simplifying-drupal-migrations-xautoload.md
similarity index 100%
rename from website/source/_posts/simplifying-drupal-migrations-xautoload.md
rename to website/src/posts/simplifying-drupal-migrations-xautoload.md
diff --git a/website/source/_posts/site-upgraded-drupal-7.md b/website/src/posts/site-upgraded-drupal-7.md
similarity index 100%
rename from website/source/_posts/site-upgraded-drupal-7.md
rename to website/src/posts/site-upgraded-drupal-7.md
diff --git a/website/source/_posts/some-useful-git-aliases.md b/website/src/posts/some-useful-git-aliases.md
similarity index 100%
rename from website/source/_posts/some-useful-git-aliases.md
rename to website/src/posts/some-useful-git-aliases.md
diff --git a/website/source/_posts/some-useful-links-using-simpletest-drupal.md b/website/src/posts/some-useful-links-using-simpletest-drupal.md
similarity index 100%
rename from website/source/_posts/some-useful-links-using-simpletest-drupal.md
rename to website/src/posts/some-useful-links-using-simpletest-drupal.md
diff --git a/website/source/_posts/south-wales-drupal-user-group.md b/website/src/posts/south-wales-drupal-user-group.md
similarity index 100%
rename from website/source/_posts/south-wales-drupal-user-group.md
rename to website/src/posts/south-wales-drupal-user-group.md
diff --git a/website/source/_posts/speaking-drupalcon-amsterdam.md b/website/src/posts/speaking-drupalcon-amsterdam.md
similarity index 100%
rename from website/source/_posts/speaking-drupalcon-amsterdam.md
rename to website/src/posts/speaking-drupalcon-amsterdam.md
diff --git a/website/source/_posts/speaking-drupalcon-europe-2020.md b/website/src/posts/speaking-drupalcon-europe-2020.md
similarity index 100%
rename from website/source/_posts/speaking-drupalcon-europe-2020.md
rename to website/src/posts/speaking-drupalcon-europe-2020.md
diff --git a/website/source/_posts/speaking-remotely-during-covid-19.md b/website/src/posts/speaking-remotely-during-covid-19.md
similarity index 100%
rename from website/source/_posts/speaking-remotely-during-covid-19.md
rename to website/src/posts/speaking-remotely-during-covid-19.md
diff --git a/website/source/_posts/splitting-new-drupal-project-from-repo.md b/website/src/posts/splitting-new-drupal-project-from-repo.md
similarity index 100%
rename from website/source/_posts/splitting-new-drupal-project-from-repo.md
rename to website/src/posts/splitting-new-drupal-project-from-repo.md
diff --git a/website/source/_posts/streaming-spabby-gary-hockin-about-drupal.md b/website/src/posts/streaming-spabby-gary-hockin-about-drupal.md
similarity index 100%
rename from website/source/_posts/streaming-spabby-gary-hockin-about-drupal.md
rename to website/src/posts/streaming-spabby-gary-hockin-about-drupal.md
diff --git a/website/source/_posts/style-drupal-6s-taxonomy-lists-php-css-and-jquery.md b/website/src/posts/style-drupal-6s-taxonomy-lists-php-css-and-jquery.md
similarity index 100%
rename from website/source/_posts/style-drupal-6s-taxonomy-lists-php-css-and-jquery.md
rename to website/src/posts/style-drupal-6s-taxonomy-lists-php-css-and-jquery.md
diff --git a/website/source/_posts/survey-results-my-drupalcon-europe-session-test-driven-drupal.md b/website/src/posts/survey-results-my-drupalcon-europe-session-test-driven-drupal.md
similarity index 100%
rename from website/source/_posts/survey-results-my-drupalcon-europe-session-test-driven-drupal.md
rename to website/src/posts/survey-results-my-drupalcon-europe-session-test-driven-drupal.md
diff --git a/website/source/_posts/test-driven-ansible-role-development-molecule.md b/website/src/posts/test-driven-ansible-role-development-molecule.md
similarity index 100%
rename from website/source/_posts/test-driven-ansible-role-development-molecule.md
rename to website/src/posts/test-driven-ansible-role-development-molecule.md
diff --git a/website/source/_posts/test-driven-drupal-on-gitstore-leanpub.md b/website/src/posts/test-driven-drupal-on-gitstore-leanpub.md
similarity index 100%
rename from website/source/_posts/test-driven-drupal-on-gitstore-leanpub.md
rename to website/src/posts/test-driven-drupal-on-gitstore-leanpub.md
diff --git a/website/source/_posts/test-driven-drupal-presentation-drupalcon-europe.md b/website/src/posts/test-driven-drupal-presentation-drupalcon-europe.md
similarity index 100%
rename from website/source/_posts/test-driven-drupal-presentation-drupalcon-europe.md
rename to website/src/posts/test-driven-drupal-presentation-drupalcon-europe.md
diff --git a/website/source/_posts/testing-tailwind-css-plugins-jest.md b/website/src/posts/testing-tailwind-css-plugins-jest.md
similarity index 100%
rename from website/source/_posts/testing-tailwind-css-plugins-jest.md
rename to website/src/posts/testing-tailwind-css-plugins-jest.md
diff --git a/website/source/_posts/thanks.md b/website/src/posts/thanks.md
similarity index 100%
rename from website/source/_posts/thanks.md
rename to website/src/posts/thanks.md
diff --git a/website/source/_posts/turning-drupal-module-into-feature.md b/website/src/posts/turning-drupal-module-into-feature.md
similarity index 100%
rename from website/source/_posts/turning-drupal-module-into-feature.md
rename to website/src/posts/turning-drupal-module-into-feature.md
diff --git a/website/source/_posts/tweets-drupalcamp-london.md b/website/src/posts/tweets-drupalcamp-london.md
similarity index 100%
rename from website/source/_posts/tweets-drupalcamp-london.md
rename to website/src/posts/tweets-drupalcamp-london.md
diff --git a/website/source/_posts/uis-ive-rebuilt-tailwind-css.md b/website/src/posts/uis-ive-rebuilt-tailwind-css.md
similarity index 100%
rename from website/source/_posts/uis-ive-rebuilt-tailwind-css.md
rename to website/src/posts/uis-ive-rebuilt-tailwind-css.md
diff --git a/website/source/_posts/updating-features-adding-components-using-drush.md b/website/src/posts/updating-features-adding-components-using-drush.md
similarity index 100%
rename from website/source/_posts/updating-features-adding-components-using-drush.md
rename to website/src/posts/updating-features-adding-components-using-drush.md
diff --git a/website/source/_posts/updating-forked-github-repos.md b/website/src/posts/updating-forked-github-repos.md
similarity index 100%
rename from website/source/_posts/updating-forked-github-repos.md
rename to website/src/posts/updating-forked-github-repos.md
diff --git a/website/source/_posts/updating-override-node-options-tests.md b/website/src/posts/updating-override-node-options-tests.md
similarity index 100%
rename from website/source/_posts/updating-override-node-options-tests.md
rename to website/src/posts/updating-override-node-options-tests.md
diff --git a/website/source/_posts/upgrading-dransible-project-drupal-9.md b/website/src/posts/upgrading-dransible-project-drupal-9.md
similarity index 100%
rename from website/source/_posts/upgrading-dransible-project-drupal-9.md
rename to website/src/posts/upgrading-dransible-project-drupal-9.md
diff --git a/website/source/_posts/use-authorized-keys-create-passwordless-ssh-connection.md b/website/src/posts/use-authorized-keys-create-passwordless-ssh-connection.md
similarity index 100%
rename from website/source/_posts/use-authorized-keys-create-passwordless-ssh-connection.md
rename to website/src/posts/use-authorized-keys-create-passwordless-ssh-connection.md
diff --git a/website/source/_posts/use-regular-expressions-search-replace-coda-or-textmate.md b/website/src/posts/use-regular-expressions-search-replace-coda-or-textmate.md
similarity index 100%
rename from website/source/_posts/use-regular-expressions-search-replace-coda-or-textmate.md
rename to website/src/posts/use-regular-expressions-search-replace-coda-or-textmate.md
diff --git a/website/source/_posts/use-sass-and-compass-drupal-7-using-sassy.md b/website/src/posts/use-sass-and-compass-drupal-7-using-sassy.md
similarity index 100%
rename from website/source/_posts/use-sass-and-compass-drupal-7-using-sassy.md
rename to website/src/posts/use-sass-and-compass-drupal-7-using-sassy.md
diff --git a/website/source/_posts/useful-drupal-6-modules.md b/website/src/posts/useful-drupal-6-modules.md
similarity index 100%
rename from website/source/_posts/useful-drupal-6-modules.md
rename to website/src/posts/useful-drupal-6-modules.md
diff --git a/website/source/_posts/useful-vagrant-commands.md b/website/src/posts/useful-vagrant-commands.md
similarity index 100%
rename from website/source/_posts/useful-vagrant-commands.md
rename to website/src/posts/useful-vagrant-commands.md
diff --git a/website/source/_posts/using-feature-flags-in-drupal-development.md b/website/src/posts/using-feature-flags-in-drupal-development.md
similarity index 100%
rename from website/source/_posts/using-feature-flags-in-drupal-development.md
rename to website/src/posts/using-feature-flags-in-drupal-development.md
diff --git a/website/source/_posts/using-imagecache-and-imagecrop-my-portfolio.md b/website/src/posts/using-imagecache-and-imagecrop-my-portfolio.md
similarity index 100%
rename from website/source/_posts/using-imagecache-and-imagecrop-my-portfolio.md
rename to website/src/posts/using-imagecache-and-imagecrop-my-portfolio.md
diff --git a/website/source/_posts/using-laravel-collections-drupal.md b/website/src/posts/using-laravel-collections-drupal.md
similarity index 100%
rename from website/source/_posts/using-laravel-collections-drupal.md
rename to website/src/posts/using-laravel-collections-drupal.md
diff --git a/website/source/_posts/using-pcss-extension-postcss-webpack-encore.md b/website/src/posts/using-pcss-extension-postcss-webpack-encore.md
similarity index 100%
rename from website/source/_posts/using-pcss-extension-postcss-webpack-encore.md
rename to website/src/posts/using-pcss-extension-postcss-webpack-encore.md
diff --git a/website/source/_posts/using-remote-files-when-developing-locally-stage-file-proxy-module.md b/website/src/posts/using-remote-files-when-developing-locally-stage-file-proxy-module.md
similarity index 100%
rename from website/source/_posts/using-remote-files-when-developing-locally-stage-file-proxy-module.md
rename to website/src/posts/using-remote-files-when-developing-locally-stage-file-proxy-module.md
diff --git a/website/source/_posts/using-tailwind-css-your-drupal-theme.md b/website/src/posts/using-tailwind-css-your-drupal-theme.md
similarity index 100%
rename from website/source/_posts/using-tailwind-css-your-drupal-theme.md
rename to website/src/posts/using-tailwind-css-your-drupal-theme.md
diff --git a/website/source/_posts/using-traefik-local-proxy-sculpin.md b/website/src/posts/using-traefik-local-proxy-sculpin.md
similarity index 100%
rename from website/source/_posts/using-traefik-local-proxy-sculpin.md
rename to website/src/posts/using-traefik-local-proxy-sculpin.md
diff --git a/website/source/_posts/using-transition-props-vuejs.md b/website/src/posts/using-transition-props-vuejs.md
similarity index 100%
rename from website/source/_posts/using-transition-props-vuejs.md
rename to website/src/posts/using-transition-props-vuejs.md
diff --git a/website/source/_posts/weeknotes-2021-06-05.md b/website/src/posts/weeknotes-2021-06-05.md
similarity index 100%
rename from website/source/_posts/weeknotes-2021-06-05.md
rename to website/src/posts/weeknotes-2021-06-05.md
diff --git a/website/source/_posts/weeknotes-2021-06-12.md b/website/src/posts/weeknotes-2021-06-12.md
similarity index 100%
rename from website/source/_posts/weeknotes-2021-06-12.md
rename to website/src/posts/weeknotes-2021-06-12.md
diff --git a/website/source/_posts/weeknotes-2021-07-24.md b/website/src/posts/weeknotes-2021-07-24.md
similarity index 100%
rename from website/source/_posts/weeknotes-2021-07-24.md
rename to website/src/posts/weeknotes-2021-07-24.md
diff --git a/website/source/_posts/weeknotes-2021-08-06.md b/website/src/posts/weeknotes-2021-08-06.md
similarity index 100%
rename from website/source/_posts/weeknotes-2021-08-06.md
rename to website/src/posts/weeknotes-2021-08-06.md
diff --git a/website/source/_posts/what-git-flow.md b/website/src/posts/what-git-flow.md
similarity index 100%
rename from website/source/_posts/what-git-flow.md
rename to website/src/posts/what-git-flow.md
diff --git a/website/source/_posts/writing-article-linux-journal.md b/website/src/posts/writing-article-linux-journal.md
similarity index 100%
rename from website/source/_posts/writing-article-linux-journal.md
rename to website/src/posts/writing-article-linux-journal.md
diff --git a/website/source/_posts/writing-info-file-drupal-7-theme.md b/website/src/posts/writing-info-file-drupal-7-theme.md
similarity index 100%
rename from website/source/_posts/writing-info-file-drupal-7-theme.md
rename to website/src/posts/writing-info-file-drupal-7-theme.md
diff --git a/website/source/_posts/writing-new-drupal-8-module-using-test-driven-development-tdd.md b/website/src/posts/writing-new-drupal-8-module-using-test-driven-development-tdd.md
similarity index 100%
rename from website/source/_posts/writing-new-drupal-8-module-using-test-driven-development-tdd.md
rename to website/src/posts/writing-new-drupal-8-module-using-test-driven-development-tdd.md
diff --git a/website/source/_posts/zenophile.md b/website/src/posts/zenophile.md
similarity index 100%
rename from website/source/_posts/zenophile.md
rename to website/src/posts/zenophile.md
diff --git a/website/source/_talks/about-drupal-association.md b/website/src/talks/about-drupal-association.md
similarity index 73%
rename from website/source/_talks/about-drupal-association.md
rename to website/src/talks/about-drupal-association.md
index 14ad8361..8442c9de 100644
--- a/website/source/_talks/about-drupal-association.md
+++ b/website/src/talks/about-drupal-association.md
@@ -2,10 +2,9 @@
title: About the Drupal Association
description: An impromptu talk about what the Drupal Association is, and what work I’ve been doing since I joined the Association staff.
events:
- -
- name: South Wales Drupal user group (SWDUG)
- location: Cardiff, UK
- date: 2014-08-19
+ - name: South Wales Drupal user group (SWDUG)
+ location: Cardiff, UK
+ date: "2014-08-19"
---
An impromptu talk about what the Drupal Association is, and what work I’ve been doing since I joined the Association staff.
diff --git a/website/src/talks/automated-testing-test-driven-development-drupal-8.md b/website/src/talks/automated-testing-test-driven-development-drupal-8.md
new file mode 100644
index 00000000..19e6d155
--- /dev/null
+++ b/website/src/talks/automated-testing-test-driven-development-drupal-8.md
@@ -0,0 +1,19 @@
+---
+title: Automated testing and Test-Driven Development in Drupal 8
+description: A workshop that I gave about automated testing and test driven development in Drupal 8.
+events:
+ - name: Drupal Bristol
+ location: Bristol, UK
+ date: "2018-06-27"
+
+ - name: DrupalCamp London 2020
+ location: London, UK
+ url: https://drupalcamp.london/training/Automated-Testing-and-Test-Driven-Development-in-Drupal-8
+ date: "2020-03-13"
+
+ - name: DrupalCamp NYC
+ location: New York, USA
+ url: https://2020.drupalcamp.nyc/training/automated-testing-and-test-driven-development-drupal-8
+ date: "2020-11-14"
+ online: true
+---
diff --git a/website/source/_talks/building-presenting-slide-decks-rst2pdf.md b/website/src/talks/building-presenting-slide-decks-rst2pdf.md
similarity index 58%
rename from website/source/_talks/building-presenting-slide-decks-rst2pdf.md
rename to website/src/talks/building-presenting-slide-decks-rst2pdf.md
index b77b9c12..d30e0142 100644
--- a/website/source/_talks/building-presenting-slide-decks-rst2pdf.md
+++ b/website/src/talks/building-presenting-slide-decks-rst2pdf.md
@@ -1,19 +1,21 @@
---
title: Building and presenting slide decks with rst2pdf
description: A short talk on using reStructuredText and rst2pdf to build presentation slides, built with rst2pdf.
+
speakerdeck:
- id: 80498c7b5e7448f194091461cb14f1c1
- ratio: '1.77777777777778'
+ id: 80498c7b5e7448f194091461cb14f1c1
+ ratio: "1.77777777777778"
+
video:
- id: KZ89tGG-p6M
- type: youtube
+ id: KZ89tGG-p6M
+ type: youtube
+
events:
- -
- name: PHP South Wales
- location: Cardiff, UK
- url: https://www.meetup.com/PHP-South-Wales/events/275625320
- date: 2021-01-28
- online: true
+ - name: PHP South Wales
+ location: Cardiff, UK
+ url: https://www.meetup.com/PHP-South-Wales/events/275625320
+ date: "2021-01-28"
+ online: true
---
I've recently used [rst2pdf](https://rst2pdf.org) for building presentation slides. This short talk will show some examples of how I built and presented a slide deck using reStructuredText and rst2pdf.
diff --git a/website/src/talks/building-static-websites-sculpin.md b/website/src/talks/building-static-websites-sculpin.md
new file mode 100644
index 00000000..056c3c7c
--- /dev/null
+++ b/website/src/talks/building-static-websites-sculpin.md
@@ -0,0 +1,49 @@
+---
+title: Building Static Websites with Sculpin
+description: How to use Sculpin to generate static HTML websites.
+speakerdeck:
+ id: 6c9c4be1a1344f1291ff13a391674a66
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/building-static-websites-with-sculpin
+code: https://github.com/opdavies/sculpin-demo
+tags: [meetups, phpsw, sculpin]
+tweets: yes
+video:
+ type: youtube
+ id: xRTiWR9nBSA
+events:
+ - name: PHP South West
+ location: Bristol, UK
+ date: "2015-10-14"
+ url: https://phpsw.uk/events/2015-10-lightning-talks
+ joindin: https://joind.in/talk/view/15486
+
+ - name: Drupal Yorkshire
+ date: "2021-08-19"
+ location: Leeds, UK
+ url: https://www.meetup.com/DrupalYorkshire/events/280100968
+ is_online: true
+
+ - name: PHP North West (PHPNW)
+ date: "2021-09-07"
+ location: Manchester, UK
+ url: https://www.phpnw.org.uk
+ is_online: true
+
+ - name: GroningenPHP
+ date: "2021-12-09"
+ location: Groningen, Netherlands
+ url: https://www.meetup.com/GroningenPHP/events/281648855
+ is_online: true
+---
+
+[Sculpin][0] is a static site generator written in PHP. It converts Markdown
+files, Twig templates and standard HTML into a static HTML site that can be
+easily deployed.
+
+This talk will cover a little of the background to Sculpin and what it is, and
+then will move into some demonstrations of how to build a Sculpin site and what
+it can do!
+
+[0]: http://sculpin.io
+[1]: https://opdavies.github.io/slides-phpsw-sculpin
diff --git a/website/src/talks/configuring-all-the-things-drupal-8.md b/website/src/talks/configuring-all-the-things-drupal-8.md
new file mode 100644
index 00000000..b8a03909
--- /dev/null
+++ b/website/src/talks/configuring-all-the-things-drupal-8.md
@@ -0,0 +1,21 @@
+---
+title: "Configuring all the Things (in Drupal 8)"
+description: A short notice talk on configuration management in Drupal 8, and things I’ve learned working on my current Drupal 8 project.
+
+speakerdeck:
+ id: 6de3fe8947a34727b79eb9d9dcc66bf2
+ ratio: "1.37081659973226"
+ url: https://speakerdeck.com/opdavies/configuring-all-the-things-in-drupal-8
+
+video:
+ type: ~
+ id: ~
+
+events:
+ - name: Drupal Bristol
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+ date: "2018-07-25"
+---
+
+A short notice talk on configuration management in Drupal 8, and things I’ve learned working on my current Drupal 8 project.
diff --git a/website/source/_talks/dancing-for-drupal.md b/website/src/talks/dancing-for-drupal.md
similarity index 79%
rename from website/source/_talks/dancing-for-drupal.md
rename to website/src/talks/dancing-for-drupal.md
index 4a9705f4..c2661137 100644
--- a/website/source/_talks/dancing-for-drupal.md
+++ b/website/src/talks/dancing-for-drupal.md
@@ -1,18 +1,19 @@
---
title: Dancing for Drupal
description: A talk on Drupal, presented alongside others representing Umbraco, Sitecore and Episerver.
-speakerdeck:
- id: ffa9b6dea6dc4a8eb207b9982ed6e1bd
- ratio: '1.33333333333333'
- url: https://speakerdeck.com/opdavies/umbristol-dancing-for-drupal
tags: [meetup, umbristol, drupal]
tweets: yes
+
+speakerdeck:
+ id: ffa9b6dea6dc4a8eb207b9982ed6e1bd
+ ratio: "1.33333333333333"
+ url: https://speakerdeck.com/opdavies/umbristol-dancing-for-drupal
+
events:
- -
- name: umBristol
- location: Bristol, UK
- url: http://umbristol.co.uk
- date: 2015-08-25
+ - name: umBristol
+ location: Bristol, UK
+ url: http://umbristol.co.uk
+ date: "2015-08-25"
---
As part of their [CMS Dance-Off][1], I was selected to speak about Drupal alongside other speakers representing Umbraco, Sitecore and Episerver.
diff --git a/website/source/_talks/decoupling-drupal-vuejs.md b/website/src/talks/decoupling-drupal-vuejs.md
similarity index 67%
rename from website/source/_talks/decoupling-drupal-vuejs.md
rename to website/src/talks/decoupling-drupal-vuejs.md
index 83528dce..e5a2da3e 100644
--- a/website/source/_talks/decoupling-drupal-vuejs.md
+++ b/website/src/talks/decoupling-drupal-vuejs.md
@@ -2,20 +2,21 @@
title: Decoupling Drupal with Vue.js
description: Decoupling Drupal with Vue.js.
code: https://github.com/opdavies/blue-conf-2019
+
speakerdeck:
- id: 60c8b7abdf194946b7a78a1bb74a0982
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/decoupling-drupal-with-vue-dot-js
+ id: 60c8b7abdf194946b7a78a1bb74a0982
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/decoupling-drupal-with-vue-dot-js
+
events:
- -
- name: Blue Conf 2019
- location: Cardiff, UK
- url: https://blueconf.co.uk
- date: 2019-06-07
+ - name: Blue Conf 2019
+ location: Cardiff, UK
+ url: https://blueconf.co.uk
+ date: "2019-06-07"
---
Decoupled or headless Drupal has been a trend for a number of years, with modules like RESTful Web Services available for Drupal 7 to expose data, and Drupal 8 becoming more API-first with JSON:API module now included as part of core. This makes it easier for third party systems or alternative front-end applications to consume and work with the data provided by Drupal.
In this talk, we’ll look at how to build progressively and fully decoupled applications - passing data from a Drupal 8 back-end to a Vue.js front-end.
-The demo code used in the talk is [available on GitHub](https://github.com/opdavies/blue-conf-2019 'View the demo code for this talk on GitHub.').
+The demo code used in the talk is [available on GitHub](https://github.com/opdavies/blue-conf-2019 "View the demo code for this talk on GitHub.").
diff --git a/website/source/_talks/deploying-drupal-fabric.md b/website/src/talks/deploying-drupal-fabric.md
similarity index 56%
rename from website/source/_talks/deploying-drupal-fabric.md
rename to website/src/talks/deploying-drupal-fabric.md
index c9c01d93..a290e232 100644
--- a/website/source/_talks/deploying-drupal-fabric.md
+++ b/website/src/talks/deploying-drupal-fabric.md
@@ -1,26 +1,27 @@
---
-title: 'Deploying Drupal with Fabric'
+title: "Deploying Drupal with Fabric"
description: How to use Fabric, a Python command line based library, to deploy your Drupal applications.
-speakerdeck:
- id: 40d1eca4bd484afc86295924fff5dd41
- ratio: '1.77777777777778'
- url: 'https://speakerdeck.com/opdavies/deploying-drupal-and-anything-else-with-fabric'
- embed: ''
meta:
- og:
- title: Deploying Drupal with Fabric
- description: "You've built your Drupal site, now learn how to deploy it with Fabric."
- type: website
+ og:
+ title: Deploying Drupal with Fabric
+ description: "You've built your Drupal site, now learn how to deploy it with Fabric."
+ type: website
+
+speakerdeck:
+ id: 40d1eca4bd484afc86295924fff5dd41
+ ratio: "1.77777777777778"
+ url: "https://speakerdeck.com/opdavies/deploying-drupal-and-anything-else-with-fabric"
+ embed: ''
+
events:
- -
- name: DrupalCamp Dublin 2017
- location: Dublin, Ireland
- url: http://2017.drupal.ie
- date: 2017-10-20
- time: '15:00 - 15:40'
- -
- name: Drupal Somerset
- date: 2017-10-26
+ - name: DrupalCamp Dublin 2017
+ location: Dublin, Ireland
+ url: http://2017.drupal.ie
+ date: "2017-10-20"
+ time: "15:00 - 15:40"
+
+ - name: Drupal Somerset
+ date: "2017-10-26"
---
You’ve built your website, and now you just need to deploy it. There are various ways that this could be done - from (S)FTP, to SCP and rsync, to running commands like “git pull” and “composer install” directly on the server (not recommended).
diff --git a/website/src/talks/deploying-php-ansible-ansistrano.md b/website/src/talks/deploying-php-ansible-ansistrano.md
new file mode 100644
index 00000000..487c36ac
--- /dev/null
+++ b/website/src/talks/deploying-php-ansible-ansistrano.md
@@ -0,0 +1,99 @@
+---
+title: Deploying PHP applications with Ansible, Ansible Vault and Ansistrano
+description: |
+ How to use Ansible and Ansistrano to perform robust, secure deployments of
+ your PHP applications.
+speakerdeck:
+ id: c11fe635ed8f4741b35bf3ebe53e8323
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/deploying-php-applications-with-ansible-ansible-vault-and-ansistrano
+video:
+ type: youtube
+ id: dQL-gOnxXCM
+events:
+ - name: Drupal Bristol
+ date: "2019-01-23"
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+
+ - name: PHP South Wales
+ date: "2019-07-23"
+ location: Cardiff, UK
+ url: https://www.phpsouthwales.uk
+
+ - name: DrupalCon Europe 2019
+ date: "2019-10-30"
+ location: Amsterdam, NL
+ url: https://events.drupal.org/amsterdam2019
+
+ - name: Bristol Cloud Native & DevOps
+ date: "2020-01-30"
+ location: Bristol, UK
+ url: https://www.meetup.com/Bristol-Cloud-Native-DevOps/events/266609627
+
+ - name: Drupal Edinburgh
+ date: "2020-03-12"
+ location: Edinburgh, UK
+ url: https://www.meetup.com/Drupal-Edinburgh/events/267905594
+ is_online: true
+
+ - name: CMS Philly
+ date: "2020-05-01"
+ location: Philadelphia, USA
+ url: https://cmsphilly.org
+ is_online: true
+
+ - name: Drupal Yorkshire
+ date: "2020-05-21"
+ location: Leeds, UK
+ url: https://www.meetup.com/DrupalYorkshire/events/zwzsfpybchbcc
+ is_online: true
+
+ - name: PHP London
+ date: "2020-06-04"
+ location: London, UK
+ url: https://www.meetup.com/phplondon/events/270930524
+ is_online: true
+
+ - name: PHP North East
+ date: "2020-06-16"
+ location: Newcastle Upon Tyne, UK
+ url: https://www.meetup.com/phpnortheast
+ is_online: true
+
+ - name: PHP Sussex
+ date: "2020-07-01"
+ location: Brighton, UK
+ url: https://www.meetup.com/PHP-Sussex/events/271472628
+ is_online: true
+
+ - name: Midwest PHP
+ date: "2021-04-23"
+ location: ~
+ url: https://midwestphp.org/talks/1q5XUF2tTdXXLYOoujMkpF/Deploying_PHP_applications_with_Ansible_Ansible_Vault_and_Ansistrano
+ is_online: true
+
+ - name: PHP Oxford
+ date: "2021-04-28"
+ location: Oxford, UK
+ url: https://www.meetup.com/PHP-Oxford/events/qmbkfsyccgblc
+ is_online: true
+
+ - name: Ansible London
+ date: "2021-05-25"
+ location: London, UK
+ url: https://www.meetup.com/Ansible-London/events/278093392
+ is_online: true
+
+ - name: DrupalNYC
+ date: "2021-06-15"
+ location: New York, USA
+ url: https://ti.to/drupalnyc/lunch-learn-2021-06-15
+ is_online: true
+---
+
+Great! You’ve built your website, and now you just need to deploy it. There are various ways that this could be done - from (S)FTP, to SCP and rsync, to running commands like `git pull` and `composer install` directly on the server which is not ideal.
+
+As well provisioning and maintaining your server configuration and running commands, you can also use [Ansible](https://www.ansible.com) to deploy your PHP application - leveraging relevant Ansible modules such as Git and Composer, custom Ansible roles, [Ansible Vault](https://docs.ansible.com/ansible/latest/user_guide/vault.html) for managing secrets, and features such as idempotency out of the box to build a simple deployment playbook. We can then extend that and make it more robust by adding [Ansistrano](https://ansistrano.com) - a port of [Capistrano](https://capistranorb.com) - which adds extra features such as storing multiple builds for each project and the ability to roll-back if needed, customising your build steps using built-in hooks, multi-stage environments and more.
+
+I've been using Ansible and Ansistrano to deploy a variety of PHP projects - including Drupal 7 & 8, Symfony, Laravel and Sculpin, as well as basic HTML websites, and found it to be very flexible and easy to install and use, and by the end of this talk we will have a fully working deployment playbook, deploying real code onto a real server.
diff --git a/website/source/_talks/deploying-php-fabric.md b/website/src/talks/deploying-php-fabric.md
similarity index 50%
rename from website/source/_talks/deploying-php-fabric.md
rename to website/src/talks/deploying-php-fabric.md
index 6335e0cf..0e1945ba 100644
--- a/website/source/_talks/deploying-php-fabric.md
+++ b/website/src/talks/deploying-php-fabric.md
@@ -2,40 +2,39 @@
title: Deploying PHP Applications with Fabric
description: How to use Fabric, a Python command line based library, to deploy your PHP applications.
speakerdeck:
- id: c147618ce07546ca92f92983c52d6a41
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/deploying-php-applications-with-fabric
+ id: c147618ce07546ca92f92983c52d6a41
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/deploying-php-applications-with-fabric
tags: [meetup, conference, php, fabric]
meta:
- og:
- title: Deploying PHP Applcations with Fabric
- description: "You've built your PHP application, now learn how to deploy it with Fabric."
- type: website
- image:
- url: /images/talks/deploying-php-fabric.png
- width: 2560
- height: 1440
- type: image/png
+ og:
+ title: Deploying PHP Applcations with Fabric
+ description: "You've built your PHP application, now learn how to deploy it with Fabric."
+ type: website
+ image:
+ url: /images/talks/deploying-php-fabric.png
+ width: 2560
+ height: 1440
+ type: image/png
events:
- -
- name: Nomad PHP
- date: 2017-04-20
- time: '19:00 (CET)'
- url: https://nomadphp.com
- online: true
- -
- name: PHP South West
- location: Bristol, UK
- url: https://phpsw.uk
- date: 2017-09-13
- joindin: https://joind.in/talk/a5ff3
- -
- name: PHP North West 2017
- location: Manchester, UK
- date: 2017-10-01
- time: '09:00 - 09:45'
- url: http://conference.phpnw.org.uk/phpnw17
- joindin: https://joind.in/talk/4e35d
+ - name: Nomad PHP
+ date: "2017-04-20"
+ time: "19:00 (CET)"
+ url: https://nomadphp.com
+ online: true
+
+ - name: PHP South West
+ location: Bristol, UK
+ url: https://phpsw.uk
+ date: "2017-09-13"
+ joindin: https://joind.in/talk/a5ff3
+
+ - name: PHP North West 2017
+ location: Manchester, UK
+ date: "2017-10-01"
+ time: "09:00 - 09:45"
+ url: http://conference.phpnw.org.uk/phpnw17
+ joindin: https://joind.in/talk/4e35d
---
You’ve built your application, and now you just need to deploy it. There are various ways that this could be done – from (S)FTP, to SCP and rsync, to running commands like “git pull” and “composer install” directly on the server (not recommended).
diff --git a/website/source/_talks/drupal-8-module-development.md b/website/src/talks/drupal-8-module-development.md
similarity index 65%
rename from website/source/_talks/drupal-8-module-development.md
rename to website/src/talks/drupal-8-module-development.md
index 8db0a509..54b46bb4 100644
--- a/website/source/_talks/drupal-8-module-development.md
+++ b/website/src/talks/drupal-8-module-development.md
@@ -5,25 +5,24 @@ tags: [conference, php, drupal, drupalcamp, drupal-8]
tweets: yes
code: https://github.com/opdavies/dclondon16-d8-module
speakerdeck:
- id: 0041804e52664d12a8e31cd118264813
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/getting-started-with-drupal-8-module-development
+ id: 0041804e52664d12a8e31cd118264813
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/getting-started-with-drupal-8-module-development
video:
- type: youtube
- id: qO_Wh5WE3VA
+ type: youtube
+ id: qO_Wh5WE3VA
meta:
- og:
- title: Getting Started with Drupal 8 Module Development
- image:
- url: /images/talks/dclondon16.png
- type: 'image/png'
- height: 540
- width: 960
+ og:
+ title: Getting Started with Drupal 8 Module Development
+ image:
+ url: /images/talks/dclondon16.png
+ type: "image/png"
+ height: 540
+ width: 960
events:
- -
- name: DrupalCamp London 2016
- location: London, UK
- date: 2016-03-05
+ - name: DrupalCamp London 2016
+ location: London, UK
+ date: "2016-03-05"
---
New to object-orientated PHP, Symfony or YAML, and want to get started building modules in Drupal 8? This is the session for you!
diff --git a/website/source/_talks/drupal-8-php-libraries-drupalorg-api.md b/website/src/talks/drupal-8-php-libraries-drupalorg-api.md
similarity index 73%
rename from website/source/_talks/drupal-8-php-libraries-drupalorg-api.md
rename to website/src/talks/drupal-8-php-libraries-drupalorg-api.md
index c49bb89c..6856f304 100644
--- a/website/source/_talks/drupal-8-php-libraries-drupalorg-api.md
+++ b/website/src/talks/drupal-8-php-libraries-drupalorg-api.md
@@ -2,29 +2,28 @@
title: Having Fun with Drupal 8, PHP libraries and the Drupal.org API
description: A crash course in developing PHP packages and Drupal 8 modules, based on the Drupal.org API.
speakerdeck:
- id: 6e42ae9620bb4e91b3955f8c30d66934
- ratio: '1.77777777777778'
+ id: 6e42ae9620bb4e91b3955f8c30d66934
+ ratio: "1.77777777777778"
image:
- url: /images/talks/having-fun-drupalorg-api.png
- width: 2000
- height: 1125
- type: image/png
+ url: /images/talks/having-fun-drupalorg-api.png
+ width: 2000
+ height: 1125
+ type: image/png
video:
- type: youtube
- id: JyDjC7gGDpU
+ type: youtube
+ id: JyDjC7gGDpU
events:
- -
- name: Drupal Bristol
- location: Bristol, UK
- url: https://www.drupalbristol.org.uk
- date: 2018-04-18
- joindin: https://joind.in/talk/14851
- -
- name: DrupalCamp London 2019
- location: London, UK
- url: http://drupalcamp.london
- date: 2019-03-03
- time: '12:05 - 12:50'
+ - name: Drupal Bristol
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+ date: "2018-04-18"
+ joindin: https://joind.in/talk/14851
+
+ - name: DrupalCamp London 2019
+ location: London, UK
+ url: http://drupalcamp.london
+ date: "2019-03-03"
+ time: "12:05 - 12:50"
---
A overview and demo of some of the open source projects that I’ve been working on lately that are based on information from the Drupal.org API, including a PHP library for the API itself as well as some Drupal 8 modules that use it.
diff --git a/website/source/_talks/drupal-8-rejoining-the-herd.md b/website/src/talks/drupal-8-rejoining-the-herd.md
similarity index 69%
rename from website/source/_talks/drupal-8-rejoining-the-herd.md
rename to website/src/talks/drupal-8-rejoining-the-herd.md
index 287fc619..7a36bf5e 100644
--- a/website/source/_talks/drupal-8-rejoining-the-herd.md
+++ b/website/src/talks/drupal-8-rejoining-the-herd.md
@@ -1,18 +1,17 @@
---
-title: 'Drupal 8: Rejoining the Herd'
+title: "Drupal 8: Rejoining the Herd"
description: A talk highlighting some of the recent technical and non-technical changes in Drupal 8.
tags: [conference, php, drupal, drupal-8]
speakerdeck:
- id: 440fd6592f474741bc606c96bc32c104
- ratio: '1.37081659973226'
- url: https://speakerdeck.com/opdavies/drupal-rejoining-the-herd
+ id: 440fd6592f474741bc606c96bc32c104
+ ratio: "1.37081659973226"
+ url: https://speakerdeck.com/opdavies/drupal-rejoining-the-herd
events:
- -
- name: PHP South Coast 2016
- location: Portsmouth, UK
- url: http://2016.phpsouthcoast.co.uk
- date: 2016-06-11
- joindin: https://joind.in/talk/41d0f
+ - name: PHP South Coast 2016
+ location: Portsmouth, UK
+ url: http://2016.phpsouthcoast.co.uk
+ date: "2016-06-11"
+ joindin: https://joind.in/talk/41d0f
---
[Drupal 8][0] was (finally) released on November 19th 2015, after almost 4 years of work and code commits by over 3,200 different contributors. Whilst it’s pretty much the same as the Drupal that we know and, hopefully, love, a lot has changed behind the scenes and under the hood!
diff --git a/website/src/talks/drupal-8.md b/website/src/talks/drupal-8.md
new file mode 100644
index 00000000..ecce3629
--- /dev/null
+++ b/website/src/talks/drupal-8.md
@@ -0,0 +1,26 @@
+---
+title: Drupal 8
+description:
+ A lightning talk presented to the PHPSW user group, highlighting some of the
+ relevant changes in Drupal 8.
+speakerdeck:
+ url: https://speakerdeck.com/opdavies/drupal-8
+ id: 46ba4ba577d94a32b7abdade610ceb69
+ ratio: "1.29456384323641"
+video:
+ type: youtube
+ id: 36zCxPrOOzM
+tweets: yes
+events:
+ - name: PHP South West
+ location: Bristol, UK
+ url: https://phpsw.uk
+ date: "2015-04-08"
+---
+
+This was a ten minute lightning talk, designed to highlight the major changes
+coming in Drupal 8.
+
+I categorised the technical changes into groups for site builders, developers
+and themers, and also highlighted the cultural shift from "not invented here" to
+"proudly found elsewhere" and the benefits that brings.
diff --git a/website/source/_talks/drupal-ldap-module.md b/website/src/talks/drupal-ldap-module.md
similarity index 71%
rename from website/source/_talks/drupal-ldap-module.md
rename to website/src/talks/drupal-ldap-module.md
index 90c915d9..8d15f3c6 100644
--- a/website/source/_talks/drupal-ldap-module.md
+++ b/website/src/talks/drupal-ldap-module.md
@@ -2,10 +2,9 @@
title: Drupal and the LDAP module
description: A review and demonstration of some of the recent single sign-on work that I did using Drupal’s LDAP module.
events:
- -
- name: South Wales Drupal user group (SWDUG)
- location: Cardiff, UK
- date: 2013-07-10
+ - name: South Wales Drupal user group (SWDUG)
+ location: Cardiff, UK
+ date: "2013-07-10"
---
A review and demonstration of some of the recent single sign-on work that I did using Drupal’s LDAP module.
diff --git a/website/src/talks/drupal-vm-generator.md b/website/src/talks/drupal-vm-generator.md
new file mode 100644
index 00000000..678b7d61
--- /dev/null
+++ b/website/src/talks/drupal-vm-generator.md
@@ -0,0 +1,27 @@
+---
+title: Drupal VM Generator
+description: Announcing the Drupal VM Generator CLI tool.
+type: Lightning talk
+code: https://github.com/opdavies/drupal-vm-generator
+tags: [drupal-vm, drupal-vm-generator, meetup, symfony]
+speakerdeck:
+ id: a27ee1d2bfed4a209dc395fa455acb41
+ ratio: "1.37081659973226"
+ url: https://speakerdeck.com/opdavies/bristol-dug-drupal-vm-generator
+video:
+ type: youtube
+ id: U1pbKAAO2Wo
+events:
+ - name: NWDUG
+ url: http://nwdrupal.org.uk
+ location: Manchester, UK
+ date: "2016-03-08"
+ - name: Drupal Bristol
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+ date: "2016-04-02"
+---
+
+An short talk about the [Drupal VM Generator][1] project.
+
+[1]: https://github.com/opdavies/drupal-vm-generator
diff --git a/website/source/_talks/drupal-vm-meet-symfony-console.md b/website/src/talks/drupal-vm-meet-symfony-console.md
similarity index 80%
rename from website/source/_talks/drupal-vm-meet-symfony-console.md
rename to website/src/talks/drupal-vm-meet-symfony-console.md
index 911240d1..1506d74f 100644
--- a/website/source/_talks/drupal-vm-meet-symfony-console.md
+++ b/website/src/talks/drupal-vm-meet-symfony-console.md
@@ -2,15 +2,14 @@
title: Drupal VM, Meet Symfony Console
description: How to develop command line applications using Symfony Console, using the Drupal VM CLI as an example.
speakerdeck:
- id: 56c79770f73f4e47a542a30243437c49
- ratio: '1.37081659973226'
- url: https://speakerdeck.com/opdavies/drupal-vm-meet-symfony-console
+ id: 56c79770f73f4e47a542a30243437c49
+ ratio: "1.37081659973226"
+ url: https://speakerdeck.com/opdavies/drupal-vm-meet-symfony-console
image: drupal-vm-meet-symfony-console.png
events:
- -
- name: DrupalCamp Bristol 2016
- location: Bristol, UK
- date: 2016-07-23
+ - name: DrupalCamp Bristol 2016
+ location: Bristol, UK
+ date: "2016-07-23"
---
_TL;DR - Come and learn about Symfony Console, with examples from a real-world
diff --git a/website/source/_talks/drupalorg-2015.md b/website/src/talks/drupalorg-2015.md
similarity index 54%
rename from website/source/_talks/drupalorg-2015.md
rename to website/src/talks/drupalorg-2015.md
index c294a8c4..5a941ed3 100644
--- a/website/source/_talks/drupalorg-2015.md
+++ b/website/src/talks/drupalorg-2015.md
@@ -3,18 +3,16 @@ title: "Drupal.org in 2015: What's Coming Next"
description: A retrospective of the Drupal Association’s work in 2014 and a look forward to what we’ll be working on in 2015.
tags: [conference, drupalcamp, drupalcamp-london, drupal-association]
speakerdeck:
- id: 0cf8d7b647c94ae289e9db2b46a9e8f2
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/drupal-dot-org-in-14
+ id: 0cf8d7b647c94ae289e9db2b46a9e8f2
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/drupal-dot-org-in-14
events:
- -
- name: DrupalCamp Brighton
- location: Brighton, UK
- date: 2015-01-18
- -
- name: DrupalCamp London 2015
- location: London, UK
- date: 2015-02-28
+ - name: DrupalCamp Brighton
+ location: Brighton, UK
+ date: "2015-01-18"
+ - name: DrupalCamp London 2015
+ location: London, UK
+ date: "2015-02-28"
---
A retrospective of the Drupal Association’s work in 2014 and a look forward to what we’ll be working on in 2015.
diff --git a/website/src/talks/drush-make-drupalbristol.md b/website/src/talks/drush-make-drupalbristol.md
new file mode 100644
index 00000000..9f1c8e7c
--- /dev/null
+++ b/website/src/talks/drush-make-drupalbristol.md
@@ -0,0 +1,15 @@
+---
+title: drush make drupalbristol
+description: How to Drush Make to build your Drupal websites.
+speakerdeck:
+ id: 42605700f102013198de5a5f6f23ab67
+ ratio: "1.29456384323641"
+ url: https://speakerdeck.com/opdavies/drush-make-drupalbristol
+events:
+ - name: Drupal Bristol
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+ date: "2014-08-19"
+---
+
+An introduction to Drush Make and how to use it to build reusable custom installation profiles or entire websites.
diff --git a/website/source/_talks/getting-your-data-into-drupal-8.md b/website/src/talks/getting-your-data-into-drupal-8.md
similarity index 53%
rename from website/source/_talks/getting-your-data-into-drupal-8.md
rename to website/src/talks/getting-your-data-into-drupal-8.md
index 52b1166c..ceacd84c 100644
--- a/website/source/_talks/getting-your-data-into-drupal-8.md
+++ b/website/src/talks/getting-your-data-into-drupal-8.md
@@ -2,34 +2,33 @@
title: Getting (Your Data) Into Drupal 8
description: An overview of Drupal’s Migrate functionality, and a look at how to write your own migrations.
speakerdeck:
- id: 63e5dfce996e46699e304d50e896477b
- ratio: '1.77777777777778'
- url: 'https://speakerdeck.com/opdavies/getting-your-data-into-drupal-8-drupal_bristol'
+ id: 63e5dfce996e46699e304d50e896477b
+ ratio: "1.77777777777778"
+ url: "https://speakerdeck.com/opdavies/getting-your-data-into-drupal-8-drupal_bristol"
video:
- type: youtube
- id: jtmARTuYhp8
+ type: youtube
+ id: jtmARTuYhp8
tags: [drupalcamp, migration, drupal-8]
meta:
- og:
- title: Getting (Your Data) into Drupal 8
- description: 'How I migrated the Drupal Bristol website onto Drupal 8.'
- type: website
- image:
- url: /images/talks/getting-your-data-into-drupal-8.png
- width: 2560
- height: 1440
- type: image/png
+ og:
+ title: Getting (Your Data) into Drupal 8
+ description: "How I migrated the Drupal Bristol website onto Drupal 8."
+ type: website
+ image:
+ url: /images/talks/getting-your-data-into-drupal-8.png
+ width: 2560
+ height: 1440
+ type: image/png
events:
- -
- name: Drupal Bristol
- date: 2017-01-18
- location: Bristol, UK
- url: https://www.drupalbristol.org.uk
- -
- name: DrupalCamp London 2017
- date: 2017-03-04
- time: '12:05 - 12:50'
- location: London, UK
+ - name: Drupal Bristol
+ date: "2017-01-18"
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+
+ - name: DrupalCamp London 2017
+ date: "2017-03-04"
+ time: "12:05 - 12:50"
+ location: London, UK
---
If you’ve moved a site from Drupal 6 to 7, the chances are that you’ve either used the upgrade path to update your old site in-place, or you built a new site from scratch and used the Migrate module from contrib to migrate your data from the old database.
diff --git a/website/source/_talks/git-flow.md b/website/src/talks/git-flow.md
similarity index 52%
rename from website/source/_talks/git-flow.md
rename to website/src/talks/git-flow.md
index 40fe65f1..83665896 100644
--- a/website/source/_talks/git-flow.md
+++ b/website/src/talks/git-flow.md
@@ -2,18 +2,17 @@
title: Never Commit to Master - An Introduction to Git Flow
description: An introduction to and demonstration of the Git Flow branching model.
speakerdeck:
- id: 201559e0f103013198dd5a5f6f23ab67
- ratio: '1.29456384323641'
- url: https://speakerdeck.com/opdavies/never-commit-to-master-an-introduction-to-git-flow
+ id: 201559e0f103013198dd5a5f6f23ab67
+ ratio: "1.29456384323641"
+ url: https://speakerdeck.com/opdavies/never-commit-to-master-an-introduction-to-git-flow
video:
- type: youtube
- id: T-miCpHxfds
+ type: youtube
+ id: T-miCpHxfds
tweets: yes
events:
- -
- name: DrupalCamp London 2014
- location: London, UK
- date: 2014-03-01
+ - name: DrupalCamp London 2014
+ location: London, UK
+ date: "2014-03-01"
---
An introduction to the Git Flow branching model and the git-flow plugin, and how I’ve used them to manage a Drupal development project.
diff --git a/website/source/_talks/goodbye-drush-make-hello-composer.md b/website/src/talks/goodbye-drush-make-hello-composer.md
similarity index 58%
rename from website/source/_talks/goodbye-drush-make-hello-composer.md
rename to website/src/talks/goodbye-drush-make-hello-composer.md
index 6867b5cc..59a9276a 100644
--- a/website/source/_talks/goodbye-drush-make-hello-composer.md
+++ b/website/src/talks/goodbye-drush-make-hello-composer.md
@@ -1,27 +1,26 @@
---
title: Goodbye Drush Make. Hello Composer!
description: How to use Composer to manage your Drupal applications.
-tags: ['meetup', 'drupal', 'composer']
+tags: ["meetup", "drupal", "composer"]
speakerdeck:
- id: 1c1e0e129ab34816bd4c4edb5f6642c2
- ratio: '1.37081659973226'
- url: https://speakerdeck.com/opdavies/goodbye-drush-make-hello-composer
+ id: 1c1e0e129ab34816bd4c4edb5f6642c2
+ ratio: "1.37081659973226"
+ url: https://speakerdeck.com/opdavies/goodbye-drush-make-hello-composer
video:
- type: youtube
- id: ZL2FtRTX9Y8
+ type: youtube
+ id: ZL2FtRTX9Y8
events:
- -
- name: Drupal Bristol
- location: Bristol, UK
- url: https://www.drupalbristol.org.uk
- date: 2016-11-17
- -
- name: PHP UK Conference 2018
- location: London, UK
- date: 2018-02-16
- time: '14:40 - 15:40'
- url: https://www.phpconference.co.uk
- joindin: https://joind.in/talk/650ab
+ - name: Drupal Bristol
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+ date: "2016-11-17"
+
+ - name: PHP UK Conference 2018
+ location: London, UK
+ date: "2018-02-16"
+ time: "14:40 - 15:40"
+ url: https://www.phpconference.co.uk
+ joindin: https://joind.in/talk/650ab
---
One of the main outcomes of Drupal 8 was “getting off the island” with third-party code included in core and adopting modern best practices from the wider PHP ecosystem - including [Composer][1], PHP’s dependency manager.
diff --git a/website/src/talks/it-all-started-with-a-patch.md b/website/src/talks/it-all-started-with-a-patch.md
new file mode 100644
index 00000000..218d1878
--- /dev/null
+++ b/website/src/talks/it-all-started-with-a-patch.md
@@ -0,0 +1,18 @@
+---
+title: It All Started With A Patch
+description: A lightning talk on how and why to get involved with open source.
+speakerdeck:
+ id: 5862bdecb7a24cfaa5fc844696fafa0c
+ ratio: "1.37081659973226"
+ url: https://speakerdeck.com/opdavies/it-all-started-with-a-patch-phpsw
+video:
+ type: youtube
+ id: 5FYMRR61sdo
+events:
+ - name: PHP South West
+ location: Bristol, UK
+ url: https://phpsw.uk
+ date: "2017-02-08"
+---
+
+A crash course of why and how to get involved with open source.
diff --git a/website/source/_talks/modern-drupal-development-with-composer.md b/website/src/talks/modern-drupal-development-with-composer.md
similarity index 62%
rename from website/source/_talks/modern-drupal-development-with-composer.md
rename to website/src/talks/modern-drupal-development-with-composer.md
index 54dc257d..ae271e5b 100644
--- a/website/source/_talks/modern-drupal-development-with-composer.md
+++ b/website/src/talks/modern-drupal-development-with-composer.md
@@ -2,20 +2,19 @@
title: Modern Drupal Development with Composer
description: A lightning talk on how to use Composer to manage your Drupal projects.
type: Lightning talk
-tags: ['meetups', 'phpsw', 'drupal', 'composer']
+tags: ["meetups", "phpsw", "drupal", "composer"]
speakerdeck:
- id: 7a1358502526425a9cfd288f85fb32f3
- ratio: '1.37081659973226'
- url: https://speakerdeck.com/opdavies/modern-drupal-development-with-composer
+ id: 7a1358502526425a9cfd288f85fb32f3
+ ratio: "1.37081659973226"
+ url: https://speakerdeck.com/opdavies/modern-drupal-development-with-composer
video:
- type: youtube
- id: Yi_FPI3xHwc
+ type: youtube
+ id: Yi_FPI3xHwc
events:
- -
- name: PHP South West
- location: Bristol, UK
- url: https://phpsw.uk
- date: 2016-11-09
+ - name: PHP South West
+ location: Bristol, UK
+ url: https://phpsw.uk
+ date: "2016-11-09"
---
Building a Drupal application? You no longer need to download archives to add new modules or update core, or deal with Drupal specific tools to manage your codebase.
diff --git a/website/source/_talks/out-of-the-box-initiative-update.md b/website/src/talks/out-of-the-box-initiative-update.md
similarity index 73%
rename from website/source/_talks/out-of-the-box-initiative-update.md
rename to website/src/talks/out-of-the-box-initiative-update.md
index b157ec44..20348cf3 100644
--- a/website/source/_talks/out-of-the-box-initiative-update.md
+++ b/website/src/talks/out-of-the-box-initiative-update.md
@@ -2,18 +2,17 @@
title: Out of the Box Initiative Update
description: An update on Drupal’s "out of the box" initiative, and core’s new Umami installation profile.
speakerdeck:
- id: 3f66c48653f44ed4867fc3cc05c1db06
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/out-of-the-box-initiative-update
+ id: 3f66c48653f44ed4867fc3cc05c1db06
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/out-of-the-box-initiative-update
video:
- type: youtube
- id: ~
+ type: youtube
+ id: ~
events:
- -
- name: Drupal Bristol
- location: Bristol, UK
- url: https://www.drupalbristol.org.uk
- date: 2019-03-27
+ - name: Drupal Bristol
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+ date: "2019-03-27"
---
From the [DrupalCamp London website](https://drupalcamp.london/session/out-box-initiative-update):
diff --git a/website/source/_talks/so-what-is-this-drupal-thing.md b/website/src/talks/so-what-is-this-drupal-thing.md
similarity index 58%
rename from website/source/_talks/so-what-is-this-drupal-thing.md
rename to website/src/talks/so-what-is-this-drupal-thing.md
index 704abd48..7d06dee3 100644
--- a/website/source/_talks/so-what-is-this-drupal-thing.md
+++ b/website/src/talks/so-what-is-this-drupal-thing.md
@@ -2,14 +2,13 @@
title: So, what is this Drupal thing?
description: My first talk, where I talk about Drupal, what it is and what it can do.
video:
- type: vimeo
- id: 49827006
+ type: vimeo
+ id: 49827006
events:
- -
- name: unified.diff
- location: Cardiff, UK
- url: http://unifieddiff.co.uk
- date: 2012-09-05
+ - name: unified.diff
+ location: Cardiff, UK
+ url: http://unifieddiff.co.uk
+ date: "2012-09-05"
---
My very first talk, where I talk about Drupal, what it is and what it can do.
diff --git a/website/src/talks/taking-flight-with-tailwind-css.md b/website/src/talks/taking-flight-with-tailwind-css.md
new file mode 100644
index 00000000..c92d5aed
--- /dev/null
+++ b/website/src/talks/taking-flight-with-tailwind-css.md
@@ -0,0 +1,115 @@
+---
+title: Taking Flight with Tailwind CSS
+description:
+ An introduction to the utility-first approach to writing CSS with a focus
+ on the Tailwind CSS framework.
+speakerdeck:
+ id: 10ca51f23560443d83b898a92929b4b3
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/taking-flight-with-tailwind-css
+video:
+ type: youtube
+ id: lgsvKtpQp3U
+tags: [css, tailwind, meetup]
+events:
+ - name: Drupal Bristol
+ location: Bristol, UK
+ date: "2018-01-17"
+ url: https://www.drupalbristol.org.uk
+
+ - name: PHP South Wales
+ location: Cardiff, UK
+ date: "2018-07-31"
+ url: https://www.phpsouthwales.uk
+
+ - name: Cheltenham WordPress Meetup
+ location: Cheltenham, UK
+ date: "2019-04-17"
+ url: https://www.meetup.com/Cheltenham-WordPress-Meetup
+
+ - name: WordCamp Bristol 2019
+ location: Bristol, UK
+ date: "2019-05-18"
+ url: https://2019.bristol.wordcamp.org
+
+ - name: Blue Conf 2019
+ location: Cardiff, UK
+ date: "2019-06-07"
+ url: https://blueconf.co.uk
+
+ - name: CMS Philly
+ location: Philadelphia, USA
+ date: "2020-05-01"
+ url: https://cmsphilly.org
+ online: true
+
+ - name: PHP Hampshire
+ location: Portsmouth, UK
+ date: "2020-07-08"
+ url: https://www.meetup.com/meetup-group-yzpbvTYv/events/271430269
+ online: true
+
+ - name: Drupal Yorkshire
+ location: Leeds, UK
+ date: "2020-08-20"
+ url: https://www.meetup.com/DrupalYorkshire/events/zwzsfpybclbbc
+ online: true
+
+ - name: DigitalCamp Atlanta 2020
+ location: Atlanta, GA
+ date: "2020-09-11"
+ url: https://www.drupalcampatlanta.com/2020/sessions/taking-flight-tailwind-css
+ online: true
+
+ - name: Bristol JS
+ location: Bristol, UK
+ date: "2020-09-30"
+ url: https://techtalks.io/events/f8e26038-2561-484e-8a74-7a1e3a0369b8
+ online: true
+
+ - name: "Drupal Virtual Cafe #3"
+ location: Kyiv, Ukraine
+ date: "2020-10-15"
+ url: https://groups.drupal.org/ukraine
+ online: true
+
+ - name: PHP Cambridge
+ location: Cambridge, UK
+ date: "2021-01-19"
+ url: https://www.meetup.com/phpcambridge
+ online: true
+
+ - name: Nashville PHP
+ location: Nashville, TN, USA
+ date: "2021-02-09"
+ url: https://www.meetup.com/nashvillephp/events/kzkdwryccdbmb
+ online: true
+meta:
+ og:
+ title: Taking Flight with Tailwind CSS
+ description: An introduction to utility CSS and Tailwind.
+ type: website
+ image:
+ url: "/images/talks/taking-flight-tailwind.jpg"
+ width: 2560
+ height: 1440
+ type: "image/png"
+---
+
+An introduction to utility class and component based styling, and how to soar
+with [Tailwind CSS][1].
+
+Things we’ll cover:
+
+- Advantages and disadvantages to utility based styling and Tailwind.
+- How to install Tailwind and add it to your build process using tools such as Symfony Encore and Laravel Mix.
+- How to configure and customise Tailwind for your project.
+- How to promote repeating classes into re-usable components for better maintainability.
+- Strategies to control the file size, and using external tools like PurgeCSS.
+
+Also, if time allows:
+
+- How to extend Tailwind and add extra classes with community written plugins.
+- How to write and test your own custom plugins.
+
+[1]: https://tailwindcss.com
diff --git a/website/src/talks/tdd-test-driven-drupal.md b/website/src/talks/tdd-test-driven-drupal.md
new file mode 100644
index 00000000..6fe5b2fa
--- /dev/null
+++ b/website/src/talks/tdd-test-driven-drupal.md
@@ -0,0 +1,65 @@
+---
+title: TDD - Test-Driven Drupal
+description: How to write automated tests for Drupal, and how to create a new Drupal module using test driven development.
+speakerdeck:
+ id: 088cb18033064f5cb18d1079795294a1
+ ratio: "1.77777777777778"
+ url: "https://speakerdeck.com/opdavies/tdd-test-driven-drupal"
+video:
+ type: youtube
+ id: r41dkD2EOo8
+image:
+ url: /images/talks/test-driven-drupal-development.png
+ width: 2560
+ height: 1440
+ type: image/png
+use: [talks]
+events:
+ - name: DrupalCamp London 2017
+ location: London, UK
+ date: "2017-03-04"
+ time: "16:15 - 17:00"
+ - name: DrupalCamp Dublin 2017
+ location: Dublin, Ireland
+ date: "2017-10-21"
+ time: "12:00 - 12:40"
+ url: http://2017.drupal.ie
+ - name: Drupal Bristol
+ date: "2017-11-22"
+ location: Bristol, UK
+ url: https://www.drupalbristol.org.uk
+ - name: Drupal Somerset
+ date: "2018-06-14"
+ location: Glastonbury, UK
+ - name: Drupal Developer Days 2018
+ date: "2018-07-05"
+ time: "12:15 - 13:00"
+ location: Lisbon, Portugal
+ url: http://lisbon2018.drupaldays.org
+ - name: DrupalCamp London 2019
+ date: "2019-03-02"
+ time: "14:00 - 14:45"
+ location: London, UK
+ url: http://drupalcamp.london
+ - name: NWDUG
+ date: "2020-05-12"
+ location: Manchester, UK
+ url: http://nwdrupal.org.uk
+ online: true
+ - name: Bay Area Drupal Camp (BADCamp)
+ date: "2020-10-14"
+ url: https://2020.badcamp.org/session/tdd-test-driven-drupal
+ online: true
+ - name: DrupalCon Europe 2020
+ date: "2020-12-08"
+ url: https://events.drupal.org/europe2020/sessions/tdd-test-driven-drupal
+ online: true
+---
+
+{% block content %}
+
+Testing is important. Why? It allows developers to add new features and edit and refactor existing code without the worry of adding regressions, reduces the reliance on manual testing to discover bugs, and by taking a test driven approach, your implementation code is leaner as you only write what is needed for your tests to pass.
+
+Drupal 7 includes the SimpleTest module for unit and functional testing, whilst Drupal 8 also includes and supports PHPUnit - the defacto PHP testing framework, used by other PHP projects including Symfony and Laravel - making it easier for people to test their code. And with testing being one of the Drupal core gates with tests needing to be included with every new feature or bug fix, and core’s 100% pass rate policy, testing has become an essential skill when contributing to core, or when working on your own projects. In this talk, we’ll cover the methodology and terminology involved with automated testing, and then take a test driven approach to creating a new Drupal module.
+
+{% endblock %}
diff --git a/website/source/_talks/test-drive-twig-with-sculpin.md b/website/src/talks/test-drive-twig-with-sculpin.md
similarity index 77%
rename from website/source/_talks/test-drive-twig-with-sculpin.md
rename to website/src/talks/test-drive-twig-with-sculpin.md
index c4dbfa29..6c3fb71e 100644
--- a/website/source/_talks/test-drive-twig-with-sculpin.md
+++ b/website/src/talks/test-drive-twig-with-sculpin.md
@@ -2,17 +2,16 @@
title: Test Drive Twig with Sculpin
description: With Drupal 8 just around the corner, see how you can develop your Twig skills with Sculpin - a static site generator based on Symfony components and Twig.
speakerdeck:
- id: 54589d2e50a3476a9a75aed809e9edf1
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/test-drive-twig-with-sculpin
+ id: 54589d2e50a3476a9a75aed809e9edf1
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/test-drive-twig-with-sculpin
code: https://github.com/opdavies/sculpin-demo
tweets: yes
events:
- -
- name: DrupalCamp North 2015
- location: Sunderland, UK
- url: http://drupalcampnorth.org
- date: 2015-07-25
+ - name: DrupalCamp North 2015
+ location: Sunderland, UK
+ url: http://drupalcampnorth.org
+ date: "2015-07-25"
---
[Sculpin][1] is a static site generator written in PHP, and based on [Symfony components][2]. It uses [YAML][3] and [Twig][4], which makes it very appealing to Drupal people wanting to learn these in preparation for Drupal 8.
diff --git a/website/src/talks/things-you-should-know-about-php.md b/website/src/talks/things-you-should-know-about-php.md
new file mode 100644
index 00000000..588532cf
--- /dev/null
+++ b/website/src/talks/things-you-should-know-about-php.md
@@ -0,0 +1,25 @@
+---
+title: Things you should know about PHP
+description: An introduction to PHP, presented to the Swansea Software Development Community (SSDC) meetup and PHPSW.
+speakerdeck:
+ id: fe360f1030f34bdb9eb14cdab907bb3c
+ ratio: "1.78343949044586"
+video:
+ id: NH1mVSwCzWs
+ type: youtube
+meta:
+ og:
+ image:
+ url: /images/talks/things-you-should-know-about-php.png
+events:
+ - name: Swansea Software Development Meetup (SSDC)
+ location: Swansea, UK
+ url: https://www.meetup.com/Swansea-Software-Development-Meetup
+ date: "2019-01-28"
+ - name: PHP South West
+ location: Bristol, UK
+ url: https://www.meetup.com/php-sw/events/284341510
+ date: "2022-03-09"
+---
+
+An introduction to PHP, presented to the Swansea Software Development Community (SSDC) meetup and PHP South West.
diff --git a/website/src/talks/upgrading-your-site-drupal-9.md b/website/src/talks/upgrading-your-site-drupal-9.md
new file mode 100644
index 00000000..90d6d154
--- /dev/null
+++ b/website/src/talks/upgrading-your-site-drupal-9.md
@@ -0,0 +1,42 @@
+---
+title: Upgrading your site to Drupal 9
+description:
+ How to update your site to Drupal 9, and why it's much different to any
+ major Drupal version upgrade before!
+speakerdeck:
+ id: 19f439b7a9a4450baa79bb73ec3dd117
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/deploying-php-applications-with-ansible-ansible-vault-and-ansistrano
+video:
+ type: youtube
+ id: AcYMXiom0o8
+events:
+ - name: DrupalNYC
+ location: New York, USA
+ url: https://ti.to/drupalnyc/meetup-2020-09-02
+ date: "2020-09-02"
+ online: true
+
+ - name: Leeds PHP
+ location: Leeds, UK
+ url: https://www.meetup.com/leedsphp/events/272504993
+ date: "2020-09-23"
+ online: true
+
+ - name: Midwest PHP
+ url: https://midwestphp.org/talks/7C0m4I87vq72cDoXvsHFRp/Upgrading_your_site_to_Drupal_9
+ date: "2021-04-22"
+ online: true
+---
+
+For most Drupal Developers and users, the idea of moving a project from one
+major version of Drupal to another can be daunting, with modules and themes
+having to being changed significantly or rebuilt completely, and data being
+migrated from the old site to the new one.
+
+This was no more so than the move from Drupal 7 to 8, but luckily this has
+changed for Drupal 9 and an upgrade can be done with minimal changes and not a
+data migration in sight!
+
+In this talk, we'll look at some of the changes to Drupal's tools and processes
+that have made this possible, and how to move your Drupal site to Drupal 9.
diff --git a/website/source/_talks/using-illuminate-collections-outside-laravel.md b/website/src/talks/using-illuminate-collections-outside-laravel.md
similarity index 54%
rename from website/source/_talks/using-illuminate-collections-outside-laravel.md
rename to website/src/talks/using-illuminate-collections-outside-laravel.md
index 96c557db..c77726cd 100644
--- a/website/source/_talks/using-illuminate-collections-outside-laravel.md
+++ b/website/src/talks/using-illuminate-collections-outside-laravel.md
@@ -2,26 +2,24 @@
title: Using Illuminate Collections... Outside Laravel
description: How to include and use Laravel’s Illuminate Collections in your non-Laravel PHP projects.
speakerdeck:
- id: 76f1718a75a74940b0b028aac8b9f78b
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/using-laravel-collections-dot-dot-dot-outside-laravel-php-south-wales-august-2018
+ id: 76f1718a75a74940b0b028aac8b9f78b
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/using-laravel-collections-dot-dot-dot-outside-laravel-php-south-wales-august-2018
video:
- type: youtube
- id: 1l0kO-iaN_o
+ type: youtube
+ id: 1l0kO-iaN_o
tags: [nomad-php, lightning-talk, laravel, collections]
type: Lightning talk
events:
- -
- name: Nomad PHP
- url: https://nomadphp.com
- online: true
- date: 2017-12-21
- time: 19:00 CET
- -
- name: PHP South Wales
- location: Cardiff, UK
- url: https://www.phpsouthwales.uk
- date: 2018-08-28
+ - name: Nomad PHP
+ url: https://nomadphp.com
+ online: true
+ date: "2017-12-21"
+ time: 19:00 CET
+ - name: PHP South Wales
+ location: Cardiff, UK
+ url: https://www.phpsouthwales.uk
+ date: "2018-08-28"
---
Laravel's Illuminate Collections are a powerful object-orientated way of interacting with PHP arrays, but did you know that they can be used outside of Laravel, in any PHP project?
diff --git a/website/source/_talks/working-with-workspace.md b/website/src/talks/working-with-workspace.md
similarity index 51%
rename from website/source/_talks/working-with-workspace.md
rename to website/src/talks/working-with-workspace.md
index c6e72376..b88a0bda 100644
--- a/website/source/_talks/working-with-workspace.md
+++ b/website/src/talks/working-with-workspace.md
@@ -2,30 +2,27 @@
title: Working with Workspace
description: Workspace is an open-source local development tool from Inviqa. This talk covers what it is, what it does, and how to use it in your PHP project.
speakerdeck:
- id: e87103bd5f8b4f16bbed73a9d4d2a592
- ratio: '1.77777777777778'
- url: https://speakerdeck.com/opdavies/taking-flight-with-tailwind-css
+ id: e87103bd5f8b4f16bbed73a9d4d2a592
+ ratio: "1.77777777777778"
+ url: https://speakerdeck.com/opdavies/taking-flight-with-tailwind-css
video:
- type: youtube
- id: oO0-E_FBS-U
+ type: youtube
+ id: oO0-E_FBS-U
events:
- -
- name: NWDUG
- location: Manchester, UK
- url: https://www.meetup.com/nwdrupal/events/272098270
- date: 2020-08-11
- online: true
- -
- name: PHP South West
- location: Bristol, UK
- url: https://www.meetup.com/php-sw/events/272787346
- date: 2020-09-09
- online: true
- -
- name: PHP North West
- url: https://www.phpnw.org.uk
- date: 2021-02-02
- online: true
+ - name: NWDUG
+ location: Manchester, UK
+ url: https://www.meetup.com/nwdrupal/events/272098270
+ date: "2020-08-11"
+ online: true
+ - name: PHP South West
+ location: Bristol, UK
+ url: https://www.meetup.com/php-sw/events/272787346
+ date: "2020-09-09"
+ online: true
+ - name: PHP North West
+ url: https://www.phpnw.org.uk
+ date: "2021-02-02"
+ online: true
---
[Workspace](https://github.com/my127/workspace) is an open source tool developed by [Inviqa](https://inviqa.com), as a way to create custom commands for your project environments, and an alternative to a bash script or a Makefile.
diff --git a/website/assets/tailwind.config.js b/website/tailwind.config.cjs
similarity index 80%
rename from website/assets/tailwind.config.js
rename to website/tailwind.config.cjs
index d72f70e5..50848909 100644
--- a/website/assets/tailwind.config.js
+++ b/website/tailwind.config.cjs
@@ -1,14 +1,13 @@
-const colors = require("./tailwindcss/colours");
+const colors = require("./assets/tailwindcss/colours.cjs");
const defaultTheme = require("tailwindcss/defaultTheme");
const { fontFamily } = defaultTheme;
+/** @type {import('tailwindcss').Config} */
module.exports = {
mode: "jit",
darkMode: "media",
important: true,
- purge: {
- content: ["./tailwindcss/safelist-classes.txt", "../source/**/*.{md,twig}"],
- },
+ content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
theme: {
outline: {
black: "1px solid black",
@@ -57,7 +56,8 @@ module.exports = {
container: false,
},
plugins: [
- require("./tailwindcss/plugins/focus-visible"),
+ require("./assets/tailwindcss/plugins/focus-visible.cjs"),
+ require("@tailwindcss/nesting"),
require("@tailwindcss/aspect-ratio"),
require("@tailwindcss/forms"),
require("@tailwindcss/typography"),
diff --git a/website/tests/TalkExtensionTest.php b/website/tests/TalkExtensionTest.php
deleted file mode 100644
index 3f334b66..00000000
--- a/website/tests/TalkExtensionTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-subject = new TalkExtension();
- }
-
- /** @test */
- public function should_return_zero_if_there_are_no_talks(): void
- {
- $this->assertSame(0, $this->subject->getPastTalkCount());
- }
-
- /** @test */
- public function should_count_a_single_event_from_a_single_talk(): void
- {
- $talks = [
- [
- 'title' => 'Building static sites with Sculpin',
- 'events' => [
- [
- 'date' => Carbon::today()->subDay()->format('Y-m-d'),
- ],
- ]
- ],
- ];
-
- $this->assertSame(1, $this->subject->getPastTalkCount($talks));
- }
-
- /** @test */
- public function should_count_multiple_events_from_a_single_talk(): void
- {
- $talks = [
- [
- 'title' => 'Building static sites with Sculpin',
- 'events' => [
- [
- 'date' => Carbon::today()->subDay()->format('Y-m-d'),
- ],
- [
- 'date' => Carbon::today()->subDay()->format('Y-m-d'),
- ],
- ]
- ],
- ];
-
- $this->assertSame(2, $this->subject->getPastTalkCount($talks));
- }
-
- /** @test */
- public function should_count_multiple_events_from_multiple_talks(): void
- {
- $talks = [
- [
- 'title' => 'Building static sites with Sculpin',
- 'events' => [
- [
- 'date' => Carbon::today()->subDay()->format('Y-m-d'),
- ],
- ]
- ],
- [
- 'title' => 'TDD - Test-Driven Drupal',
- 'events' => [
- [
- 'date' => Carbon::today()->subDay()->format('Y-m-d'),
- ],
- ]
- ],
- ];
-
- $this->assertSame(2, $this->subject->getPastTalkCount($talks));
- }
-
- /** @test */
- public function should_not_count_future_talks(): void
- {
- $talks = [
- [
- 'title' => 'Building static sites with Sculpin',
- 'events' => [
- [
- 'date' => Carbon::today()->subDay()->format('Y-m-d'),
- ],
- ],
- ],
- [
- 'title' => 'TDD - Test-Driven Drupal',
- 'events' => [
- [
- 'date' => Carbon::today()->addDay()->format('Y-m-d'),
- ],
- ],
- ],
- ];
-
- $this->assertSame(1, $this->subject->getPastTalkCount($talks));
- }
-
- /** @test */
- public function should_get_the_last_event_date_for_a_talk(): void
- {
- $talk = [
- 'events' => [
- ['date' => '2015-10-14'],
- ['date' => '2021-09-07'],
- ['date' => '2021-08-19'],
- ],
- ];
-
- $this->assertSame('2021-09-07', $this->subject->getLastEventDate($talk));
- }
-
- /** @test */
- public function should_return_null_for_the_latest_date_if_a_talk_has_no_events(): void
- {
- $talk = [
- 'events' => [],
- ];
-
- $this->assertNull($this->subject->getLastEventDate($talk));
- }
-}
diff --git a/website/tsconfig.json b/website/tsconfig.json
new file mode 100644
index 00000000..77da9dd0
--- /dev/null
+++ b/website/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "astro/tsconfigs/strict"
+}
\ No newline at end of file
diff --git a/website/yarn.lock b/website/yarn.lock
new file mode 100644
index 00000000..1e2dc29f
--- /dev/null
+++ b/website/yarn.lock
@@ -0,0 +1,4165 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.1.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
+ integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.1.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@astrojs/alpinejs@^0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@astrojs/alpinejs/-/alpinejs-0.1.2.tgz#6c3d20de8f8afe6a1e133b85694625d958371da8"
+ integrity sha512-pcy+r7TTeFMbdZpRUuOYbf5L3ccFp107gH9j0Hdl5z8hmrSw9918pxkK1tiAcbwrQKxifv7nM5V5FJKu7SoJrw==
+
+"@astrojs/compiler@^0.23.4":
+ version "0.23.5"
+ resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-0.23.5.tgz#ea57a2b994b2930e3b3d2d524f10866698fef4f1"
+ integrity sha512-vBMPy9ok4iLapSyCCT1qsZ9dK7LkVFl9mObtLEmWiec9myGHS9h2kQY2xzPeFNJiWXUf9O6tSyQpQTy5As/p3g==
+
+"@astrojs/compiler@^0.26.0":
+ version "0.26.1"
+ resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-0.26.1.tgz#b57f51c9b099b5fbab4db0bcd51189a16a568ec7"
+ integrity sha512-GoRi4qB05u+bVcSlR9nu9HJfSUGFBcoUUb+WFimKSm9e/KPTy0STOMb/Q0mLIcloavF4KvEqAnd9ukX62ewoaA==
+
+"@astrojs/language-server@^0.26.2":
+ version "0.26.2"
+ resolved "https://registry.yarnpkg.com/@astrojs/language-server/-/language-server-0.26.2.tgz#0e685f2e1d76d06f682d9d0f93a9b35f0b5c23d8"
+ integrity sha512-9nkfdd6CMXLDIJojnwbYu5XrYfOI+g63JlktOlpFCwFjFNpm1u0e/+pXXmj6Zs+PkSTo0kV1UM77dRKRS5OC1Q==
+ dependencies:
+ "@vscode/emmet-helper" "^2.8.4"
+ events "^3.3.0"
+ prettier "^2.7.1"
+ prettier-plugin-astro "^0.5.3"
+ source-map "^0.7.3"
+ vscode-css-languageservice "^6.0.1"
+ vscode-html-languageservice "^5.0.0"
+ vscode-languageserver "^8.0.1"
+ vscode-languageserver-protocol "^3.17.1"
+ vscode-languageserver-textdocument "^1.0.4"
+ vscode-languageserver-types "^3.17.1"
+ vscode-uri "^3.0.3"
+
+"@astrojs/markdown-remark@^1.1.3":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@astrojs/markdown-remark/-/markdown-remark-1.1.3.tgz#9fa985a532622043f0863c20f01c6ed01eca31e2"
+ integrity sha512-6MDuQXbrp2fZBYBIqD+0jvSqYAukiMTte6oLNHiEYsLf3KIMlVAZj6dDgUJakgL7cQ4fmzWb0HUqzVpxAsasLw==
+ dependencies:
+ "@astrojs/micromark-extension-mdx-jsx" "^1.0.3"
+ "@astrojs/prism" "^1.0.0"
+ acorn "^8.7.1"
+ acorn-jsx "^5.3.2"
+ github-slugger "^1.4.0"
+ hast-util-to-html "^8.0.3"
+ import-meta-resolve "^2.1.0"
+ mdast-util-from-markdown "^1.2.0"
+ mdast-util-mdx-expression "^1.2.1"
+ mdast-util-mdx-jsx "^1.2.0"
+ micromark-extension-mdx-expression "^1.0.3"
+ micromark-extension-mdx-md "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ rehype-raw "^6.1.1"
+ rehype-stringify "^9.0.3"
+ remark-gfm "^3.0.1"
+ remark-parse "^10.0.1"
+ remark-rehype "^10.1.0"
+ remark-smartypants "^2.0.0"
+ shiki "^0.11.1"
+ unified "^10.1.2"
+ unist-util-map "^3.1.1"
+ unist-util-visit "^4.1.0"
+ vfile "^5.3.2"
+
+"@astrojs/mdx@^0.11.4":
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/@astrojs/mdx/-/mdx-0.11.4.tgz#ad51aa1bee8ebcb4ca800151c6dd857713153e70"
+ integrity sha512-b86Fzd87OCuYUGk7O59mwq0URqLdH40wUJC5UCkFmSquIrk8QNrZ7tdjriBfF+Wq3+2UT5JO4ahxIuP6N3cczQ==
+ dependencies:
+ "@astrojs/prism" "^1.0.1"
+ "@mdx-js/mdx" "^2.1.2"
+ "@mdx-js/rollup" "^2.1.1"
+ acorn "^8.8.0"
+ es-module-lexer "^0.10.5"
+ estree-util-visit "^1.2.0"
+ github-slugger "^1.4.0"
+ gray-matter "^4.0.3"
+ kleur "^4.1.4"
+ rehype-raw "^6.1.1"
+ remark-frontmatter "^4.0.1"
+ remark-gfm "^3.0.1"
+ remark-smartypants "^2.0.0"
+ shiki "^0.11.1"
+ unist-util-visit "^4.1.0"
+ vfile "^5.3.2"
+
+"@astrojs/micromark-extension-mdx-jsx@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@astrojs/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz#539f7d4d512b510adbe0d83e1a7385a3f5c1387d"
+ integrity sha512-O15+i2DGG0qb1R/1SYbFXgOKDGbYdV8iJMtuboVb1S9YFQfMOJxaCMco0bhXQI7PmZcQ4pZWIjT5oZ64dXUtRA==
+ dependencies:
+ "@types/acorn" "^4.0.0"
+ estree-util-is-identifier-name "^2.0.0"
+ micromark-factory-mdx-expression "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+"@astrojs/prism@^1.0.0", "@astrojs/prism@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@astrojs/prism/-/prism-1.0.1.tgz#a7a778f9e3814885f587d8074a15452947ab4252"
+ integrity sha512-HxEFslvbv+cfOs51q/C7aMVFuW3EAGg0d1xXU/0e/QeScDzfrp5Ra4SOb8mV082SgENVjtVvet4zR84t3at4VQ==
+ dependencies:
+ prismjs "^1.28.0"
+
+"@astrojs/rss@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@astrojs/rss/-/rss-1.0.2.tgz#a8890e4ab25da843a2a2155a5d5a4b0f7a530b94"
+ integrity sha512-WPMW5a3D+nAbuu/i7LANfp1GnVrdnzcsUNrR7o8IvPJXJMjVGtDqdUqNDj20Rj3rwcWbOL2KVvGPMjCqx0tRWQ==
+ dependencies:
+ fast-xml-parser "^4.0.8"
+
+"@astrojs/tailwind@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@astrojs/tailwind/-/tailwind-2.0.2.tgz#8d2e1a740bec5ded235d845b46ad51ee5ccb2ea4"
+ integrity sha512-SDQYqrOLwrRdDzjoSs6Ha2YQzWJlzWnPTZM5t0aWoHukm3JPQg/omDTpiz/XqT4vupYMOsBQZ9WBuNyWVtMrVg==
+ dependencies:
+ "@proload/core" "^0.3.2"
+ autoprefixer "^10.4.7"
+ postcss "^8.4.14"
+
+"@astrojs/telemetry@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@astrojs/telemetry/-/telemetry-1.0.1.tgz#7e0d4b92e641e9b1bc45dd938ee261848aac1848"
+ integrity sha512-SJVfZHp00f8VZsT1fsx1+6acJGUNt/84xZytV5znPzzNE8RXjlE0rv03llgTsEeUHYZc6uJah91jNojS7RldFg==
+ dependencies:
+ ci-info "^3.3.1"
+ debug "^4.3.4"
+ dlv "^1.1.3"
+ dset "^3.1.2"
+ is-docker "^3.0.0"
+ is-wsl "^2.2.0"
+ node-fetch "^3.2.5"
+ which-pm-runs "^1.1.0"
+
+"@astrojs/webapi@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@astrojs/webapi/-/webapi-1.1.0.tgz#d0f4721405c8962a4c7f1db863903b9ab4b6acf6"
+ integrity sha512-yLSksFKv9kRbI3WWPuRvbBjS+J5ZNmZHacJ6Io8XQleKIHHHcw7RoNcrLK0s+9iwVPhqMYIzja6HJuvnO93oFw==
+ dependencies:
+ global-agent "^3.0.0"
+ node-fetch "^3.2.5"
+
+"@babel/code-frame@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
+ integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
+ dependencies:
+ "@babel/highlight" "^7.18.6"
+
+"@babel/compat-data@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151"
+ integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==
+
+"@babel/core@^7.18.2":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c"
+ integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.19.3"
+ "@babel/helper-compilation-targets" "^7.19.3"
+ "@babel/helper-module-transforms" "^7.19.0"
+ "@babel/helpers" "^7.19.0"
+ "@babel/parser" "^7.19.3"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.19.3"
+ "@babel/types" "^7.19.3"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.1"
+ semver "^6.3.0"
+
+"@babel/generator@^7.18.2", "@babel/generator@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59"
+ integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==
+ dependencies:
+ "@babel/types" "^7.19.3"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ jsesc "^2.5.1"
+
+"@babel/helper-annotate-as-pure@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb"
+ integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-compilation-targets@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca"
+ integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==
+ dependencies:
+ "@babel/compat-data" "^7.19.3"
+ "@babel/helper-validator-option" "^7.18.6"
+ browserslist "^4.21.3"
+ semver "^6.3.0"
+
+"@babel/helper-environment-visitor@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
+ integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
+
+"@babel/helper-function-name@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
+ integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/types" "^7.19.0"
+
+"@babel/helper-hoist-variables@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
+ integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-module-imports@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
+ integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-module-transforms@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30"
+ integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-simple-access" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/helper-validator-identifier" "^7.18.6"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.19.0"
+ "@babel/types" "^7.19.0"
+
+"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf"
+ integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==
+
+"@babel/helper-simple-access@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea"
+ integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-split-export-declaration@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
+ integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
+"@babel/helper-string-parser@^7.18.10":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56"
+ integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==
+
+"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
+"@babel/helper-validator-option@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
+ integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
+
+"@babel/helpers@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18"
+ integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.19.0"
+ "@babel/types" "^7.19.0"
+
+"@babel/highlight@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
+ integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.18.6"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.18.10", "@babel/parser@^7.18.4", "@babel/parser@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a"
+ integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==
+
+"@babel/plugin-syntax-jsx@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
+ integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-react-jsx@^7.17.12":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9"
+ integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/plugin-syntax-jsx" "^7.18.6"
+ "@babel/types" "^7.19.0"
+
+"@babel/template@^7.18.10":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
+ integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/parser" "^7.18.10"
+ "@babel/types" "^7.18.10"
+
+"@babel/traverse@^7.18.2", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4"
+ integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.19.3"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/parser" "^7.19.3"
+ "@babel/types" "^7.19.3"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.4", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624"
+ integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==
+ dependencies:
+ "@babel/helper-string-parser" "^7.18.10"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ to-fast-properties "^2.0.0"
+
+"@emmetio/abbreviation@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.2.3.tgz#2b3c0383c1a4652f677d5b56fb3f1616fe16ef10"
+ integrity sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
+"@emmetio/css-abbreviation@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@emmetio/css-abbreviation/-/css-abbreviation-2.1.4.tgz#90362e8a1122ce3b76f6c3157907d30182f53f54"
+ integrity sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
+"@emmetio/scanner@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@emmetio/scanner/-/scanner-1.0.0.tgz#065b2af6233fe7474d44823e3deb89724af42b5f"
+ integrity sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==
+
+"@esbuild/android-arm@0.15.10":
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.10.tgz#a5f9432eb221afc243c321058ef25fe899886892"
+ integrity sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==
+
+"@esbuild/linux-loong64@0.14.54":
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
+ integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
+
+"@esbuild/linux-loong64@0.15.10":
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz#78a42897c2cf8db9fd5f1811f7590393b77774c7"
+ integrity sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==
+
+"@jridgewell/gen-mapping@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
+ integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.0"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
+ integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
+ integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
+
+"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.14"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
+ integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+
+"@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
+ integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@ljharb/has-package-exports-patterns@^0.0.2":
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/@ljharb/has-package-exports-patterns/-/has-package-exports-patterns-0.0.2.tgz#c1718939b65efa1f45f53686c2fcfa992b9fb68f"
+ integrity sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==
+
+"@mdx-js/mdx@^2.0.0", "@mdx-js/mdx@^2.1.2":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.1.4.tgz#547c99c459d8ad89138bdc2bc104fffdbc5ea4bd"
+ integrity sha512-47drTDRr6QiMx1SXIoIyjTL8izoC+IBP5nmOLTUbuFJZYXdV9TPLuZJic0i96FGKfL7DpRN4WylpsxOVlpufMg==
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/mdx" "^2.0.0"
+ estree-util-build-jsx "^2.0.0"
+ estree-util-is-identifier-name "^2.0.0"
+ estree-util-to-js "^1.1.0"
+ estree-walker "^3.0.0"
+ hast-util-to-estree "^2.0.0"
+ markdown-extensions "^1.0.0"
+ periscopic "^3.0.0"
+ remark-mdx "^2.0.0"
+ remark-parse "^10.0.0"
+ remark-rehype "^10.0.0"
+ unified "^10.0.0"
+ unist-util-position-from-estree "^1.0.0"
+ unist-util-stringify-position "^3.0.0"
+ unist-util-visit "^4.0.0"
+ vfile "^5.0.0"
+
+"@mdx-js/rollup@^2.1.1":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@mdx-js/rollup/-/rollup-2.1.4.tgz#bbf27824a8206e21a197b3f9013002ea43bf6a35"
+ integrity sha512-iBGsXMVuX96o5ux+/5BC393ugbZbdzEUd6OuHyTXfWisgstdf6U4onTGfpW5LpZ3PoNMDs3oniewPxuydHd1QQ==
+ dependencies:
+ "@mdx-js/mdx" "^2.0.0"
+ "@rollup/pluginutils" "^4.0.0"
+ source-map "^0.7.0"
+ vfile "^5.0.0"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@pkgr/utils@^2.3.0":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03"
+ integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==
+ dependencies:
+ cross-spawn "^7.0.3"
+ is-glob "^4.0.3"
+ open "^8.4.0"
+ picocolors "^1.0.0"
+ tiny-glob "^0.2.9"
+ tslib "^2.4.0"
+
+"@polka/url@^1.0.0-next.20":
+ version "1.0.0-next.21"
+ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1"
+ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
+
+"@proload/core@^0.3.2", "@proload/core@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@proload/core/-/core-0.3.3.tgz#0a30c5ab69e21254b339813c674a6197a42337c3"
+ integrity sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==
+ dependencies:
+ deepmerge "^4.2.2"
+ escalade "^3.1.1"
+
+"@proload/plugin-tsm@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@proload/plugin-tsm/-/plugin-tsm-0.2.1.tgz#330d1adeb2f5ed9b19a31950019b6ab75399bf7f"
+ integrity sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==
+ dependencies:
+ tsm "^2.1.4"
+
+"@rollup/pluginutils@^4.0.0":
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d"
+ integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
+"@tailwindcss/aspect-ratio@^0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz#9ffd52fee8e3c8b20623ff0dcb29e5c21fb0a9ba"
+ integrity sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==
+
+"@tailwindcss/forms@^0.5.3":
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.3.tgz#e4d7989686cbcaf416c53f1523df5225332a86e7"
+ integrity sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==
+ dependencies:
+ mini-svg-data-uri "^1.2.3"
+
+"@tailwindcss/nesting@^0.0.0-insiders.565cd3e":
+ version "0.0.0-insiders.565cd3e"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/nesting/-/nesting-0.0.0-insiders.565cd3e.tgz#cdfe802dd2900cd6b4e99006c7d13b21132d72fc"
+ integrity sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==
+ dependencies:
+ postcss-nested "^5.0.5"
+
+"@tailwindcss/typography@^0.5.7":
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.7.tgz#e0b95bea787ee14c5a34a74fc824e6fe86ea8855"
+ integrity sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==
+ dependencies:
+ lodash.castarray "^4.4.0"
+ lodash.isplainobject "^4.0.6"
+ lodash.merge "^4.6.2"
+ postcss-selector-parser "6.0.10"
+
+"@types/acorn@^4.0.0":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22"
+ integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/alpinejs@^3.0.0":
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/@types/alpinejs/-/alpinejs-3.7.0.tgz#8d4f702c76c05e18729f92d64905d39dc1005762"
+ integrity sha512-iMvJwgJHYFUlMOixKF68BmMQZbnxVA/erh1blbfhY8Z6u6oleEJViz8bye58roLOp8jyBNOsXtobyq7zR/7A2g==
+ dependencies:
+ "@vue/reactivity" "^3.2.26"
+
+"@types/babel__core@^7.1.19":
+ version "7.1.19"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"
+ integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.4"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
+ integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
+ integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*":
+ version "7.18.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.2.tgz#235bf339d17185bdec25e024ca19cce257cc7309"
+ integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/debug@^4.0.0":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
+ integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
+ dependencies:
+ "@types/ms" "*"
+
+"@types/estree-jsx@^0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-0.0.1.tgz#c36d7a1afeb47a95a8ee0b7bc8bc705db38f919d"
+ integrity sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/estree-jsx@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.0.tgz#7bfc979ab9f692b492017df42520f7f765e98df1"
+ integrity sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/estree@*", "@types/estree@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
+ integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
+
+"@types/hast@^2.0.0":
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
+ integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/html-escaper@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/html-escaper/-/html-escaper-3.0.0.tgz#97d7df443c0fc86e3abdd0971f4814a58e3ca762"
+ integrity sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==
+
+"@types/json5@^0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.30.tgz#44cb52f32a809734ca562e685c6473b5754a7818"
+ integrity sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==
+
+"@types/mdast@^3.0.0":
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
+ integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/mdx@^2.0.0":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.2.tgz#64be19baddba4323ae7893e077e98759316fe279"
+ integrity sha512-mJGfgj4aWpiKb8C0nnJJchs1sHBHn0HugkVfqqyQi7Wn6mBRksLeQsPOFvih/Pu8L1vlDzfe/LidhVHBeUk3aQ==
+
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
+"@types/nlcst@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/nlcst/-/nlcst-1.0.0.tgz#9dacd7e9a32bcf0451873be62bdc373aed735b46"
+ integrity sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/parse5@^6.0.0":
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb"
+ integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==
+
+"@types/resolve@^1.17.0":
+ version "1.20.2"
+ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975"
+ integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==
+
+"@types/unist@*", "@types/unist@^2.0.0":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
+ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+
+"@types/yargs-parser@^21.0.0":
+ version "21.0.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
+ integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
+
+"@vscode/emmet-helper@^2.8.4":
+ version "2.8.4"
+ resolved "https://registry.yarnpkg.com/@vscode/emmet-helper/-/emmet-helper-2.8.4.tgz#ab937e3ce79b0873c604d1ad50a9eeb7abae2937"
+ integrity sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==
+ dependencies:
+ emmet "^2.3.0"
+ jsonc-parser "^2.3.0"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.15.1"
+ vscode-nls "^5.0.0"
+ vscode-uri "^2.1.2"
+
+"@vue/reactivity@^3.2.26":
+ version "3.2.40"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.40.tgz#ae65496f5b364e4e481c426f391568ed7d133cca"
+ integrity sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==
+ dependencies:
+ "@vue/shared" "3.2.40"
+
+"@vue/reactivity@~3.1.1":
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.5.tgz#dbec4d9557f7c8f25c2635db1e23a78a729eb991"
+ integrity sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==
+ dependencies:
+ "@vue/shared" "3.1.5"
+
+"@vue/shared@3.1.5":
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.5.tgz#74ee3aad995d0a3996a6bb9533d4d280514ede03"
+ integrity sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==
+
+"@vue/shared@3.2.40":
+ version "3.2.40"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.40.tgz#e57799da2a930b975321981fcee3d1e90ed257ae"
+ integrity sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==
+
+acorn-jsx@^5.0.0, acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn-node@^1.8.2:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
+ integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
+ dependencies:
+ acorn "^7.0.0"
+ acorn-walk "^7.0.0"
+ xtend "^4.0.2"
+
+acorn-walk@^7.0.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
+ integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+
+acorn@^7.0.0:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^8.0.0, acorn@^8.7.1, acorn@^8.8.0:
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
+ integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
+
+alpinejs@^3.0.0:
+ version "3.10.3"
+ resolved "https://registry.yarnpkg.com/alpinejs/-/alpinejs-3.10.3.tgz#4072c5ec01adf58b31a0e8e13e4ccb1382c1d112"
+ integrity sha512-nt/w4hLq9pPaexCsHmO5zV5Alvq4yu9n0Iclti6aV0HmiqLWH/axUb0pn8z3XVuVNcj8EOXOQw+WpwPzMzLBWg==
+ dependencies:
+ "@vue/reactivity" "~3.1.1"
+
+ansi-align@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
+ integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==
+ dependencies:
+ string-width "^4.1.0"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+ansi-styles@^6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.1.tgz#63cd61c72283a71cb30bd881dbb60adada74bc70"
+ integrity sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==
+
+anymatch@~3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+arg@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
+ integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+array-iterate@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7"
+ integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==
+
+ast-types@0.14.2:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd"
+ integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==
+ dependencies:
+ tslib "^2.0.1"
+
+astring@^1.8.0:
+ version "1.8.3"
+ resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.3.tgz#1a0ae738c7cc558f8e5ddc8e3120636f5cebcb85"
+ integrity sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==
+
+astro@^1.4.5:
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/astro/-/astro-1.4.5.tgz#6515d8d6edd0d73be80707408c345dfe8c8c7b9a"
+ integrity sha512-7uflNdFMsAONkEdtNRqP1XgtgdUhiiFfYd3DjtaoaskYhcnfKKYy8Lht0stIQaMtAqITIy0LLTDvDM/j8SfuUw==
+ dependencies:
+ "@astrojs/compiler" "^0.26.0"
+ "@astrojs/language-server" "^0.26.2"
+ "@astrojs/markdown-remark" "^1.1.3"
+ "@astrojs/telemetry" "^1.0.1"
+ "@astrojs/webapi" "^1.1.0"
+ "@babel/core" "^7.18.2"
+ "@babel/generator" "^7.18.2"
+ "@babel/parser" "^7.18.4"
+ "@babel/plugin-transform-react-jsx" "^7.17.12"
+ "@babel/traverse" "^7.18.2"
+ "@babel/types" "^7.18.4"
+ "@proload/core" "^0.3.3"
+ "@proload/plugin-tsm" "^0.2.1"
+ "@types/babel__core" "^7.1.19"
+ "@types/html-escaper" "^3.0.0"
+ "@types/yargs-parser" "^21.0.0"
+ boxen "^6.2.1"
+ ci-info "^3.3.1"
+ common-ancestor-path "^1.0.1"
+ cookie "^0.5.0"
+ debug "^4.3.4"
+ diff "^5.1.0"
+ eol "^0.9.1"
+ es-module-lexer "^0.10.5"
+ esbuild "^0.14.43"
+ execa "^6.1.0"
+ fast-glob "^3.2.11"
+ github-slugger "^1.4.0"
+ gray-matter "^4.0.3"
+ html-entities "^2.3.3"
+ html-escaper "^3.0.3"
+ kleur "^4.1.4"
+ magic-string "^0.25.9"
+ mime "^3.0.0"
+ ora "^6.1.0"
+ path-browserify "^1.0.1"
+ path-to-regexp "^6.2.1"
+ postcss "^8.4.14"
+ postcss-load-config "^3.1.4"
+ preferred-pm "^3.0.3"
+ prompts "^2.4.2"
+ recast "^0.20.5"
+ rehype "^12.0.1"
+ resolve "^1.22.0"
+ rollup "~2.78.0"
+ semver "^7.3.7"
+ shiki "^0.11.1"
+ sirv "^2.0.2"
+ slash "^4.0.0"
+ string-width "^5.1.2"
+ strip-ansi "^7.0.1"
+ supports-esm "^1.0.0"
+ tsconfig-resolver "^3.0.1"
+ typescript "*"
+ unist-util-visit "^4.1.0"
+ vfile "^5.3.2"
+ vite "~3.1.3"
+ yargs-parser "^21.0.1"
+ zod "^3.17.3"
+
+autoprefixer@^10.4.7:
+ version "10.4.12"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.12.tgz#183f30bf0b0722af54ee5ef257f7d4320bb33129"
+ integrity sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==
+ dependencies:
+ browserslist "^4.21.4"
+ caniuse-lite "^1.0.30001407"
+ fraction.js "^4.2.0"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.0"
+ postcss-value-parser "^4.2.0"
+
+bail@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d"
+ integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
+
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bl@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-5.0.0.tgz#6928804a41e9da9034868e1c50ca88f21f57aea2"
+ integrity sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==
+ dependencies:
+ buffer "^6.0.3"
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+
+boolean@^3.0.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
+ integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
+
+boxen@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d"
+ integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==
+ dependencies:
+ ansi-align "^3.0.1"
+ camelcase "^6.2.0"
+ chalk "^4.1.2"
+ cli-boxes "^3.0.0"
+ string-width "^5.0.1"
+ type-fest "^2.5.0"
+ widest-line "^4.0.1"
+ wrap-ansi "^8.0.1"
+
+braces@^3.0.2, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.21.3, browserslist@^4.21.4:
+ version "4.21.4"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
+ integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
+ dependencies:
+ caniuse-lite "^1.0.30001400"
+ electron-to-chromium "^1.4.251"
+ node-releases "^2.0.6"
+ update-browserslist-db "^1.0.9"
+
+buffer@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
+ integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.2.1"
+
+camelcase-css@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
+ integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
+
+camelcase@^6.2.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001407:
+ version "1.0.30001418"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz#5f459215192a024c99e3e3a53aac310fc7cf24e6"
+ integrity sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==
+
+ccount@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
+ integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
+
+chalk@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.1.0.tgz#c4b4a62bfb6df0eeeb5dbc52e6a9ecaff14b9976"
+ integrity sha512-56zD4khRTBoIyzUYAFgDDaPhUMN/fC/rySe6aZGqbj/VWiU2eI3l6ZLOtYGFZAV5v02mwPjtpzlrOveJiz5eZQ==
+
+character-entities-html4@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b"
+ integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==
+
+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@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
+ integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
+
+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==
+
+chokidar@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+ci-info@^3.3.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.4.0.tgz#b28484fd436cbc267900364f096c9dc185efb251"
+ integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==
+
+cli-boxes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145"
+ integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==
+
+cli-cursor@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea"
+ integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==
+ dependencies:
+ restore-cursor "^4.0.0"
+
+cli-spinners@^2.6.1:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a"
+ integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@^1.1.4, color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+comma-separated-tokens@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98"
+ integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==
+
+common-ancestor-path@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7"
+ integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==
+
+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"
+
+cookie@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
+ integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
+
+cross-spawn@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+data-uri-to-buffer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b"
+ integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==
+
+debug@^4.0.0, debug@^4.1.0, debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+decode-named-character-reference@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e"
+ integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
+ dependencies:
+ character-entities "^2.0.0"
+
+deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==
+ dependencies:
+ clone "^1.0.2"
+
+define-lazy-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
+ integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
+
+define-properties@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
+ integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
+ dependencies:
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+ integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==
+
+dequal@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
+ integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+
+detect-node@^2.0.4:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
+ integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
+
+detective@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034"
+ integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==
+ dependencies:
+ acorn-node "^1.8.2"
+ defined "^1.0.0"
+ minimist "^1.2.6"
+
+didyoumean@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
+ integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
+
+diff@^5.0.0, diff@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40"
+ integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==
+
+dlv@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
+ integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
+
+dset@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a"
+ integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+electron-to-chromium@^1.4.251:
+ version "1.4.275"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.275.tgz#db25c8e39c9cc910a996d1ec9b73eee834cb0ac1"
+ integrity sha512-aJeQQ+Hl9Jyyzv4chBqYJwmVRY46N5i2BEX5Cuyk/5gFCUZ5F3i7Hnba6snZftWla7Gglwc5pIgcd+E7cW+rPg==
+
+emmet@^2.3.0:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/emmet/-/emmet-2.3.6.tgz#1d93c1ac03164da9ddf74864c1f341ed6ff6c336"
+ integrity sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==
+ dependencies:
+ "@emmetio/abbreviation" "^2.2.3"
+ "@emmetio/css-abbreviation" "^2.1.4"
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+eol@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd"
+ integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==
+
+es-module-lexer@^0.10.5:
+ version "0.10.5"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.10.5.tgz#06f76d51fa53b1f78e3bd8bb36dd275eda2fdd53"
+ integrity sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==
+
+es6-error@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
+ integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
+
+esbuild-android-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
+ integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
+
+esbuild-android-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz#8a59a84acbf2eca96996cadc35642cf055c494f0"
+ integrity sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==
+
+esbuild-android-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
+ integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
+
+esbuild-android-arm64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz#f453851dc1d8c5409a38cf7613a33852faf4915d"
+ integrity sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==
+
+esbuild-darwin-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
+ integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
+
+esbuild-darwin-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz#778bd29c8186ff47b176c8af58c08cf0fb8e6b86"
+ integrity sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==
+
+esbuild-darwin-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73"
+ integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
+
+esbuild-darwin-arm64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz#b30bbefb46dc3c5d4708b0435e52f6456578d6df"
+ integrity sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==
+
+esbuild-freebsd-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
+ integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
+
+esbuild-freebsd-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz#ab301c5f6ded5110dbdd611140bef1a7c2e99236"
+ integrity sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==
+
+esbuild-freebsd-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
+ integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
+
+esbuild-freebsd-arm64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz#a5b09b867a6ff49110f52343b6f12265db63d43f"
+ integrity sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==
+
+esbuild-linux-32@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
+ integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
+
+esbuild-linux-32@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz#5282fe9915641caf9c8070e4ba2c3e16d358f837"
+ integrity sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==
+
+esbuild-linux-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
+ integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
+
+esbuild-linux-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz#f3726e85a00149580cb19f8abfabcbb96f5d52bb"
+ integrity sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==
+
+esbuild-linux-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
+ integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
+
+esbuild-linux-arm64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz#2f0056e9d5286edb0185b56655caa8c574d8dbe7"
+ integrity sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==
+
+esbuild-linux-arm@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
+ integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
+
+esbuild-linux-arm@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz#40a9270da3c8ffa32cf72e24a79883e323dff08d"
+ integrity sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==
+
+esbuild-linux-mips64le@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
+ integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
+
+esbuild-linux-mips64le@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz#90ce1c4ee0202edb4ac69807dea77f7e5804abc4"
+ integrity sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==
+
+esbuild-linux-ppc64le@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
+ integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
+
+esbuild-linux-ppc64le@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz#782837ae7bd5b279178106c9dd801755a21fabdf"
+ integrity sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==
+
+esbuild-linux-riscv64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
+ integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
+
+esbuild-linux-riscv64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz#d7420d806ece5174f24f4634303146f915ab4207"
+ integrity sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==
+
+esbuild-linux-s390x@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
+ integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
+
+esbuild-linux-s390x@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz#21fdf0cb3494a7fb520a71934e4dffce67fe47be"
+ integrity sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==
+
+esbuild-netbsd-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
+ integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
+
+esbuild-netbsd-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz#6c06b3107e3df53de381e6299184d4597db0440f"
+ integrity sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==
+
+esbuild-openbsd-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
+ integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
+
+esbuild-openbsd-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz#4daef5f5d8e74bbda53b65160029445d582570cf"
+ integrity sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==
+
+esbuild-sunos-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
+ integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
+
+esbuild-sunos-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz#5fe7bef267a02f322fd249a8214d0274937388a7"
+ integrity sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==
+
+esbuild-windows-32@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
+ integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
+
+esbuild-windows-32@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz#48e3dde25ab0135579a288b30ab6ddef6d1f0b28"
+ integrity sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==
+
+esbuild-windows-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
+ integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
+
+esbuild-windows-64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz#387a9515bef3fee502d277a5d0a2db49a4ecda05"
+ integrity sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==
+
+esbuild-windows-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
+ integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
+
+esbuild-windows-arm64@0.15.10:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz#5a6fcf2fa49e895949bf5495cf088ab1b43ae879"
+ integrity sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==
+
+esbuild@^0.14.0, esbuild@^0.14.43:
+ version "0.14.54"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"
+ integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==
+ optionalDependencies:
+ "@esbuild/linux-loong64" "0.14.54"
+ esbuild-android-64 "0.14.54"
+ esbuild-android-arm64 "0.14.54"
+ esbuild-darwin-64 "0.14.54"
+ esbuild-darwin-arm64 "0.14.54"
+ esbuild-freebsd-64 "0.14.54"
+ esbuild-freebsd-arm64 "0.14.54"
+ esbuild-linux-32 "0.14.54"
+ esbuild-linux-64 "0.14.54"
+ esbuild-linux-arm "0.14.54"
+ esbuild-linux-arm64 "0.14.54"
+ esbuild-linux-mips64le "0.14.54"
+ esbuild-linux-ppc64le "0.14.54"
+ esbuild-linux-riscv64 "0.14.54"
+ esbuild-linux-s390x "0.14.54"
+ esbuild-netbsd-64 "0.14.54"
+ esbuild-openbsd-64 "0.14.54"
+ esbuild-sunos-64 "0.14.54"
+ esbuild-windows-32 "0.14.54"
+ esbuild-windows-64 "0.14.54"
+ esbuild-windows-arm64 "0.14.54"
+
+esbuild@^0.15.9:
+ version "0.15.10"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.10.tgz#85c2f8446e9b1fe04fae68daceacba033eedbd42"
+ integrity sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.15.10"
+ "@esbuild/linux-loong64" "0.15.10"
+ esbuild-android-64 "0.15.10"
+ esbuild-android-arm64 "0.15.10"
+ esbuild-darwin-64 "0.15.10"
+ esbuild-darwin-arm64 "0.15.10"
+ esbuild-freebsd-64 "0.15.10"
+ esbuild-freebsd-arm64 "0.15.10"
+ esbuild-linux-32 "0.15.10"
+ esbuild-linux-64 "0.15.10"
+ esbuild-linux-arm "0.15.10"
+ esbuild-linux-arm64 "0.15.10"
+ esbuild-linux-mips64le "0.15.10"
+ esbuild-linux-ppc64le "0.15.10"
+ esbuild-linux-riscv64 "0.15.10"
+ esbuild-linux-s390x "0.15.10"
+ esbuild-netbsd-64 "0.15.10"
+ esbuild-openbsd-64 "0.15.10"
+ esbuild-sunos-64 "0.15.10"
+ esbuild-windows-32 "0.15.10"
+ esbuild-windows-64 "0.15.10"
+ esbuild-windows-arm64 "0.15.10"
+
+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"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+escape-string-regexp@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
+ integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
+
+esprima@^4.0.0, esprima@~4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+estree-util-attach-comments@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz#47d69900588bcbc6bf58c3798803ec5f1f3008de"
+ integrity sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==
+ dependencies:
+ "@types/estree" "^1.0.0"
+
+estree-util-build-jsx@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz#d4307bbeee28c14eb4d63b75c9aad28fa61d84f5"
+ integrity sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ estree-util-is-identifier-name "^2.0.0"
+ estree-walker "^3.0.0"
+
+estree-util-is-identifier-name@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz#cf07867f42705892718d9d89eb2d85eaa8f0fcb5"
+ integrity sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==
+
+estree-util-to-js@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz#3bd9bb86354063537cc3d81259be2f0d4c3af39f"
+ integrity sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ astring "^1.8.0"
+ source-map "^0.7.0"
+
+estree-util-visit@^1.0.0, estree-util-visit@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.2.0.tgz#aa0311a9c2f2aa56e9ae5e8b9d87eac14e4ec8f8"
+ integrity sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/unist" "^2.0.0"
+
+estree-walker@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+estree-walker@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.1.tgz#c2a9fb4a30232f5039b7c030b37ead691932debd"
+ integrity sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==
+
+events@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+execa@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20"
+ integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.1"
+ human-signals "^3.0.1"
+ is-stream "^3.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^5.1.0"
+ onetime "^6.0.0"
+ signal-exit "^3.0.7"
+ strip-final-newline "^3.0.0"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+fast-glob@^3.2.11:
+ version "3.2.12"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
+ integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-xml-parser@^4.0.8:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz#42332a9aca544520631c8919e6ea871c0185a985"
+ integrity sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==
+ dependencies:
+ strnum "^1.0.5"
+
+fastq@^1.6.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ dependencies:
+ reusify "^1.0.4"
+
+fault@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c"
+ integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==
+ dependencies:
+ format "^0.2.0"
+
+fetch-blob@^3.1.2, fetch-blob@^3.1.4:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9"
+ integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==
+ dependencies:
+ node-domexception "^1.0.0"
+ web-streams-polyfill "^3.0.3"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-up@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+find-yarn-workspace-root2@1.2.16:
+ version "1.2.16"
+ resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9"
+ integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==
+ dependencies:
+ micromatch "^4.0.2"
+ pkg-dir "^4.2.0"
+
+format@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
+ integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==
+
+formdata-polyfill@^4.0.10:
+ version "4.0.10"
+ resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
+ integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
+ dependencies:
+ fetch-blob "^3.1.2"
+
+fraction.js@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
+ integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+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==
+
+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.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
+ integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.3"
+
+get-stream@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+github-slugger@^1.4.0:
+ version "1.4.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-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+global-agent@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
+ integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==
+ dependencies:
+ boolean "^3.0.1"
+ es6-error "^4.1.1"
+ matcher "^3.0.0"
+ roarr "^2.15.3"
+ semver "^7.3.2"
+ serialize-error "^7.0.1"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globalthis@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
+ integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+ dependencies:
+ define-properties "^1.1.3"
+
+globalyzer@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
+ integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==
+
+globrex@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
+ integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
+
+graceful-fs@^4.1.5:
+ version "4.2.10"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
+ integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+
+gray-matter@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798"
+ integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==
+ dependencies:
+ js-yaml "^3.13.1"
+ kind-of "^6.0.2"
+ section-matter "^1.0.0"
+ strip-bom-string "^1.0.0"
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-package-exports@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/has-package-exports/-/has-package-exports-1.3.0.tgz#68ee0892a1616893b7e6daed46b74ffdb5079ed6"
+ integrity sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==
+ dependencies:
+ "@ljharb/has-package-exports-patterns" "^0.0.2"
+
+has-property-descriptors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
+ integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+ dependencies:
+ get-intrinsic "^1.1.1"
+
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+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-to-hyperscript@^10.0.0:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz#3decd7cb4654bca8883f6fcbd4fb3695628c4296"
+ integrity sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ style-to-object "^0.3.0"
+ unist-util-is "^5.0.0"
+ web-namespaces "^2.0.0"
+
+hast-util-from-parse5@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz#c129dd3a24dd8a867ab8a029ca47e27aa54864b7"
+ integrity sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ "@types/unist" "^2.0.0"
+ hastscript "^7.0.0"
+ property-information "^6.0.0"
+ vfile "^5.0.0"
+ vfile-location "^4.0.0"
+ web-namespaces "^2.0.0"
+
+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"
+ integrity sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/unist" "^2.0.0"
+
+hast-util-parse-selector@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz#a519e27e8b61bd5a98fad494ed06131ce68d9c3f"
+ integrity sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-raw@^7.2.0:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.2.tgz#1974360b2d7f15b5ce26c2a4bac892d5d8185a18"
+ integrity sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ hast-util-from-parse5 "^7.0.0"
+ hast-util-to-parse5 "^7.0.0"
+ html-void-elements "^2.0.0"
+ parse5 "^6.0.0"
+ unist-util-position "^4.0.0"
+ unist-util-visit "^4.0.0"
+ vfile "^5.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-estree@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz#aeac70aad0102ae309570907b3f56a08231d5323"
+ integrity sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==
+ dependencies:
+ "@types/estree" "^1.0.0"
+ "@types/estree-jsx" "^1.0.0"
+ "@types/hast" "^2.0.0"
+ "@types/unist" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ estree-util-attach-comments "^2.0.0"
+ estree-util-is-identifier-name "^2.0.0"
+ hast-util-whitespace "^2.0.0"
+ mdast-util-mdx-expression "^1.0.0"
+ mdast-util-mdxjs-esm "^1.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ style-to-object "^0.3.0"
+ unist-util-position "^4.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-html@^8.0.0, hast-util-to-html@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz#4e37580872e143ea9ce0dba87918b19e4ea997e3"
+ integrity sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ ccount "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-is-element "^2.0.0"
+ hast-util-whitespace "^2.0.0"
+ html-void-elements "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ stringify-entities "^4.0.2"
+ unist-util-is "^5.0.0"
+
+hast-util-to-parse5@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz#a39808e69005d10afeed1866029a1fb137df3f7c"
+ integrity sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/parse5" "^6.0.0"
+ hast-to-hyperscript "^10.0.0"
+ property-information "^6.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-whitespace@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c"
+ integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==
+
+hastscript@^7.0.0:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.0.2.tgz#d811fc040817d91923448a28156463b2e40d590a"
+ integrity sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-parse-selector "^3.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.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-escaper@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-3.0.3.tgz#4d336674652beb1dcbc29ef6b6ba7f6be6fdfed6"
+ integrity sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==
+
+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"
+ integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
+
+human-signals@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5"
+ integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
+
+ieee754@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+import-meta-resolve@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-2.1.0.tgz#c8952d331ed6e9bb6ad524a7549deb3d34af41ce"
+ integrity sha512-yG9pxkWJVTy4cmRsNWE3ztFdtFuYIV8G4N+cbCkO8b+qngkLyIUhxQFuZ0qJm67+0nUOxjMPT7nfksPKza1v2g==
+
+inherits@^2.0.3, inherits@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inline-style-parser@0.1.1:
+ version "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@^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@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875"
+ integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==
+ dependencies:
+ is-alphabetical "^2.0.0"
+ is-decimal "^2.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-core-module@^2.9.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed"
+ integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==
+ dependencies:
+ has "^1.0.3"
+
+is-decimal@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7"
+ integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==
+
+is-docker@^2.0.0, is-docker@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-docker@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200"
+ integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==
+
+is-extendable@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^3.0.0:
+ version "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-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+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-interactive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90"
+ integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-plain-obj@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
+ integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
+
+is-reference@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.0.tgz#b1380c03d96ddf7089709781e3208fceb0c92cd6"
+ integrity sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==
+ dependencies:
+ "@types/estree" "*"
+
+is-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
+ integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
+
+is-unicode-supported@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714"
+ integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==
+
+is-wsl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.0, js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json-stringify-safe@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+
+json5@^2.1.3, json5@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
+ integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+
+jsonc-parser@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342"
+ integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==
+
+jsonc-parser@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
+ integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
+
+kind-of@^6.0.0, 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@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+
+kleur@^4.0.3, kleur@^4.1.4:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
+ integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
+
+lilconfig@^2.0.5, lilconfig@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4"
+ integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==
+
+load-yaml-file@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d"
+ integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==
+ dependencies:
+ graceful-fs "^4.1.5"
+ js-yaml "^3.13.0"
+ pify "^4.0.1"
+ strip-bom "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash.castarray@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
+ integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93"
+ integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==
+ dependencies:
+ chalk "^5.0.0"
+ is-unicode-supported "^1.1.0"
+
+longest-streak@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d"
+ integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.25.9:
+ version "0.25.9"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+markdown-extensions@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3"
+ integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==
+
+markdown-table@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c"
+ integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==
+
+matcher@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
+ integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==
+ dependencies:
+ escape-string-regexp "^4.0.0"
+
+mdast-util-definitions@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz#2c1d684b28e53f84938bb06317944bee8efa79db"
+ integrity sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ unist-util-visit "^4.0.0"
+
+mdast-util-find-and-replace@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz#249901ef43c5f41d6e8a8d446b3b63b17e592d7c"
+ integrity sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==
+ dependencies:
+ escape-string-regexp "^5.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^5.0.0"
+
+mdast-util-from-markdown@^1.0.0, mdast-util-from-markdown@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268"
+ integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ decode-named-character-reference "^1.0.0"
+ mdast-util-to-string "^3.1.0"
+ micromark "^3.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-decode-string "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ unist-util-stringify-position "^3.0.0"
+ uvu "^0.5.0"
+
+mdast-util-frontmatter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz#ef12469379782e4a0fd995fed60cc3b871e6c819"
+ integrity sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==
+ dependencies:
+ micromark-extension-frontmatter "^1.0.0"
+
+mdast-util-gfm-autolink-literal@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz#4032dcbaddaef7d4f2f3768ed830475bb22d3970"
+ integrity sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ ccount "^2.0.0"
+ mdast-util-find-and-replace "^2.0.0"
+ micromark-util-character "^1.0.0"
+
+mdast-util-gfm-footnote@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe"
+ integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+ micromark-util-normalize-identifier "^1.0.0"
+
+mdast-util-gfm-strikethrough@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789"
+ integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm-table@^1.0.0:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz#184e900979fe790745fc3dabf77a4114595fcd7f"
+ integrity sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ markdown-table "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm-task-list-item@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c"
+ integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+
+mdast-util-gfm@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz#16fcf70110ae689a06d77e8f4e346223b64a0ea6"
+ integrity sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==
+ dependencies:
+ mdast-util-from-markdown "^1.0.0"
+ mdast-util-gfm-autolink-literal "^1.0.0"
+ mdast-util-gfm-footnote "^1.0.0"
+ mdast-util-gfm-strikethrough "^1.0.0"
+ mdast-util-gfm-table "^1.0.0"
+ mdast-util-gfm-task-list-item "^1.0.0"
+ mdast-util-to-markdown "^1.0.0"
+
+mdast-util-mdx-expression@^1.0.0, mdast-util-mdx-expression@^1.2.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz#2224cf0b5b150093704a3c225bd529d2de21f50f"
+ integrity sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ mdast-util-to-markdown "^1.0.0"
+
+mdast-util-mdx-jsx@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-1.2.0.tgz#c0f5140e021fd134fa90272eb8bbddb39f8db399"
+ integrity sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==
+ dependencies:
+ "@types/estree-jsx" "^0.0.1"
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.0.0"
+ parse-entities "^4.0.0"
+ stringify-entities "^4.0.0"
+ unist-util-remove-position "^4.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+mdast-util-mdx-jsx@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz#029f5a9c38485dbb5cf482059557ee7d788f1947"
+ integrity sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ ccount "^2.0.0"
+ mdast-util-to-markdown "^1.3.0"
+ parse-entities "^4.0.0"
+ stringify-entities "^4.0.0"
+ unist-util-remove-position "^4.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+mdast-util-mdx@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz#dd4f6c993cf27da32725e50a04874f595b7b63fb"
+ integrity sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==
+ dependencies:
+ mdast-util-mdx-expression "^1.0.0"
+ mdast-util-mdx-jsx "^2.0.0"
+ mdast-util-mdxjs-esm "^1.0.0"
+
+mdast-util-mdxjs-esm@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz#137345ef827169aeeeb6069277cd3e090830ce9a"
+ integrity sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ mdast-util-to-markdown "^1.0.0"
+
+mdast-util-to-hast@^12.1.0:
+ version "12.2.4"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz#34c1ef2b6cf01c27b3e3504e2c977c76f722e7e1"
+ integrity sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-definitions "^5.0.0"
+ micromark-util-sanitize-uri "^1.1.0"
+ trim-lines "^3.0.0"
+ unist-builder "^3.0.0"
+ unist-util-generated "^2.0.0"
+ unist-util-position "^4.0.0"
+ unist-util-visit "^4.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"
+ integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-to-string "^3.0.0"
+ micromark-util-decode-string "^1.0.0"
+ unist-util-visit "^4.0.0"
+ zwitch "^2.0.0"
+
+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"
+ integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad"
+ integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-factory-destination "^1.0.0"
+ micromark-factory-label "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-factory-title "^1.0.0"
+ micromark-factory-whitespace "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-classify-character "^1.0.0"
+ micromark-util-html-tag-name "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.1"
+ uvu "^0.5.0"
+
+micromark-extension-frontmatter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz#612498e6dad87c132c95e25f0918e7cc0cd535f6"
+ integrity sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==
+ dependencies:
+ fault "^2.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-extension-gfm-autolink-literal@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058"
+ integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-footnote@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5"
+ integrity sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==
+ dependencies:
+ micromark-core-commonmark "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-strikethrough@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18"
+ integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-classify-character "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-table@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4"
+ integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm-tagfilter@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d"
+ integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-extension-gfm-task-list-item@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4"
+ integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-gfm@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2"
+ integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==
+ dependencies:
+ micromark-extension-gfm-autolink-literal "^1.0.0"
+ micromark-extension-gfm-footnote "^1.0.0"
+ micromark-extension-gfm-strikethrough "^1.0.0"
+ micromark-extension-gfm-table "^1.0.0"
+ micromark-extension-gfm-tagfilter "^1.0.0"
+ micromark-extension-gfm-task-list-item "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-extension-mdx-expression@^1.0.0, micromark-extension-mdx-expression@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa"
+ integrity sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==
+ dependencies:
+ micromark-factory-mdx-expression "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-events-to-acorn "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-extension-mdx-jsx@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz#9f196be5f65eb09d2a49b237a7b3398bba2999be"
+ integrity sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==
+ dependencies:
+ "@types/acorn" "^4.0.0"
+ estree-util-is-identifier-name "^2.0.0"
+ micromark-factory-mdx-expression "^1.0.0"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-extension-mdx-md@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz#382f5df9ee3706dd120b51782a211f31f4760d22"
+ integrity sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-extension-mdxjs-esm@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz#630d9dc9db2c2fd470cac8c1e7a824851267404d"
+ integrity sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==
+ dependencies:
+ micromark-core-commonmark "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-events-to-acorn "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ unist-util-position-from-estree "^1.1.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-extension-mdxjs@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz#772644e12fc8299a33e50f59c5aa15727f6689dd"
+ integrity sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==
+ dependencies:
+ acorn "^8.0.0"
+ acorn-jsx "^5.0.0"
+ micromark-extension-mdx-expression "^1.0.0"
+ micromark-extension-mdx-jsx "^1.0.0"
+ micromark-extension-mdx-md "^1.0.0"
+ micromark-extension-mdxjs-esm "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-destination@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e"
+ integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-label@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137"
+ integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-factory-mdx-expression@^1.0.0:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz#917e17d16e6e9c2551f3a862e6a9ebdd22056476"
+ integrity sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-events-to-acorn "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ unist-util-position-from-estree "^1.0.0"
+ uvu "^0.5.0"
+ vfile-message "^3.0.0"
+
+micromark-factory-space@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633"
+ integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-factory-title@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f"
+ integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-factory-whitespace@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c"
+ integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==
+ dependencies:
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-character@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86"
+ integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-chunked@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06"
+ integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-classify-character@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20"
+ integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-combine-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5"
+ integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-decode-numeric-character-reference@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946"
+ integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-decode-string@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02"
+ integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-encode@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383"
+ integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==
+
+micromark-util-events-to-acorn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.0.tgz#65785cb77299d791bfefdc6a5213ab57ceead115"
+ integrity sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==
+ dependencies:
+ "@types/acorn" "^4.0.0"
+ "@types/estree" "^1.0.0"
+ estree-util-visit "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+ vfile-location "^4.0.0"
+ vfile-message "^3.0.0"
+
+micromark-util-html-tag-name@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497"
+ integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==
+
+micromark-util-normalize-identifier@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828"
+ integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-resolve-all@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88"
+ integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==
+ dependencies:
+ micromark-util-types "^1.0.0"
+
+micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz#f12e07a85106b902645e0364feb07cf253a85aee"
+ integrity sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==
+ dependencies:
+ micromark-util-character "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-subtokenize@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105"
+ integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==
+ dependencies:
+ micromark-util-chunked "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+ uvu "^0.5.0"
+
+micromark-util-symbol@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e"
+ integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==
+
+micromark-util-types@^1.0.0, micromark-util-types@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20"
+ integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==
+
+micromark@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.1.0.tgz#eeba0fe0ac1c9aaef675157b52c166f125e89f62"
+ integrity sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==
+ dependencies:
+ "@types/debug" "^4.0.0"
+ debug "^4.0.0"
+ decode-named-character-reference "^1.0.0"
+ micromark-core-commonmark "^1.0.1"
+ micromark-factory-space "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-chunked "^1.0.0"
+ micromark-util-combine-extensions "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-encode "^1.0.0"
+ micromark-util-normalize-identifier "^1.0.0"
+ micromark-util-resolve-all "^1.0.0"
+ micromark-util-sanitize-uri "^1.0.0"
+ micromark-util-subtokenize "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.1"
+ uvu "^0.5.0"
+
+micromatch@^4.0.2, micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+mime@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
+ integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mimic-fn@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
+ integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
+
+mini-svg-data-uri@^1.2.3:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939"
+ integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==
+
+minimist@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+
+mri@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
+ integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
+
+mrmime@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27"
+ integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+nanoid@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
+ integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
+
+nlcst-to-string@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc"
+ integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==
+
+nlcst-to-string@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-3.1.0.tgz#359519a16f086114538fcbb454e86967c471f823"
+ integrity sha512-Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+
+node-domexception@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
+ integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
+
+node-fetch@^3.2.5:
+ version "3.2.10"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.10.tgz#e8347f94b54ae18b57c9c049ef641cef398a85c8"
+ integrity sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==
+ dependencies:
+ data-uri-to-buffer "^4.0.0"
+ fetch-blob "^3.1.4"
+ formdata-polyfill "^4.0.10"
+
+node-releases@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
+ integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+npm-run-path@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
+ integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==
+ dependencies:
+ path-key "^4.0.0"
+
+object-hash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
+ integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
+
+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==
+
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+onetime@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
+ integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
+ dependencies:
+ mimic-fn "^4.0.0"
+
+open@^8.4.0:
+ version "8.4.0"
+ resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
+ integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.0"
+
+ora@^6.1.0:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-6.1.2.tgz#7b3c1356b42fd90fb1dad043d5dbe649388a0bf5"
+ integrity sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==
+ dependencies:
+ bl "^5.0.0"
+ chalk "^5.0.0"
+ cli-cursor "^4.0.0"
+ cli-spinners "^2.6.1"
+ is-interactive "^2.0.0"
+ is-unicode-supported "^1.1.0"
+ log-symbols "^5.1.0"
+ strip-ansi "^7.0.1"
+ wcwidth "^1.0.1"
+
+p-limit@^2.2.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-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+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==
+
+parse-entities@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb"
+ integrity sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ character-entities "^2.0.0"
+ character-entities-legacy "^3.0.0"
+ character-reference-invalid "^2.0.0"
+ decode-named-character-reference "^1.0.0"
+ is-alphanumerical "^2.0.0"
+ is-decimal "^2.0.0"
+ is-hexadecimal "^2.0.0"
+
+parse-latin@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/parse-latin/-/parse-latin-5.0.0.tgz#a1963445f59fb9cfa3cb1ddf5f839bfeb0ee4b42"
+ integrity sha512-Ht+4/+AUySMS5HKGAiQpBmkFsHSoGrj6Y83flLCa5OIBdtsVkO3UD4OtboJ0O0vZiOznH02x8qlwg9KLUVXuNg==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ unist-util-modify-children "^2.0.0"
+ unist-util-visit-children "^1.0.0"
+
+parse5@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+path-browserify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
+ integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-key@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+ integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5"
+ integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==
+
+periscopic@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1"
+ integrity sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==
+ dependencies:
+ estree-walker "^3.0.0"
+ is-reference "^3.0.0"
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+
+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==
+
+pkg-dir@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+postcss-import@^14.1.0:
+ version "14.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0"
+ integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-import@^15.0.0:
+ version "15.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.0.0.tgz#0b66c25fdd9c0d19576e63c803cf39e4bad08822"
+ integrity sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-js@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00"
+ integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==
+ dependencies:
+ camelcase-css "^2.0.1"
+
+postcss-load-config@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855"
+ integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
+ dependencies:
+ lilconfig "^2.0.5"
+ yaml "^1.10.2"
+
+postcss-nested@5.0.6, postcss-nested@^5.0.5:
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc"
+ integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==
+ dependencies:
+ postcss-selector-parser "^6.0.6"
+
+postcss-selector-parser@6.0.10, postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6:
+ version "6.0.10"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
+ integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@^8.4.14, postcss@^8.4.16:
+ version "8.4.17"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5"
+ integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==
+ dependencies:
+ nanoid "^3.3.4"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+preferred-pm@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6"
+ integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==
+ dependencies:
+ find-up "^5.0.0"
+ find-yarn-workspace-root2 "1.2.16"
+ path-exists "^4.0.0"
+ which-pm "2.0.0"
+
+prettier-plugin-astro@^0.5.3:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/prettier-plugin-astro/-/prettier-plugin-astro-0.5.5.tgz#39bed9aa73b2e0b0f7aedff33eb56794af12e52f"
+ integrity sha512-tEJiPjTB1eVT5Czcbkj9GoRG/oMewOnG9x737p/hJUD5QXJmn7LiYFM2dKkX0i4A1fhhsGfXT+uqsAXcw2r8JQ==
+ dependencies:
+ "@astrojs/compiler" "^0.23.4"
+ prettier "^2.7.1"
+ sass-formatter "^0.7.5"
+ synckit "^0.7.0"
+
+prettier@^2.7.1:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
+ integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
+
+prismjs@^1.28.0:
+ version "1.29.0"
+ resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
+ integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
+
+prompts@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
+ integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
+property-information@^6.0.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22"
+ integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quick-lru@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
+ integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+
+read-cache@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+ integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
+ dependencies:
+ pify "^2.3.0"
+
+readable-stream@^3.4.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+recast@^0.20.5:
+ version "0.20.5"
+ resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae"
+ integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==
+ dependencies:
+ ast-types "0.14.2"
+ esprima "~4.0.0"
+ source-map "~0.6.1"
+ tslib "^2.0.1"
+
+rehype-parse@^8.0.0:
+ version "8.0.4"
+ resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-8.0.4.tgz#3d17c9ff16ddfef6bbcc8e6a25a99467b482d688"
+ integrity sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-from-parse5 "^7.0.0"
+ parse5 "^6.0.0"
+ unified "^10.0.0"
+
+rehype-raw@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4"
+ integrity sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-raw "^7.2.0"
+ unified "^10.0.0"
+
+rehype-stringify@^9.0.0, rehype-stringify@^9.0.3:
+ version "9.0.3"
+ resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz#70e3bd6d4d29e7acf36b802deed350305d2c3c17"
+ integrity sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-to-html "^8.0.0"
+ unified "^10.0.0"
+
+rehype@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.yarnpkg.com/rehype/-/rehype-12.0.1.tgz#68a317662576dcaa2565a3952e149d6900096bf6"
+ integrity sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ rehype-parse "^8.0.0"
+ rehype-stringify "^9.0.0"
+ unified "^10.0.0"
+
+remark-frontmatter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz#84560f7ccef114ef076d3d3735be6d69f8922309"
+ integrity sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-frontmatter "^1.0.0"
+ micromark-extension-frontmatter "^1.0.0"
+ unified "^10.0.0"
+
+remark-gfm@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f"
+ integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-gfm "^2.0.0"
+ micromark-extension-gfm "^2.0.0"
+ unified "^10.0.0"
+
+remark-mdx@^2.0.0:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.1.4.tgz#6a39054c26bfffe890aaa5f3d4487e7eb7ea6844"
+ integrity sha512-zZxHdd0s8xfMmIKcxhFoUT4x54VOJTUJ+lPys7ZR2Vcgb4xwuAwxvUfkVrsCTdo/lBVxLQv43bXVNu3ZIbahnA==
+ dependencies:
+ mdast-util-mdx "^2.0.0"
+ micromark-extension-mdxjs "^1.0.0"
+
+remark-parse@^10.0.0, remark-parse@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775"
+ integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-from-markdown "^1.0.0"
+ unified "^10.0.0"
+
+remark-rehype@^10.0.0, remark-rehype@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279"
+ integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-hast "^12.1.0"
+ unified "^10.0.0"
+
+remark-smartypants@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/remark-smartypants/-/remark-smartypants-2.0.0.tgz#836cff43ec139b2e5ec9e488d80596ed677d1cb2"
+ integrity sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==
+ dependencies:
+ retext "^8.1.0"
+ retext-smartypants "^5.1.0"
+ unist-util-visit "^4.1.0"
+
+resolve@^1.1.7, resolve@^1.17.0, resolve@^1.22.0, resolve@^1.22.1:
+ version "1.22.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
+ integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+restore-cursor@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9"
+ integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+retext-latin@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/retext-latin/-/retext-latin-3.1.0.tgz#72b0176af2c69a373fd0d37eadd3924418bb3a89"
+ integrity sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ parse-latin "^5.0.0"
+ unherit "^3.0.0"
+ unified "^10.0.0"
+
+retext-smartypants@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/retext-smartypants/-/retext-smartypants-5.2.0.tgz#da9cb79cc60f36aa33a20a462dfc663bec0068b4"
+ integrity sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ nlcst-to-string "^3.0.0"
+ unified "^10.0.0"
+ unist-util-visit "^4.0.0"
+
+retext-stringify@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/retext-stringify/-/retext-stringify-3.1.0.tgz#46ed45e077bfc4a8334977f6c2d6611e1d36263a"
+ integrity sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ nlcst-to-string "^3.0.0"
+ unified "^10.0.0"
+
+retext@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/retext/-/retext-8.1.0.tgz#c43437fb84cd46285ad240a9279142e239bada8d"
+ integrity sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==
+ dependencies:
+ "@types/nlcst" "^1.0.0"
+ retext-latin "^3.0.0"
+ retext-stringify "^3.0.0"
+ unified "^10.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+roarr@^2.15.3:
+ version "2.15.4"
+ resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
+ integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==
+ dependencies:
+ boolean "^3.0.1"
+ detect-node "^2.0.4"
+ globalthis "^1.0.1"
+ json-stringify-safe "^5.0.1"
+ semver-compare "^1.0.0"
+ sprintf-js "^1.1.2"
+
+rollup@~2.78.0:
+ version "2.78.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f"
+ integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+s.color@0.0.15:
+ version "0.0.15"
+ resolved "https://registry.yarnpkg.com/s.color/-/s.color-0.0.15.tgz#6b32cd22d8dba95703a5122ddede2020a1560186"
+ integrity sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==
+
+sade@^1.7.3:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
+ integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
+ dependencies:
+ mri "^1.1.0"
+
+safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+sass-formatter@^0.7.5:
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/sass-formatter/-/sass-formatter-0.7.5.tgz#60fc3756267368d82877c6abf2c148f0c9291d6d"
+ integrity sha512-NKFP8ddjhUYi6A/iD1cEtzkEs91U61kzqe3lY9SVNuvX7LGc88xnEN0mmsWL7Ol//YTi2GL/ol7b9XZ2+hgXuA==
+ dependencies:
+ suf-log "^2.5.3"
+
+section-matter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
+ integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
+ dependencies:
+ extend-shallow "^2.0.1"
+ kind-of "^6.0.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
+
+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.2, semver@^7.3.7:
+ version "7.3.8"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
+ integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+ dependencies:
+ lru-cache "^6.0.0"
+
+serialize-error@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18"
+ integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==
+ dependencies:
+ type-fest "^0.13.1"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shiki@^0.11.1:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.11.1.tgz#df0f719e7ab592c484d8b73ec10e215a503ab8cc"
+ integrity sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==
+ dependencies:
+ jsonc-parser "^3.0.0"
+ vscode-oniguruma "^1.6.1"
+ vscode-textmate "^6.0.0"
+
+signal-exit@^3.0.2, signal-exit@^3.0.7:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+sirv@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.2.tgz#128b9a628d77568139cff85703ad5497c46a4760"
+ integrity sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==
+ dependencies:
+ "@polka/url" "^1.0.0-next.20"
+ mrmime "^1.0.0"
+ totalist "^3.0.0"
+
+sisteransi@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+ integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
+
+slash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
+ integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map@^0.7.0, source-map@^0.7.3:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+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"
+ integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==
+
+sprintf-js@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
+ integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
+string-width@^4.1.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^5.0.1, string-width@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
+ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+stringify-entities@^4.0.0, stringify-entities@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8"
+ integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==
+ dependencies:
+ character-entities-html4 "^2.0.0"
+ character-entities-legacy "^3.0.0"
+
+strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
+ integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
+ dependencies:
+ ansi-regex "^6.0.1"
+
+strip-bom-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
+ integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
+
+strip-bom@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+ integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+
+strip-final-newline@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
+ integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
+
+strnum@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
+ integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
+
+style-to-object@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
+ integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
+ dependencies:
+ inline-style-parser "0.1.1"
+
+suf-log@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/suf-log/-/suf-log-2.5.3.tgz#0919a7fceea532a99b578c97814c4e335b2d64d1"
+ integrity sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==
+ dependencies:
+ s.color "0.0.15"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-esm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-esm/-/supports-esm-1.0.0.tgz#7cc567747d0745e2b77b331c9b9cae13cf4dc60e"
+ integrity sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==
+ dependencies:
+ has-package-exports "^1.1.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+synckit@^0.7.0:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.7.3.tgz#99d4c1d09aaf03514801ff719b9c2bd80914a64d"
+ integrity sha512-jNroMv7Juy+mJ/CHW5H6TzsLWpa1qck6sCHbkv8YTur+irSq2PjbvmGnm2gy14BUQ6jF33vyR4DPssHqmqsDQw==
+ dependencies:
+ "@pkgr/utils" "^2.3.0"
+ tslib "^2.4.0"
+
+tailwindcss@^3.0.24:
+ version "3.1.8"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.8.tgz#4f8520550d67a835d32f2f4021580f9fddb7b741"
+ integrity sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==
+ dependencies:
+ arg "^5.0.2"
+ chokidar "^3.5.3"
+ color-name "^1.1.4"
+ detective "^5.2.1"
+ didyoumean "^1.2.2"
+ dlv "^1.1.3"
+ fast-glob "^3.2.11"
+ glob-parent "^6.0.2"
+ is-glob "^4.0.3"
+ lilconfig "^2.0.6"
+ normalize-path "^3.0.0"
+ object-hash "^3.0.0"
+ picocolors "^1.0.0"
+ postcss "^8.4.14"
+ postcss-import "^14.1.0"
+ postcss-js "^4.0.0"
+ postcss-load-config "^3.1.4"
+ postcss-nested "5.0.6"
+ postcss-selector-parser "^6.0.10"
+ postcss-value-parser "^4.2.0"
+ quick-lru "^5.1.1"
+ resolve "^1.22.1"
+
+tiny-glob@^0.2.9:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2"
+ integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==
+ dependencies:
+ globalyzer "0.1.0"
+ globrex "^0.1.2"
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+totalist@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.0.tgz#4ef9c58c5f095255cdc3ff2a0a55091c57a3a1bd"
+ integrity sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==
+
+trim-lines@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338"
+ integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==
+
+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==
+
+tsconfig-resolver@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/tsconfig-resolver/-/tsconfig-resolver-3.0.1.tgz#c9e62e328ecfbeaae4a4f1131a92cdbed12350c4"
+ integrity sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==
+ dependencies:
+ "@types/json5" "^0.0.30"
+ "@types/resolve" "^1.17.0"
+ json5 "^2.1.3"
+ resolve "^1.17.0"
+ strip-bom "^4.0.0"
+ type-fest "^0.13.1"
+
+tslib@^2.0.1, tslib@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
+ integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+
+tsm@^2.1.4:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/tsm/-/tsm-2.2.2.tgz#0edacd62bbe53a87e8fc9c260ab65a7dbac5de06"
+ integrity sha512-bXkt675NbbqfwRHSSn8kSNEEHvoIUFDM9G6tUENkjEKpAEbrEzieO3PxUiRJylMw8fEGpcf5lSjadzzz12pc2A==
+ dependencies:
+ esbuild "^0.14.0"
+
+type-fest@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
+ integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
+
+type-fest@^2.5.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
+ integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
+
+typescript@*:
+ version "4.8.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6"
+ integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==
+
+unherit@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unherit/-/unherit-3.0.0.tgz#83d69af9d8e3afd28fa51cff9ee84de7a1d82a6b"
+ integrity sha512-UmvIQZGEc9qdLIQ8mv8/61n6PiMgfbOoASPKHpCvII5srShCQSa6jSjBjlZOR4bxt2XnT6uo6csmPKRi+zQ0Jg==
+
+unified@^10.0.0, unified@^10.1.2:
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df"
+ integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ bail "^2.0.0"
+ extend "^3.0.0"
+ is-buffer "^2.0.0"
+ is-plain-obj "^4.0.0"
+ trough "^2.0.0"
+ vfile "^5.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"
+ integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-generated@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113"
+ integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==
+
+unist-util-is@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236"
+ integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==
+
+unist-util-map@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-map/-/unist-util-map-3.1.2.tgz#c389677fd6ce5c0cc10af44115acaca7944a3569"
+ integrity sha512-WLA2R6x/UaopedG2poaWLShf5LCi+BNa6mMkACdjft23PHou4v85PvZItjbO2XgXvukMP365PlL/DrbuMgr3eg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-modify-children@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz#9c9c30d4e32502aabb3fde10d7872a17c86801e2"
+ integrity sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==
+ dependencies:
+ array-iterate "^1.0.0"
+
+unist-util-position-from-estree@^1.0.0, unist-util-position-from-estree@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz#96f4d543dfb0428edc01ebb928570b602d280c4c"
+ integrity sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-position@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.3.tgz#5290547b014f6222dff95c48d5c3c13a88fadd07"
+ integrity sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-remove-position@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz#d5b46a7304ac114c8d91990ece085ca7c2c135c8"
+ integrity sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-visit "^4.0.0"
+
+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"
+ integrity sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-visit-children@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz#e8a087e58a33a2815f76ea1901c15dec2cb4b432"
+ integrity sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==
+
+unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz#868f353e6fce6bf8fa875b251b0f4fec3be709bb"
+ integrity sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+
+unist-util-visit@^4.0.0, unist-util-visit@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz#1c4842d70bd3df6cc545276f5164f933390a9aad"
+ integrity sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^5.1.1"
+
+update-browserslist-db@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
+ integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+util-deprecate@^1.0.1, util-deprecate@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+uvu@^0.5.0:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df"
+ integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==
+ dependencies:
+ dequal "^2.0.0"
+ diff "^5.0.0"
+ kleur "^4.0.3"
+ sade "^1.7.3"
+
+vfile-location@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.0.1.tgz#06f2b9244a3565bef91f099359486a08b10d3a95"
+ integrity sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ vfile "^5.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"
+ integrity sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+
+vfile@^5.0.0, vfile@^5.3.2:
+ version "5.3.5"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.5.tgz#ec2e206b1414f561c85b7972bb1eeda8ab47ee61"
+ integrity sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+vite@~3.1.3:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-3.1.6.tgz#4c6db3000326342c918204a42a130fb3ffed2414"
+ integrity sha512-qMXIwnehvvcK5XfJiXQUiTxoYAEMKhM+jqCY6ZSTKFBKu1hJnAKEzP3AOcnTerI0cMZYAaJ4wpW1wiXLMDt4mA==
+ dependencies:
+ esbuild "^0.15.9"
+ postcss "^8.4.16"
+ resolve "^1.22.1"
+ rollup "~2.78.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vscode-css-languageservice@^6.0.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-6.1.1.tgz#36daefd96e56b7453da16ff8c16f4ee693f32521"
+ integrity sha512-7d2NCq2plT0njAKmGZ11uof95y2fwbgq8QuToE3kX9uYQfVmejHX2/lFGKbK5AV5+Ja0L80UZoU0QspwqMKMHA==
+ dependencies:
+ vscode-languageserver-textdocument "^1.0.7"
+ vscode-languageserver-types "^3.17.2"
+ vscode-nls "^5.2.0"
+ vscode-uri "^3.0.4"
+
+vscode-html-languageservice@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-5.0.2.tgz#a66cb9d779f3094a8d14dd3a8f7935748435fd2a"
+ integrity sha512-TQmeyE14Ure/w/S+RV2IItuRWmw/i1QaS+om6t70iHCpamuTTWnACQPMSltVGm/DlbdyMquUePJREjd/h3AVkQ==
+ dependencies:
+ vscode-languageserver-textdocument "^1.0.7"
+ vscode-languageserver-types "^3.17.2"
+ vscode-nls "^5.2.0"
+ vscode-uri "^3.0.4"
+
+vscode-jsonrpc@8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz#f239ed2cd6004021b6550af9fd9d3e47eee3cac9"
+ integrity sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==
+
+vscode-languageserver-protocol@3.17.2, vscode-languageserver-protocol@^3.17.1:
+ version "3.17.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz#beaa46aea06ed061576586c5e11368a9afc1d378"
+ integrity sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==
+ dependencies:
+ vscode-jsonrpc "8.0.2"
+ vscode-languageserver-types "3.17.2"
+
+vscode-languageserver-textdocument@^1.0.1, vscode-languageserver-textdocument@^1.0.4, vscode-languageserver-textdocument@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz#16df468d5c2606103c90554ae05f9f3d335b771b"
+ integrity sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==
+
+vscode-languageserver-types@3.17.2, vscode-languageserver-types@^3.15.1, vscode-languageserver-types@^3.17.1, vscode-languageserver-types@^3.17.2:
+ version "3.17.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2"
+ integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==
+
+vscode-languageserver@^8.0.1:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.0.2.tgz#cfe2f0996d9dfd40d3854e786b2821604dfec06d"
+ integrity sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==
+ dependencies:
+ vscode-languageserver-protocol "3.17.2"
+
+vscode-nls@^5.0.0, vscode-nls@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.2.0.tgz#3cb6893dd9bd695244d8a024bdf746eea665cc3f"
+ integrity sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==
+
+vscode-oniguruma@^1.6.1:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz#aeb9771a2f1dbfc9083c8a7fdd9cccaa3f386607"
+ integrity sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==
+
+vscode-textmate@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-6.0.0.tgz#a3777197235036814ac9a92451492f2748589210"
+ integrity sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==
+
+vscode-uri@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
+ integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
+
+vscode-uri@^3.0.3, vscode-uri@^3.0.4:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.6.tgz#5e6e2e1a4170543af30151b561a41f71db1d6f91"
+ integrity sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
+ dependencies:
+ defaults "^1.0.3"
+
+web-namespaces@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692"
+ integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
+
+web-streams-polyfill@^3.0.3:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6"
+ integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==
+
+which-pm-runs@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.1.0.tgz#35ccf7b1a0fce87bd8b92a478c9d045785d3bf35"
+ integrity sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==
+
+which-pm@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae"
+ integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==
+ dependencies:
+ load-yaml-file "^0.2.0"
+ path-exists "^4.0.0"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+widest-line@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2"
+ integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==
+ dependencies:
+ string-width "^5.0.1"
+
+wrap-ansi@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3"
+ integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==
+ dependencies:
+ ansi-styles "^6.1.0"
+ string-width "^5.0.1"
+ strip-ansi "^7.0.1"
+
+xtend@^4.0.2:
+ 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"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yargs-parser@^21.0.1:
+ version "21.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+zod@^3.17.3:
+ version "3.19.1"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.19.1.tgz#112f074a97b50bfc4772d4ad1576814bd8ac4473"
+ integrity sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA==
+
+zwitch@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1"
+ integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==