diff --git a/package.json b/package.json
index b2e534a6..2b5ca0d0 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,7 @@
"workspaces": {
"packages": [
"packages/mdx",
+ "packages/core",
"playground",
"site"
]
diff --git a/packages/core/app/code.tsx b/packages/core/app/code.tsx
new file mode 100644
index 00000000..d9211318
--- /dev/null
+++ b/packages/core/app/code.tsx
@@ -0,0 +1,12 @@
+"use client"
+
+import React from "react"
+import { FlipCode } from "../src/flip-tokens"
+
+export function Code({ children, tokens }) {
+ return (
+
+
+
+ )
+}
diff --git a/packages/core/app/hello.mdx b/packages/core/app/hello.mdx
new file mode 100644
index 00000000..0a4554d1
--- /dev/null
+++ b/packages/core/app/hello.mdx
@@ -0,0 +1,40 @@
+import { Hike } from "./hike"
+import { Scrollycoding } from "./scrollycoding"
+import { Slideshow } from "./slideshow"
+import { Code } from "./code"
+
+## This is an h2 from mdx
+
+And a paragraph
+
+
+
+hey
+
+```js
+console.log(1)
+// mark
+console.log(2)
+```
+
+ho
+
+---
+
+lets
+
+```js
+console.log("hello 3")
+```
+
+go
+
+---
+
+Bye
+
+```js
+console.log("hello4")
+```
+
+
diff --git a/packages/core/app/hike.tsx b/packages/core/app/hike.tsx
new file mode 100644
index 00000000..de1639ae
--- /dev/null
+++ b/packages/core/app/hike.tsx
@@ -0,0 +1,30 @@
+"use client"
+import React from "react"
+
+export function Hike({ children, as, ...rest }) {
+ // console.log("client steps", children)
+
+ const steps = React.Children.toArray(children).map(
+ (stepElement: any) => {
+ const slotElements = React.Children.toArray(
+ stepElement?.props?.children
+ )
+ const step = {}
+
+ slotElements.forEach((slotElement: any) => {
+ step[slotElement.props.className] =
+ slotElement.props.children
+ })
+
+ return step
+ }
+ )
+
+ // console.log("steps", steps)
+
+ return React.createElement(
+ as,
+ { steps, ...rest },
+ children
+ )
+}
diff --git a/packages/core/app/layout.tsx b/packages/core/app/layout.tsx
new file mode 100644
index 00000000..631f7910
--- /dev/null
+++ b/packages/core/app/layout.tsx
@@ -0,0 +1,33 @@
+import { Inter } from "next/font/google"
+
+import { Overpass } from "next/font/google"
+
+const overpass = Overpass({
+ subsets: ["latin"],
+ variable: "--font-overpass",
+ display: "swap",
+})
+const inter = Inter({
+ subsets: ["latin"],
+ display: "swap",
+})
+
+export const metadata = {
+ title: "Next.js",
+ description: "Generated by Next.js",
+}
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+ {children}
+
+ )
+}
diff --git a/packages/core/app/page.tsx b/packages/core/app/page.tsx
new file mode 100644
index 00000000..f69c1752
--- /dev/null
+++ b/packages/core/app/page.tsx
@@ -0,0 +1,33 @@
+// app/page.tsx
+import Link from "next/link"
+import { allPosts, Post } from "contentlayer/generated"
+
+function PostCard(post: Post) {
+ return (
+
+
+
+ {post.title}
+
+
+
+ )
+}
+
+export default function Home() {
+ const posts = allPosts
+
+ return (
+
+
+ Next.js + Contentlayer Example
+
+ {posts.map((post, idx) => (
+
+ ))}
+
+ )
+}
diff --git a/packages/core/app/playthrough.tsx b/packages/core/app/playthrough.tsx
new file mode 100644
index 00000000..1c438a4c
--- /dev/null
+++ b/packages/core/app/playthrough.tsx
@@ -0,0 +1,76 @@
+"use client"
+
+import React from "react"
+
+export function Playthrough({ steps }) {
+ const [index, setIndex] = React.useState(0)
+ const step = steps[index]
+ return (
+
+ )
+}
diff --git a/packages/core/app/posts/[slug]/page.tsx b/packages/core/app/posts/[slug]/page.tsx
new file mode 100644
index 00000000..55657b12
--- /dev/null
+++ b/packages/core/app/posts/[slug]/page.tsx
@@ -0,0 +1,53 @@
+import { allPosts } from "contentlayer/generated"
+
+// import { Hike } from "../../hike"
+// import { Scrollycoding } from "../../scrollycoding"
+// import { Slideshow } from "../../slideshow"
+// import { Code } from "../../code"
+import { PostClient } from "./post.client"
+import "./styles.css"
+
+export const generateStaticParams = async () =>
+ allPosts.map(post => ({ slug: post._raw.flattenedPath }))
+
+export const generateMetadata = ({
+ params,
+}: {
+ params: { slug: string }
+}) => {
+ const post = allPosts.find(
+ post => post._raw.flattenedPath === params.slug
+ )
+ if (!post)
+ throw new Error(
+ `Post not found for slug: ${params.slug}`
+ )
+ return { title: post.title }
+}
+
+const PostLayout = ({
+ params,
+}: {
+ params: { slug: string }
+}) => {
+ const post = allPosts.find(
+ post => post._raw.flattenedPath === params.slug
+ )
+ if (!post)
+ throw new Error(
+ `Post not found for slug: ${params.slug}`
+ )
+
+ return (
+
+
+
{post.title}
+
+
+
+ )
+}
+
+export default PostLayout
diff --git a/packages/core/app/posts/[slug]/post.client.tsx b/packages/core/app/posts/[slug]/post.client.tsx
new file mode 100644
index 00000000..f7c51902
--- /dev/null
+++ b/packages/core/app/posts/[slug]/post.client.tsx
@@ -0,0 +1,7 @@
+"use client"
+import { useMDXComponent } from "next-contentlayer/hooks"
+
+export function PostClient({ code }) {
+ const MDXContent = useMDXComponent(code)
+ return
+}
diff --git a/packages/core/app/posts/[slug]/styles.css b/packages/core/app/posts/[slug]/styles.css
new file mode 100644
index 00000000..1cbcbb40
--- /dev/null
+++ b/packages/core/app/posts/[slug]/styles.css
@@ -0,0 +1,3 @@
+.mark {
+ background: #222299;
+}
diff --git a/packages/core/app/scrollycoding.tsx b/packages/core/app/scrollycoding.tsx
new file mode 100644
index 00000000..1c67d0dc
--- /dev/null
+++ b/packages/core/app/scrollycoding.tsx
@@ -0,0 +1,41 @@
+"use client"
+
+import React from "react"
+
+export function Scrollycoding({ steps }) {
+ // console.log("Scrollycoding", steps)
+ const [currentStep, setCurrentStep] = React.useState(0)
+ return (
+
+
+ {steps.map((step, i) => {
+ return (
+
setCurrentStep(i)}
+ >
+ {step.children}
+
+ )
+ })}
+
+
+ {steps[currentStep].code}
+
+
+ )
+}
diff --git a/packages/core/app/slideshow.tsx b/packages/core/app/slideshow.tsx
new file mode 100644
index 00000000..abd3ca3f
--- /dev/null
+++ b/packages/core/app/slideshow.tsx
@@ -0,0 +1,46 @@
+"use client"
+
+import React from "react"
+
+export function Slideshow({ steps }) {
+ // console.log("Scrollycoding", steps)
+ const [currentStep, setCurrentStep] = React.useState(0)
+ const step = steps[currentStep]
+ return (
+
+
+ setCurrentStep(currentStep - 1)}
+ disabled={currentStep === 0}
+ >
+ Prev
+
+
+ setCurrentStep(parseInt(e.target.value))
+ }
+ />
+ setCurrentStep(currentStep + 1)}
+ disabled={currentStep === steps.length - 1}
+ >
+ Next
+
+
+
{step.children}
+
{step.code}
+
+ )
+}
diff --git a/packages/core/contentlayer.config.ts b/packages/core/contentlayer.config.ts
new file mode 100644
index 00000000..dd267d67
--- /dev/null
+++ b/packages/core/contentlayer.config.ts
@@ -0,0 +1,28 @@
+import {
+ defineDocumentType,
+ makeSource,
+} from "contentlayer/source-files"
+import { myPlugin } from "./src/remark/remark"
+
+export const Post = defineDocumentType(() => ({
+ name: "Post",
+ filePathPattern: `**/*.mdx`,
+ contentType: "mdx",
+ fields: {
+ title: { type: "string", required: true },
+ },
+ computedFields: {
+ url: {
+ type: "string",
+ resolve: post => `/posts/${post._raw.flattenedPath}`,
+ },
+ },
+}))
+
+export default makeSource({
+ contentDirPath: "posts",
+ mdx: {
+ remarkPlugins: [myPlugin],
+ },
+ documentTypes: [Post],
+})
diff --git a/packages/core/mdx-components.tsx b/packages/core/mdx-components.tsx
new file mode 100644
index 00000000..b41588c0
--- /dev/null
+++ b/packages/core/mdx-components.tsx
@@ -0,0 +1,17 @@
+import type { MDXComponents } from "mdx/types"
+
+// This file allows you to provide custom React components
+// to be used in MDX files. You can import and use any
+// React component you want, including components from
+// other libraries.
+
+// This file is required to use MDX in `app` directory.
+export function useMDXComponents(
+ components: MDXComponents
+): MDXComponents {
+ return {
+ // Allows customizing built-in components, e.g. to add styling.
+ // h1: ({ children }) => {children} ,
+ ...components,
+ }
+}
diff --git a/packages/core/next-env.d.ts b/packages/core/next-env.d.ts
new file mode 100644
index 00000000..4f11a03d
--- /dev/null
+++ b/packages/core/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/packages/core/next.config.js b/packages/core/next.config.js
new file mode 100644
index 00000000..83d1a08c
--- /dev/null
+++ b/packages/core/next.config.js
@@ -0,0 +1,10 @@
+// using js instead of mjs because of https://github.com/contentlayerdev/contentlayer/issues/272#issuecomment-1237021441
+const { withContentlayer } = require("next-contentlayer")
+
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ reactStrictMode: true,
+ swcMinify: true,
+}
+
+module.exports = withContentlayer(nextConfig)
diff --git a/packages/core/package.json b/packages/core/package.json
new file mode 100644
index 00000000..f0abd39f
--- /dev/null
+++ b/packages/core/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@code-hike/core",
+ "version": "0.9.0",
+ "scripts": {
+ "dev": "next dev",
+ "test": "vitest"
+ },
+ "devDependencies": {
+ "@mdx-js/loader": "^2.3.0",
+ "@mdx-js/react": "^2.3.0",
+ "@next/mdx": "^13.4.19",
+ "@types/mdx": "^2.0.6",
+ "@vitejs/plugin-react": "^4.0.4",
+ "contentlayer": "^0.3.4",
+ "jsdom": "^22.1.0",
+ "next": "^13.4.19",
+ "next-contentlayer": "^0.3.4",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "unist-util-visit": "^5.0.0",
+ "vitest": "^0.34.3"
+ },
+ "dependencies": {
+ "@code-hike/lighter": "^0.8.2",
+ "diff": "^5.1.0"
+ }
+}
diff --git a/packages/core/posts/post-01.mdx b/packages/core/posts/post-01.mdx
new file mode 100644
index 00000000..71beed0f
--- /dev/null
+++ b/packages/core/posts/post-01.mdx
@@ -0,0 +1,45 @@
+---
+title: My First Post
+---
+
+import { Hike } from "../app/hike"
+import { Scrollycoding } from "../app/scrollycoding"
+import { Slideshow } from "../app/slideshow"
+import { Code } from "../app/code"
+
+## This is an h2 from absss
+
+And a paragraphs
+
+
+
+hey
+
+```js
+console.log(1)
+
+// mark
+console.log(2)
+```
+
+ho
+
+---
+
+lets
+
+```js
+console.log(2, 0)
+```
+
+go
+
+---
+
+Bye
+
+```js
+console.log("hello4")
+```
+
+
diff --git a/packages/core/posts/post-03.mdx b/packages/core/posts/post-03.mdx
new file mode 100644
index 00000000..bbcaec4f
--- /dev/null
+++ b/packages/core/posts/post-03.mdx
@@ -0,0 +1,11 @@
+---
+title: Post 3
+---
+
+import { Test } from "./test"
+
+## This is an h2 from mdx
+
+And a paragraph
+
+
diff --git a/packages/core/posts/svelte.mdx b/packages/core/posts/svelte.mdx
new file mode 100644
index 00000000..6a233366
--- /dev/null
+++ b/packages/core/posts/svelte.mdx
@@ -0,0 +1,74 @@
+---
+title: Learn Svelte
+---
+
+import { Hike } from "../app/hike"
+import { Playthrough } from "../app/playthrough"
+import { Code } from "../app/code"
+
+
+
+Welcome to the Svelte tutorial! This will teach you everything you need to know to easily build web applications of all sizes, with high performance and a small footprint.
+
+You can also consult the [API docs](https://svelte.dev/docs) and the [examples](https://svelte.dev/examples), or — if you're impatient to start hacking on your machine locally — create a project with `npm init svelte`.
+
+## What is Svelte?
+
+Svelte is a tool for building web applications. Like other user interface frameworks, it allows you to build your app _declaratively_ out of components that combine markup, styles and behaviours.
+
+These components are _compiled_ into small, efficient JavaScript modules that eliminate overhead traditionally associated with UI frameworks.
+
+You can build your entire app with Svelte (for example, using an application framework like [SvelteKit](https://kit.svelte.dev/), which this tutorial will cover), or you can add it incrementally to an existing codebase. You can also ship components as standalone packages that work anywhere.
+
+## How to use this tutorial
+
+> You'll need to have basic familiarity with HTML, CSS and JavaScript to understand Svelte.
+
+This tutorial is split into four main parts:
+
+- [Basic Svelte](https://learn.svelte.dev/tutorial/welcome-to-svelte) (you are here)
+- [Advanced Svelte](https://learn.svelte.dev/tutorial/tweens)
+- [Basic SvelteKit](https://learn.svelte.dev/tutorial/introducing-sveltekit)
+- [Advanced SvelteKit](https://learn.svelte.dev/tutorial/optional-params)
+
+Each section will present an exercise designed to illustrate a feature. Later exercises build on the knowledge gained in earlier ones, so it's recommended that you go from start to finish. If necessary, you can navigate via the menu above.
+
+```svelte src/App.svelte
+Welcome!
+```
+
+If you get stuck, you can click the `solve` button to the left of the editorin the top right of the editor view. (Use the toggle below to switch between tutorial and editor views. The `solve` button is disabled on sections like this one that don't include an exercise.) Try not to rely on it too much; you will learn faster by figuring out where to put each suggested code block and manually typing it in to the editor.
+
+---
+
+## Part 1 / Introduction / Your first component
+
+In Svelte, an application is composed from one or more _components_. A component is a reusable self-contained block of code that encapsulates HTML, CSS and JavaScript that belong together, written into a `.svelte` file. The `App.svelte` file, open in the code editor to the right, is a simple component.
+
+## Adding data
+
+A component that just renders some static markup isn't very interesting. Let's add some data.
+
+First, add a script tag to your component and declare a `name` variable:
+
+```svelte App.svelte
+
+
+Hello world!
+```
+
+Then, we can refer to `name` in the markup:
+
+```svelte App.svelte
+Hello {name}!
+```
+
+Inside the curly braces, we can put any JavaScript we want. Try changing `name` to `name.toUpperCase()` for a shoutier greeting.
+
+```svelte App.svelte
+Hello {name.toUpperCase()}!
+```
+
+
diff --git a/packages/core/posts/test.client.tsx b/packages/core/posts/test.client.tsx
new file mode 100644
index 00000000..c0dc18cf
--- /dev/null
+++ b/packages/core/posts/test.client.tsx
@@ -0,0 +1,14 @@
+"use client"
+
+import React from "react"
+
+export function TestClient() {
+ const [x, setX] = React.useState(0)
+ return (
+
+
Test Client
+
{x}
+
setX(x + 1)}>+
+
+ )
+}
diff --git a/packages/core/posts/test.tsx b/packages/core/posts/test.tsx
new file mode 100644
index 00000000..47511247
--- /dev/null
+++ b/packages/core/posts/test.tsx
@@ -0,0 +1,11 @@
+"use client"
+
+import { TestClient } from "./test.client"
+
+export function Test() {
+ return (
+
+ Test server
+
+ )
+}
diff --git a/packages/core/src/differ.test.ts b/packages/core/src/differ.test.ts
new file mode 100644
index 00000000..7248bd71
--- /dev/null
+++ b/packages/core/src/differ.test.ts
@@ -0,0 +1,45 @@
+import { test } from "vitest"
+import { diff } from "./differ"
+import { preload } from "@code-hike/lighter"
+import { tokenize } from "./tokens/code-to-tokens"
+
+test.only("differ withIds", async () => {
+ const tokens = await tokenize(
+ " a b c ",
+ "javascript",
+ "github-dark"
+ )
+ const result = diff(null, tokens)
+
+ console.log(result)
+})
+
+test("differ", async () => {
+ const result = await getTokens("a b c d", "a c f d g")
+ console.log(result)
+})
+
+test("differ deleted id", async () => {
+ const result = await getTokens("a b c", "a d c")
+ console.log(result)
+})
+
+async function getTokens(prev, next) {
+ await preload(["javascript"], "github-dark")
+
+ const prevTokens = await tokenize(
+ prev,
+ "javascript",
+ "github-dark"
+ )
+ const nextTokens = await tokenize(
+ next,
+ "javascript",
+ "github-dark"
+ )
+
+ const result = diff(diff(null, prevTokens), nextTokens)
+ return result
+}
+
+// can a new token get the id of a removed one, duplicate ids?
diff --git a/packages/core/src/differ.ts b/packages/core/src/differ.ts
new file mode 100644
index 00000000..e9a8b878
--- /dev/null
+++ b/packages/core/src/differ.ts
@@ -0,0 +1,156 @@
+import { diffArrays } from "diff"
+import { Token } from "@code-hike/lighter"
+import {
+ TokenOrGroup,
+ TokenWithId,
+ TokenWithIdOrGroup,
+ WhitespaceToken,
+} from "./types"
+
+export function withIds(
+ tokens: TokenOrGroup[],
+ start: number = 0
+) {
+ let id = start
+ return tokens.map(tokenOrGroup => {
+ if ("tokens" in tokenOrGroup) {
+ const groupTokens = withIds(tokenOrGroup.tokens, id)
+ id += groupTokens.length
+ return {
+ ...tokenOrGroup,
+ tokens: groupTokens,
+ }
+ } else if (!tokenOrGroup.style) {
+ return tokenOrGroup as WhitespaceToken
+ }
+ return {
+ ...tokenOrGroup,
+ id: id++,
+ }
+ })
+}
+
+export function diff(
+ prev: TokenWithIdOrGroup[],
+ next: TokenOrGroup[]
+): TokenWithIdOrGroup[] {
+ console.log({ next })
+ if (!prev) {
+ return withIds(next)
+ }
+
+ const ps = toOnlyTokens(prev as any)
+ const ns = toOnlyTokens(next as any)
+
+ const result = diffArrays(ps, ns, {
+ comparator: (a, b) => a.content == b.content,
+ })
+
+ // highest id in ps
+ let highestId = 0
+ ps.forEach(t => {
+ if (t.id > highestId) {
+ highestId = t.id
+ }
+ })
+
+ const tokensWithId: TokenWithId[] = []
+ let nId = 0
+ let pId = 0
+ result.forEach(part => {
+ const { added, removed, count, value } = part
+ if (added) {
+ for (let i = 0; i < count; i++) {
+ tokensWithId.push({
+ ...ns[nId++],
+ id: ++highestId,
+ })
+ }
+ } else if (removed) {
+ value.forEach((t: TokenWithId) => {
+ pId++
+ tokensWithId.push({
+ ...t,
+ style: {
+ ...t.style,
+ position: "absolute",
+ opacity: 0,
+ },
+ deleted: true,
+ })
+ })
+ } else {
+ value.forEach(_ => {
+ tokensWithId.push({
+ ...ns[nId++],
+ id: ps[pId].id,
+ })
+ pId++
+ })
+ }
+ })
+
+ const tokens = replaceTokens(next, tokensWithId)
+
+ return tokens
+}
+
+function replaceTokens(
+ tokens: TokenOrGroup[],
+ tokensWithId: TokenWithId[]
+): TokenWithIdOrGroup[] {
+ const result: TokenWithIdOrGroup[] = []
+
+ tokens.forEach(tokenOrGroup => {
+ if ("tokens" in tokenOrGroup) {
+ result.push({
+ ...tokenOrGroup,
+ tokens: replaceTokens(
+ tokenOrGroup.tokens,
+ tokensWithId
+ ),
+ })
+ } else if (!tokenOrGroup.style) {
+ result.push(tokenOrGroup as WhitespaceToken)
+ } else {
+ while (
+ tokensWithId[0]?.deleted ||
+ (tokensWithId[0] && !tokensWithId[0]?.style)
+ ) {
+ result.push(tokensWithId.shift())
+ }
+
+ result.push(tokensWithId.shift())
+
+ while (
+ tokensWithId[0]?.deleted ||
+ (tokensWithId[0] && !tokensWithId[0]?.style)
+ ) {
+ result.push(tokensWithId.shift())
+ }
+ }
+ })
+
+ return result
+}
+
+// flat annotations and ignore whitespace
+function toOnlyTokens(
+ tokens: ({ tokens: T[] } | T)[]
+): T[] {
+ return (tokens as TokenOrGroup[]).flatMap(
+ tokenOrGroup => {
+ if ("tokens" in tokenOrGroup) {
+ return toOnlyTokens(tokenOrGroup.tokens)
+ }
+ if (
+ !tokenOrGroup.style ||
+ // was deleted
+ (tokenOrGroup as any).style?.position === "absolute"
+ ) {
+ return []
+ }
+ return [tokenOrGroup]
+ }
+ ) as T[]
+}
diff --git a/packages/core/src/flip-animate.js b/packages/core/src/flip-animate.js
new file mode 100644
index 00000000..43d8db7e
--- /dev/null
+++ b/packages/core/src/flip-animate.js
@@ -0,0 +1,208 @@
+const config = {
+ removeDuration: 100,
+ moveDuration: 300,
+ addDuration: 300,
+}
+
+export function animate(
+ elements,
+ firstSnapshot,
+ lastSnapshot
+) {
+ const groups = {
+ removed: [],
+ moved: [],
+ forwards: [],
+ backwards: [],
+ added: [],
+ }
+
+ let previousKind = null
+ elements.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+
+ const kind = classify(first, last)
+ if (!kind) {
+ // untouched
+ previousKind = null
+ return
+ }
+
+ // todo don't group "moves" when translate is different
+ if (previousKind !== kind) {
+ previousKind = kind
+ groups[kind].push([])
+ }
+
+ groups[kind][groups[kind].length - 1].push(el)
+ })
+
+ // sort moved, first bwd moves, then fwd moves (inverted)
+ groups.forwards.reverse()
+ groups.moved = [...groups.backwards, ...groups.forwards]
+
+ const removeDuration = fullStaggerDuration(
+ groups.removed.length,
+ config.removeDuration
+ )
+ const moveDuration = fullStaggerDuration(
+ groups.moved.length,
+ config.moveDuration
+ )
+ const addDuration = fullStaggerDuration(
+ groups.added.length,
+ config.addDuration
+ )
+
+ groups.removed.forEach((group, groupIndex) => {
+ group.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+ const delay = staggerDelay(
+ groupIndex,
+ groups.removed.length,
+ removeDuration,
+ config.removeDuration
+ )
+ animateRemove(el, first, last, delay)
+ })
+ })
+
+ // todo group by backwards and forwards
+ groups.moved.forEach((group, groupIndex) => {
+ group.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+ const delay =
+ removeDuration +
+ staggerDelay(
+ groupIndex,
+ groups.moved.length,
+ moveDuration,
+ config.moveDuration
+ )
+
+ animateMove(el, first, last, delay)
+ })
+ })
+
+ groups.added.forEach((group, groupIndex) => {
+ group.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+ const delay =
+ removeDuration +
+ moveDuration +
+ staggerDelay(
+ groupIndex,
+ groups.added.length,
+ addDuration,
+ config.addDuration
+ )
+
+ animateAdd(el, first, last, delay)
+ })
+ })
+}
+
+function animateRemove(element, first, last, delay) {
+ const dx = first.x - last.x
+ const dy = first.y - last.y
+ element.animate(
+ {
+ opacity: [1, 0],
+ transform: [
+ `translate(${dx}px, ${dy}px)`,
+ `translate(${dx}px, ${dy}px)`,
+ ],
+ },
+ {
+ // todo maybe use removeDuration from fullStaggerDuration
+ duration: config.removeDuration,
+ easing: "ease-out",
+ fill: "both",
+ delay,
+ }
+ )
+}
+
+function animateMove(element, first, last, delay) {
+ const dx = first.x - last.x
+ const dy = first.y - last.y
+ element.animate(
+ {
+ opacity: [first.opacity, last.opacity],
+ transform: [
+ `translate(${dx}px, ${dy}px)`,
+ "translate(0, 0)",
+ ],
+ color: [first.color, last.color],
+ },
+ {
+ duration: config.moveDuration,
+ easing: "ease-in-out",
+ fill: "both",
+ delay,
+ }
+ )
+}
+
+function animateAdd(element, first, last, delay) {
+ element.animate(
+ { opacity: [0, 1] },
+ {
+ duration: config.addDuration,
+ fill: "both",
+ easing: "ease-out",
+ delay,
+ }
+ )
+}
+
+function classify(first, last) {
+ if (
+ first &&
+ first.x === last.x &&
+ first.y === last.y &&
+ first.opacity === last.opacity
+ // todo add color?
+ ) {
+ // unchanged
+ return null
+ }
+
+ // todo shouldn't use opacity for this
+ if (last.opacity < 0.5) {
+ return "removed"
+ }
+
+ // todo shouldn't use opacity for this
+ if (!first || first.opacity < 0.5) {
+ return "added"
+ }
+
+ const dx = first.x - last.x
+ const dy = first.y - last.y
+
+ const bwd = dy > 0 || (dy == 0 && dx > 0)
+
+ return bwd ? "backwards" : "forwards"
+}
+
+function fullStaggerDuration(count, singleDuration) {
+ if (count === 0) return 0
+ return 2 * singleDuration * (1 - 1 / (1 + count))
+ // return 1.5 * singleDuration - 1 / (1 + count)
+}
+
+function staggerDelay(i, n, duration, singleDuration) {
+ if (i === 0) return 0
+ const max = duration - singleDuration
+
+ return (i / (n - 1)) * max
+}
diff --git a/packages/core/src/flip-tokens.tsx b/packages/core/src/flip-tokens.tsx
new file mode 100644
index 00000000..c3a9b865
--- /dev/null
+++ b/packages/core/src/flip-tokens.tsx
@@ -0,0 +1,78 @@
+"use-client"
+
+import React from "react"
+import { diff } from "./differ"
+import { Flip } from "./flip"
+import { TokenOrGroup, TokenWithIdOrGroup } from "./types"
+
+export function FlipCode({
+ tokens,
+}: {
+ tokens: TokenOrGroup[]
+}) {
+ const tokensWithIds = useTokensWithIds(tokens)
+ return
+}
+
+function useTokensWithIds(
+ tokens: TokenOrGroup[]
+): TokenWithIdOrGroup[] {
+ const prevRef = React.useRef()
+ const result = React.useMemo(
+ () => diff(prevRef.current, tokens),
+ [tokens]
+ )
+
+ React.useEffect(() => {
+ prevRef.current = result
+ }, [result])
+
+ return result
+}
+
+function Tokens({
+ tokens,
+}: {
+ tokens: TokenWithIdOrGroup[]
+}) {
+ return (
+
+ {tokens.map((token, i) => (
+
+ ))}
+
+ )
+}
+
+function TokenOrGroup({
+ token,
+}: {
+ token: TokenWithIdOrGroup
+}) {
+ if ("tokens" in token) {
+ return (
+
+ {token.tokens.map((token, i) => (
+
+ ))}
+
+ )
+ }
+
+ return "id" in token ? (
+
+ {token.content}
+
+ ) : (
+ // whitespace:
+ <>{token.content}>
+ )
+}
diff --git a/packages/core/src/flip.jsx b/packages/core/src/flip.jsx
new file mode 100644
index 00000000..7116bec9
--- /dev/null
+++ b/packages/core/src/flip.jsx
@@ -0,0 +1,65 @@
+"use-client"
+
+import React from "react"
+import { animate } from "./flip-animate"
+
+export class Flip extends React.Component {
+ constructor(props) {
+ super(props)
+ this.ref = React.createRef()
+ }
+
+ getSnapshotBeforeUpdate(prevProps, prevState) {
+ const snapshot = getSnapshot(this.ref.current)
+ return snapshot
+ }
+
+ componentDidUpdate(prevProps, prevState, firstSnapshot) {
+ const parent = this.ref.current
+ const elements = parent.querySelectorAll("[ch-x]")
+
+ // stop all animations
+ elements.forEach(el => {
+ el.getAnimations().forEach(a => {
+ a.cancel()
+ })
+ })
+
+ const lastSnapshot = getSnapshot(parent)
+ animate(elements, firstSnapshot, lastSnapshot)
+ }
+
+ render() {
+ return (
+
+ {this.props.children}
+
+ )
+ }
+}
+
+function getSnapshot(parent) {
+ const snapshot = {}
+ parent.querySelectorAll("[ch-x]").forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const { x, y } = el.getBoundingClientRect()
+ const style = window.getComputedStyle(el)
+ const opacity = Number(style.opacity) ?? 1
+ const color = style.color
+
+ snapshot[id] = { x, y, opacity, color }
+ })
+ return snapshot
+}
diff --git a/packages/core/src/remark/remark.ts b/packages/core/src/remark/remark.ts
new file mode 100644
index 00000000..156ee6d2
--- /dev/null
+++ b/packages/core/src/remark/remark.ts
@@ -0,0 +1,109 @@
+import { preload } from "@code-hike/lighter"
+import { visit } from "unist-util-visit"
+import { toValueExpression } from "./to-estree"
+import { visitAsync } from "./visit.js"
+import { tokenize } from "../tokens/code-to-tokens"
+
+const theme = "github-dark"
+
+async function preloadLanguages(tree) {
+ const langs = new Set()
+
+ visit(tree, "code", node => {
+ const { lang } = node
+ if (lang) {
+ langs.add(lang)
+ }
+ })
+
+ await preload([...langs], theme)
+}
+
+export const myPlugin = config => {
+ return async (tree, file) => {
+ await preloadLanguages(tree)
+
+ await visitAsync(tree, "code", async node => {
+ const { lang, meta, value } = node
+ const tokens = await tokenize(value, lang, theme)
+
+ node.type = "mdxJsxFlowElement"
+ node.name = "Code"
+ node.attributes = [
+ {
+ type: "mdxJsxAttribute",
+ name: "blaze",
+ value: "code",
+ },
+ {
+ type: "mdxJsxAttribute",
+ name: "lang",
+ value: lang,
+ },
+ {
+ type: "mdxJsxAttribute",
+ name: "meta",
+ value: meta,
+ },
+ {
+ type: "mdxJsxAttribute",
+ name: "tokens",
+ value: toValueExpression(tokens),
+ },
+ ]
+ })
+
+ visit(tree, "mdxJsxFlowElement", node => {
+ if (node.name === "Hike") {
+ processSteps(node)
+ }
+ })
+ return tree
+ }
+}
+
+function processSteps(node) {
+ const steps = [{}]
+
+ node.children.forEach(child => {
+ if (child?.type === "thematicBreak") {
+ steps.push({})
+ return
+ }
+
+ const step = steps[steps.length - 1]
+ // console.log(child)
+ const blazeAttribute = child?.attributes?.find(
+ attribute => attribute.name === "blaze"
+ )
+
+ const slot = blazeAttribute?.value ?? "children"
+
+ step[slot] = step[slot] ?? []
+ step[slot].push(child)
+
+ // TODO push a placeholder to slot["children"] for the static version
+ })
+
+ node.children = steps.map(step => {
+ const slots = Object.keys(step)
+
+ return {
+ type: "mdxJsxFlowElement",
+ name: "step",
+ attributes: {},
+ children: slots.map(slotName => ({
+ type: "mdxJsxFlowElement",
+ name: "slot",
+ attributes: [
+ {
+ type: "mdxJsxAttribute",
+ name: "className",
+ value: slotName,
+ },
+ ],
+ children: step[slotName],
+ })),
+ }
+ })
+}
diff --git a/packages/core/src/remark/to-estree.ts b/packages/core/src/remark/to-estree.ts
new file mode 100644
index 00000000..f5f7f22b
--- /dev/null
+++ b/packages/core/src/remark/to-estree.ts
@@ -0,0 +1,210 @@
+/**
+ * Convert a value to an ESTree node
+ *
+ * @param value - The value to convert
+ * @param options - Additional options to configure the output.
+ * @returns The ESTree node.
+ */
+export function valueToEstree(value, options?) {
+ if (value === undefined) {
+ return { type: "Identifier", name: "undefined" }
+ }
+ if (value == null) {
+ return { type: "Literal", value: null, raw: "null" }
+ }
+ if (value === Number.POSITIVE_INFINITY) {
+ return { type: "Identifier", name: "Infinity" }
+ }
+ if (Number.isNaN(value)) {
+ return { type: "Identifier", name: "NaN" }
+ }
+ if (typeof value === "boolean") {
+ return { type: "Literal", value, raw: String(value) }
+ }
+ if (typeof value === "bigint") {
+ return value >= 0
+ ? {
+ type: "Literal",
+ value,
+ raw: `${value}n`,
+ bigint: String(value),
+ }
+ : {
+ type: "UnaryExpression",
+ operator: "-",
+ prefix: true,
+ argument: valueToEstree(-value, options),
+ }
+ }
+ if (typeof value === "number") {
+ return value >= 0
+ ? { type: "Literal", value, raw: String(value) }
+ : {
+ type: "UnaryExpression",
+ operator: "-",
+ prefix: true,
+ argument: valueToEstree(-value, options),
+ }
+ }
+ if (typeof value === "string") {
+ return {
+ type: "Literal",
+ value,
+ raw: JSON.stringify(value),
+ }
+ }
+ if (typeof value === "symbol") {
+ if (
+ value.description &&
+ value === Symbol.for(value.description)
+ ) {
+ return {
+ type: "CallExpression",
+ optional: false,
+ callee: {
+ type: "MemberExpression",
+ computed: false,
+ optional: false,
+ object: { type: "Identifier", name: "Symbol" },
+ property: { type: "Identifier", name: "for" },
+ },
+ arguments: [
+ valueToEstree(value.description, options),
+ ],
+ }
+ }
+ throw new TypeError(
+ `Only global symbols are supported, got: ${String(
+ value
+ )}`
+ )
+ }
+ if (Array.isArray(value)) {
+ const elements = []
+ for (let i = 0; i < value.length; i += 1) {
+ elements.push(
+ i in value ? valueToEstree(value[i], options) : null
+ )
+ }
+ return { type: "ArrayExpression", elements }
+ }
+ if (value instanceof RegExp) {
+ return {
+ type: "Literal",
+ value,
+ raw: String(value),
+ regex: { pattern: value.source, flags: value.flags },
+ }
+ }
+ if (value instanceof Date) {
+ return {
+ type: "NewExpression",
+ callee: { type: "Identifier", name: "Date" },
+ arguments: [valueToEstree(value.getTime(), options)],
+ }
+ }
+ if (value instanceof Map) {
+ return {
+ type: "NewExpression",
+ callee: { type: "Identifier", name: "Map" },
+ arguments: [
+ valueToEstree([...value.entries()], options),
+ ],
+ }
+ }
+ if (
+ // https://github.com/code-hike/codehike/issues/194
+ // value instanceof BigInt64Array ||
+ // value instanceof BigUint64Array ||
+ value instanceof Float32Array ||
+ value instanceof Float64Array ||
+ value instanceof Int8Array ||
+ value instanceof Int16Array ||
+ value instanceof Int32Array ||
+ value instanceof Set ||
+ value instanceof Uint8Array ||
+ value instanceof Uint8ClampedArray ||
+ value instanceof Uint16Array ||
+ value instanceof Uint32Array
+ ) {
+ return {
+ type: "NewExpression",
+ callee: {
+ type: "Identifier",
+ name: value.constructor.name,
+ },
+ arguments: [valueToEstree([...value], options)],
+ }
+ }
+ if (
+ value instanceof URL ||
+ value instanceof URLSearchParams
+ ) {
+ return {
+ type: "NewExpression",
+ callee: {
+ type: "Identifier",
+ name: value.constructor.name,
+ },
+ arguments: [valueToEstree(String(value), options)],
+ }
+ }
+ if (options?.instanceAsObject || isPlainObject(value)) {
+ // if ((value as any)?.name === MDX_CHILDREN) {
+ // const tree = { ...(value as any) }
+ // tree.name = null
+ // return (mdastToEstree(tree) as any).body[0].expression
+ // }
+
+ if (value?.type === "mdxJsxAttributeValueExpression") {
+ return value.data.estree.body[0].expression
+ }
+
+ return {
+ type: "ObjectExpression",
+ properties: Object.entries(value).map(
+ ([name, val]) => ({
+ type: "Property",
+ method: false,
+ shorthand: false,
+ computed: false,
+ kind: "init",
+ key: valueToEstree(name, options),
+ value: valueToEstree(val, options),
+ })
+ ),
+ }
+ }
+
+ throw new TypeError(`Unsupported value: ${String(value)}`)
+}
+
+function isPlainObject(x) {
+ var toString = Object.prototype.toString
+ var prototype
+ return (
+ toString.call(x) === "[object Object]" &&
+ ((prototype = Object.getPrototypeOf(x)),
+ prototype === null ||
+ prototype === Object.getPrototypeOf({}))
+ )
+}
+
+export function toValueExpression(value) {
+ return {
+ type: "mdxJsxAttributeValueExpression",
+ value: JSON.stringify(value),
+ data: {
+ estree: {
+ type: "Program",
+ body: [
+ {
+ type: "ExpressionStatement",
+ expression: valueToEstree(value),
+ },
+ ],
+ sourceType: "module",
+ },
+ },
+ }
+}
diff --git a/packages/core/src/remark/visit.ts b/packages/core/src/remark/visit.ts
new file mode 100644
index 00000000..7787dd59
--- /dev/null
+++ b/packages/core/src/remark/visit.ts
@@ -0,0 +1,9 @@
+import { visit } from "unist-util-visit"
+
+export async function visitAsync(tree, test, visitor) {
+ const promises = []
+ visit(tree, test, node => {
+ promises.push(visitor(node))
+ })
+ await Promise.all(promises)
+}
diff --git a/packages/core/src/tokens/code-to-tokens.ts b/packages/core/src/tokens/code-to-tokens.ts
new file mode 100644
index 00000000..14254e13
--- /dev/null
+++ b/packages/core/src/tokens/code-to-tokens.ts
@@ -0,0 +1,137 @@
+import {
+ highlight,
+ extractAnnotations,
+ Theme,
+ Lines,
+ Tokens,
+} from "@code-hike/lighter"
+import { TokenOrGroup } from "../types"
+
+const annotationNames = ["mark"]
+
+export type TokenItem = TokenOrGroup
+export type TokenList = TokenOrGroup[]
+
+function joinTokens(tokens: Tokens): TokenOrGroup[] {
+ return tokens.map(tokenOrGroup => {
+ if ("tokens" in tokenOrGroup) {
+ return {
+ name: tokenOrGroup.annotationName,
+ query: tokenOrGroup.annotationQuery,
+ inline: true,
+ tokens: joinTokens(tokenOrGroup.tokens),
+ }
+ } else {
+ return tokenOrGroup
+ }
+ })
+}
+
+function joinLines(lines: Lines): TokenOrGroup[] {
+ const joinedTokens: TokenOrGroup[] = []
+ lines.forEach(lineOrGroup => {
+ if ("lines" in lineOrGroup) {
+ joinedTokens.push({
+ name: lineOrGroup.annotationName,
+ query: lineOrGroup.annotationQuery,
+ inline: false,
+ tokens: joinLines(lineOrGroup.lines),
+ })
+ } else {
+ const tokens = joinTokens(lineOrGroup.tokens)
+ joinedTokens.push(...tokens)
+ joinedTokens.push({ content: "\n", style: undefined })
+ }
+ })
+ return joinedTokens
+}
+
+function splitWhitespace(tokens: TokenOrGroup[]) {
+ const ejected: TokenOrGroup[] = []
+ tokens.forEach(tokenOrGroup => {
+ if ("tokens" in tokenOrGroup) {
+ ejected.push({
+ ...tokenOrGroup,
+ tokens: splitWhitespace(tokenOrGroup.tokens),
+ })
+ } else {
+ const [before, content, after] =
+ splitSurroundingWhitespace(tokenOrGroup.content)
+ if (before?.length) {
+ ejected.push({ content: before, style: undefined })
+ }
+ if (content.length) {
+ ejected.push({ content, style: tokenOrGroup.style })
+ }
+ if (after?.length) {
+ ejected.push({ content: after, style: undefined })
+ }
+ }
+ })
+ return ejected
+}
+
+function joinWhitespace(tokens: TokenOrGroup[]) {
+ const joinedTokens: TokenOrGroup[] = []
+ tokens.forEach(tokenOrGroup => {
+ if ("tokens" in tokenOrGroup) {
+ joinedTokens.push({
+ ...tokenOrGroup,
+ tokens: joinWhitespace(tokenOrGroup.tokens),
+ })
+ } else {
+ const last = joinedTokens[joinedTokens.length - 1]
+ if (
+ last &&
+ "style" in last &&
+ !last.style &&
+ !tokenOrGroup.style
+ ) {
+ last.content += tokenOrGroup.content
+ } else if (tokenOrGroup.content === "") {
+ // ignore empty tokens
+ } else {
+ joinedTokens.push(tokenOrGroup)
+ }
+ }
+ })
+ return joinedTokens
+}
+
+export async function tokenize(
+ code: string,
+ lang: string,
+ theme: Theme
+) {
+ const { code: codeWithoutAnnotations, annotations } =
+ await extractAnnotations(code, lang, annotationNames)
+
+ const { lines } = await highlight(
+ codeWithoutAnnotations,
+ lang,
+ theme,
+ {
+ scopes: true,
+ annotations,
+ }
+ )
+ const tokens = joinLines(lines)
+ // split surrounding whitespace for each token
+ const splitTokens = splitWhitespace(tokens)
+
+ // join consecutive whitespace tokens
+ const joinedTokens = joinWhitespace(splitTokens)
+
+ return joinedTokens
+}
+
+// splits " \t foo bar \n" into [" \t ","foo bar"," \n"]
+// "foo bar" -> ["","foo bar",""]
+function splitSurroundingWhitespace(content: string) {
+ const trimmed = content.trim()
+ const before = content.slice(0, content.indexOf(trimmed))
+ const after = content.slice(
+ content.indexOf(trimmed) + trimmed.length
+ )
+ return [before, trimmed, after]
+}
diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts
new file mode 100644
index 00000000..f9f92e12
--- /dev/null
+++ b/packages/core/src/types.ts
@@ -0,0 +1,37 @@
+import { Lines, Token, Tokens } from "@code-hike/lighter"
+
+// highlight.js transforms Lines to TokenOrGroup[]
+
+export type TokenGroup = {
+ name: string
+ query?: string
+ inline: boolean
+ tokens: TokenOrGroup[]
+}
+export type TokenOrGroup = Token | TokenGroup
+
+// differ.js transforms TokenOrGroup[] to TokenWithId[]
+
+export type TokenWithId = {
+ id: number
+ content: string
+ style: React.CSSProperties
+ deleted?: boolean
+}
+
+export type TokenWithIdOrGroup =
+ | TokenWithId
+ | TokenWithIdGroup
+ | WhitespaceToken
+
+export type WhitespaceToken = {
+ content: string
+ style: undefined
+}
+
+export type TokenWithIdGroup = {
+ name: string
+ query?: string
+ inline: boolean
+ tokens: TokenWithIdOrGroup[]
+}
diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json
new file mode 100644
index 00000000..0327725f
--- /dev/null
+++ b/packages/core/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "target": "ESNext",
+ "paths": {
+ "contentlayer/generated": [
+ "./.contentlayer/generated"
+ ]
+ },
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": false,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "incremental": true,
+ "esModuleInterop": true,
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ]
+ },
+ "include": [
+ "next-env.d.ts",
+ ".next/types/**/*.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".contentlayer/generated"
+ ],
+ "exclude": ["node_modules"]
+}
diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts
new file mode 100644
index 00000000..6618448c
--- /dev/null
+++ b/packages/core/vitest.config.ts
@@ -0,0 +1,10 @@
+import { defineConfig } from "vitest/config"
+// import react from "@vitejs/plugin-react"
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [],
+ test: {
+ environment: "jsdom",
+ },
+})
diff --git a/packages/mdx/pages/bug.js b/packages/mdx/pages/bug.js
new file mode 100644
index 00000000..0cd8321e
--- /dev/null
+++ b/packages/mdx/pages/bug.js
@@ -0,0 +1,94 @@
+import { Code } from "../src/smooth-tokens"
+import { tokenizeSync } from "../src/differ"
+import {
+ getThemeColorsSync,
+ preload,
+} from "@code-hike/lighter"
+import React from "react"
+
+export default function Page() {
+ const [ready, setReady] = React.useState(false)
+
+ React.useEffect(() => {
+ preload(["jsx"], "github-dark").then(() => {
+ setReady(true)
+ })
+ }, [])
+
+ if (!ready) {
+ return (
+
+ )
+ }
+
+ return
+}
+
+function Main() {
+ const [theme, setTheme] = React.useState("github-dark")
+ const [fromText, setFromText] = React.useState(code[0])
+ const [toText, setToText] = React.useState(code[1])
+ const [fromLangLoaded, setFromLangLoaded] =
+ React.useState("jsx")
+ const [toLangLoaded, setToLangLoaded] =
+ React.useState("jsx")
+ const [right, setRight] = React.useState(false)
+
+ const tokens = React.useMemo(() => {
+ return right
+ ? tokenizeSync(toText, toLangLoaded, theme)
+ : tokenizeSync(fromText, fromLangLoaded, theme)
+ }, [
+ right,
+ toText,
+ toLangLoaded,
+ fromText,
+ fromLangLoaded,
+ theme,
+ ])
+
+ return (
+
+ setRight(!right)}
+ >
+ Play
+
+
+
+ )
+}
+
+// prettier-ignore
+const code = [`
+foo
+foo
+foo
+foo bar
+`.trim(),`
+foo
+foo
+foo
+foo
+ bar
+`.trim()
+]
diff --git a/packages/mdx/pages/css-animations.js b/packages/mdx/pages/css-animations.js
new file mode 100644
index 00000000..806e5dae
--- /dev/null
+++ b/packages/mdx/pages/css-animations.js
@@ -0,0 +1,63 @@
+import React from "react"
+import { setLines } from "../src/lines"
+
+const a = [
+ { content: "A1", id: "1" },
+ { content: "A2", id: "2" },
+ { content: "A3", id: "3" },
+ { content: "A4", id: "4" },
+ { content: "A5", id: "5" },
+]
+
+const b = [
+ { content: "A1", id: "1" },
+ { content: "B1", id: "1.5" },
+ { content: "A2", id: "2" },
+ { content: "A3", id: "3" },
+ { content: "A5", id: "5" },
+]
+
+const c = [
+ { content: "B1", id: "1.5" },
+ { content: "C1", id: "1.6" },
+ { content: "A3", id: "3" },
+]
+
+export default function Home() {
+ return
+}
+
+function Code({ lines }) {
+ const ref = React.useRef()
+ console.log("render")
+ return (
+
+
+ setLines(ref.current, a)}>
+ A
+
+ setLines(ref.current, b)}>
+ B
+
+ setLines(ref.current, c)}>
+ C
+
+
+
+ {lines.map((line, i) => {
+ return (
+
+ {line.content}
+
+ )
+ })}
+
+
+ )
+}
diff --git a/packages/mdx/pages/flip.js b/packages/mdx/pages/flip.js
new file mode 100644
index 00000000..764f95c6
--- /dev/null
+++ b/packages/mdx/pages/flip.js
@@ -0,0 +1,135 @@
+import React from "react"
+
+export default function Page() {
+ const [x, setX] = React.useState(100)
+
+ return (
+
+
+ setX(x * (Math.max(Math.random(), 0.3) + 0.5))
+ }
+ >
+ Change
+
+
+
+ )
+}
+
+function Flip({ x }) {
+ const flipRef = React.useRef({ first: null, last: null })
+ const divRef = React.useRef()
+ const [w, setW] = React.useState(x)
+
+ React.useLayoutEffect(() => {
+ if (w !== x) {
+ flipRef.current.first = getRect(divRef)
+ console.log("first", flipRef.current.first)
+ setW(x)
+ } else if (flipRef.current.first) {
+ flipRef.current.last = getRect(divRef)
+ console.log("last", flipRef.current.last)
+ invert(divRef, flipRef)
+ } else {
+ console.log("first render, no prev")
+ }
+ })
+
+ return (
+
+
+
+ )
+}
+
+function getRect(divRef) {
+ const div = divRef.current
+ const rect = div
+ .querySelector("[ch-k='1']")
+ .getBoundingClientRect()
+ const { x, y } = rect
+ return { x, y }
+}
+
+function invert(divRef, flipRef) {
+ console.log("invert")
+ const el = divRef.current.querySelector("[ch-k='1']")
+ const dx =
+ flipRef.current.first.x - flipRef.current.last.x
+ const dy =
+ flipRef.current.first.y - flipRef.current.last.y
+
+ el.animate(
+ {
+ transform: [
+ `translate(${dx}px, ${dy}px)`,
+ "translate(0, 0)",
+ ],
+ },
+ {
+ duration: 500,
+ easing: "ease-in-out",
+ fill: "both",
+ }
+ )
+}
+
+const Marginal = React.memo(({ left }) => {
+ console.log("Marginal", left)
+ return (
+
+ )
+})
+
+class Flip2 extends React.Component {
+ constructor(props) {
+ super(props)
+ this.divRef = React.createRef()
+ this.flipRef = React.createRef()
+ }
+
+ getSnapshotBeforeUpdate(prevProps, prevState) {
+ if (this.divRef.current) {
+ return getRect(this.divRef)
+ }
+ return null
+ }
+
+ componentDidUpdate(prevProps, prevState, snapshot) {
+ if (snapshot) {
+ const rect = getRect(this.divRef)
+ const dx = snapshot.x - rect.x
+ const dy = snapshot.y - rect.y
+ const el =
+ this.divRef.current.querySelector("[ch-k='1']")
+ el.animate(
+ {
+ transform: [
+ `translate(${dx}px, ${dy}px)`,
+ "translate(0, 0)",
+ ],
+ },
+ {
+ duration: 500,
+ easing: "ease-in-out",
+ fill: "both",
+ }
+ )
+ }
+ }
+
+ render() {
+ const { x } = this.props
+ return (
+
+
+
+ )
+ }
+}
diff --git a/packages/mdx/pages/styles.css b/packages/mdx/pages/styles.css
index 2d298a81..1d414a07 100644
--- a/packages/mdx/pages/styles.css
+++ b/packages/mdx/pages/styles.css
@@ -112,3 +112,31 @@ div#__next > div {
--ch-25: #afb8c133;
--ch-26: #ffffffe6;
}
+
+.code {
+ background-color: #222;
+ padding: 20px;
+ font-size: 15px;
+ color: #fff;
+ width: 600px;
+ height: 400px;
+ margin: 0 auto;
+ padding-left: 300px;
+ font-family: monospace;
+}
+
+.line {
+ outline: 1px dashed #9999;
+ width: 200px;
+ animation: x var(--duration) ease-in-out;
+ animation-fill-mode: backwards;
+}
+
+@keyframes x {
+ 0% {
+ transform: var(--transform);
+ opacity: var(--opacity);
+ }
+ 100% {
+ }
+}
diff --git a/packages/mdx/pages/tokens.js b/packages/mdx/pages/tokens.js
new file mode 100644
index 00000000..c5fdf493
--- /dev/null
+++ b/packages/mdx/pages/tokens.js
@@ -0,0 +1,210 @@
+import { FlipCode } from "../src/flip-tokens"
+import { tokenize, tokenizeSync } from "../src/differ"
+import {
+ THEME_NAMES,
+ LANG_NAMES,
+ getThemeColorsSync,
+ preload,
+} from "@code-hike/lighter"
+import React from "react"
+
+export default function Page() {
+ const [ready, setReady] = React.useState(false)
+
+ React.useEffect(() => {
+ preload(["scala", "python"], "github-dark").then(() => {
+ setReady(true)
+ })
+ }, [])
+
+ if (!ready) {
+ return (
+
+ )
+ }
+
+ return
+}
+
+function Main() {
+ const [theme, setTheme] = React.useState("github-dark")
+ const [fromText, setFromText] = React.useState(code[0])
+ const [toText, setToText] = React.useState(code[1])
+ const [fromLang, setFromLang] = React.useState("scala")
+ const [fromLangLoaded, setFromLangLoaded] =
+ React.useState("scala")
+ const [toLang, setToLang] = React.useState("python")
+ const [toLangLoaded, setToLangLoaded] =
+ React.useState("python")
+ const [right, setRight] = React.useState(false)
+
+ const themeColors = getThemeColorsSync(theme)
+ const tokens = React.useMemo(() => {
+ return right
+ ? tokenizeSync(toText, toLangLoaded, theme)
+ : tokenizeSync(fromText, fromLangLoaded, theme)
+ }, [
+ right,
+ toText,
+ toLangLoaded,
+ fromText,
+ fromLangLoaded,
+ theme,
+ ])
+
+ return (
+
+
+ {
+ const name = e.target.value
+ preload([], name).then(() => {
+ setTheme(name)
+ })
+ }}
+ >
+ {THEME_NAMES.filter(n => !n.endsWith("css")).map(
+ name => (
+
+ {name}
+
+ )
+ )}
+
+
+
+ setRight(!right)}
+ >
+ Play
+
+
+
+ )
+}
+
+// prettier-ignore
+const code = [`
+object Main {
+ // focus[3:15] my-annotation
+ def factorial(n: Int): Int = {
+ if (n == 0) {
+ return 1
+ } else {
+ return n * factorial(n - 1)
+ }
+ }
+}
+`.trim(),`
+# focus[1:12] my-annotation
+def factorial(n):
+ if n == 0:
+ return 1
+ else:
+ return n * factorial(n - 1)
+`.trim()
+]
diff --git a/packages/mdx/pages/tokens2.js b/packages/mdx/pages/tokens2.js
new file mode 100644
index 00000000..e4cff36b
--- /dev/null
+++ b/packages/mdx/pages/tokens2.js
@@ -0,0 +1,275 @@
+import { FlipCode } from "../src/flip-tokens"
+import { tokenize, tokenizeSync } from "../src/differ"
+import {
+ THEME_NAMES,
+ LANG_NAMES,
+ getThemeColorsSync,
+ preload,
+} from "@code-hike/lighter"
+import React from "react"
+
+const theme = "github-dark"
+
+export default function Page() {
+ const [list, setList] = React.useState([])
+
+ React.useEffect(() => {
+ Promise.all(
+ code.map((c, i) => tokenize(c, langs[i], theme))
+ ).then(setList)
+ }, [])
+
+ if (!list.length) {
+ return (
+
+ )
+ }
+
+ return
+}
+
+function Main({ list }) {
+ const themeColors = getThemeColorsSync(theme)
+
+ const [i, setI] = React.useState(0)
+ const [playing, setPlaying] = React.useState(false)
+ const tokens = list[i]
+
+ return (
+
+
+
+
+
+ setI((i - 1 + list.length) % list.length)
+ }
+ // onClick={() => setRight(!right)}
+ >
+ {`<`}
+
+ {
+ setPlaying(!playing)
+ if (!playing) {
+ setI((i + 1) % list.length)
+ }
+ }}
+ >
+ {playing ? "Pause" : "Play"}
+
+ setI((i + 1) % list.length)}
+ // onClick={() => setRight(!right)}
+ >
+ {`>`}
+
+
+ {
+ if (!playing) return
+ setTimeout(() => {
+ setI((i + 1) % list.length)
+ }, 1000)
+ }}
+ />
+
+ )
+}
+
+const langs = [
+ "java",
+ "scala",
+ "python",
+ "ruby",
+ "matlab",
+ "r",
+ "javascript",
+ "cpp",
+ "kotlin",
+ "go",
+ "swift",
+ "rust",
+ "fsharp",
+ "scheme",
+]
+
+// prettier-ignore
+const code = [`
+// Java
+
+public class Main {
+ public static int factorial(int n) {
+ if (n == 0) {
+ return 1;
+ } else {
+ return n * factorial(n - 1);
+ }
+ }
+}
+`.trim(),`
+// Scala
+
+object Main {
+ def factorial(n: Int): Int = {
+ if (n == 0) {
+ return 1
+ } else {
+ return n * factorial(n - 1)
+ }
+ }
+}
+`.trim(),`
+# Python
+
+def factorial(n):
+ if n == 0:
+ return 1
+ else:
+ return n * factorial(n - 1)
+`.trim(),`
+# Ruby
+
+def factorial(n)
+ if n == 0
+ return 1
+ else
+ return n * factorial(n - 1)
+ end
+end
+`.trim(),`
+% MATLAB
+
+function result = factorial(n)
+ if n == 0
+ result = 1;
+ else
+ result = n * factorial(n - 1);
+ end
+end
+`.trim(),`
+# R
+
+factorial <- function(n) {
+ if (n == 0) {
+ return(1)
+ } else {
+ return(n * factorial(n - 1))
+ }
+}
+`.trim(),`
+// JavaScript
+
+function factorial(n) {
+ if (n === 0) {
+ return 1;
+ } else {
+ return n * factorial(n - 1);
+ }
+}
+`.trim(),`
+// C++
+
+int factorial(int n) {
+ if (n == 0) {
+ return 1;
+ } else {
+ return n * factorial(n - 1);
+ }
+}
+`.trim(),`
+// Kotlin
+
+fun factorial(n: Int): Int {
+ return if (n == 0) {
+ 1
+ } else {
+ n * factorial(n - 1)
+ }
+}
+`.trim(),`
+// Go
+
+func factorial(n int) int {
+ if n == 0 {
+ return 1
+ } else {
+ return n * factorial(n - 1)
+ }
+}
+`.trim(),`
+// Swift
+
+func factorial(n: Int) -> Int {
+ if n == 0 {
+ return 1
+ } else {
+ return n * factorial(n: n - 1)
+ }
+}
+`.trim(),`
+// Rust
+
+fn factorial(n: i32) -> i32 {
+ if n == 0 {
+ return 1;
+ } else {
+ return n * factorial(n - 1);
+ }
+}
+`.trim(),`
+// F#
+
+let rec factorial n =
+ if n = 0 then
+ 1
+ else
+ n * factorial (n - 1)
+`.trim(),`
+;; Scheme
+
+(define (factorial n)
+ (if (= n 0)
+ 1
+ (* n (factorial (- n 1)))))
+`.trim()
+]
diff --git a/packages/mdx/src/differ.js b/packages/mdx/src/differ.js
new file mode 100644
index 00000000..246bdded
--- /dev/null
+++ b/packages/mdx/src/differ.js
@@ -0,0 +1,179 @@
+import {
+ highlight,
+ highlightSync,
+} from "@code-hike/lighter"
+import { diffArrays } from "diff"
+
+export function tokenizeSync(code, lang, theme) {
+ const { lines } = highlightSync(code, lang, theme, {
+ scopes: true,
+ })
+ const tokens = lines.flatMap(line => [
+ ...line,
+ { content: "\n" },
+ ])
+ // split trimming whitespace for each token
+ const splitTokens = tokens.flatMap(token => {
+ const [before, content, after] =
+ splitTrimmingWhitespace(token.content)
+ return [
+ before?.length && { content: before },
+ { content, style: token.style },
+ after?.length && { content: after },
+ ].filter(Boolean)
+ })
+
+ // join whitespace tokens
+ const joinedTokens = []
+ splitTokens.forEach(token => {
+ const last = joinedTokens[joinedTokens.length - 1]
+ if (last && !last.style && !token.style) {
+ last.content += token.content
+ } else if (token.content === "") {
+ // ignore empty tokens
+ } else {
+ if (token.style == null) {
+ delete token.style
+ }
+ joinedTokens.push(token)
+ }
+ })
+
+ return joinedTokens
+}
+
+export async function tokenize(code, lang, theme) {
+ const { lines } = await highlight(code, lang, theme, {
+ scopes: true,
+ })
+ const tokens = lines.flatMap(line => [
+ ...line,
+ { content: "\n" },
+ ])
+ // split trimming whitespace for each token
+ const splitTokens = tokens.flatMap(token => {
+ const [before, content, after] =
+ splitTrimmingWhitespace(token.content)
+ return [
+ before?.length && { content: before },
+ { content, style: token.style },
+ after?.length && { content: after },
+ ].filter(Boolean)
+ })
+
+ // join whitespace tokens
+ const joinedTokens = []
+ splitTokens.forEach(token => {
+ const last = joinedTokens[joinedTokens.length - 1]
+ if (last && !last.style && !token.style) {
+ last.content += token.content
+ } else if (token.content === "") {
+ // ignore empty tokens
+ } else {
+ if (token.style == null) {
+ delete token.style
+ }
+ joinedTokens.push(token)
+ }
+ })
+
+ return joinedTokens
+}
+
+// splitTrimmingWhitespace(" \t foo bar \n") should return [" \t ","foo bar"," \n"]
+function splitTrimmingWhitespace(content) {
+ const trimmed = content.trim()
+ const before = content.slice(0, content.indexOf(trimmed))
+ const after = content.slice(
+ content.indexOf(trimmed) + trimmed.length
+ )
+ return [before, trimmed, after]
+}
+
+export function withIds(tokens) {
+ let id = 0
+ return tokens.map(token =>
+ token.style ? { ...token, id: id++ } : token
+ )
+}
+
+export function diff(prev, next) {
+ if (!prev) {
+ return withIds(next)
+ }
+
+ const ps = prev.filter(
+ t => t.style && t.style.position !== "absolute"
+ )
+ const ns = next.filter(t => t.style)
+
+ const result = diffArrays(ps, ns, {
+ comparator: (a, b) => a.content == b.content,
+ })
+
+ // highest id in ps
+ let highestId = 0
+ ps.forEach(t => {
+ if (t.id > highestId) {
+ highestId = t.id
+ }
+ })
+
+ let nextIds = []
+ let pIndex = 0
+ let deleted = {}
+
+ result.forEach(part => {
+ const { added, removed, count, value } = part
+ if (added) {
+ const before = ps[pIndex - 1]?.id
+ const after = ps[pIndex]?.id
+
+ for (let i = 0; i < count; i++) {
+ nextIds.push(++highestId)
+ }
+ } else if (removed) {
+ deleted[nextIds.length] = value.map(t => ({
+ ...t,
+ style: {
+ ...t.style,
+ position: "absolute",
+ opacity: 0,
+ },
+ }))
+ pIndex += count
+ } else {
+ value.forEach(_ => {
+ nextIds.push(ps[pIndex++].id)
+ })
+ }
+ })
+
+ let nIndex = 0
+ const nextTokens = deleted[0] || []
+ next.forEach(token => {
+ if (token.style) {
+ nextTokens.push({ ...token, id: nextIds[nIndex++] })
+ if (deleted[nIndex]) {
+ nextTokens.push(...deleted[nIndex])
+ }
+ } else {
+ nextTokens.push(token)
+ }
+ })
+
+ // console.log("Before:")
+ // console.table(
+ // ps.map(t => ({ id: t.id, content: t.content }))
+ // )
+ // console.log("After:")
+ // console.table(
+ // nextTokens
+ // .filter(t => t.style)
+ // .map(t => ({ id: t.id, content: t.content }))
+ // )
+
+ // console.log(nextTokens)
+
+ return nextTokens
+}
diff --git a/packages/mdx/src/differ.test.js b/packages/mdx/src/differ.test.js
new file mode 100644
index 00000000..63a8c7ea
--- /dev/null
+++ b/packages/mdx/src/differ.test.js
@@ -0,0 +1,32 @@
+import { describe, it, expect, test } from "vitest"
+import { diff, tokenizeSync } from "./differ"
+import { preload } from "@code-hike/lighter"
+
+test("differ", async () => {
+ const result = await getTokens("a b c d", "a c f d g")
+ console.log(result)
+})
+test("differ deleted id", async () => {
+ const result = await getTokens("a b c", "a d c")
+ console.log(result)
+})
+
+async function getTokens(prev, next) {
+ await preload(["javascript"], "github-dark")
+
+ const prevTokens = tokenizeSync(
+ prev,
+ "javascript",
+ "github-dark"
+ )
+ const nextTokens = tokenizeSync(
+ next,
+ "javascript",
+ "github-dark"
+ )
+
+ const result = diff(diff(null, prevTokens), nextTokens)
+ return result.filter(x => x.style)
+}
+
+// can a new token get the id of a removed one, duplicate ids?
diff --git a/packages/mdx/src/flip-animate.js b/packages/mdx/src/flip-animate.js
new file mode 100644
index 00000000..8fb03e55
--- /dev/null
+++ b/packages/mdx/src/flip-animate.js
@@ -0,0 +1,208 @@
+const config = {
+ removeDuration: 50,
+ moveDuration: 300,
+ addDuration: 300,
+}
+
+export function animate(
+ elements,
+ firstSnapshot,
+ lastSnapshot
+) {
+ const groups = {
+ removed: [],
+ moved: [],
+ forwards: [],
+ backwards: [],
+ added: [],
+ }
+
+ let previousKind = null
+ elements.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+
+ const kind = classify(first, last)
+ if (!kind) {
+ // untouched
+ previousKind = null
+ return
+ }
+
+ // todo don't group "moves" when translate is different
+ if (previousKind !== kind) {
+ previousKind = kind
+ groups[kind].push([])
+ }
+
+ groups[kind][groups[kind].length - 1].push(el)
+ })
+
+ // sort moved, first bwd moves, then fwd moves (inverted)
+ groups.forwards.reverse()
+ groups.moved = [...groups.backwards, ...groups.forwards]
+
+ const removeDuration = fullStaggerDuration(
+ groups.removed.length,
+ config.removeDuration
+ )
+ const moveDuration = fullStaggerDuration(
+ groups.moved.length,
+ config.moveDuration
+ )
+ const addDuration = fullStaggerDuration(
+ groups.added.length,
+ config.addDuration
+ )
+
+ groups.removed.forEach((group, groupIndex) => {
+ group.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+ const delay = staggerDelay(
+ groupIndex,
+ groups.removed.length,
+ removeDuration,
+ config.removeDuration
+ )
+ animateRemove(el, first, last, delay)
+ })
+ })
+
+ // todo group by backwards and forwards
+ groups.moved.forEach((group, groupIndex) => {
+ group.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+ const delay =
+ removeDuration +
+ staggerDelay(
+ groupIndex,
+ groups.moved.length,
+ moveDuration,
+ config.moveDuration
+ )
+
+ animateMove(el, first, last, delay)
+ })
+ })
+
+ groups.added.forEach((group, groupIndex) => {
+ group.forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const first = firstSnapshot[id]
+ const last = lastSnapshot[id]
+ const delay =
+ removeDuration +
+ moveDuration +
+ staggerDelay(
+ groupIndex,
+ groups.added.length,
+ addDuration,
+ config.addDuration
+ )
+
+ animateAdd(el, first, last, delay)
+ })
+ })
+}
+
+function animateRemove(element, first, last, delay) {
+ const dx = first.x - last.x
+ const dy = first.y - last.y
+ element.animate(
+ {
+ opacity: [1, 0],
+ transform: [
+ `translate(${dx}px, ${dy}px)`,
+ `translate(${dx}px, ${dy}px)`,
+ ],
+ },
+ {
+ // todo maybe use removeDuration from fullStaggerDuration
+ duration: config.removeDuration,
+ easing: "ease-out",
+ fill: "both",
+ delay,
+ }
+ )
+}
+
+function animateMove(element, first, last, delay) {
+ const dx = first.x - last.x
+ const dy = first.y - last.y
+ element.animate(
+ {
+ opacity: [first.opacity, last.opacity],
+ transform: [
+ `translate(${dx}px, ${dy}px)`,
+ "translate(0, 0)",
+ ],
+ color: [first.color, last.color],
+ },
+ {
+ duration: config.moveDuration,
+ easing: "ease-in-out",
+ fill: "both",
+ delay,
+ }
+ )
+}
+
+function animateAdd(element, first, last, delay) {
+ element.animate(
+ { opacity: [0, 1] },
+ {
+ duration: config.addDuration,
+ fill: "both",
+ easing: "ease-out",
+ delay,
+ }
+ )
+}
+
+function classify(first, last) {
+ if (
+ first &&
+ first.x === last.x &&
+ first.y === last.y &&
+ first.opacity === last.opacity
+ // todo add color?
+ ) {
+ // unchanged
+ return null
+ }
+
+ // todo shouldn't use opacity for this
+ if (last.opacity < 0.5) {
+ return "removed"
+ }
+
+ // todo shouldn't use opacity for this
+ if (!first || first.opacity < 0.5) {
+ return "added"
+ }
+
+ const dx = first.x - last.x
+ const dy = first.y - last.y
+
+ const bwd = dy > 0 || (dy == 0 && dx > 0)
+
+ return bwd ? "backwards" : "forwards"
+}
+
+function fullStaggerDuration(count, singleDuration) {
+ if (count === 0) return 0
+ return 2 * singleDuration * (1 - 1 / (1 + count))
+ // return 1.5 * singleDuration - 1 / (1 + count)
+}
+
+function staggerDelay(i, n, duration, singleDuration) {
+ if (i === 0) return 0
+ const max = duration - singleDuration
+
+ return (i / (n - 1)) * max
+}
diff --git a/packages/mdx/src/flip-tokens.js b/packages/mdx/src/flip-tokens.js
new file mode 100644
index 00000000..3b4d5f33
--- /dev/null
+++ b/packages/mdx/src/flip-tokens.js
@@ -0,0 +1,106 @@
+import React from "react"
+import { diff } from "../src/differ"
+import { animate } from "./flip-animate"
+
+export function FlipCode({ tokens }) {
+ const tokensWithIds = useTokensWithIds(tokens)
+ return
+}
+
+function useTokensWithIds(tokens) {
+ const prevRef = React.useRef()
+ const result = React.useMemo(
+ () => diff(prevRef.current, tokens),
+ [tokens]
+ )
+
+ React.useEffect(() => {
+ prevRef.current = result
+ }, [result])
+
+ return result
+}
+
+function Tokens({ tokens }) {
+ return (
+
+ {tokens.map((token, i) =>
+ token.style ? (
+
+ {token.content}
+
+ ) : (
+ // whitespace:
+ token.content
+ )
+ )}
+
+ )
+}
+
+class Flip extends React.Component {
+ constructor(props) {
+ super(props)
+ this.ref = React.createRef()
+ }
+
+ getSnapshotBeforeUpdate(prevProps, prevState) {
+ const snapshot = getSnapshot(this.ref.current)
+ return snapshot
+ }
+
+ componentDidUpdate(prevProps, prevState, firstSnapshot) {
+ const parent = this.ref.current
+ const elements = parent.querySelectorAll("[ch-x]")
+
+ // stop all animations
+ elements.forEach(el => {
+ el.getAnimations().forEach(a => {
+ a.cancel()
+ })
+ })
+
+ const lastSnapshot = getSnapshot(parent)
+ animate(elements, firstSnapshot, lastSnapshot)
+ }
+
+ render() {
+ return (
+
+ {this.props.children}
+
+ )
+ }
+}
+
+function getSnapshot(parent) {
+ const snapshot = {}
+ parent.querySelectorAll("[ch-x]").forEach(el => {
+ const id = el.getAttribute("ch-x")
+ const { x, y } = el.getBoundingClientRect()
+ const style = window.getComputedStyle(el)
+ const opacity = Number(style.opacity) ?? 1
+ const color = style.color
+
+ snapshot[id] = { x, y, opacity, color }
+ })
+ return snapshot
+}
diff --git a/packages/mdx/src/lines.js b/packages/mdx/src/lines.js
new file mode 100644
index 00000000..e2ede18f
--- /dev/null
+++ b/packages/mdx/src/lines.js
@@ -0,0 +1,211 @@
+const SINGLE_DURATION = 0.1
+
+export function setLines(parent, lines) {
+ const oldLineElements = Array.from(parent.children)
+
+ const measureOld = measureProperties(oldLineElements)
+
+ setFinalScene(parent, oldLineElements, lines, measureOld)
+
+ const newLineElements = Array.from(parent.children)
+
+ const measureNew = measureProperties(newLineElements)
+
+ parent.style.setProperty(
+ "--duration",
+ `${SINGLE_DURATION}s`
+ )
+ fillAnimationStart(measureOld, measureNew)
+}
+
+function fillAnimationStart(measureOld, measureNew) {
+ const exits = []
+ const enters = []
+ const moves = []
+
+ measureNew.forEach((mNew, element) => {
+ if (mNew.transform !== "none") {
+ exits.push(element)
+ } else if (measureOld.has(element)) {
+ moves.push(element)
+ } else {
+ enters.push(element)
+ }
+ })
+
+ const exitCounts = exits.length
+ const exitsDuration = fullStaggerDuration(exitCounts)
+
+ exits.forEach((element, i) => {
+ const mNew = measureNew.get(element)
+ const mOld = measureOld.get(element)
+
+ const dx = mOld.x - mNew.x
+ const dy = mOld.y - mNew.y
+
+ const delay = staggerDelay(i, exitCounts, exitsDuration)
+
+ element.style.setProperty("--opacity", mOld.opacity)
+ element.style.setProperty(
+ "--transform",
+ `${mNew.transform} translateX(${dx}px) translateY(${dy}px)`
+ )
+ element.style.setProperty("animation-name", "x")
+ element.style.setProperty(
+ "animation-delay",
+ `${delay}s`
+ )
+ })
+
+ moves.forEach(element => {
+ const mNew = measureNew.get(element)
+ const mOld = measureOld.get(element)
+
+ const dx = mOld.x - mNew.x
+ const dy = mOld.y - mNew.y
+
+ element.style.setProperty("--opacity", mOld.opacity)
+ element.style.setProperty(
+ "--transform",
+ `translateX(${dx}px) translateY(${dy}px)`
+ )
+ element.style.setProperty("animation-name", "x")
+ element.style.setProperty(
+ "animation-delay",
+ `${exitsDuration}s`
+ )
+ })
+
+ const enterStart =
+ exitsDuration + (moves.length > 0 ? SINGLE_DURATION : 0)
+ const enterCounts = enters.length
+ const entersDuration = fullStaggerDuration(enterCounts)
+
+ enters.forEach((element, i) => {
+ const delay =
+ enterStart +
+ staggerDelay(i, enterCounts, entersDuration)
+ console.log({ delay })
+ element.style.setProperty("--opacity", "0.1")
+ element.style.setProperty(
+ "--transform",
+ "translateX(100%)"
+ )
+ element.style.setProperty("animation-name", "x")
+ element.style.setProperty(
+ "animation-delay",
+ `${delay}s`
+ )
+ })
+}
+
+function measureProperties(oldLineElements) {
+ const measures = new Map()
+ for (const line of oldLineElements) {
+ const id = line.getAttribute("data-ch-lid")
+ const style = window.getComputedStyle(line)
+ const rect = line.getBoundingClientRect()
+ measures.set(line, {
+ id,
+ opacity: style.opacity,
+ transform: style.transform,
+ animationName: style.animationName,
+ y: rect.y,
+ x: rect.x,
+ })
+ }
+ return measures
+}
+
+function setFinalScene(
+ parent,
+ lineElements,
+ lines,
+ measureOld
+) {
+ let oldIndex = 0
+ let newIndex = 0
+
+ const oldIds = [...measureOld.values()].map(m => m.id)
+ const newIds = lines.map(line => line.id)
+
+ const toBeRemoved = []
+
+ while (
+ oldIndex < lineElements.length ||
+ newIndex < lines.length
+ ) {
+ const oldElement = lineElements[oldIndex]
+ const newLine = lines[newIndex]
+ const m = measureOld.get(oldElement)
+ const oldId = m?.id
+ const newId = newLine?.id
+
+ if (newId && !oldIds.includes(newId)) {
+ addLine(parent, newLine, oldElement)
+ newIndex++
+ continue
+ }
+
+ oldElement.style.setProperty("animation-name", "none")
+
+ // TODO change opacity to 0
+ if (!oldId && m.opacity === "0.1") {
+ oldElement.remove()
+ oldIndex++
+ continue
+ }
+
+ if (!newIds.includes(oldId)) {
+ prepareToRemoveLine(oldElement)
+ toBeRemoved.push(oldElement)
+ oldIndex++
+ continue
+ }
+
+ oldIndex++
+ newIndex++
+ }
+
+ // now that we have all the lines, we need to find the transformY for the absolute positioned lines
+ const dys = toBeRemoved.map(element => {
+ const oldY = measureOld.get(element).y
+ const newY = element.getBoundingClientRect().y
+ return oldY - newY
+ })
+
+ toBeRemoved.forEach((element, i) => {
+ const dy = dys[i]
+ element.style.setProperty(
+ "transform",
+ `translateX(-100%) translateY(${dy}px)`
+ )
+ })
+}
+
+function addLine(parent, newLine, oldElement) {
+ const newElement = document.createElement("div")
+ newElement.classList.add("line")
+ newElement.setAttribute("data-ch-lid", newLine.id)
+ newElement.textContent = newLine.content
+ parent.insertBefore(newElement, oldElement)
+}
+
+function prepareToRemoveLine(oldElement) {
+ // TODO change opacity to 0
+ oldElement.style.setProperty("opacity", "0.1")
+ oldElement.style.setProperty("position", "absolute")
+ oldElement.dataset.chLid = ""
+}
+
+function fullStaggerDuration(count) {
+ if (count === 0) return 0
+ return 2 * SINGLE_DURATION * (1 - 1 / (1 + count))
+}
+
+function staggerDelay(i, n, duration) {
+ if (i === 0) return 0
+ const max = duration - SINGLE_DURATION
+ console.log({ i, n, max })
+ return (i / (n - 1)) * max
+}
diff --git a/packages/mdx/src/remark/to-estree.ts b/packages/mdx/src/remark/to-estree.ts
index 2cb4a1bb..d61bd676 100644
--- a/packages/mdx/src/remark/to-estree.ts
+++ b/packages/mdx/src/remark/to-estree.ts
@@ -3,7 +3,6 @@ import isPlainObject from "is-plain-obj"
import { annotationsMap } from "../mdx-client/annotations"
// import unified from "unified"
// import remarkRehype from "remark-rehype"
-import toEstree from "hast-util-to-estree"
import { Node } from "unist"
// forked from https://github.com/remcohaszing/estree-util-value-to-estree/blob/main/src/index.ts
@@ -266,10 +265,6 @@ export function valueToEstree(
// return changedTree
// }
-function rehypeRecma() {
- return (tree: any) => (toEstree as any)(tree)
-}
-
const MDX_CHILDREN = "MDX_CHILDREN"
export function wrapChildren(children: Node[]) {
diff --git a/packages/mdx/src/smooth-tokens.js b/packages/mdx/src/smooth-tokens.js
new file mode 100644
index 00000000..a7cf7ee5
--- /dev/null
+++ b/packages/mdx/src/smooth-tokens.js
@@ -0,0 +1,396 @@
+import React from "react"
+import { diff, tokenize, withIds } from "../src/differ"
+
+export function Code({ tokens, onTransitioned }) {
+ const tokensWithIds = withIds(tokens)
+ const prevTokens = usePrevProps(tokensWithIds)
+ return (
+
+ )
+}
+
+function CodeTransition({
+ currentTokens,
+ previousTokens,
+ onTransitioned,
+}) {
+ const ref = React.useRef()
+ let tokens = currentTokens
+ if (previousTokens) {
+ const result = diff(previousTokens, currentTokens)
+ tokens = result
+ }
+
+ React.useLayoutEffect(() => {
+ setTokens(
+ ref.current,
+ previousTokens,
+ tokens,
+ onTransitioned
+ )
+ }, [currentTokens])
+
+ return (
+
+ )
+}
+
+function usePrevProps(props) {
+ const ref = React.useRef()
+ React.useEffect(() => {
+ ref.current = props
+ })
+ return ref.current
+}
+
+function updateDom(parent, prevTokens, newTokens) {
+ console.log({ prevTokens, newTokens })
+ const kids = [...parent.childNodes]
+
+ console.log(kids)
+
+ let prevIndex = 0
+ let nextIndex = 0
+
+ while (
+ prevIndex < prevTokens.length ||
+ nextIndex < newTokens.length
+ ) {
+ const prevToken = prevTokens[prevIndex]
+ const nextToken = newTokens[nextIndex]
+
+ // skip text nodes
+ if (prevToken.style) {
+ prevIndex++
+ continue
+ }
+ if (nextToken.style) {
+ nextIndex++
+ continue
+ }
+
+ const prevId = prevToken.id
+ const nextId = nextToken.id
+
+ if (prevId === nextId) {
+ prevIndex++
+ nextIndex++
+ continue
+ }
+
+ if (prevId < nextId) {
+ // remove prev
+ prevIndex++
+ nextIndex++
+ continue
+ }
+
+ if (prevId > nextId) {
+ // add next
+ prevIndex++
+ nextIndex++
+ continue
+ }
+ }
+}
+
+function initTokens(parent, tokens) {
+ parent.innerHTML = ""
+ tokens.forEach((token, i) => {
+ parent.appendChild(createSpan(token))
+ })
+}
+
+const config = {
+ removeDuration: 50,
+ moveDuration: 300,
+ addDuration: 500,
+}
+
+function setTokens(
+ parent,
+ prevTokens,
+ nextTokens,
+ callback
+) {
+ if (!prevTokens) {
+ initTokens(parent, nextTokens)
+ return
+ }
+
+ const prevSpanData = prevTokens.filter(t => t.style)
+ const nextSpanData = nextTokens.filter(t => t.style)
+ // console.log({ prevSpanData, nextSpanData })
+
+ const prevSpanRect = []
+ const { x: parentX, y: parentY } =
+ parent.getBoundingClientRect()
+
+ parent.childNodes.forEach(span => {
+ if (span.tagName !== "SPAN") return
+ const rect = span.getBoundingClientRect()
+ prevSpanRect.push({
+ dx: rect.x - parentX,
+ dy: rect.y - parentY,
+ })
+ })
+
+ updateDom(parent, prevTokens, nextTokens)
+ initTokens(parent, nextTokens)
+
+ const nextSpanRect = []
+ parent.childNodes.forEach(span => {
+ if (span.tagName !== "SPAN") return
+ const rect = span.getBoundingClientRect()
+
+ nextSpanRect.push({
+ dx: rect.x - parentX,
+ dy: rect.y - parentY,
+ })
+ })
+
+ // console.log({ prevSpanRect, nextSpanRect })
+
+ const moved = []
+ const added = []
+ // change styles
+ const childSpans = [...parent.childNodes].filter(
+ e => e.tagName == "SPAN"
+ )
+
+ childSpans.forEach((span, i) => {
+ const id = Number(span.getAttribute("id"))
+ const prevIndex = prevSpanData.findIndex(
+ t => t.id === id
+ )
+ const nextIndex = nextSpanData.findIndex(
+ t => t.id === id
+ )
+
+ if (prevIndex === -1) {
+ const lastGroup = added[added.length - 1]
+ const lastSpan = lastGroup?.[lastGroup.length - 1]
+ if (lastSpan?.i === i - 1) {
+ lastGroup.push({ span, i })
+ } else {
+ added.push([{ span, i }])
+ }
+ return
+ }
+
+ const dx =
+ prevSpanRect[prevIndex].dx -
+ nextSpanRect[nextIndex].dx
+ const dy =
+ prevSpanRect[prevIndex].dy -
+ nextSpanRect[nextIndex].dy
+
+ const item = {
+ span,
+ i,
+ dx: Math.round(dx * 100) / 100,
+ dy: Math.round(dy * 100) / 100,
+ fromColor: prevSpanData[prevIndex].style.color,
+ toColor: nextSpanData[nextIndex].style.color,
+ bwd: dy > 0 || (dy == 0 && dx > 0),
+ }
+
+ if (
+ item.dx === 0 &&
+ item.dy === 0 &&
+ item.fromColor === item.toColor
+ ) {
+ return
+ }
+
+ const lastGroup = moved[moved.length - 1]
+ const lastSpan = lastGroup?.[lastGroup.length - 1]
+ if (
+ lastSpan?.i === i - 1 &&
+ lastSpan?.dx === item.dx &&
+ lastSpan?.dy === item.dy
+ ) {
+ lastGroup.push(item)
+ } else {
+ moved.push([item])
+ }
+ })
+
+ const nextIds = nextSpanData.map(t => t.id)
+ const removed = []
+ prevSpanData.forEach((token, i) => {
+ if (!nextIds.includes(token.id)) {
+ const prevRect = prevSpanRect[i]
+ const span = createSpan(token)
+ span.style.setProperty("top", `${prevRect.dy}px`)
+ span.style.setProperty("left", `${prevRect.dx}px`)
+ span.style.setProperty("position", "absolute")
+ parent.appendChild(span)
+
+ const lastGroup = removed[removed.length - 1]
+ const lastSpan = lastGroup?.[lastGroup.length - 1]
+ if (lastSpan?.i === i - 1) {
+ lastGroup.push({ span, i })
+ } else {
+ removed.push([{ span, i }])
+ }
+ }
+ })
+
+ const removeDuration = fullStaggerDuration(
+ removed.length,
+ config.removeDuration
+ )
+ const moveDuration = fullStaggerDuration(
+ moved.length,
+ config.moveDuration
+ )
+ const addDuration = fullStaggerDuration(
+ added.length,
+ config.addDuration
+ )
+
+ // sort moved, first bwd moves, then fwd moves (inverted)
+ moved.sort((group1, group2) => {
+ const [item1] = group1
+ const [item2] = group2
+
+ if (item1.bwd && !item2.bwd) return -1
+ if (!item1.bwd && item2.bwd) return 1
+ if (item1.bwd && item2.bwd) return item1.i - item2.i
+ if (!item1.bwd && !item2.bwd) return item2.i - item1.i
+ return 0
+ })
+
+ removed.forEach((group, i) => {
+ group.forEach(({ span }) => {
+ span.animate([{ opacity: 1 }, { opacity: 0 }], {
+ duration: removeDuration,
+ fill: "both",
+ easing: "ease-out",
+ delay: staggerDelay(
+ i,
+ removed.length,
+ removeDuration,
+ config.removeDuration
+ ),
+ })
+ })
+ })
+
+ moved.forEach((group, i) => {
+ group.forEach(
+ ({ span, dx, dy, fromColor, toColor }) => {
+ const transform = `translateX(${dx}px) translateY(${dy}px)`
+ span.animate(
+ {
+ transform: [
+ transform,
+ "translateX(0px) translateY(0px)",
+ ],
+ color: [fromColor, toColor],
+ },
+ {
+ duration: config.moveDuration,
+ fill: "both",
+ easing: "ease-in-out",
+ delay:
+ removeDuration +
+ staggerDelay(
+ i,
+ moved.length,
+ moveDuration,
+ config.moveDuration
+ ),
+ }
+ )
+ }
+ )
+ })
+
+ added.forEach((group, i) => {
+ group.forEach(({ span }, j) => {
+ const isLastSpan =
+ i === added.length - 1 && j === group.length - 1
+
+ const animation = span.animate(
+ {
+ opacity: [0, 1],
+ // filter: [
+ // "brightness(1)",
+ // "brightness(1.4)",
+ // "brightness(1)",
+ // ],
+ },
+ {
+ duration: config.addDuration,
+ fill: "both",
+ easing: "ease-in",
+ delay:
+ removeDuration +
+ config.moveDuration +
+ staggerDelay(
+ i,
+ added.length,
+ addDuration,
+ config.addDuration
+ ),
+ }
+ )
+
+ if (isLastSpan && callback) {
+ animation.onfinish = callback
+ }
+ })
+ })
+}
+
+function createSpan(token) {
+ if (!token.style) {
+ return document.createTextNode(token.content)
+ }
+ const span = document.createElement("span")
+ span.textContent = token.content
+
+ // set id
+ span.setAttribute("id", token.id)
+
+ // set style
+ Object.entries(token.style).forEach(([key, value]) => {
+ span.style.setProperty(key, value)
+ })
+ span.style.setProperty("display", "inline-block")
+
+ // span.style.setProperty("will-change", "transform")
+ return span
+}
+
+function fullStaggerDuration(count, singleDuration) {
+ if (count === 0) return 0
+ return 2 * singleDuration * (1 - 1 / (1 + count))
+ // return 1.5 * singleDuration - 1 / (1 + count)
+}
+
+function staggerDelay(i, n, duration, singleDuration) {
+ if (i === 0) return 0
+ const max = duration - singleDuration
+
+ return (i / (n - 1)) * max
+}
diff --git a/yarn.lock b/yarn.lock
index 78a4d349..bb564289 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,6 +9,14 @@
dependencies:
"@jridgewell/trace-mapping" "^0.3.0"
+"@ampproject/remapping@^2.2.0":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
+ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
"@auto-it/bot-list@10.34.0":
version "10.34.0"
resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.34.0.tgz#5938d6374626eda69725089a2cdf52f9b65018b8"
@@ -113,11 +121,24 @@
dependencies:
"@babel/highlight" "^7.18.6"
+"@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3"
+ integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==
+ dependencies:
+ "@babel/highlight" "^7.22.10"
+ chalk "^2.4.2"
+
"@babel/compat-data@^7.20.0":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==
+"@babel/compat-data@^7.22.9":
+ version "7.22.9"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
+ integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
+
"@babel/core@^7.17.10":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113"
@@ -139,6 +160,27 @@
json5 "^2.2.1"
semver "^6.3.0"
+"@babel/core@^7.22.9":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.11.tgz#8033acaa2aa24c3f814edaaa057f3ce0ba559c24"
+ integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.22.10"
+ "@babel/generator" "^7.22.10"
+ "@babel/helper-compilation-targets" "^7.22.10"
+ "@babel/helper-module-transforms" "^7.22.9"
+ "@babel/helpers" "^7.22.11"
+ "@babel/parser" "^7.22.11"
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.11"
+ "@babel/types" "^7.22.11"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
"@babel/generator@^7.20.5":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95"
@@ -148,6 +190,16 @@
"@jridgewell/gen-mapping" "^0.3.2"
jsesc "^2.5.1"
+"@babel/generator@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722"
+ integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==
+ dependencies:
+ "@babel/types" "^7.22.10"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
"@babel/helper-annotate-as-pure@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
@@ -172,11 +224,27 @@
browserslist "^4.21.3"
semver "^6.3.0"
+"@babel/helper-compilation-targets@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024"
+ integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==
+ dependencies:
+ "@babel/compat-data" "^7.22.9"
+ "@babel/helper-validator-option" "^7.22.5"
+ browserslist "^4.21.9"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
"@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-environment-visitor@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98"
+ integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
+
"@babel/helper-function-name@^7.19.0":
version "7.19.0"
resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
@@ -185,6 +253,14 @@
"@babel/template" "^7.18.10"
"@babel/types" "^7.19.0"
+"@babel/helper-function-name@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be"
+ integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==
+ dependencies:
+ "@babel/template" "^7.22.5"
+ "@babel/types" "^7.22.5"
+
"@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"
@@ -192,6 +268,13 @@
dependencies:
"@babel/types" "^7.18.6"
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-module-imports@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
@@ -206,6 +289,13 @@
dependencies:
"@babel/types" "^7.18.6"
+"@babel/helper-module-imports@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c"
+ integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-module-transforms@^7.20.2":
version "7.20.2"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712"
@@ -220,6 +310,17 @@
"@babel/traverse" "^7.20.1"
"@babel/types" "^7.20.2"
+"@babel/helper-module-transforms@^7.22.9":
+ version "7.22.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129"
+ integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-module-imports" "^7.22.5"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-validator-identifier" "^7.22.5"
+
"@babel/helper-plugin-utils@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
@@ -235,6 +336,11 @@
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf"
integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==
+"@babel/helper-plugin-utils@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
+ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
+
"@babel/helper-simple-access@^7.20.2":
version "7.20.2"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
@@ -242,6 +348,13 @@
dependencies:
"@babel/types" "^7.20.2"
+"@babel/helper-simple-access@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
+ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@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"
@@ -249,6 +362,13 @@
dependencies:
"@babel/types" "^7.18.6"
+"@babel/helper-split-export-declaration@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
+ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@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"
@@ -259,6 +379,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+"@babel/helper-string-parser@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
+ integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
+
"@babel/helper-validator-identifier@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
@@ -274,11 +399,21 @@
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-identifier@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193"
+ integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==
+
"@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/helper-validator-option@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac"
+ integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==
+
"@babel/helpers@^7.20.5":
version "7.20.6"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763"
@@ -288,6 +423,15 @@
"@babel/traverse" "^7.20.5"
"@babel/types" "^7.20.5"
+"@babel/helpers@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.11.tgz#b02f5d5f2d7abc21ab59eeed80de410ba70b056a"
+ integrity sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==
+ dependencies:
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.11"
+ "@babel/types" "^7.22.11"
+
"@babel/highlight@^7.16.7":
version "7.16.10"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
@@ -306,6 +450,15 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
+"@babel/highlight@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7"
+ integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.5"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+
"@babel/parser@^7.18.10":
version "7.18.11"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9"
@@ -316,6 +469,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
+"@babel/parser@^7.22.11", "@babel/parser@^7.22.5":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.11.tgz#becf8ee33aad2a35ed5607f521fe6e72a615f905"
+ integrity sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==
+
"@babel/plugin-syntax-jsx@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665"
@@ -344,6 +502,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
+"@babel/plugin-transform-react-jsx-self@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e"
+ integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-react-jsx-source@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz#1879c3f23629d287cc6186a6c683154509ec70c0"
@@ -351,6 +516,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
+"@babel/plugin-transform-react-jsx-source@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c"
+ integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-react-jsx@^7.16.7":
version "7.17.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1"
@@ -387,6 +559,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.16.3":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682"
+ integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/template@^7.18.10":
version "7.18.10"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
@@ -396,6 +575,15 @@
"@babel/parser" "^7.18.10"
"@babel/types" "^7.18.10"
+"@babel/template@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec"
+ integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==
+ dependencies:
+ "@babel/code-frame" "^7.22.5"
+ "@babel/parser" "^7.22.5"
+ "@babel/types" "^7.22.5"
+
"@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133"
@@ -412,6 +600,22 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.11.tgz#71ebb3af7a05ff97280b83f05f8865ac94b2027c"
+ integrity sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==
+ dependencies:
+ "@babel/code-frame" "^7.22.10"
+ "@babel/generator" "^7.22.10"
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.22.11"
+ "@babel/types" "^7.22.11"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/types@^7.16.7", "@babel/types@^7.17.0":
version "7.17.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
@@ -455,11 +659,27 @@
"@babel/helper-validator-identifier" "^7.19.1"
to-fast-properties "^2.0.0"
+"@babel/types@^7.22.10", "@babel/types@^7.22.11", "@babel/types@^7.22.5":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.11.tgz#0e65a6a1d4d9cbaa892b2213f6159485fe632ea2"
+ integrity sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.5"
+ to-fast-properties "^2.0.0"
+
"@code-hike/lighter@0.7.3":
version "0.7.3"
resolved "https://registry.yarnpkg.com/@code-hike/lighter/-/lighter-0.7.3.tgz#729a7ab484f11069d258c34dfe39be918f093e39"
integrity sha512-IW3nBrnQRSoYDY2suXUjNZegCGVH3ljEH5w51chazy30s103CdpwSwvFya3e6GbY/xfbyAVj+Uyg6HH4L5T6tw==
+"@code-hike/lighter@^0.8.2":
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/@code-hike/lighter/-/lighter-0.8.2.tgz#21fe70c339b645718606a8aa301f15524e5f829f"
+ integrity sha512-h7PA2+90rIRQWamxeHSpcgVLs9hwhz8UW8+RG+vYIYh2Y4F2GTa4c+7S5HQH/BKTyMPv5yrSCEwhCB605gO5og==
+ dependencies:
+ ansi-sequence-parser "^1.1.0"
+
"@codesandbox/sandpack-client@^0.19.0":
version "0.19.0"
resolved "https://registry.yarnpkg.com/@codesandbox/sandpack-client/-/sandpack-client-0.19.0.tgz#e37bdb06dc2c349d44970b344f66799867229e5f"
@@ -468,6 +688,124 @@
codesandbox-import-utils "^1.2.3"
lodash.isequal "^4.5.0"
+"@contentlayer/cli@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@contentlayer/cli/-/cli-0.3.4.tgz#a3b322aa30cd2c5db09c69b530928e80aebddae4"
+ integrity sha512-vNDwgLuhYNu+m70NZ3XK9kexKNguuxPXg7Yvzj3B34cEilQjjzSrcTY/i+AIQm9V7uT5GGshx9ukzPf+SmoszQ==
+ dependencies:
+ "@contentlayer/core" "0.3.4"
+ "@contentlayer/utils" "0.3.4"
+ clipanion "^3.2.1"
+ typanion "^3.12.1"
+
+"@contentlayer/client@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@contentlayer/client/-/client-0.3.4.tgz#2adf835502bfda58994211ab94f3e6555000d3a7"
+ integrity sha512-QSlLyc3y4PtdC5lFw0L4wTZUH8BQnv2nk37hNCsPAqGf+dRO7TLAzdc+2/mVIRgK+vSH+pSOzjLsQpFxxXRTZA==
+ dependencies:
+ "@contentlayer/core" "0.3.4"
+
+"@contentlayer/core@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@contentlayer/core/-/core-0.3.4.tgz#9f108a6fdc612482d6c59255ad5b3f2f3d8091d5"
+ integrity sha512-o68oBLwfYZ+2vtgfk1lgHxOl3LoxvRNiUfeQ8IWFWy/L4wnIkKIqLZX01zlRE5IzYM+ZMMN5V0cKQlO7DsyR9g==
+ dependencies:
+ "@contentlayer/utils" "0.3.4"
+ camel-case "^4.1.2"
+ comment-json "^4.2.3"
+ esbuild "0.17.x || 0.18.x"
+ gray-matter "^4.0.3"
+ mdx-bundler "^9.2.1"
+ rehype-stringify "^9.0.3"
+ remark-frontmatter "^4.0.1"
+ remark-parse "^10.0.2"
+ remark-rehype "^10.1.0"
+ source-map-support "^0.5.21"
+ type-fest "^3.12.0"
+ unified "^10.1.2"
+
+"@contentlayer/source-files@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@contentlayer/source-files/-/source-files-0.3.4.tgz#5e4c16e1c97436649a2c2953bd74dad6b93645de"
+ integrity sha512-4njyn0OFPu7WY4tAjMxiJgWOKeiHuBOGdQ36EYE03iij/pPPRbiWbL+cmLccYXUFEW58mDwpqROZZm6pnxjRDQ==
+ dependencies:
+ "@contentlayer/core" "0.3.4"
+ "@contentlayer/utils" "0.3.4"
+ chokidar "^3.5.3"
+ fast-glob "^3.2.12"
+ gray-matter "^4.0.3"
+ imagescript "^1.2.16"
+ micromatch "^4.0.5"
+ ts-pattern "^4.3.0"
+ unified "^10.1.2"
+ yaml "^2.3.1"
+ zod "^3.21.4"
+
+"@contentlayer/source-remote-files@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@contentlayer/source-remote-files/-/source-remote-files-0.3.4.tgz#9b528144b44ba35e9200ae438cd92350d29ffb6f"
+ integrity sha512-cyiv4sNUySZvR0uAKlM+kSAELzNd2h2QT1R2e41dRKbwOUVxeLfmGiLugr0aVac6Q3xYcD99dbHyR1xWPV+w9w==
+ dependencies:
+ "@contentlayer/core" "0.3.4"
+ "@contentlayer/source-files" "0.3.4"
+ "@contentlayer/utils" "0.3.4"
+
+"@contentlayer/utils@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@contentlayer/utils/-/utils-0.3.4.tgz#93c51758b77bed984899578d6f093e5ab60f74cd"
+ integrity sha512-ZWWOhbUWYQ2QHoLIlcUnEo7X4ZbwcyFPuzVQWWMkK43BxCveyQtZwBIzfyx54sqVzi0GUmKP8bHzsLQT0QxaLQ==
+ dependencies:
+ "@effect-ts/core" "^0.60.5"
+ "@effect-ts/otel" "^0.15.1"
+ "@effect-ts/otel-exporter-trace-otlp-grpc" "^0.15.1"
+ "@effect-ts/otel-sdk-trace-node" "^0.15.1"
+ "@js-temporal/polyfill" "^0.4.4"
+ "@opentelemetry/api" "^1.4.1"
+ "@opentelemetry/core" "^1.13.0"
+ "@opentelemetry/exporter-trace-otlp-grpc" "^0.39.1"
+ "@opentelemetry/resources" "^1.13.0"
+ "@opentelemetry/sdk-trace-base" "^1.13.0"
+ "@opentelemetry/sdk-trace-node" "^1.13.0"
+ "@opentelemetry/semantic-conventions" "^1.13.0"
+ chokidar "^3.5.3"
+ hash-wasm "^4.9.0"
+ inflection "^2.0.1"
+ memfs "^3.5.1"
+ oo-ascii-tree "^1.84.0"
+ ts-pattern "^4.3.0"
+ type-fest "^3.12.0"
+
+"@effect-ts/core@^0.60.5":
+ version "0.60.5"
+ resolved "https://registry.yarnpkg.com/@effect-ts/core/-/core-0.60.5.tgz#df79049e1be4a576ab6b45abbe92c831bda62361"
+ integrity sha512-qi1WrtJA90XLMnj2hnUszW9Sx4dXP03ZJtCc5DiUBIOhF4Vw7plfb65/bdBySPoC9s7zy995TdUX1XBSxUkl5w==
+ dependencies:
+ "@effect-ts/system" "^0.57.5"
+
+"@effect-ts/otel-exporter-trace-otlp-grpc@^0.15.1":
+ version "0.15.1"
+ resolved "https://registry.yarnpkg.com/@effect-ts/otel-exporter-trace-otlp-grpc/-/otel-exporter-trace-otlp-grpc-0.15.1.tgz#defbba3041782e067258d12fba661e781b105918"
+ integrity sha512-47gAg0O2pW5Jlo86jfzjdkwL5a7Bzb+Kj5WTmdu4CxYRfWn9ytKjuuYIfsNDW8neuhdKzn+P5wCddgEh0glYyQ==
+ dependencies:
+ "@effect-ts/otel" "^0.15.1"
+
+"@effect-ts/otel-sdk-trace-node@^0.15.1":
+ version "0.15.1"
+ resolved "https://registry.yarnpkg.com/@effect-ts/otel-sdk-trace-node/-/otel-sdk-trace-node-0.15.1.tgz#d425cc51f82da208de702b4dec4434c7bb78b512"
+ integrity sha512-a2sF0ylmn8xOJs8fNeT/spJ1gUcsksAJCALxo9WOfuTCMtTwMVtVhCKEPEeQoL7wFqU+JgPkVdP91+FJ/Rkeow==
+ dependencies:
+ "@effect-ts/otel" "^0.15.1"
+
+"@effect-ts/otel@^0.15.1":
+ version "0.15.1"
+ resolved "https://registry.yarnpkg.com/@effect-ts/otel/-/otel-0.15.1.tgz#c5466ed96229c9cda40978f7726086a1b390359e"
+ integrity sha512-AmZJHl7t0+Peh7Yb2+hqn6r9+rd9/UfeA4AMV9h0YGTdOyouyFfD3wzWlxnAUzAQ4Lrod4kC7Noruret4EpqpA==
+
+"@effect-ts/system@^0.57.5":
+ version "0.57.5"
+ resolved "https://registry.yarnpkg.com/@effect-ts/system/-/system-0.57.5.tgz#921e9b39dcea2d1728e0f49a0af233472efdc6cb"
+ integrity sha512-/crHGujo0xnuHIYNc1VgP0HGJGFSoSqq88JFXe6FmFyXPpWt8Xu39LyLg7rchsxfXFeEdA9CrIZvLV5eswXV5g==
+
"@endemolshinegroup/cosmiconfig-typescript-loader@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d"
@@ -478,11 +816,136 @@
ts-node "^9"
tslib "^2"
+"@esbuild-plugins/node-resolve@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-resolve/-/node-resolve-0.1.4.tgz#2257ef3b233c9cb3acd2ebde7d5a3d6874046d38"
+ integrity sha512-haFQ0qhxEpqtWWY0kx1Y5oE3sMyO1PcoSiWEPrAw6tm/ZOOLXjSs6Q+v1v9eyuVF0nNt50YEvrcrvENmyoMv5g==
+ dependencies:
+ "@types/resolve" "^1.17.1"
+ debug "^4.3.1"
+ escape-string-regexp "^4.0.0"
+ resolve "^1.19.0"
+
+"@esbuild/android-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
+ integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
+
+"@esbuild/android-arm@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
+ integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
+
+"@esbuild/android-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
+ integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
+
+"@esbuild/darwin-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
+ integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
+
+"@esbuild/darwin-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
+ integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
+
+"@esbuild/freebsd-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
+ integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
+
+"@esbuild/freebsd-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
+ integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
+
+"@esbuild/linux-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
+ integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
+
+"@esbuild/linux-arm@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
+ integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
+
+"@esbuild/linux-ia32@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
+ integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
+
"@esbuild/linux-loong64@0.14.54":
version "0.14.54"
resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
+"@esbuild/linux-loong64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
+ integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
+
+"@esbuild/linux-mips64el@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
+ integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
+
+"@esbuild/linux-ppc64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
+ integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
+
+"@esbuild/linux-riscv64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
+ integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
+
+"@esbuild/linux-s390x@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
+ integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
+
+"@esbuild/linux-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
+ integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
+
+"@esbuild/netbsd-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
+ integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
+
+"@esbuild/openbsd-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
+ integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
+
+"@esbuild/sunos-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
+ integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
+
+"@esbuild/win32-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
+ integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
+
+"@esbuild/win32-ia32@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
+ integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
+
+"@esbuild/win32-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
+ integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
+
+"@fal-works/esbuild-plugin-global-externals@^2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4"
+ integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==
+
"@floating-ui/core@^0.6.2":
version "0.6.2"
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-0.6.2.tgz#f2813f0e5f3d5ed7af5029e1a082203dadf02b7d"
@@ -518,11 +981,46 @@
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
+"@grpc/grpc-js@^1.7.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.1.tgz#d6df7943cd2875a4feaf725f85ff605c08ac245d"
+ integrity sha512-AvDEPQT4teS+J8++cTE5tku4rYCwpPwPguESJUummLs/Ug/O5Bouofnc1mxaDORmwA9QkrJ+PfRQ1Qs7adQgJg==
+ dependencies:
+ "@grpc/proto-loader" "^0.7.8"
+ "@types/node" ">=12.12.47"
+
+"@grpc/proto-loader@^0.7.8":
+ version "0.7.8"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.8.tgz#c050bbeae5f000a1919507f195a1b094e218036e"
+ integrity sha512-GU12e2c8dmdXb7XUlOgYWZ2o2i+z9/VeACkxTA/zzAe2IjclC5PnVL0lpgjhrqfpDYHzM8B1TF6pqWegMYAzlA==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^7.2.4"
+ yargs "^17.7.2"
+
"@hutson/parse-repository-url@^3.0.0":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340"
integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==
+"@jest/schemas@^29.6.3":
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
+ integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
+ dependencies:
+ "@sinclair/typebox" "^0.27.8"
+
+"@jridgewell/gen-mapping@^0.3.0":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
+ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
"@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"
@@ -537,6 +1035,11 @@
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
+ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+
"@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"
@@ -547,6 +1050,11 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
+"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
+ version "1.4.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
"@jridgewell/trace-mapping@^0.3.0":
version "0.3.4"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
@@ -555,6 +1063,14 @@
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
+"@jridgewell/trace-mapping@^0.3.17":
+ version "0.3.19"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811"
+ integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
"@jridgewell/trace-mapping@^0.3.9":
version "0.3.13"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea"
@@ -563,6 +1079,14 @@
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
+"@js-temporal/polyfill@^0.4.4":
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/@js-temporal/polyfill/-/polyfill-0.4.4.tgz#4c26b4a1a68c19155808363f520204712cfc2558"
+ integrity sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==
+ dependencies:
+ jsbi "^4.3.0"
+ tslib "^2.4.1"
+
"@lerna/add@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f"
@@ -1234,6 +1758,46 @@
npmlog "^4.1.2"
write-file-atomic "^3.0.3"
+"@mdx-js/esbuild@^2.0.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@mdx-js/esbuild/-/esbuild-2.3.0.tgz#97f2f1b854d904c50bcd0a219b3664657f4fe8c3"
+ integrity sha512-r/vsqsM0E+U4Wr0DK+0EfmABE/eg+8ITW4DjvYdh3ve/tK2safaqHArNnaqbOk1DjYGrhxtoXoGaM3BY8fGBTA==
+ dependencies:
+ "@mdx-js/mdx" "^2.0.0"
+ node-fetch "^3.0.0"
+ vfile "^5.0.0"
+
+"@mdx-js/loader@^2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-2.3.0.tgz#56a6b07eb0027b6407e953a97c52bd8619601161"
+ integrity sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==
+ dependencies:
+ "@mdx-js/mdx" "^2.0.0"
+ source-map "^0.7.0"
+
+"@mdx-js/mdx@^2.0.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.3.0.tgz#d65d8c3c28f3f46bb0e7cb3bf7613b39980671a9"
+ integrity sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==
+ 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/mdx@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.1.1.tgz#6d8b9b75456d7685a52c3812b1c3e4830c7458fb"
@@ -1280,6 +1844,14 @@
unist-util-visit "^4.0.0"
vfile "^5.0.0"
+"@mdx-js/react@^2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.3.0.tgz#4208bd6d70f0d0831def28ef28c26149b03180b3"
+ integrity sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==
+ dependencies:
+ "@types/mdx" "^2.0.0"
+ "@types/react" ">=16"
+
"@monaco-editor/loader@^1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.2.tgz#04effbb87052d19cd7d3c9d81c0635490f9bb6d8"
@@ -1300,6 +1872,18 @@
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.1.1.tgz#6ff26488dc7674ef2bfdd1ca28fe43eed1113bea"
integrity sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw==
+"@next/env@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.19.tgz#46905b4e6f62da825b040343cbc233144e9578d3"
+ integrity sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==
+
+"@next/mdx@^13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-13.4.19.tgz#6c7c0c2cdd14fc728afa3336805bc8c8428d2b31"
+ integrity sha512-EaWA30YxAqFcyQYNxCoL9/TCcZP1Nk6pvW0vf1M54qDAkAGiloWQqyttVKVbRz+qOYk92he6mBB4ej/7pmEinQ==
+ dependencies:
+ source-map "^0.7.0"
+
"@next/swc-android-arm-eabi@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.1.tgz#b5c3cd1f79d5c7e6a3b3562785d4e5ac3555b9e1"
@@ -1315,11 +1899,21 @@
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.1.tgz#4af00877332231bbd5a3703435fdd0b011e74767"
integrity sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==
+"@next/swc-darwin-arm64@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.19.tgz#77ad462b5ced4efdc26cb5a0053968d2c7dac1b6"
+ integrity sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==
+
"@next/swc-darwin-x64@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.1.tgz#bf4cb09e7e6ec6d91e031118dde2dd17078bcbbc"
integrity sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==
+"@next/swc-darwin-x64@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.19.tgz#aebe38713a4ce536ee5f2a291673e14b715e633a"
+ integrity sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==
+
"@next/swc-freebsd-x64@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.1.tgz#6933ea1264328e8523e28818f912cd53824382d4"
@@ -1335,36 +1929,71 @@
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.1.tgz#91b3e9ea8575b1ded421c0ea0739b7bccf228469"
integrity sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==
+"@next/swc-linux-arm64-gnu@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.19.tgz#ec54db65b587939c7b94f9a84800f003a380f5a6"
+ integrity sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==
+
"@next/swc-linux-arm64-musl@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.1.tgz#83149ea05d7d55f3664d608dbe004c0d125f9147"
integrity sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==
+"@next/swc-linux-arm64-musl@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.19.tgz#1f5e2c1ea6941e7d530d9f185d5d64be04279d86"
+ integrity sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==
+
"@next/swc-linux-x64-gnu@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.1.tgz#d7d0777b56de0dd82b78055772e13e18594a15ca"
integrity sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==
+"@next/swc-linux-x64-gnu@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.19.tgz#96b0882492a2f7ffcce747846d3680730f69f4d1"
+ integrity sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==
+
"@next/swc-linux-x64-musl@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.1.tgz#41655722b127133cd95ab5bc8ca1473e9ab6876f"
integrity sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==
+"@next/swc-linux-x64-musl@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.19.tgz#f276b618afa321d2f7b17c81fc83f429fb0fd9d8"
+ integrity sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==
+
"@next/swc-win32-arm64-msvc@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.1.tgz#f10da3dfc9b3c2bbd202f5d449a9b807af062292"
integrity sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==
+"@next/swc-win32-arm64-msvc@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.19.tgz#1599ae0d401da5ffca0947823dac577697cce577"
+ integrity sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==
+
"@next/swc-win32-ia32-msvc@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.1.tgz#4c0102b9b18ece15c818056d07e3917ee9dade78"
integrity sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==
+"@next/swc-win32-ia32-msvc@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.19.tgz#55cdd7da90818f03e4da16d976f0cb22045d16fd"
+ integrity sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==
+
"@next/swc-win32-x64-msvc@13.1.1":
version "13.1.1"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.1.tgz#c209a37da13be27b722f9c40c40ab4b094866244"
integrity sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==
+"@next/swc-win32-x64-msvc@13.4.19":
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.19.tgz#648f79c4e09279212ac90d871646ae12d80cdfce"
+ integrity sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==
+
"@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"
@@ -1581,6 +2210,218 @@
dependencies:
"@octokit/openapi-types" "^11.2.0"
+"@opentelemetry/api-logs@0.39.1":
+ version "0.39.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.39.1.tgz#3ea1e9dda11c35f993cb60dc5e52780b8175e702"
+ integrity sha512-9BJ8lMcOzEN0lu+Qji801y707oFO4xT3db6cosPvl+k7ItUHKN5ofWqtSbM9gbt1H4JJ/4/2TVrqI9Rq7hNv6Q==
+ dependencies:
+ "@opentelemetry/api" "^1.0.0"
+
+"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f"
+ integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==
+
+"@opentelemetry/context-async-hooks@1.15.2":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.15.2.tgz#116bd5fef231137198d5bf551e8c0521fbdfe928"
+ integrity sha512-VAMHG67srGFQDG/N2ns5AyUT9vUcoKpZ/NpJ5fDQIPfJd7t3ju+aHwvDsMcrYBWuCh03U3Ky6o16+872CZchBg==
+
+"@opentelemetry/core@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.13.0.tgz#7cdcb4176d260d279b0aa31456c4ce2ba7f410aa"
+ integrity sha512-2dBX3Sj99H96uwJKvc2w9NOiNgbvAO6mOFJFramNkKfS9O4Um+VWgpnlAazoYjT6kUJ1MP70KQ5ngD4ed+4NUw==
+ dependencies:
+ "@opentelemetry/semantic-conventions" "1.13.0"
+
+"@opentelemetry/core@1.15.2", "@opentelemetry/core@^1.13.0":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.15.2.tgz#5b170bf223a2333884bbc2d29d95812cdbda7c9f"
+ integrity sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==
+ dependencies:
+ "@opentelemetry/semantic-conventions" "1.15.2"
+
+"@opentelemetry/exporter-trace-otlp-grpc@^0.39.1":
+ version "0.39.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.39.1.tgz#3949f909fb3f8cbb456480a35829bb2630331bd3"
+ integrity sha512-l5RhLKx6U+yuLhMrtgavTDthX50E1mZM3/SSySC7OPZiArFHV/b/9x9jxAzrOgIQUDxyj4N0V9aLKSA2t7Qzxg==
+ dependencies:
+ "@grpc/grpc-js" "^1.7.1"
+ "@opentelemetry/core" "1.13.0"
+ "@opentelemetry/otlp-grpc-exporter-base" "0.39.1"
+ "@opentelemetry/otlp-transformer" "0.39.1"
+ "@opentelemetry/resources" "1.13.0"
+ "@opentelemetry/sdk-trace-base" "1.13.0"
+
+"@opentelemetry/otlp-exporter-base@0.39.1":
+ version "0.39.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.39.1.tgz#650c9b23bbc6eb335c5f9b7f433aca87e9dc88a3"
+ integrity sha512-Pv5X8fbi6jD/RJBePyn7MnCSuE6MbPB6dl+7YYBWJ5RcMGYMwvLXjd4h2jWsPV2TSUg38H/RoSP0aXvQ06Y7iw==
+ dependencies:
+ "@opentelemetry/core" "1.13.0"
+
+"@opentelemetry/otlp-grpc-exporter-base@0.39.1":
+ version "0.39.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.39.1.tgz#944f2ab384c08c37641c02f63381380d9d0714f4"
+ integrity sha512-u3ErFRQqQFKjjIMuwLWxz/tLPYInfmiAmSy//fGSCzCh2ZdJgqQjMOAxBgqFtCF2xFL+OmMhyuC2ThMzceGRWA==
+ dependencies:
+ "@grpc/grpc-js" "^1.7.1"
+ "@opentelemetry/core" "1.13.0"
+ "@opentelemetry/otlp-exporter-base" "0.39.1"
+ protobufjs "^7.2.2"
+
+"@opentelemetry/otlp-transformer@0.39.1":
+ version "0.39.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.39.1.tgz#6d83e33d2a031f9ae1dcaf29595eac25b681bebf"
+ integrity sha512-0hgVnXXz5efI382B/24NxD4b6Zxlh7nxCdJkxkdmQMbn0yRiwoq/ZT+QG8eUL6JNzsBAV1WJlF5aJNsL8skHvw==
+ dependencies:
+ "@opentelemetry/api-logs" "0.39.1"
+ "@opentelemetry/core" "1.13.0"
+ "@opentelemetry/resources" "1.13.0"
+ "@opentelemetry/sdk-logs" "0.39.1"
+ "@opentelemetry/sdk-metrics" "1.13.0"
+ "@opentelemetry/sdk-trace-base" "1.13.0"
+
+"@opentelemetry/propagator-b3@1.15.2":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.15.2.tgz#7bcb9fa645042a440922669fbac06a1a91e6704b"
+ integrity sha512-ZSrL3DpMEDsjD8dPt9Ze3ue53nEXJt512KyxXlLgLWnSNbe1mrWaXWkh7OLDoVJh9LqFw+tlvAhDVt/x3DaFGg==
+ dependencies:
+ "@opentelemetry/core" "1.15.2"
+
+"@opentelemetry/propagator-jaeger@1.15.2":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.15.2.tgz#90757fc9529da806a1845f502acb6d0eb821e3db"
+ integrity sha512-6m1yu7PVDIRz6BwA36lacfBZJCfAEHKgu+kSyukNwVdVjsTNeyD9xNPQnkl0WN7Rvhk8/yWJ83tLPEyGhk1wCQ==
+ dependencies:
+ "@opentelemetry/core" "1.15.2"
+
+"@opentelemetry/resources@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.13.0.tgz#436b33ea950004e66fce6575f2776a05faca7f8e"
+ integrity sha512-euqjOkiN6xhjE//0vQYGvbStxoD/WWQRhDiO0OTLlnLBO9Yw2Gd/VoSx2H+svsebjzYk5OxLuREBmcdw6rbUNg==
+ dependencies:
+ "@opentelemetry/core" "1.13.0"
+ "@opentelemetry/semantic-conventions" "1.13.0"
+
+"@opentelemetry/resources@1.15.2", "@opentelemetry/resources@^1.13.0":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.15.2.tgz#0c9e26cb65652a1402834a3c030cce6028d6dd9d"
+ integrity sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==
+ dependencies:
+ "@opentelemetry/core" "1.15.2"
+ "@opentelemetry/semantic-conventions" "1.15.2"
+
+"@opentelemetry/sdk-logs@0.39.1":
+ version "0.39.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.39.1.tgz#888af05458af5d097d6263ade118e8db78f76f38"
+ integrity sha512-/gmgKfZ1ZVFporKuwsewqIyvaUIGpv76JZ7lBpHQQPb37IMpaXO6pdqFI4ebHAWfNIm3akMyhmdtzivcgF3lgw==
+ dependencies:
+ "@opentelemetry/core" "1.13.0"
+ "@opentelemetry/resources" "1.13.0"
+
+"@opentelemetry/sdk-metrics@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.13.0.tgz#4e859107a7a4389bcda7b37d3952bc7dd34211d7"
+ integrity sha512-MOjZX6AnSOqLliCcZUrb+DQKjAWXBiGeICGbHAGe5w0BB18PJIeIo995lO5JSaFfHpmUMgJButTPfJJD27W3Vg==
+ dependencies:
+ "@opentelemetry/core" "1.13.0"
+ "@opentelemetry/resources" "1.13.0"
+ lodash.merge "4.6.2"
+
+"@opentelemetry/sdk-trace-base@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.13.0.tgz#096cc2759430d880c5d886e009df2605097403dc"
+ integrity sha512-moTiQtc0uPR1hQLt6gLDJH9IIkeBhgRb71OKjNHZPE1VF45fHtD6nBDi5J/DkTHTwYP5X3kBJLa3xN7ub6J4eg==
+ dependencies:
+ "@opentelemetry/core" "1.13.0"
+ "@opentelemetry/resources" "1.13.0"
+ "@opentelemetry/semantic-conventions" "1.13.0"
+
+"@opentelemetry/sdk-trace-base@1.15.2", "@opentelemetry/sdk-trace-base@^1.13.0":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz#4821f94033c55a6c8bbd35ae387b715b6108517a"
+ integrity sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==
+ dependencies:
+ "@opentelemetry/core" "1.15.2"
+ "@opentelemetry/resources" "1.15.2"
+ "@opentelemetry/semantic-conventions" "1.15.2"
+
+"@opentelemetry/sdk-trace-node@^1.13.0":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.15.2.tgz#987c929597ca274995164508f57a15f682d9de2f"
+ integrity sha512-5deakfKLCbPpKJRCE2GPI8LBE2LezyvR17y3t37ZI3sbaeogtyxmBaFV+slmG9fN8OaIT+EUsm1QAT1+z59gbQ==
+ dependencies:
+ "@opentelemetry/context-async-hooks" "1.15.2"
+ "@opentelemetry/core" "1.15.2"
+ "@opentelemetry/propagator-b3" "1.15.2"
+ "@opentelemetry/propagator-jaeger" "1.15.2"
+ "@opentelemetry/sdk-trace-base" "1.15.2"
+ semver "^7.5.1"
+
+"@opentelemetry/semantic-conventions@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.13.0.tgz#0290398b3eaebc6029c348988a78c3b688fe9219"
+ integrity sha512-LMGqfSZkaMQXqewO0o1wvWr/2fQdCh4a3Sqlxka/UsJCe0cfLulh6x2aqnKLnsrSGiCq5rSCwvINd152i0nCqw==
+
+"@opentelemetry/semantic-conventions@1.15.2", "@opentelemetry/semantic-conventions@^1.13.0":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz#3bafb5de3e20e841dff6cb3c66f4d6e9694c4241"
+ integrity sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==
+
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
+
+"@protobufjs/base64@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
+
+"@protobufjs/codegen@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
+
+"@protobufjs/fetch@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.1"
+ "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
+
+"@protobufjs/inquire@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+
+"@protobufjs/path@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
+
+"@protobufjs/pool@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
+
+"@protobufjs/utf8@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+
"@rollup/plugin-commonjs@^21.1.0":
version "21.1.0"
resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz#45576d7b47609af2db87f55a6d4b46e44fc3a553"
@@ -1638,6 +2479,11 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"
+"@sinclair/typebox@^0.27.8":
+ version "0.27.8"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
+ integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
+
"@swc/helpers@0.4.14":
version "0.4.14"
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74"
@@ -1645,11 +2491,23 @@
dependencies:
tslib "^2.4.0"
+"@swc/helpers@0.5.1":
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a"
+ integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==
+ dependencies:
+ tslib "^2.4.0"
+
"@tootallnate/once@1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+"@tootallnate/once@2":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
+ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
+
"@trysound/sax@0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
@@ -1674,6 +2532,11 @@
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc"
integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==
+"@types/chai@^4.3.5":
+ version "4.3.5"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b"
+ integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==
+
"@types/command-line-args@^5.0.0":
version "5.2.0"
resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6"
@@ -1745,6 +2608,11 @@
dependencies:
"@types/unist" "*"
+"@types/long@^4.0.1":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
+ integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
+
"@types/mdast@^3.0.0":
version "3.0.10"
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
@@ -1762,6 +2630,11 @@
resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.1.tgz#e4c05d355d092d7b58db1abfe460e53f41102ac8"
integrity sha512-JPEv4iAl0I+o7g8yVWDwk30es8mfVrjkvh5UeVR2sYPpZCK44vrAPsbJpIS+rJAUxLgaSAMKTEH5Vn5qd9XsrQ==
+"@types/mdx@^2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.6.tgz#d03e0cc6f7e6627b296f4ef49049678316e8ee23"
+ integrity sha512-sVcwEG10aFU2KcM7cIA0M410UPv/DesOPyG8zMVk0QUDexHA3lYmGucpEpZ2dtWWhi2ip3CG+5g/iH0PwoW4Fw==
+
"@types/minimatch@*", "@types/minimatch@^3.0.3":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
@@ -1790,6 +2663,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644"
integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==
+"@types/node@>=12.12.47", "@types/node@>=13.7.0":
+ version "20.5.3"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.3.tgz#fa52c147f405d56b2f1dd8780d840aa87ddff629"
+ integrity sha512-ITI7rbWczR8a/S6qjAW7DMqxqFMjjTo61qZVWJ1ubPvbIQsL5D/TvwjYEalM8Kthpe3hTzOGrF2TGbAu2uyqeA==
+
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
@@ -1800,6 +2678,11 @@
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+"@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/prop-types@*":
version "15.7.4"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
@@ -1826,6 +2709,15 @@
"@types/scheduler" "*"
csstype "^3.0.2"
+"@types/react@>=16":
+ version "18.2.20"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.20.tgz#1605557a83df5c8a2cc4eeb743b3dfc0eb6aaeb2"
+ integrity sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==
+ dependencies:
+ "@types/prop-types" "*"
+ "@types/scheduler" "*"
+ csstype "^3.0.2"
+
"@types/react@^17":
version "17.0.52"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.52.tgz#10d8b907b5c563ac014a541f289ae8eaa9bf2e9b"
@@ -1851,6 +2743,11 @@
dependencies:
"@types/node" "*"
+"@types/resolve@^1.17.1":
+ version "1.20.2"
+ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975"
+ integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==
+
"@types/scheduler@*":
version "0.16.2"
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
@@ -1861,6 +2758,11 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+"@types/unist@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.0.tgz#988ae8af1e5239e89f9fbb1ade4c935f4eeedf9a"
+ integrity sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==
+
"@vitejs/plugin-react@^1.3.0":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-1.3.2.tgz#2fcf0b6ce9bcdcd4cec5c760c199779d5657ece1"
@@ -1875,6 +2777,59 @@
react-refresh "^0.13.0"
resolve "^1.22.0"
+"@vitejs/plugin-react@^4.0.4":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz#31c3f779dc534e045c4b134e7cf7b150af0a7646"
+ integrity sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==
+ dependencies:
+ "@babel/core" "^7.22.9"
+ "@babel/plugin-transform-react-jsx-self" "^7.22.5"
+ "@babel/plugin-transform-react-jsx-source" "^7.22.5"
+ react-refresh "^0.14.0"
+
+"@vitest/expect@0.34.3":
+ version "0.34.3"
+ resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.34.3.tgz#576e1fd6a3a8b8b7a79a06477f3d450a77d67852"
+ integrity sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==
+ dependencies:
+ "@vitest/spy" "0.34.3"
+ "@vitest/utils" "0.34.3"
+ chai "^4.3.7"
+
+"@vitest/runner@0.34.3":
+ version "0.34.3"
+ resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.34.3.tgz#ce09b777d133bbcf843e1a67f4a743365764e097"
+ integrity sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==
+ dependencies:
+ "@vitest/utils" "0.34.3"
+ p-limit "^4.0.0"
+ pathe "^1.1.1"
+
+"@vitest/snapshot@0.34.3":
+ version "0.34.3"
+ resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.34.3.tgz#cb4767aa44711a1072bd2e06204b659275c4f0f2"
+ integrity sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==
+ dependencies:
+ magic-string "^0.30.1"
+ pathe "^1.1.1"
+ pretty-format "^29.5.0"
+
+"@vitest/spy@0.34.3":
+ version "0.34.3"
+ resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.34.3.tgz#d4cf25e6ca9230991a0223ecd4ec2df30f0784ff"
+ integrity sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==
+ dependencies:
+ tinyspy "^2.1.1"
+
+"@vitest/utils@0.34.3":
+ version "0.34.3"
+ resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.34.3.tgz#6e243189a358b736b9fc0216e6b6979bc857e897"
+ integrity sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==
+ dependencies:
+ diff-sequences "^29.4.3"
+ loupe "^2.3.6"
+ pretty-format "^29.5.0"
+
JSONStream@^1.0.4:
version "1.3.5"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -1883,6 +2838,11 @@ JSONStream@^1.0.4:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
+abab@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
+ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
+
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@@ -1893,11 +2853,21 @@ acorn-jsx@^5.0.0:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+acorn-walk@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
+ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
+
acorn@^8.0.0:
version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
+acorn@^8.10.0, acorn@^8.9.0:
+ version "8.10.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
+ integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
+
add-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
@@ -1964,6 +2934,11 @@ ansi-regex@^5.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+ansi-sequence-parser@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf"
+ integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==
+
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -1978,6 +2953,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies:
color-convert "^2.0.1"
+ansi-styles@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
+ integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
+
anymatch@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
@@ -2016,6 +2996,11 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
aria-hidden@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.1.3.tgz#bb48de18dc84787a3c6eee113709c473c64ec254"
@@ -2043,6 +3028,11 @@ array-ify@^1.0.0:
resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
+array-timsort@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926"
+ integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==
+
array-union@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -2217,7 +3207,7 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-braces@^3.0.1, braces@~3.0.2:
+braces@^3.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==
@@ -2234,6 +3224,16 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4
node-releases "^2.0.6"
update-browserslist-db "^1.0.9"
+browserslist@^4.21.9:
+ version "4.21.10"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0"
+ integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
+ dependencies:
+ caniuse-lite "^1.0.30001517"
+ electron-to-chromium "^1.4.477"
+ node-releases "^2.0.13"
+ update-browserslist-db "^1.0.11"
+
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -2249,6 +3249,13 @@ builtins@^1.0.3:
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
+busboy@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
+ integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
+ dependencies:
+ streamsearch "^1.1.0"
+
byline@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
@@ -2259,6 +3266,11 @@ byte-size@^7.0.0:
resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3"
integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==
+cac@^6.7.14:
+ version "6.7.14"
+ resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
+ integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
+
cacache@^15.0.5, cacache@^15.2.0:
version "15.3.0"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb"
@@ -2315,6 +3327,14 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+camel-case@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
+ integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
+ dependencies:
+ pascal-case "^3.1.2"
+ tslib "^2.0.3"
+
camelcase-keys@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
@@ -2354,6 +3374,11 @@ caniuse-lite@^1.0.30001406:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz#ab7371faeb4adff4b74dad1718a6fd122e45d9cb"
integrity sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==
+caniuse-lite@^1.0.30001517:
+ version "1.0.30001524"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz#1e14bce4f43c41a7deaeb5ebfe86664fe8dadb80"
+ integrity sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -2377,6 +3402,19 @@ chai@^4.3.6:
pathval "^1.1.1"
type-detect "^4.0.5"
+chai@^4.3.7:
+ version "4.3.8"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.8.tgz#40c59718ad6928da6629c70496fe990b2bb5b17c"
+ integrity sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==
+ dependencies:
+ assertion-error "^1.1.0"
+ check-error "^1.0.2"
+ deep-eql "^4.1.2"
+ get-func-name "^2.0.0"
+ loupe "^2.3.1"
+ pathval "^1.1.1"
+ type-detect "^4.0.5"
+
chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@@ -2424,7 +3462,7 @@ check-error@^1.0.2:
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
-"chokidar@>=3.0.0 <4.0.0":
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@@ -2485,6 +3523,13 @@ client-only@0.0.1:
resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
+clipanion@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-3.2.1.tgz#2887db4cb232e80ba57cf19347a4e3a1c4a74133"
+ integrity sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA==
+ dependencies:
+ typanion "^3.8.0"
+
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@@ -2494,6 +3539,15 @@ cliui@^7.0.2:
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
clone-deep@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
@@ -2652,6 +3706,17 @@ commander@^7.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+comment-json@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.3.tgz#50b487ebbf43abe44431f575ebda07d30d015365"
+ integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==
+ dependencies:
+ array-timsort "^1.0.3"
+ core-util-is "^1.0.3"
+ esprima "^4.0.1"
+ has-own-prop "^2.0.0"
+ repeat-string "^1.6.1"
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -2700,6 +3765,18 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+contentlayer@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/contentlayer/-/contentlayer-0.3.4.tgz#519ad446e38d533a2166a7bd3bd5188c5be019ab"
+ integrity sha512-FYDdTUFaN4yqep0waswrhcXjmMJnPD5iXDTtxcUCGdklfuIrXM2xLx51xl748cHmGA6IsC+27YZFxU6Ym13QIA==
+ dependencies:
+ "@contentlayer/cli" "0.3.4"
+ "@contentlayer/client" "0.3.4"
+ "@contentlayer/core" "0.3.4"
+ "@contentlayer/source-files" "0.3.4"
+ "@contentlayer/source-remote-files" "0.3.4"
+ "@contentlayer/utils" "0.3.4"
+
conventional-changelog-angular@^5.0.12:
version "5.0.13"
resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c"
@@ -2794,7 +3871,7 @@ core-util-is@1.0.2:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-core-util-is@~1.0.0:
+core-util-is@^1.0.3, core-util-is@~1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
@@ -3053,6 +4130,13 @@ csso@^4.0.2, csso@^4.2.0:
dependencies:
css-tree "^1.1.2"
+cssstyle@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a"
+ integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==
+ dependencies:
+ rrweb-cssom "^0.6.0"
+
csstype@^3.0.2:
version "3.0.11"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
@@ -3070,6 +4154,20 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
+data-uri-to-buffer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
+ integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
+
+data-urls@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4"
+ integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==
+ dependencies:
+ abab "^2.0.6"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.0"
+
dateformat@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
@@ -3082,6 +4180,13 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
dependencies:
ms "2.1.2"
+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"
+
debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@@ -3100,6 +4205,11 @@ decamelize@^1.1.0:
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+decimal.js@^10.4.3:
+ version "10.4.3"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
+ integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
+
decode-named-character-reference@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz#57b2bd9112659cacbc449d3577d7dadb8e1f3d1b"
@@ -3124,6 +4234,13 @@ deep-eql@^3.0.1:
dependencies:
type-detect "^4.0.0"
+deep-eql@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
+ integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
+ dependencies:
+ type-detect "^4.0.0"
+
deep-extend@^0.6.0, deep-extend@~0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -3205,6 +4322,11 @@ dezalgo@^1.0.0:
asap "^2.0.0"
wrappy "1"
+diff-sequences@^29.4.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
+ integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
+
diff@^4.0.1, diff@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
@@ -3215,6 +4337,11 @@ diff@^5.0.0:
resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
+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==
+
dir-glob@^2.0.0:
version "2.2.2"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
@@ -3256,6 +4383,13 @@ domelementtype@^2.0.1, domelementtype@^2.2.0:
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+domexception@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673"
+ integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==
+ dependencies:
+ webidl-conversions "^7.0.0"
+
domhandler@^4.2.0, domhandler@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
@@ -3322,6 +4456,11 @@ electron-to-chromium@^1.4.251:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
+electron-to-chromium@^1.4.477:
+ version "1.4.503"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.503.tgz#7bd43927ea9b4198697672d28d8fbd0da016a7a1"
+ integrity sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -3355,6 +4494,11 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+entities@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
env-ci@^5.0.1:
version "5.5.0"
resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-5.5.0.tgz#43364e3554d261a586dec707bc32be81112b545f"
@@ -3706,6 +4850,34 @@ esbuild-windows-arm64@0.14.54:
resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
+"esbuild@0.17.x || 0.18.x", esbuild@^0.18.10:
+ version "0.18.20"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
+ integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.18.20"
+ "@esbuild/android-arm64" "0.18.20"
+ "@esbuild/android-x64" "0.18.20"
+ "@esbuild/darwin-arm64" "0.18.20"
+ "@esbuild/darwin-x64" "0.18.20"
+ "@esbuild/freebsd-arm64" "0.18.20"
+ "@esbuild/freebsd-x64" "0.18.20"
+ "@esbuild/linux-arm" "0.18.20"
+ "@esbuild/linux-arm64" "0.18.20"
+ "@esbuild/linux-ia32" "0.18.20"
+ "@esbuild/linux-loong64" "0.18.20"
+ "@esbuild/linux-mips64el" "0.18.20"
+ "@esbuild/linux-ppc64" "0.18.20"
+ "@esbuild/linux-riscv64" "0.18.20"
+ "@esbuild/linux-s390x" "0.18.20"
+ "@esbuild/linux-x64" "0.18.20"
+ "@esbuild/netbsd-x64" "0.18.20"
+ "@esbuild/openbsd-x64" "0.18.20"
+ "@esbuild/sunos-x64" "0.18.20"
+ "@esbuild/win32-arm64" "0.18.20"
+ "@esbuild/win32-ia32" "0.18.20"
+ "@esbuild/win32-x64" "0.18.20"
+
esbuild@^0.13.2:
version "0.13.15"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf"
@@ -3792,7 +4964,12 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-esprima@^4.0.0:
+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==
+
+esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
@@ -3818,7 +4995,7 @@ estree-util-build-jsx@^2.0.0:
estree-util-is-identifier-name "^2.0.0"
estree-walker "^3.0.0"
-estree-util-is-identifier-name@^1.1.0:
+estree-util-is-identifier-name@^1.0.0, estree-util-is-identifier-name@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz#2e3488ea06d9ea2face116058864f6370b37456d"
integrity sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==
@@ -3837,6 +5014,13 @@ estree-util-to-js@^1.1.0:
astring "^1.8.0"
source-map "^0.7.0"
+estree-util-value-to-estree@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz#1d3125594b4d6680f666644491e7ac1745a3df49"
+ integrity sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==
+ dependencies:
+ is-plain-obj "^3.0.0"
+
estree-util-visit@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.1.0.tgz#c0ea7942c40ac7889a77b57a11e92f987744bc6f"
@@ -3885,6 +5069,13 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.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, extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
@@ -3925,6 +5116,17 @@ fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
+fast-glob@^3.2.12:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
+ integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
+ 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-json-parse@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d"
@@ -3942,6 +5144,13 @@ fastq@^1.6.0:
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"
+
fbemitter@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3"
@@ -3967,6 +5176,14 @@ fbjs@^3.0.0, fbjs@^3.0.1:
setimmediate "^1.0.5"
ua-parser-js "^0.7.30"
+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"
+
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
@@ -4046,6 +5263,15 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
@@ -4055,6 +5281,18 @@ form-data@~2.3.2:
combined-stream "^1.0.6"
mime-types "^2.1.12"
+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"
+
fp-ts@^2.5.3:
version "2.11.8"
resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.11.8.tgz#411cde116c446d568f5597b03352d8b3f98e8f82"
@@ -4098,6 +5336,11 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0:
dependencies:
minipass "^3.0.0"
+fs-monkey@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747"
+ integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -4265,6 +5508,11 @@ glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
+glob-to-regexp@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
+
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
@@ -4325,6 +5573,16 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+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"
+
handlebars@^4.7.7:
version "4.7.7"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
@@ -4370,6 +5628,11 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+has-own-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af"
+ integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==
+
has-symbols@^1.0.1, has-symbols@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
@@ -4394,6 +5657,48 @@ has@^1.0.0, has@^1.0.3:
dependencies:
function-bind "^1.1.1"
+hash-wasm@^4.9.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/hash-wasm/-/hash-wasm-4.9.0.tgz#7e9dcc9f7d6bd0cc802f2a58f24edce999744206"
+ integrity sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w==
+
+hast-util-from-parse5@^7.0.0:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz#aecfef73e3ceafdfa4550716443e4eb7b02e22b0"
+ integrity sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==
+ dependencies:
+ "@types/hast" "^2.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-parse-selector@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz#25ab00ae9e75cbc62cf7a901f68a247eade659e2"
+ integrity sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+
+hast-util-raw@^7.0.0:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.3.tgz#dcb5b22a22073436dbdc4aa09660a644f4991d99"
+ integrity sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==
+ 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@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-1.4.0.tgz#896ef9150a3f5cfbaff37334f75f31d6a324bab6"
@@ -4429,6 +5734,35 @@ hast-util-to-estree@^2.0.0:
unist-util-position "^4.0.0"
zwitch "^2.0.0"
+hast-util-to-html@^8.0.0:
+ version "8.0.4"
+ resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz#0269ef33fa3f6599b260a8dc94f733b8e39e41fc"
+ integrity sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ "@types/unist" "^2.0.0"
+ ccount "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-raw "^7.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.0"
+ zwitch "^2.0.4"
+
+hast-util-to-parse5@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz#c49391bf8f151973e0c9adcd116b561e8daf29f3"
+ integrity sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
hast-util-whitespace@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41"
@@ -4439,6 +5773,17 @@ hast-util-whitespace@^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.2.0"
+ resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.2.0.tgz#0eafb7afb153d047077fa2a833dc9b7ec604d10b"
+ integrity sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==
+ 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"
+
hex-color-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
@@ -4471,6 +5816,18 @@ htm@^3.1.0:
resolved "https://registry.yarnpkg.com/htm/-/htm-3.1.1.tgz#49266582be0dc66ed2235d5ea892307cc0c24b78"
integrity sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==
+html-encoding-sniffer@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9"
+ integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
+ dependencies:
+ whatwg-encoding "^2.0.0"
+
+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==
+
http-cache-semantics@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
@@ -4485,6 +5842,15 @@ http-proxy-agent@^4.0.1:
agent-base "6"
debug "4"
+http-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
+ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+ dependencies:
+ "@tootallnate/once" "2"
+ agent-base "6"
+ debug "4"
+
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
@@ -4502,6 +5868,14 @@ https-proxy-agent@^5.0.0:
agent-base "6"
debug "4"
+https-proxy-agent@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
human-signals@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
@@ -4514,6 +5888,13 @@ humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
+iconv-lite@0.6.3, iconv-lite@^0.6.2:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
iconv-lite@^0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -4521,13 +5902,6 @@ iconv-lite@^0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
-iconv-lite@^0.6.2:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
- integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
- dependencies:
- safer-buffer ">= 2.1.2 < 3.0.0"
-
icss-replace-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -4555,6 +5929,11 @@ ignore@^5.1.1, ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+imagescript@^1.2.16:
+ version "1.2.16"
+ resolved "https://registry.yarnpkg.com/imagescript/-/imagescript-1.2.16.tgz#2272f535816bdcbaec9da4448de5c89a488756bd"
+ integrity sha512-hhy8OVNymU+cYYj8IwCbdNlXJRoMr4HRd7+efkH32eBVfybVU/5SbzDYf3ZSiiF9ye/ghfBrI/ujec/nwl+fOQ==
+
immutable@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
@@ -4618,6 +5997,11 @@ infer-owner@^1.0.4:
resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+inflection@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inflection/-/inflection-2.0.1.tgz#bdf3a4c05d4275f41234910cbbe9a102ac72c99b"
+ integrity sha512-wzkZHqpb4eGrOKBl34xy3umnYHx8Si5R1U4fwmdxLo5gdH6mEK8gclckTj/qWqy4Je0bsDYe/qazZYuO7xe3XQ==
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -4795,6 +6179,11 @@ is-directory@^0.3.1:
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+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"
@@ -4898,6 +6287,11 @@ is-plain-object@^5.0.0:
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+is-potential-custom-element-name@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
+ integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
+
is-reference@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
@@ -5027,11 +6421,52 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
+js-yaml@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+jsbi@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-4.3.0.tgz#b54ee074fb6fcbc00619559305c8f7e912b04741"
+ integrity sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==
+
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+jsdom@^22.1.0:
+ version "22.1.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-22.1.0.tgz#0fca6d1a37fbeb7f4aac93d1090d782c56b611c8"
+ integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==
+ dependencies:
+ abab "^2.0.6"
+ cssstyle "^3.0.0"
+ data-urls "^4.0.0"
+ decimal.js "^10.4.3"
+ domexception "^4.0.0"
+ form-data "^4.0.0"
+ html-encoding-sniffer "^3.0.0"
+ http-proxy-agent "^5.0.0"
+ https-proxy-agent "^5.0.1"
+ is-potential-custom-element-name "^1.0.1"
+ nwsapi "^2.2.4"
+ parse5 "^7.1.2"
+ rrweb-cssom "^0.6.0"
+ saxes "^6.0.0"
+ symbol-tree "^3.2.4"
+ tough-cookie "^4.1.2"
+ w3c-xmlserializer "^4.0.0"
+ webidl-conversions "^7.0.0"
+ whatwg-encoding "^2.0.0"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.1"
+ ws "^8.13.0"
+ xml-name-validator "^4.0.0"
+
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@@ -5067,6 +6502,16 @@ json5@^2.2.1:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonc-parser@^3.2.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==
+
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -5098,7 +6543,7 @@ jsprim@^1.2.2:
json-schema "0.4.0"
verror "1.10.0"
-kind-of@^6.0.2, kind-of@^6.0.3:
+kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
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==
@@ -5193,6 +6638,11 @@ local-pkg@^0.4.1:
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.1.tgz#e7b0d7aa0b9c498a1110a5ac5b00ba66ef38cfff"
integrity sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==
+local-pkg@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963"
+ integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
+
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
@@ -5253,6 +6703,11 @@ lodash.memoize@^4.1.2:
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+lodash.merge@4.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.template@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
@@ -5286,6 +6741,16 @@ log-symbols@^4.0.0:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
+long@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+ integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+long@^5.0.0:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
+ integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+
longest-streak@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d"
@@ -5305,6 +6770,27 @@ loupe@^2.3.1:
dependencies:
get-func-name "^2.0.0"
+loupe@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53"
+ integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==
+ dependencies:
+ get-func-name "^2.0.0"
+
+lower-case@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+ integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+ dependencies:
+ tslib "^2.0.3"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -5331,6 +6817,13 @@ magic-string@^0.26.1:
dependencies:
sourcemap-codec "^1.4.8"
+magic-string@^0.30.1:
+ version "0.30.3"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.3.tgz#403755dfd9d6b398dfa40635d52e96c5ac095b85"
+ integrity sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+
make-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -5436,6 +6929,15 @@ mdast-util-from-markdown@^1.0.0:
unist-util-stringify-position "^3.0.0"
uvu "^0.5.0"
+mdast-util-frontmatter@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.1.tgz#79c46d7414eb9d3acabe801ee4a70a70b75e5af1"
+ integrity sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-markdown "^1.3.0"
+ micromark-extension-frontmatter "^1.0.0"
+
mdast-util-mdx-expression@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.0.tgz#3e927afe27943956dc5d1c64cb949652062f71ff"
@@ -5532,6 +7034,21 @@ mdurl@^1.0.0:
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+mdx-bundler@^9.2.1:
+ version "9.2.1"
+ resolved "https://registry.yarnpkg.com/mdx-bundler/-/mdx-bundler-9.2.1.tgz#917dbd986ac3e7f7f14ac635c2dfc224eafdd42d"
+ integrity sha512-hWEEip1KU9MCNqeH2rqwzAZ1pdqPPbfkx9OTJjADqGPQz4t9BO85fhI7AP9gVYrpmfArf9/xJZUN0yBErg/G/Q==
+ dependencies:
+ "@babel/runtime" "^7.16.3"
+ "@esbuild-plugins/node-resolve" "^0.1.4"
+ "@fal-works/esbuild-plugin-global-externals" "^2.1.2"
+ "@mdx-js/esbuild" "^2.0.0"
+ gray-matter "^4.0.3"
+ remark-frontmatter "^4.0.1"
+ remark-mdx-frontmatter "^1.1.1"
+ uuid "^8.3.2"
+ vfile "^5.3.2"
+
mdx-debugger@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/mdx-debugger/-/mdx-debugger-0.2.0.tgz#c441bdc9790731774d837374d3acda01cc6f5e86"
@@ -5544,6 +7061,13 @@ meant@^1.0.1:
resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c"
integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==
+memfs@^3.5.1:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6"
+ integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==
+ dependencies:
+ fs-monkey "^1.0.4"
+
meow@^8.0.0:
version "8.1.2"
resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897"
@@ -5593,6 +7117,16 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1:
micromark-util-types "^1.0.1"
uvu "^0.5.0"
+micromark-extension-frontmatter@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.1.1.tgz#2946643938e491374145d0c9aacc3249e38a865f"
+ integrity sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==
+ dependencies:
+ fault "^2.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
micromark-extension-mdx-expression@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa"
@@ -5863,6 +7397,14 @@ micromatch@^4.0.4:
braces "^3.0.1"
picomatch "^2.2.3"
+micromatch@^4.0.5:
+ 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-db@1.51.0:
version "1.51.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
@@ -6004,6 +7546,16 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+mlly@^1.2.0, mlly@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.1.tgz#7ab9cbb040bf8bd8205a0c341ce9acc3ae0c3a74"
+ integrity sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==
+ dependencies:
+ acorn "^8.10.0"
+ pathe "^1.1.1"
+ pkg-types "^1.0.3"
+ ufo "^1.3.0"
+
modify-values@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
@@ -6055,6 +7607,11 @@ nanoid@^3.3.4:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
+nanoid@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
negotiator@^0.6.2:
version "0.6.3"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
@@ -6070,6 +7627,14 @@ nested-error-stacks@~2.0.1:
resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b"
integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==
+next-contentlayer@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/next-contentlayer/-/next-contentlayer-0.3.4.tgz#dd88ff27bca94ec8c619d77d225a0b15f2e6ccb2"
+ integrity sha512-UtUCwgAl159KwfhNaOwyiI7Lg6sdioyKMeh+E7jxx0CJ29JuXGxBEYmCI6+72NxFGIFZKx8lvttbbQhbnYWYSw==
+ dependencies:
+ "@contentlayer/core" "0.3.4"
+ "@contentlayer/utils" "0.3.4"
+
next@13.1.1:
version "13.1.1"
resolved "https://registry.yarnpkg.com/next/-/next-13.1.1.tgz#42b825f650410649aff1017d203a088d77c80b5b"
@@ -6095,6 +7660,43 @@ next@13.1.1:
"@next/swc-win32-ia32-msvc" "13.1.1"
"@next/swc-win32-x64-msvc" "13.1.1"
+next@^13.4.19:
+ version "13.4.19"
+ resolved "https://registry.yarnpkg.com/next/-/next-13.4.19.tgz#2326e02aeedee2c693d4f37b90e4f0ed6882b35f"
+ integrity sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==
+ dependencies:
+ "@next/env" "13.4.19"
+ "@swc/helpers" "0.5.1"
+ busboy "1.6.0"
+ caniuse-lite "^1.0.30001406"
+ postcss "8.4.14"
+ styled-jsx "5.1.1"
+ watchpack "2.4.0"
+ zod "3.21.4"
+ optionalDependencies:
+ "@next/swc-darwin-arm64" "13.4.19"
+ "@next/swc-darwin-x64" "13.4.19"
+ "@next/swc-linux-arm64-gnu" "13.4.19"
+ "@next/swc-linux-arm64-musl" "13.4.19"
+ "@next/swc-linux-x64-gnu" "13.4.19"
+ "@next/swc-linux-x64-musl" "13.4.19"
+ "@next/swc-win32-arm64-msvc" "13.4.19"
+ "@next/swc-win32-ia32-msvc" "13.4.19"
+ "@next/swc-win32-x64-msvc" "13.4.19"
+
+no-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+ integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
+ dependencies:
+ lower-case "^2.0.2"
+ tslib "^2.0.3"
+
+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@2.6.7, node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.7:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
@@ -6102,6 +7704,15 @@ node-fetch@2.6.7, node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.7:
dependencies:
whatwg-url "^5.0.0"
+node-fetch@^3.0.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
+ integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
+ dependencies:
+ data-uri-to-buffer "^4.0.0"
+ fetch-blob "^3.1.4"
+ formdata-polyfill "^4.0.10"
+
node-gyp@^5.0.2:
version "5.1.1"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e"
@@ -6135,6 +7746,11 @@ node-gyp@^7.1.0:
tar "^6.0.2"
which "^2.0.2"
+node-releases@^2.0.13:
+ version "2.0.13"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
+ integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
+
node-releases@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
@@ -6324,6 +7940,11 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+nwsapi@^2.2.4:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30"
+ integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
+
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
@@ -6391,6 +8012,11 @@ onetime@^5.1.0, onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
+oo-ascii-tree@^1.84.0:
+ version "1.87.0"
+ resolved "https://registry.yarnpkg.com/oo-ascii-tree/-/oo-ascii-tree-1.87.0.tgz#77223b6d0c3382a30500b8738d7a602af1eed5ff"
+ integrity sha512-AvQw3bQAiZrx1h4+LnK6s/AxhHv3cs/j4f4T+r+JOO++Qx3i0ZIf8h9/aG/O4byGQPWRKKwpjvV+74cxbJv+0g==
+
os-homedir@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@@ -6428,6 +8054,13 @@ p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
+p-limit@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
+ integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
+ dependencies:
+ yocto-queue "^1.0.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -6604,6 +8237,26 @@ parse-url@^6.0.0:
parse-path "^4.0.0"
protocols "^1.4.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==
+
+parse5@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
+ integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
+ dependencies:
+ entities "^4.4.0"
+
+pascal-case@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
+ integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
@@ -6641,6 +8294,11 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+pathe@^1.1.0, pathe@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a"
+ integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==
+
pathval@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
@@ -6669,7 +8327,7 @@ picocolors@^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.2.3:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -6709,6 +8367,15 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
+pkg-types@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868"
+ integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==
+ dependencies:
+ jsonc-parser "^3.2.0"
+ mlly "^1.2.0"
+ pathe "^1.1.0"
+
point-in-polygon@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/point-in-polygon/-/point-in-polygon-1.1.0.tgz#b0af2616c01bdee341cbf2894df643387ca03357"
@@ -7250,6 +8917,15 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32:
picocolors "^0.2.1"
source-map "^0.6.1"
+postcss@^8.4.27:
+ version "8.4.28"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5"
+ integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
postcss@^8.4.6:
version "8.4.7"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8"
@@ -7264,6 +8940,15 @@ prettier@^2.5.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
+pretty-format@^29.5.0:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.3.tgz#d432bb4f1ca6f9463410c3fb25a0ba88e594ace7"
+ integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==
+ dependencies:
+ "@jest/schemas" "^29.6.3"
+ ansi-styles "^5.0.0"
+ react-is "^18.0.0"
+
pretty-ms@^7.0.0:
version "7.0.1"
resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8"
@@ -7334,6 +9019,24 @@ proto-list@~1.2.1:
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+protobufjs@^7.2.2, protobufjs@^7.2.4:
+ version "7.2.5"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.5.tgz#45d5c57387a6d29a17aab6846dcc283f9b8e7f2d"
+ integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/node" ">=13.7.0"
+ long "^5.0.0"
+
protocols@^1.1.0, protocols@^1.4.0:
version "1.4.8"
resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8"
@@ -7344,11 +9047,21 @@ psl@^1.1.28:
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+psl@^1.1.33:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
+ integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+
punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+punycode@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
+ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
+
pure-color@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e"
@@ -7381,6 +9094,11 @@ query-string@^6.13.8:
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
+querystringify@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
+ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -7420,7 +9138,7 @@ react-dom@^17.0.2:
object-assign "^4.1.1"
scheduler "^0.20.2"
-react-dom@^18.1.0:
+react-dom@^18.1.0, react-dom@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@@ -7440,6 +9158,11 @@ react-is@^16.13.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+react-is@^18.0.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
+ integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
+
react-json-view@^1.21.3:
version "1.21.3"
resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475"
@@ -7465,6 +9188,11 @@ react-refresh@^0.13.0:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.13.0.tgz#cbd01a4482a177a5da8d44c9755ebb1f26d5a1c1"
integrity sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==
+react-refresh@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
+ integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
+
react-split-pane@^0.1.92:
version "0.1.92"
resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.92.tgz#68242f72138aed95dd5910eeb9d99822c4fc3a41"
@@ -7498,7 +9226,7 @@ react@^17.0.2:
loose-envify "^1.1.0"
object-assign "^4.1.1"
-react@^18.1.0:
+react@^18.1.0, react@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
@@ -7657,6 +9385,11 @@ regenerator-runtime@^0.13.4:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+
registry-url@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
@@ -7664,6 +9397,35 @@ registry-url@^5.1.0:
dependencies:
rc "^1.2.8"
+rehype-stringify@^9.0.3:
+ version "9.0.4"
+ resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-9.0.4.tgz#31dbb9de6f5034c6964760a1b1083218059c4343"
+ integrity sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-to-html "^8.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-mdx-frontmatter@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/remark-mdx-frontmatter/-/remark-mdx-frontmatter-1.1.1.tgz#54cfb3821fbb9cb6057673e0570ae2d645f6fe32"
+ integrity sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==
+ dependencies:
+ estree-util-is-identifier-name "^1.0.0"
+ estree-util-value-to-estree "^1.0.0"
+ js-yaml "^4.0.0"
+ toml "^3.0.0"
+
remark-mdx@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0.tgz#bd921780c19ce3e51941e54b1e6388440ed499b3"
@@ -7681,7 +9443,16 @@ remark-parse@^10.0.0:
mdast-util-from-markdown "^1.0.0"
unified "^10.0.0"
-remark-rehype@^10.0.0:
+remark-parse@^10.0.2:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.2.tgz#ca241fde8751c2158933f031a4e3efbaeb8bc262"
+ integrity sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==
+ 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==
@@ -7696,6 +9467,11 @@ remove-markdown@^0.3.0:
resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98"
integrity sha1-XktmdJOpNXlyjz1S7MHbnKUF3Jg=
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
+
request@^2.88.0, request@^2.88.2:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
@@ -7736,6 +9512,11 @@ requireg@^0.2.2:
rc "~1.2.7"
resolve "~1.7.1"
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+
resolve-cwd@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
@@ -7897,6 +9678,18 @@ rollup@^2.41.2, rollup@^2.59.0:
optionalDependencies:
fsevents "~2.3.2"
+rollup@^3.27.1:
+ version "3.28.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.1.tgz#fb44aa6d5e65c7e13fd5bcfff266d0c4ea9ba433"
+ integrity sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+rrweb-cssom@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1"
+ integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==
+
run-async@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -7957,6 +9750,13 @@ sax@~1.2.4:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+saxes@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5"
+ integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
+ dependencies:
+ xmlchars "^2.2.0"
+
scheduler@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
@@ -7972,6 +9772,14 @@ scheduler@^0.23.0:
dependencies:
loose-envify "^1.1.0"
+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@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -7982,6 +9790,11 @@ semver@^6.0.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
@@ -7989,6 +9802,13 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semve
dependencies:
lru-cache "^6.0.0"
+semver@^7.5.1:
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -8027,6 +9847,11 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
+siginfo@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
+ integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
+
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
@@ -8113,7 +9938,7 @@ sort-keys@^4.0.0:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
-source-map-support@^0.5.17:
+source-map-support@^0.5.17, source-map-support@^0.5.21:
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@@ -8223,11 +10048,26 @@ stable@^0.1.8:
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+stackback@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
+ integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
+
state-local@^1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5"
integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==
+std-env@^3.3.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.4.3.tgz#326f11db518db751c83fd58574f449b7c3060910"
+ integrity sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==
+
+streamsearch@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
+ integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
+
strict-uri-encode@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
@@ -8247,7 +10087,7 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0:
+"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
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==
@@ -8308,6 +10148,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.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"
@@ -8335,6 +10180,13 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+strip-literal@^1.0.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07"
+ integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==
+ dependencies:
+ acorn "^8.10.0"
+
strong-log-transformer@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10"
@@ -8439,6 +10291,11 @@ svgo@^2.7.0:
picocolors "^1.0.0"
stable "^0.1.8"
+symbol-tree@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
table-layout@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04"
@@ -8538,6 +10395,11 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+tinybench@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.5.0.tgz#4711c99bbf6f3e986f67eb722fed9cddb3a68ba5"
+ integrity sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==
+
tinycolor2@^1.4.1:
version "1.4.2"
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
@@ -8548,11 +10410,21 @@ tinypool@^0.1.2:
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.1.2.tgz#5b1d5f5bb403afac8c67000047951ce76342fda7"
integrity sha512-fvtYGXoui2RpeMILfkvGIgOVkzJEGediv8UJt7TxdAOY8pnvUkFg/fkvqTfXG9Acc9S17Cnn1S4osDc2164guA==
+tinypool@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.7.0.tgz#88053cc99b4a594382af23190c609d93fddf8021"
+ integrity sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==
+
tinyspy@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-0.3.0.tgz#51bcc198173385c50416df791cd10c192078cb36"
integrity sha512-c5uFHqtUp74R2DJE3/Efg0mH5xicmgziaQXMm/LvuuZn3RdpADH32aEGDRyCzObXT1DNfwDMqRQ/Drh1MlO12g==
+tinyspy@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.1.1.tgz#9e6371b00c259e5c5b301917ca18c01d40ae558c"
+ integrity sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==
+
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -8572,6 +10444,21 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
+toml@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee"
+ integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==
+
+tough-cookie@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
+ integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
+ dependencies:
+ psl "^1.1.33"
+ punycode "^2.1.1"
+ universalify "^0.2.0"
+ url-parse "^1.5.3"
+
tough-cookie@~2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
@@ -8587,6 +10474,13 @@ tr46@^2.1.0:
dependencies:
punycode "^2.1.1"
+tr46@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469"
+ integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==
+ dependencies:
+ punycode "^2.3.0"
+
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
@@ -8614,6 +10508,11 @@ ts-node@^9, ts-node@^9.1.1:
source-map-support "^0.5.17"
yn "3.1.1"
+ts-pattern@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ts-pattern/-/ts-pattern-4.3.0.tgz#7a995b39342f1b00d1507c2d2f3b90ea16e178a6"
+ integrity sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==
+
tslib@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
@@ -8639,6 +10538,11 @@ tslib@^2:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
+tslib@^2.0.3, tslib@^2.4.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
tslib@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
@@ -8656,6 +10560,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+typanion@^3.12.1, typanion@^3.8.0:
+ version "3.14.0"
+ resolved "https://registry.yarnpkg.com/typanion/-/typanion-3.14.0.tgz#a766a91810ce8258033975733e836c43a2929b94"
+ integrity sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==
+
type-detect@^4.0.0, type-detect@^4.0.5:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
@@ -8686,6 +10595,11 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+type-fest@^3.12.0:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706"
+ integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==
+
typedarray-to-buffer@^3.1.5:
version "3.1.5"
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
@@ -8723,6 +10637,11 @@ ua-parser-js@^0.7.30:
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==
+ufo@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.0.tgz#c92f8ac209daff607c57bbd75029e190930a0019"
+ integrity sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==
+
uglify-js@^3.1.4:
version "3.15.2"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.2.tgz#1ed2c976f448063b1f87adb68c741be79959f951"
@@ -8761,6 +10680,19 @@ unified@^10.0.0:
trough "^2.0.0"
vfile "^5.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"
+
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
@@ -8807,6 +10739,13 @@ unist-util-is@^5.0.0:
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236"
integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==
+unist-util-is@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424"
+ integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==
+ dependencies:
+ "@types/unist" "^3.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"
@@ -8863,6 +10802,14 @@ unist-util-visit-parents@^5.0.0:
"@types/unist" "^2.0.0"
unist-util-is "^5.0.0"
+unist-util-visit-parents@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815"
+ integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-is "^6.0.0"
+
unist-util-visit@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
@@ -8890,6 +10837,15 @@ unist-util-visit@^4.0.0:
unist-util-is "^5.0.0"
unist-util-visit-parents "^5.0.0"
+unist-util-visit@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6"
+ integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-is "^6.0.0"
+ unist-util-visit-parents "^6.0.0"
+
universal-user-agent@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
@@ -8900,6 +10856,11 @@ universalify@^0.1.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+universalify@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
+ integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
+
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
@@ -8915,6 +10876,14 @@ upath@^2.0.1:
resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b"
integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==
+update-browserslist-db@^1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
+ integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
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"
@@ -8935,6 +10904,14 @@ url-join@^4.0.0:
resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7"
integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==
+url-parse@^1.5.3:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
+ integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
use-composed-ref@^1.0.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.2.1.tgz#9bdcb5ccd894289105da2325e1210079f56bf849"
@@ -8996,6 +10973,11 @@ uuid@^3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+uuid@^8.3.2:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
uvu@^0.5.0:
version "0.5.3"
resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.3.tgz#3d83c5bc1230f153451877bfc7f4aea2392219ae"
@@ -9035,6 +11017,14 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
+vfile-location@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.1.0.tgz#69df82fb9ef0a38d0d02b90dd84620e120050dd0"
+ integrity sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==
+ 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"
@@ -9053,6 +11043,28 @@ vfile@^5.0.0:
unist-util-stringify-position "^3.0.0"
vfile-message "^3.0.0"
+vfile@^5.3.2:
+ version "5.3.7"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7"
+ integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+ vfile-message "^3.0.0"
+
+vite-node@0.34.3:
+ version "0.34.3"
+ resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.34.3.tgz#de134fe38bc1555ac8ab5e489d7df6159a3e1a4c"
+ integrity sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==
+ dependencies:
+ cac "^6.7.14"
+ debug "^4.3.4"
+ mlly "^1.4.0"
+ pathe "^1.1.1"
+ picocolors "^1.0.0"
+ vite "^3.0.0 || ^4.0.0"
+
vite@^2.7.10, vite@^2.8.6:
version "2.8.6"
resolved "https://registry.yarnpkg.com/vite/-/vite-2.8.6.tgz#32d50e23c99ca31b26b8ccdc78b1d72d4d7323d3"
@@ -9077,6 +11089,47 @@ vite@^2.9.9:
optionalDependencies:
fsevents "~2.3.2"
+"vite@^3.0.0 || ^4.0.0":
+ version "4.4.9"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d"
+ integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==
+ dependencies:
+ esbuild "^0.18.10"
+ postcss "^8.4.27"
+ rollup "^3.27.1"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vitest@^0.34.3:
+ version "0.34.3"
+ resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.34.3.tgz#863d61c133d01b16e49fd52d380c09fa5ac03188"
+ integrity sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==
+ dependencies:
+ "@types/chai" "^4.3.5"
+ "@types/chai-subset" "^1.3.3"
+ "@types/node" "*"
+ "@vitest/expect" "0.34.3"
+ "@vitest/runner" "0.34.3"
+ "@vitest/snapshot" "0.34.3"
+ "@vitest/spy" "0.34.3"
+ "@vitest/utils" "0.34.3"
+ acorn "^8.9.0"
+ acorn-walk "^8.2.0"
+ cac "^6.7.14"
+ chai "^4.3.7"
+ debug "^4.3.4"
+ local-pkg "^0.4.3"
+ magic-string "^0.30.1"
+ pathe "^1.1.1"
+ picocolors "^1.0.0"
+ std-env "^3.3.3"
+ strip-literal "^1.0.1"
+ tinybench "^2.5.0"
+ tinypool "^0.7.0"
+ vite "^3.0.0 || ^4.0.0"
+ vite-node "0.34.3"
+ why-is-node-running "^2.2.2"
+
vitest@^0.5.9:
version "0.5.9"
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.5.9.tgz#175790f7038c65281c5b43f2765e5c5223b53c94"
@@ -9090,6 +11143,21 @@ vitest@^0.5.9:
tinyspy "^0.3.0"
vite "^2.7.10"
+w3c-xmlserializer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"
+ integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
+ dependencies:
+ xml-name-validator "^4.0.0"
+
+watchpack@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
+ integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
+ dependencies:
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.1.2"
+
wcwidth@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
@@ -9097,6 +11165,16 @@ wcwidth@^1.0.0:
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==
+
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
@@ -9107,6 +11185,31 @@ webidl-conversions@^6.1.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+webidl-conversions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
+ integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
+
+whatwg-encoding@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
+ integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
+ dependencies:
+ iconv-lite "0.6.3"
+
+whatwg-mimetype@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7"
+ integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
+
+whatwg-url@^12.0.0, whatwg-url@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-12.0.1.tgz#fd7bcc71192e7c3a2a97b9a8d6b094853ed8773c"
+ integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==
+ dependencies:
+ tr46 "^4.1.1"
+ webidl-conversions "^7.0.0"
+
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
@@ -9149,6 +11252,14 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
+why-is-node-running@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e"
+ integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==
+ dependencies:
+ siginfo "^2.0.0"
+ stackback "0.0.2"
+
wide-align@^1.1.0:
version "1.1.5"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
@@ -9235,6 +11346,21 @@ write-pkg@^4.0.0:
type-fest "^0.4.1"
write-json-file "^3.2.0"
+ws@^8.13.0:
+ version "8.13.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
+ integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
+
+xml-name-validator@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
+ integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
+
+xmlchars@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
@@ -9245,7 +11371,7 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
-yallist@^3.0.0, yallist@^3.1.1:
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
@@ -9260,6 +11386,11 @@ yaml@^1.10.0, yaml@^1.10.2:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yaml@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b"
+ integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
+
yargs-parser@20.2.4:
version "20.2.4"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
@@ -9270,6 +11401,11 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.3:
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+yargs-parser@^21.1.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==
+
yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
@@ -9283,11 +11419,39 @@ yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
+yargs@^17.7.2:
+ version "17.7.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+yocto-queue@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
+ integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
+
+zod@3.21.4:
+ version "3.21.4"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db"
+ integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==
+
+zod@^3.21.4:
+ version "3.22.2"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.2.tgz#3add8c682b7077c05ac6f979fea6998b573e157b"
+ integrity sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==
+
zwitch@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
@@ -9297,3 +11461,8 @@ 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==
+
+zwitch@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"
+ integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==