diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9dfb197..b6ae1e4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,6 +1,5 @@
name: Deploy
on:
- pull_request:
push:
branches:
- main
@@ -9,44 +8,46 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
+
- name: Checkout
uses: actions/checkout@v3
- - name: Build deps
- run: yarn
- - name: Build the website
- run: yarn build
- - if: github.event_name == 'push' && github.ref == 'refs/heads/main'
- name: Deploy website
+ with:
+ submodules: true
+
+ - name: Checkout Obsidian Pool Notes
+ uses: actions/checkout@v4
+ with:
+ repository: wodeni/nimo-obsidian-notes-pool
+ token: ${{ secrets.GH_PAT_OBSIDIAN_POOL }}
+ path: ./pool-notes/
+
+ - name: Log directory structure
+ run: |
+ ls -al
+ ls -al pool-notes/
+
+ - name: Install and Build
+ run: |
+ yarn
+ yarn build -- --base /pr-preview/pr-${{ github.event.pull_request.number }}/
+
+ - name: Deploy website
uses: JamesIves/github-pages-deploy-action@4.1.4
with:
+ working-directory: main
branch: gh-pages
folder: dist
target-folder: .
+
- name: Add .nojekyll
run: |
mkdir extra/
touch extra/.nojekyll
- - if: github.event_name == 'push' && github.ref == 'refs/heads/main'
- name: Deploy .nojekyll
+
+ - name: Deploy .nojekyll
uses: JamesIves/github-pages-deploy-action@4.1.4
with:
branch: gh-pages
folder: dist
clean: false
- - if: github.event_name == 'push' && github.ref == 'refs/heads/main'
- name: Deploy to cmu server
- uses: easingthemes/ssh-deploy@main
- env:
- SSH_PRIVATE_KEY: ${{ secrets.CMU_SSH_PRIVATE_KEY }}
- ARGS: "-rlgoDzvc -i"
- SOURCE: "dist/"
- REMOTE_HOST: ${{ secrets.CMU_HOST }}
- REMOTE_USER: ${{ secrets.CMU_USER }}
- TARGET: ${{ secrets.CMU_TARGET }}
- SCRIPT_BEFORE: |
- whoami
- ls -al
- SCRIPT_AFTER: |
- whoami
- ls -al
- echo $RSYNC_STDOUT
+ working-directory: main
diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml
index 7a0773b..57e0ea0 100644
--- a/.github/workflows/preview.yaml
+++ b/.github/workflows/preview.yaml
@@ -15,11 +15,24 @@ jobs:
permissions: write-all
runs-on: ubuntu-latest
steps:
+
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
+ - name: Checkout Obsidian Pool Notes
+ uses: actions/checkout@v4
+ with:
+ repository: wodeni/nimo-obsidian-notes-pool
+ token: ${{ secrets.GH_PAT_OBSIDIAN_POOL }}
+ path: ./pool-notes/
+
+ - name: Log directory structure
+ run: |
+ ls -al
+ ls -al pool-notes/
+
- name: Install and Build
run: |
yarn
@@ -29,3 +42,4 @@ jobs:
uses: rossjrw/pr-preview-action@v1
with:
source-dir: ./dist/
+
diff --git a/.gitignore b/.gitignore
index 002e91f..9e56763 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@ node_modules
dist
.DS_Store
publish-cmu.sh
+pool-notes
+public/pool-notes-images
diff --git a/package.json b/package.json
index 23f2ba1..dfd4534 100644
--- a/package.json
+++ b/package.json
@@ -10,18 +10,40 @@
},
"license": "MIT",
"devDependencies": {
+ "@portaljs/remark-wiki-link": "^1.2.0",
+ "@types/node": "^22.10.2",
"@types/react": "^18.0.37",
"@types/react-dom": "^18.0.11",
"@types/react-router-hash-link": "^2.4.6",
"@types/three": "^0.152.1",
"@vitejs/plugin-react": "^4.0.0",
"autoprefixer": "^10.4.16",
+ "chalk": "^5.4.1",
+ "fast-glob": "^3.3.2",
+ "fs-extra": "^11.2.0",
"postcss": "^8.4.32",
"prettier": "^2.8.8",
+ "rehype-autolink-headings": "^7.1.0",
+ "rehype-infer-title-meta": "^2.0.0",
+ "rehype-raw": "^7.0.0",
+ "rehype-slug": "^6.0.0",
+ "rehype-stringify": "^10.0.1",
+ "remark": "^15.0.1",
+ "remark-frontmatter": "^5.0.0",
+ "remark-gfm": "^4.0.0",
+ "remark-html": "^16.0.1",
+ "remark-parse": "^11.0.0",
+ "remark-parse-frontmatter": "^1.0.3",
+ "remark-rehype": "^11.1.1",
+ "remark-wiki-link": "^2.0.1",
"tailwindcss": "^3.4.0",
"typescript": "^4.9.5",
- "vite": "^4.1.1",
- "vite-plugin-virtual-plain-text": "^1.4.2"
+ "unified": "^11.0.5",
+ "unist-util-visit": "^5.0.0",
+ "vite": "^4.5.5",
+ "vite-plugin-markdown": "^2.2.0",
+ "vite-plugin-virtual-plain-text": "^1.4.5",
+ "vite-remark-html": "^1.1.1"
},
"dependencies": {
"@react-three/cannon": "^6.5.2",
diff --git a/plugins/vite-remark.mts b/plugins/vite-remark.mts
new file mode 100644
index 0000000..f82593d
--- /dev/null
+++ b/plugins/vite-remark.mts
@@ -0,0 +1,178 @@
+// plugins/vite-plugin-remark-wikilinks.mjs
+import { unified } from "unified";
+import remarkParse from "remark-parse";
+import remarkGfm from "remark-gfm";
+import remarkWikiLink from "remark-wiki-link";
+import remarkFrontmatter from "remark-frontmatter";
+import remarkParseFrontmatter from "remark-parse-frontmatter";
+import remarkRehype from "remark-rehype";
+import rehypeSlug from "rehype-slug";
+import rehypeRaw from "rehype-raw";
+import rehypeStringify from "rehype-stringify";
+import rehypeAutolinkHeadings from "rehype-autolink-headings";
+import rehypeInferTitleMeta from "rehype-infer-title-meta";
+import { visit } from "unist-util-visit";
+import fs from "fs/promises";
+import path from "path";
+import chalk from "chalk";
+import fastGlob from "fast-glob";
+
+// Utility: Check if URL is external (http or //)
+function isUrl(url) {
+ return /^https?:\/\//.test(url) || url.startsWith("//");
+}
+
+function normalizePath(str: string): string {
+ return str.replace(/\ /g, "-").toLowerCase();
+}
+
+export default function vitePluginRemarkMarkdown(
+ options: { imageDir?: string; publicDir?: string; mdGlob?: string } = {}
+) {
+ const {
+ imageDir = "images",
+ publicDir = "public",
+ mdGlob = "**/*.md", // you can customize the glob
+ } = options;
+ let baseUrl = "/"; // fallback
+
+ // The absolute folder where we copy images
+ const absPublicImages = path.resolve(process.cwd(), publicDir, imageDir);
+
+ // This will hold all known .md “slugs” (so remarkWikiLink doesn’t mark them as new)
+ let knownPages = [];
+
+ return {
+ name: "vite-plugin-remark-markdown",
+ configResolved(config) {
+ // At this stage, you have the final resolved Vite config
+ baseUrl = config.base;
+ console.log("Resolved base:", baseUrl);
+ },
+
+ // 1) In buildStart (or configResolved), gather all .md files
+ async buildStart() {
+ // Use fastGlob to find all .md files
+ const allMdPaths = await fastGlob(mdGlob, {
+ cwd: process.cwd(), // or a subfolder if you want
+ absolute: false, // we just need relative
+ });
+
+ // Convert something like "docs/intro.md" -> "docs/intro"
+ knownPages = allMdPaths.map((file) => {
+ const base = path.basename(file, ".md");
+ return normalizePath(base);
+ });
+ },
+
+ async transform(code, id) {
+ // Only run on .md files
+ if (!id.endsWith(".md")) return null;
+
+ // Create the output folder for images if needed
+ await fs.mkdir(absPublicImages, { recursive: true }).catch(() => {});
+
+ const mdDir = path.dirname(id);
+
+ // 2) Build the unified pipeline
+ const processor = unified()
+ .use(remarkParse)
+ .use(remarkFrontmatter)
+ .use(remarkParseFrontmatter)
+
+ // Tell remarkWikiLink about your known pages
+ .use(remarkWikiLink, {
+ // If a user writes [[SomePage]], check if 'SomePage' is in knownPages
+ // If it is, remark-wiki-link won't mark it as new.
+ permalinks: knownPages,
+
+ // For the .md -> .html rewriting
+ pageResolver: (name) => {
+ // returns an array of possible matches
+ // e.g. if user wrote [[docs/intro]], we might have 'docs/intro' in knownPages
+ const normalizedName = normalizePath(name);
+ return [normalizedName];
+ },
+ // If the final link is "docs/intro", produce "docs/intro.html" in the href
+ hrefTemplate: (permalink) => `${permalink}`,
+ })
+ .use(remarkGfm)
+
+ // Rewrites .md links -> .html
+ .use(() => (tree) => {
+ visit(tree, "link", (node) => {
+ const u = node.url;
+ if (!isUrl(u) && u.endsWith(".md")) {
+ node.url = normalizePath(u).replace(/\.md$/, ".html");
+ }
+ });
+ })
+
+ .use(remarkRehype, { allowDangerousHtml: true })
+ .use(rehypeRaw)
+ .use(rehypeSlug)
+ // Copy local images -> public/images
+ .use(() => async (tree) => {
+ const promises = [];
+ visit(tree, ["image", "element"], (node) => {
+ const isImg =
+ (node.type === "element" && node.tagName === "img") ||
+ node.type === "image";
+
+ if (!isImg) return;
+
+ const src = node.properties?.src || node.url;
+ if (src && !isUrl(src)) {
+ const decodedUrl = decodeURI(src);
+ const publicPathRel = path.join(baseUrl, imageDir, decodedUrl);
+ const absPublicPath = path.join(absPublicImages, decodedUrl);
+ const originalFile = path.join(
+ mdDir.replace(/^file:\/\//, ""),
+ decodedUrl
+ );
+
+ promises.push(
+ fs
+ .mkdir(path.dirname(absPublicPath), { recursive: true })
+ .then(() => fs.copyFile(originalFile, absPublicPath))
+ .catch((err) => {
+ console.error(
+ chalk.red(
+ `[vite-plugin-remark-markdown] Error copying image from ${originalFile} to ${absPublicPath}: ${err.message}`
+ )
+ );
+ })
+ );
+ // Rewrite to a path from the final HTML
+ if (node.properties) {
+ node.properties.src = `${publicPathRel}`;
+ } else {
+ node.url = `/${publicPathRel}`;
+ }
+ }
+ });
+ await Promise.all(promises);
+ })
+ .use(rehypeAutolinkHeadings, { behavior: "append" })
+ .use(rehypeInferTitleMeta)
+ .use(rehypeStringify, { allowDangerousHtml: true });
+
+ // 3) Process the content
+ const file = await processor.process(code);
+ const frontmatter = file.data.frontmatter || {};
+ const html = String(file.value);
+
+ // Return a JSON object with frontmatter + html
+ const output = {
+ frontmatter,
+ html,
+ };
+
+ // Export as ESM
+ return {
+ code: `export default ${JSON.stringify(output)}`,
+ map: null,
+ };
+ },
+ };
+}
diff --git a/src/App.tsx b/src/Academic.tsx
similarity index 77%
rename from src/App.tsx
rename to src/Academic.tsx
index 5ba0261..52cdda2 100644
--- a/src/App.tsx
+++ b/src/Academic.tsx
@@ -1,13 +1,18 @@
import Logo from "./Logo";
-import penroseLogo from "./assets/penrose.svg";
import edgeworth from "./assets/edgeworth.svg";
import mathdiagrams from "./assets/mathdiagrams.webp";
-import Balls from "./Balls";
-import Papers, { Paper } from "./Papers";
-import { HTMLProps, ReactNode, useEffect, useRef, useState } from "react";
+import Balls from "./components/Balls";
+import {
+ HTMLProps,
+ ReactNode,
+ useContext,
+ useEffect,
+ useRef,
+ useState,
+} from "react";
import { HashLink } from "react-router-hash-link";
import news from "./News";
-import A from "./A";
+import A from "./components/A";
import { MdEmail, MdLocationPin, MdDarkMode } from "react-icons/md";
import {
FaGithub,
@@ -17,10 +22,15 @@ import {
} from "react-icons/fa";
import { BiSlideshow } from "react-icons/bi";
import { BsBookmarkCheck } from "react-icons/bs";
-import Project from "./Project";
+import Papers, { Paper } from "./Papers";
+import Project from "./components/Project";
+import penroseLogo from "./assets/penrose.svg";
import theme from "./theme";
+import Tabs from "./components/Tabs";
+import { DarkModeContext } from "./context/DarkModeContext";
+import { useLocation } from "react-router-dom";
-const NewsFeed = () => {
+export const NewsFeed = () => {
const today = new Date();
const [isScrolled, setIsScrolled] = useState(false);
const scrollableDivRef = useRef(null);
@@ -128,19 +138,7 @@ const PubMeta = ({ pdf, talk, slides, bibtex }: Paper) => (
);
-const PubAuthors = ({
- pdf,
- title,
- venue,
- authors,
- talk,
- coauthors,
- authorDisplayNames,
- series,
- slides,
- id,
- bibtex,
-}: Paper) => (
+const PubAuthors = ({ authors, coauthors, authorDisplayNames, id }: Paper) => (
{authors
.map((a, i) => authorDisplayNames?.get(i) ?? a)
@@ -190,30 +188,27 @@ const Publications = () => (
);
-const Hero = ({ className }: { className?: string }) => (
+export const Hero = ({ className }: { className?: string }) => (
);
-const DarkToggle = ({ toggleDark }: { toggleDark: () => void }) => (
-
-
-
-);
+const DarkToggle = () => {
+ const { toggleDark } = useContext(DarkModeContext);
+ return (
+
+
+
+ );
+};
-const Socials = ({
- className,
- toggleDark,
-}: {
- className?: string;
- toggleDark: () => void;
-}) => (
+export const Socials = ({ className }: { className?: string }) => (
@@ -222,7 +217,7 @@ const Socials = ({
-
+
);
@@ -275,12 +270,12 @@ const CV = () => (
const Email = () => (
}
/>
);
-const Text = ({
+export const Text = ({
className,
children,
}: {
@@ -294,48 +289,51 @@ const Text = ({
);
-const Section = ({
+export const Section = ({
header,
children,
}: {
header: string;
children?: ReactNode;
}) => {
+ const location = useLocation();
+
const id = header.toLowerCase();
// NOTE: SAFARI BUG: without top-0 and left-0, the rect will be shifted down.
return (
-
-
-
-
-
-
-
- {header}
-
-
- {children}
-
+
+
+
+
+
+
+
+
+ {header}
+
+
+ {children}
+
+
);
};
-const Footer = () => (
-
+export const Footer = () => (
+
© {new Date().getUTCFullYear()} Wode "Nimo" Ni.
{/* Last updated on{" "}
@@ -354,45 +352,15 @@ const Footer = () => (
);
-const App: React.FC = () => {
- const [darkMode, setDarkMode] = useState(
- window.matchMedia("(prefers-color-scheme: dark)").matches
- );
- const toggleDark = () => {
- setDarkMode(!darkMode);
- };
-
- function updateTheme() {
- if (
- window.matchMedia &&
- window.matchMedia("(prefers-color-scheme: dark)").matches
- ) {
- setDarkMode(true);
- } else {
- // Otherwise, remove it
- setDarkMode(false);
- }
- }
-
- useEffect(() => {
- // Add an event listener to react to changes in the system's color scheme
- window
- .matchMedia("(prefers-color-scheme: dark)")
- .addEventListener("change", updateTheme);
- });
-
- useEffect(() => {
- document.documentElement.classList.toggle("dark", darkMode);
- }, [darkMode]);
-
+export default () => {
+ const { darkMode } = useContext(DarkModeContext);
return (
-
+ <>
-
+
+
+
+
I'm Nimo. I build ergonomic digital tools to make difficult things feel
simple.
@@ -451,14 +419,11 @@ const App: React.FC = () => {
-
+ >
);
};
-
-export default App;
diff --git a/src/Balls.tsx b/src/Balls.tsx
deleted file mode 100644
index 017b563..0000000
--- a/src/Balls.tsx
+++ /dev/null
@@ -1,224 +0,0 @@
-import {
- Canvas,
- MeshPhongMaterialProps,
- useFrame,
- useThree,
-} from "@react-three/fiber";
-import { useTexture } from "@react-three/drei";
-import { Physics, PlaneProps, usePlane, useSphere } from "@react-three/cannon";
-import { EffectComposer, N8AO, SMAA } from "@react-three/postprocessing";
-import { useRef, useEffect } from "react";
-import {
- MathUtils,
- Matrix4,
- Mesh,
- MeshStandardMaterial,
- SphereGeometry,
- Vector3,
-} from "three";
-
-const rfs = MathUtils.randFloatSpread;
-
-type OurPlaneProps = Pick
&
- Pick;
-
-function Plane({ color, ...props }: OurPlaneProps) {
- const [ref] = usePlane(() => ({ ...props }), useRef(null));
- return (
-
-
-
-
- );
-}
-
-function Room() {
- return (
- <>
-
-
-
-
- {/* */}
- >
- );
-}
-
-function Clump({
- mat = new Matrix4(),
- vec = new Vector3(),
- numBalls,
- color,
-}: {
- numBalls: number;
- color: string;
- mat?: THREE.Matrix4;
- vec?: THREE.Vector3;
-}) {
- const sphereGeometry = new SphereGeometry(1, 50, 50);
- // const texture = useTexture("/ball-9.jpg");
- const baubleMaterial = new MeshStandardMaterial({
- color,
- roughness: 0,
- envMapIntensity: 1,
- });
- const [ref, api] = useSphere(() => ({
- args: [1],
- mass: 1,
- angularDamping: 0.1,
- linearDamping: 0.65,
- position: [rfs(10), rfs(10), rfs(10)],
- }));
- useFrame((state) => {
- for (let i = 0; i < numBalls; i++) {
- // Get current whereabouts of the instanced sphere
- (ref.current! as any).getMatrixAt(i, mat);
- // Normalize the position and multiply by a negative force.
- // This is enough to drive it towards the center-point.
- api
- .at(i)
- .applyForce(
- vec
- .setFromMatrixPosition(mat)
- .normalize()
- .multiplyScalar(-40)
- .toArray(),
- [0, 0, 0]
- );
- }
- });
- return (
-
- );
-}
-
-function Pointer() {
- const viewport = useThree((state) => state.viewport);
- const [, api] = useSphere(() => ({
- type: "Kinematic",
- args: [3],
- position: [0, 0, 0],
- }));
- return useFrame((state) =>
- api.position.set(
- -(state.mouse.x * viewport.width) / 2,
- (state.mouse.y * viewport.height) / 2,
- 3
- )
- );
-}
-const PointLightRectangle = ({
- intensity,
- color,
- distance,
- width,
- height,
-}: {
- intensity: number;
- color: string;
- distance: number;
- width: number;
- height: number;
-}) => {
- const positions = [];
- const numLightsPerSide = 10;
-
- // Generate positions for the lights
- for (let i = 0; i < numLightsPerSide; i++) {
- positions.push([
- -width / 2 + (width / (numLightsPerSide - 1)) * i,
- distance,
- height / 2,
- ]); // Top side
- positions.push([
- -width / 2 + (width / (numLightsPerSide - 1)) * i,
- distance,
- -height / 2,
- ]); // Bottom side
- positions.push([
- width / 2,
- distance,
- -height / 2 + (height / (numLightsPerSide - 1)) * i,
- ]); // Right side
- positions.push([
- -width / 2,
- distance,
- -height / 2 + (height / (numLightsPerSide - 1)) * i,
- ]); // Left side
- }
-
- return (
- <>
- {positions.map((position, index) => (
-
- ))}
- >
- );
-};
-
-export default ({
- color,
- className,
-}: {
- className?: string;
- color: string;
-}) => {
- return (
-
- {/* */}
-
-
-
- {/* */}
-
-
-
-
-
-
-
-
-
- );
-};
diff --git a/src/Header.tsx b/src/Header.tsx
new file mode 100644
index 0000000..9a2fb1e
--- /dev/null
+++ b/src/Header.tsx
@@ -0,0 +1 @@
+export default () =>
;
diff --git a/src/Layout.tsx b/src/Layout.tsx
new file mode 100644
index 0000000..8fc34a2
--- /dev/null
+++ b/src/Layout.tsx
@@ -0,0 +1,20 @@
+import { Outlet } from "react-router-dom";
+import { Text, Hero, NewsFeed, Section, Socials, Footer } from "./Academic";
+import Tabs from "./components/Tabs";
+import { useContext } from "react";
+import { DarkModeContext, DarkModeProvider } from "./context/DarkModeContext";
+
+export default () => {
+ return (
+
+
+
+
+
+
+ );
+};
diff --git a/src/News.tsx b/src/News.tsx
index 5784f79..002d5ef 100644
--- a/src/News.tsx
+++ b/src/News.tsx
@@ -1,4 +1,4 @@
-import A from "./A";
+import A from "./components/A";
interface News {
time: Date;
diff --git a/src/NoPage.tsx b/src/NoPage.tsx
new file mode 100644
index 0000000..7c01f1c
--- /dev/null
+++ b/src/NoPage.tsx
@@ -0,0 +1,7 @@
+export default () => (
+
+
+ Are you sure you're in the right place?
+
+
+);
diff --git a/src/Pool.tsx b/src/Pool.tsx
new file mode 100644
index 0000000..11c4d40
--- /dev/null
+++ b/src/Pool.tsx
@@ -0,0 +1,66 @@
+import { Text, NewsFeed, Section, Socials } from "./Academic";
+import Tabs from "./components/Tabs";
+import { useEffect, useState } from "react";
+import theme from "./theme";
+import Balls from "./components/Balls";
+import Logo from "./Logo";
+import A from "./components/A";
+import NotesIndex from "./components/NoteIndex";
+
+export const Hero = ({ className }: { className?: string }) => (
+
+);
+
+const Intro = () => (
+
+ I'm an avid amateur pool player. This page is the pool side of me.
+
+);
+
+const Background = () => (
+
+ I got into billiards as a teenager, first playing Chinese 8-ball and then
+ snooker. I didn't play much during undergrad and finally switched to
+ American pool at the start of my Ph.D. in 2018. Since then, I've been mostly
+ focused on rotation games like 9-ball and 10-ball.
+
+);
+
+const NoteHeader = ({ children }: { children: React.ReactNode }) => (
+ {children}
+);
+
+export default () => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ I keep some Obsidian notes on pool, including practice sessions,
+ drills, and reflections on past competitions.
+
+ Drills
+
+ Tournaments
+
+
+
+
+ >
+ );
+};
diff --git a/src/A.tsx b/src/components/A.tsx
similarity index 100%
rename from src/A.tsx
rename to src/components/A.tsx
diff --git a/src/components/Balls.tsx b/src/components/Balls.tsx
new file mode 100644
index 0000000..5a81c66
--- /dev/null
+++ b/src/components/Balls.tsx
@@ -0,0 +1,430 @@
+import {
+ Canvas,
+ MeshPhongMaterialProps,
+ extend,
+ useFrame,
+ useLoader,
+ useThree,
+} from "@react-three/fiber";
+import { OrbitControls, useTexture } from "@react-three/drei";
+import { Physics, PlaneProps, usePlane, useSphere } from "@react-three/cannon";
+import { EffectComposer, N8AO, SMAA } from "@react-three/postprocessing";
+import { useRef, useEffect, useState, useMemo } from "react";
+import {
+ MathUtils,
+ Matrix4,
+ Mesh,
+ MeshStandardMaterial,
+ SphereGeometry,
+ SRGBColorSpace,
+ TextureLoader,
+ Vector3,
+} from "three";
+
+const rfs = MathUtils.randFloatSpread;
+
+type OurPlaneProps = Pick &
+ Pick;
+
+function Plane({ color, ...props }: OurPlaneProps) {
+ const [ref] = usePlane(() => ({ ...props }), useRef(null));
+ return (
+
+
+
+
+ );
+}
+
+function Room() {
+ return (
+ <>
+
+
+
+
+ {/* */}
+ >
+ );
+}
+
+function Clump({
+ mat = new Matrix4(),
+ vec = new Vector3(),
+ numBalls,
+ color,
+}: {
+ numBalls: number;
+ color: string;
+ mat?: THREE.Matrix4;
+ vec?: THREE.Vector3;
+}) {
+ const sphereGeometry = new SphereGeometry(1, 50, 50);
+ const baubleMaterial = new MeshStandardMaterial({
+ color,
+ roughness: 0,
+ envMapIntensity: 1,
+ });
+ const [ref, api] = useSphere(() => ({
+ args: [1],
+ mass: 1,
+ angularDamping: 0.1,
+ linearDamping: 0.65,
+ position: [rfs(10), rfs(10), rfs(10)],
+ }));
+ useFrame((state) => {
+ for (let i = 0; i < numBalls; i++) {
+ // Get current whereabouts of the instanced sphere
+ (ref.current! as any).getMatrixAt(i, mat);
+ // Normalize the position and multiply by a negative force.
+ // This is enough to drive it towards the center-point.
+ api
+ .at(i)
+ .applyForce(
+ vec
+ .setFromMatrixPosition(mat)
+ .normalize()
+ .multiplyScalar(-40)
+ .toArray(),
+ [0, 0, 0]
+ );
+ }
+ });
+ return (
+
+ );
+}
+
+// function Rack({
+// mat = new Matrix4(),
+// vec = new Vector3(),
+// color,
+// }: {
+// color: string;
+// mat?: Matrix4;
+// vec?: Vector3;
+// }) {
+// const sphereGeometry = new SphereGeometry(1, 50, 50);
+// const objectBallMaterial = new MeshStandardMaterial({
+// color: "#999",
+// roughness: 0,
+// });
+// const nineBallMaterial = new MeshStandardMaterial({
+// color,
+// roughness: 0,
+// });
+
+// const [ref, api] = useSphere(() => ({
+// args: [1],
+// mass: 1,
+// angularDamping: 0.1,
+// linearDamping: 0.65,
+// position: [rfs(10), rfs(10), rfs(10)],
+// }));
+
+// // Precompute the diamond-shaped rack positions
+// const d = 2;
+// const h = (Math.sqrt(3) * d) / 2;
+// const diamondPositions = [
+// [0, 2 * h, 0],
+// [-d / 2, h, 0],
+// [d / 2, h, 0],
+// [d, 0, 0],
+// [-d, 0, 0],
+// [-d / 2, -h, 0],
+// [d / 2, -h, 0],
+// [0, -2 * h, 0],
+// ];
+
+// // Initialize ball positions
+// useFrame(() => {
+// diamondPositions.forEach((pos, i) => {
+// api.at(i).position.set(pos[0], pos[1], pos[2]);
+// });
+// });
+
+// return (
+// <>
+//
+//
+// >
+// );
+// }
+
+function Rack({
+ mat = new Matrix4(),
+ vec = new Vector3(),
+ color,
+}: {
+ color: string;
+ mat?: Matrix4;
+ vec?: Vector3;
+}) {
+ const sphereGeometry = new SphereGeometry(1, 50, 50);
+ const objectBallMaterial = new MeshStandardMaterial({
+ color: "#999",
+ roughness: 0,
+ });
+ const nineBallMaterial = new MeshStandardMaterial({
+ color,
+ roughness: 0,
+ });
+
+ // --------------------------------------------------------------------
+ // 1) The diamond positions for the 8 "object" balls
+ // The 9-ball (center) is simply at [0, 0, 0].
+ // --------------------------------------------------------------------
+ const d = 2;
+ const h = (Math.sqrt(3) * d) / 2;
+ const diamondPositions = [
+ [0, 2 * h, 0],
+ [-d / 2, h, 0],
+ [d / 2, h, 0],
+ [d, 0, 0],
+ [-d, 0, 0],
+ [-d / 2, -h, 0],
+ [d / 2, -h, 0],
+ [0, -2 * h, 0],
+ ];
+ const NUM_BALLS = diamondPositions.length; // 8
+
+ // --------------------------------------------------------------------
+ // 2) We want random initial positions that do NOT overlap
+ // with the 9-ball at [0,0,0].
+ // Each ball has radius 1, so let's keep them at least 2 units away.
+ // --------------------------------------------------------------------
+ const minDistanceFromCenter = 2; // or 2.1 if you want a tiny gap
+ const randomFromSpace = (range: number) => Math.random() * range - range / 2;
+
+ function getRandomPositionNonOverlapping(
+ minDist: number,
+ range: number
+ ): [number, number, number] {
+ let x, y, z, dist;
+ do {
+ x = randomFromSpace(range);
+ y = randomFromSpace(range);
+ z = randomFromSpace(range);
+ dist = Math.sqrt(x * x + y * y + z * z);
+ } while (dist < minDist);
+ return [x, y, z];
+ }
+
+ const initialPositions = useMemo(() => {
+ return Array.from({ length: NUM_BALLS }, () =>
+ getRandomPositionNonOverlapping(minDistanceFromCenter, 10)
+ );
+ }, [NUM_BALLS]);
+
+ // --------------------------------------------------------------------
+ // 3) Create the physics bodies:
+ // - 8 object balls, each starting from the random positions
+ // - 1 "center" 9-ball at [0,0,0]
+ // --------------------------------------------------------------------
+ const [objectRef, objectApi] = useSphere((index) => ({
+ args: [1],
+ mass: 0,
+ angularDamping: 0.1,
+ linearDamping: 0.65,
+ position: initialPositions[index],
+ type: "Dynamic",
+ }));
+
+ // The 9-ball is simply placed at the center from the start,
+ // with no "fly in" animation.
+ const [nineRef] = useSphere(() => ({
+ args: [1],
+ mass: 0, // or 1 if you still want it to be a physics body
+ angularDamping: 0.1,
+ linearDamping: 0.65,
+ position: [0, 0, 0],
+ type: "Static", // or "Dynamic" if you want it to move
+ }));
+
+ // --------------------------------------------------------------------
+ // 4) Animate the 8 object balls flying into the diamond shape,
+ // using a simple lerp from their random initial positions.
+ // --------------------------------------------------------------------
+ const [flyInProgress, setFlyInProgress] = useState(0);
+
+ useFrame((_, delta) => {
+ setFlyInProgress((prev) => Math.min(1, prev + delta + flyInProgress * 0.1));
+ diamondPositions.forEach((targetPos, i) => {
+ const [ix, iy, iz] = initialPositions[i];
+ const [tx, ty, tz] = targetPos;
+ const t = flyInProgress;
+ const x = ix + (tx - ix) * t;
+ const y = iy + (ty - iy) * t;
+ const z = iz + (tz - iz) * t;
+ objectApi.at(i).position.set(x, y, z);
+ });
+ });
+
+ return (
+ <>
+ {/* 8 object balls */}
+
+ {/* 9-ball at the center */}
+
+ >
+ );
+}
+
+function Pointer() {
+ const viewport = useThree((state) => state.viewport);
+ const [, api] = useSphere(() => ({
+ type: "Kinematic",
+ args: [3],
+ position: [0, 0, 0],
+ }));
+ return useFrame((state) =>
+ api.position.set(
+ -(state.mouse.x * viewport.width) / 2,
+ (state.mouse.y * viewport.height) / 2,
+ 3
+ )
+ );
+}
+const PointLightRectangle = ({
+ intensity,
+ color,
+ distance,
+ width,
+ height,
+}: {
+ intensity: number;
+ color: string;
+ distance: number;
+ width: number;
+ height: number;
+}) => {
+ const positions = [];
+ const numLightsPerSide = 10;
+
+ // Generate positions for the lights
+ for (let i = 0; i < numLightsPerSide; i++) {
+ positions.push([
+ -width / 2 + (width / (numLightsPerSide - 1)) * i,
+ distance,
+ height / 2,
+ ]); // Top side
+ positions.push([
+ -width / 2 + (width / (numLightsPerSide - 1)) * i,
+ distance,
+ -height / 2,
+ ]); // Bottom side
+ positions.push([
+ width / 2,
+ distance,
+ -height / 2 + (height / (numLightsPerSide - 1)) * i,
+ ]); // Right side
+ positions.push([
+ -width / 2,
+ distance,
+ -height / 2 + (height / (numLightsPerSide - 1)) * i,
+ ]); // Left side
+ }
+
+ return (
+ <>
+ {positions.map((position, index) => (
+
+ ))}
+ >
+ );
+};
+
+export default ({
+ color,
+ mode,
+ className,
+}: {
+ className?: string;
+ mode: "pool" | "clump";
+ color: string;
+}) => {
+ return (
+
+ {/* */}
+
+ {mode === "clump" && }
+ {/* {mode === "clump" && } */}
+
+ {mode === "pool" && }
+ {/* */}
+
+
+
+
+
+
+
+
+ {mode === "pool" && }
+
+ );
+};
diff --git a/src/components/Note.tsx b/src/components/Note.tsx
new file mode 100644
index 0000000..95c62a9
--- /dev/null
+++ b/src/components/Note.tsx
@@ -0,0 +1,28 @@
+import { Socials } from "../Academic";
+import Tabs from "./Tabs";
+import { Hero } from "../Pool";
+import { NoteEntry } from "../notes";
+import Tags from "./Tags";
+
+export default function ({ note }: { note: NoteEntry }) {
+ return (
+ <>
+
+
+
+
+
+
+
+
+ {note.frontmatter?.title ?? ""}
+
+ {/* tags */}
+ {note.frontmatter?.tags && }
+
+
+
+
+ >
+ );
+}
diff --git a/src/components/NoteIndex.tsx b/src/components/NoteIndex.tsx
new file mode 100644
index 0000000..3f68860
--- /dev/null
+++ b/src/components/NoteIndex.tsx
@@ -0,0 +1,33 @@
+// src/NotesIndex.tsx
+import { Link } from "react-router-dom";
+import { notes } from "../notes"; // from step #2
+import Tabs from "./Tabs";
+import { Socials } from "../Academic";
+import { Hero } from "../Pool";
+import Tags from "./Tags";
+
+export default function NotesIndex({ tag }: { tag?: string }) {
+ const filtered = tag
+ ? notes.filter((note) => note.frontmatter?.tags?.includes(tag))
+ : notes;
+ return (
+ <>
+
+
+ {filtered.map((note) => (
+
+
+
+ {note.frontmatter?.title ?? note.slug}
+
+
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/src/components/NotePage.tsx b/src/components/NotePage.tsx
new file mode 100644
index 0000000..0169d5b
--- /dev/null
+++ b/src/components/NotePage.tsx
@@ -0,0 +1,14 @@
+import { useParams } from "react-router-dom";
+import { noteMap } from "../notes.js"; // from step #2
+import NoteContent from "./Note.js"; // your snippet
+
+export default function NotePage() {
+ const { slug } = useParams<{ slug: string }>();
+ if (!slug) return No slug provided.
;
+
+ const note = noteMap[slug];
+ if (!note) return Note not found
;
+
+ // Now we have note.html from the plugin.
+ return ;
+}
diff --git a/src/Project.tsx b/src/components/Project.tsx
similarity index 100%
rename from src/Project.tsx
rename to src/components/Project.tsx
diff --git a/src/components/Tabs.tsx b/src/components/Tabs.tsx
new file mode 100644
index 0000000..b9c2207
--- /dev/null
+++ b/src/components/Tabs.tsx
@@ -0,0 +1,37 @@
+import { Link, Navigate, useLocation } from "react-router-dom";
+import A from "./A";
+
+const StyledLink = ({
+ to,
+ children,
+}: {
+ to: string;
+ children: React.ReactNode;
+}) => (
+
+ {children}
+
+);
+
+const Computers = () => (
+
+ /Computers
+
+);
+
+const Pool = () => (
+
+ /Pool
+
+);
+
+export default () => {
+ return (
+
+ {useLocation().pathname === "/pool" ?
:
}
+
+ );
+};
diff --git a/src/components/Tags.tsx b/src/components/Tags.tsx
new file mode 100644
index 0000000..d640e7c
--- /dev/null
+++ b/src/components/Tags.tsx
@@ -0,0 +1,15 @@
+const Tags = ({ tags, className }: { className?: string; tags: string[] }) => (
+
+ {tags.map((tag: string) => (
+
+ #{tag}
+
+ ))}
+
+);
+export default Tags;
diff --git a/src/context/DarkModeContext.tsx b/src/context/DarkModeContext.tsx
new file mode 100644
index 0000000..69f7de5
--- /dev/null
+++ b/src/context/DarkModeContext.tsx
@@ -0,0 +1,42 @@
+import { createContext, useEffect, useState } from "react";
+
+export const DarkModeContext = createContext({
+ darkMode: false,
+ toggleDark: () => {},
+});
+
+export const DarkModeProvider = ({ children }: { children: JSX.Element }) => {
+ const [darkMode, setDarkMode] = useState(
+ window.matchMedia("(prefers-color-scheme: dark)").matches
+ );
+ const toggleDark = () => {
+ setDarkMode(!darkMode);
+ };
+
+ function updateTheme() {
+ if (
+ window.matchMedia &&
+ window.matchMedia("(prefers-color-scheme: dark)").matches
+ ) {
+ setDarkMode(true);
+ } else {
+ // Otherwise, remove it
+ setDarkMode(false);
+ }
+ }
+ useEffect(() => {
+ document.documentElement.classList.toggle("dark", darkMode);
+ }, [darkMode]);
+
+ useEffect(() => {
+ // Add an event listener to react to changes in the system's color scheme
+ window
+ .matchMedia("(prefers-color-scheme: dark)")
+ .addEventListener("change", updateTheme);
+ });
+ return (
+
+ {children}
+
+ );
+};
diff --git a/src/index.tsx b/src/index.tsx
index fb697c3..3cf7723 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,17 +1,19 @@
import React, { useEffect } from "react";
import ReactDOM from "react-dom/client";
-import App from "./App.js";
+import App from "./Academic.js";
import "./index.css";
-import { BrowserRouter, Link } from "react-router-dom";
-import { Routes, Route, Navigate } from "react-router-dom";
+import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
+import Academic from "./Academic.js";
+import Pool from "./Pool.js";
+import Layout from "./Layout.js";
+import NoPage from "./NoPage.js";
+import NotesIndex from "./components/NoteIndex.js";
+import NotePage from "./components/NotePage.js";
-function RedirectToPDF() {
+function RedirectToPDF({ link }: { link: string }) {
useEffect(() => {
// Redirect to the PDF file
- window.location.href = new URL(
- "/assets/nimo-dissertation.pdf",
- import.meta.url
- ).href;
+ window.location.href = new URL(link, import.meta.url).href;
}, []);
return null; // Render nothing, just trigger the redirect
@@ -19,10 +21,21 @@ function RedirectToPDF() {
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
-
+
- } />
- } />
+ }>
+ } />
+ } />
+ } />
+ {/* An index page listing all notes */}
+ } />
+ {/* A dynamic route for each individual note */}
+ } />
+
+ }
+ />
diff --git a/src/notes.ts b/src/notes.ts
new file mode 100644
index 0000000..7194bb1
--- /dev/null
+++ b/src/notes.ts
@@ -0,0 +1,47 @@
+// src/notes.ts
+// Gathers all .md files. Each file is processed into { html, attributes, ... } by the plugin.
+
+const modules = import.meta.glob("../pool-notes/public/**/*.md", {
+ eager: true,
+});
+// or whatever your folder structure is
+
+interface MdExport {
+ html: string;
+ attributes?: Record;
+}
+
+export type NoteEntry = {
+ slug: string;
+ html: string;
+ frontmatter?: Record;
+};
+
+function pathToSlug(filePath: string) {
+ // Example: "../vault/folder/my-note.md" -> "folder-my-note"
+ return filePath
+ .replace(/^(\.\.\/pool-notes\/public\/)/, "")
+ .replace(/\.md$/, "")
+ .replace(/\//g, "-")
+ .replace(/\ /g, "-")
+ .toLowerCase();
+}
+
+export const notes: NoteEntry[] = Object.entries(modules).map(([path, mod]) => {
+ // Depending on your plugin, the shape might differ.
+ // Often you get something like { html: "...", attributes: {...} }.
+ const data = (mod as any).default;
+ const slug = pathToSlug(path);
+
+ return {
+ slug,
+ html: data.html,
+ frontmatter: data.frontmatter, // or data.frontmatter, if that’s how your plugin exports it
+ };
+});
+
+// Optionally, create a quick lookup map by slug:
+export const noteMap: Record = {};
+for (const n of notes) {
+ noteMap[n.slug] = n;
+}
diff --git a/tailwind.config.js b/tailwind.config.js
index b901fa0..0eb661e 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,3 +1,5 @@
+const plugin = require("tailwindcss/plugin");
+
/** @type {import('tailwindcss').Config} */
module.exports = {
darkMode: "class",
@@ -17,7 +19,51 @@ module.exports = {
},
},
},
- plugins: [],
+ plugins: [
+ plugin(function ({ addComponents, theme }) {
+ addComponents({
+ // Base styles for .note-content wrapper (optional)
+ ".note-content": {
+ // Nested h1
+ h1: {
+ "@apply text-3xl font-bold mt-0 mb-4": {},
+ },
+ // Nested h2
+ h2: {
+ "@apply text-2xl font-semibold mt-8 mb-3": {},
+ },
+ // Nested a
+ a: {
+ "@apply text-primary hover:opacity-70 ease-in-out duration-100": {},
+ },
+ // Nested a.new
+ "a.new": {
+ "@apply text-gray-500 dark:text-gray-400 no-underline pointer-events-none":
+ {},
+ },
+ // Nested p
+ p: {
+ "@apply mt-0 mb-4": {},
+ },
+ // Nested blockquote
+ blockquote: {
+ "@apply border-l-4 border-blue-500 pl-4 italic": {},
+ },
+ ul: {
+ "@apply list-disc ml-6 my-4": {},
+ },
+ ol: {
+ "@apply list-decimal ml-6 my-4": {},
+ },
+
+ // If you wanted code/pre fences, you could add them too:
+ // "pre, code": {
+ // "@apply rounded bg-gray-100 text-sm": {},
+ // },
+ },
+ });
+ }),
+ ],
fontFamily: {
fontFamily: {
sans: ['"Open Sans"'],
diff --git a/tsconfig.json b/tsconfig.json
index 5eb0e3a..e2909c0 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -11,6 +11,6 @@
"noEmit": true,
"isolatedModules": true
},
- "include": ["src"],
+ "include": ["src", "plugins"],
"references": [{ "path": "./tsconfig.node.json" }]
}
diff --git a/tsconfig.node.json b/tsconfig.node.json
index cfa1ab5..9a6455c 100644
--- a/tsconfig.node.json
+++ b/tsconfig.node.json
@@ -6,5 +6,5 @@
"moduleResolution": "node",
"allowSyntheticDefaultImports": true
},
- "include": ["vite.config.ts"]
+ "include": ["vite.config.mts", "plugins/**/*.mts"]
}
diff --git a/vite.config.ts b/vite.config.mts
similarity index 51%
rename from vite.config.ts
rename to vite.config.mts
index eaac92c..a7013cf 100644
--- a/vite.config.ts
+++ b/vite.config.mts
@@ -1,9 +1,18 @@
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import plainText from "vite-plugin-virtual-plain-text";
+import markdownToHtmlPlugin from "./plugins/vite-remark.mjs";
export default defineConfig({
- plugins: [react(), plainText()],
+ plugins: [
+ react(),
+ plainText(),
+ markdownToHtmlPlugin({
+ publicDir: "public", // defaults to 'public'
+ imageDir: "pool-notes-images", // defaults to 'images'
+ mdGlob: "pool-notes/public/**/*.md", // defaults to '**/*.md'
+ }),
+ ],
server: {
port: 3000,
},
diff --git a/yarn.lock b/yarn.lock
index ee9ff0c..761e679 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -181,7 +181,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.19.0"
-"@babel/runtime@^7.11.2", "@babel/runtime@^7.17.8":
+"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.17.8", "@babel/runtime@^7.4.4":
version "7.22.3"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz"
integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==
@@ -266,7 +266,7 @@
"@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"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz"
integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
"@esbuild/darwin-x64@0.18.20":
@@ -439,6 +439,15 @@
resolved "https://registry.npmjs.org/@pmndrs/cannon-worker-api/-/cannon-worker-api-2.3.2.tgz"
integrity sha512-+4YGTH7XfSvUYUa65LoltcDMRLu3lr7rFtHT9dmeCeu2JJ7Zg2xBFJ5wiWSJmcM1ECh2R0YDcROdEQ1JKpOgFA==
+"@portaljs/remark-wiki-link@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@portaljs/remark-wiki-link/-/remark-wiki-link-1.2.0.tgz"
+ integrity sha512-eRE5nSaZzvELiWMc/tVhaTT7oGlMk2gBM7oiKs/XLMRzenhMt0PPSUEhI5ZB+xrg1T0wFfBsjIYlKP2xYbFoaQ==
+ dependencies:
+ mdast-util-to-markdown "^1.5.0"
+ mdast-util-wiki-link "^0.0.2"
+ micromark-util-symbol "^1.0.1"
+
"@react-spring/animated@~9.6.1":
version "9.6.1"
resolved "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz"
@@ -550,21 +559,69 @@
resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.6.2.tgz"
integrity sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA==
+"@rollup/pluginutils@^4.1.1":
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz"
+ integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
"@tweenjs/tween.js@~18.6.4":
version "18.6.4"
resolved "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz"
integrity sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==
+"@types/debug@^4.0.0":
+ version "4.1.12"
+ resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz"
+ integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
+ dependencies:
+ "@types/ms" "*"
+
"@types/draco3d@^1.4.0":
version "1.4.2"
resolved "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.2.tgz"
integrity sha512-goh23EGr6CLV6aKPwN1p8kBD/7tT5V/bLpToSbarKrwVejqNrspVrv8DhliteYkkhZYrlq/fwKZRRUzH4XN88w==
+"@types/hast@^3.0.0":
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz"
+ integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==
+ dependencies:
+ "@types/unist" "*"
+
"@types/history@^4.7.11":
version "4.7.11"
resolved "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz"
integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
+"@types/mdast@^3.0.0":
+ version "3.0.15"
+ resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz"
+ integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==
+ dependencies:
+ "@types/unist" "^2"
+
+"@types/mdast@^4.0.0":
+ version "4.0.4"
+ resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz"
+ integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/ms@*":
+ version "0.7.34"
+ resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz"
+ integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
+
+"@types/node@^22.10.2":
+ version "22.10.2"
+ resolved "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz"
+ integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==
+ dependencies:
+ undici-types "~6.20.0"
+
"@types/offscreencanvas@^2019.6.4":
version "2019.7.0"
resolved "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz"
@@ -652,11 +709,26 @@
fflate "~0.6.9"
lil-gui "~0.17.0"
+"@types/unist@*", "@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
+ version "2.0.11"
+ resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz"
+ integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==
+
+"@types/unist@^3.0.0":
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz"
+ integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==
+
"@types/webxr@*", "@types/webxr@^0.5.2":
version "0.5.2"
resolved "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.2.tgz"
integrity sha512-szL74BnIcok9m7QwYtVmQ+EdIKwbjPANudfuvDrAF8Cljg9MKUlIoc1w5tjj9PMpeSH3U1Xnx//czQybJ0EfSw==
+"@ungap/structured-clone@^1.0.0":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz"
+ integrity sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==
+
"@use-gesture/core@10.2.27":
version "10.2.27"
resolved "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.27.tgz"
@@ -726,6 +798,18 @@ arg@^5.0.2:
resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz"
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
autoprefixer@^10.4.16:
version "10.4.16"
resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz"
@@ -738,11 +822,26 @@ autoprefixer@^10.4.16:
picocolors "^1.0.0"
postcss-value-parser "^4.2.0"
+bail@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz"
+ integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
+
+bail@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz"
+ integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
+
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+bcp-47-match@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz"
+ integrity sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==
+
bibtex@^0.9.0:
version "0.9.0"
resolved "https://registry.npmjs.org/bibtex/-/bibtex-0.9.0.tgz"
@@ -760,6 +859,11 @@ binary-extensions@^2.0.0:
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
brace-expansion@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
@@ -809,6 +913,16 @@ cannon-es@^0.20.0:
resolved "https://registry.npmjs.org/cannon-es/-/cannon-es-0.20.0.tgz"
integrity sha512-eZhWTZIkFOnMAJOgfXJa9+b3kVlvG+FX4mdkpePev/w/rP5V8NRquGyEozcjPfEoXUlb+p7d9SUcmDSn14prOA==
+ccount@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz"
+ integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
+
+ccount@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz"
+ integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
+
chalk@^2.0.0:
version "2.4.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
@@ -818,6 +932,46 @@ chalk@^2.0.0:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
+chalk@^5.4.1:
+ version "5.4.1"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz"
+ integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==
+
+character-entities-html4@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz"
+ integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==
+
+character-entities-html4@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz"
+ integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==
+
+character-entities-legacy@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz"
+ integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==
+
+character-entities-legacy@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz"
+ integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==
+
+character-entities@^1.0.0:
+ version "1.2.4"
+ resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz"
+ integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==
+
+character-entities@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
+ integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
+
+character-reference-invalid@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz"
+ integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
+
chevrotain@^10.1.2:
version "10.5.0"
resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-10.5.0.tgz"
@@ -869,6 +1023,16 @@ color-name@~1.1.4:
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+comma-separated-tokens@^1.0.0:
+ version "1.0.8"
+ resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz"
+ integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
+
+comma-separated-tokens@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz"
+ integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
+
commander@^4.0.0:
version "4.1.1"
resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz"
@@ -888,6 +1052,11 @@ cross-spawn@^7.0.0:
shebang-command "^2.0.0"
which "^2.0.1"
+css-selector-parser@^3.0.0:
+ version "3.0.5"
+ resolved "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz"
+ integrity sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==
+
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
@@ -903,13 +1072,25 @@ debounce@^1.2.1:
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
-debug@^4.1.0:
+debug@^4.0.0, debug@^4.1.0:
version "4.3.4"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
+decode-named-character-reference@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz"
+ integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
+ dependencies:
+ character-entities "^2.0.0"
+
+dequal@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
+ integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+
detect-gpu@^5.0.14:
version "5.0.26"
resolved "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.26.tgz"
@@ -917,16 +1098,58 @@ detect-gpu@^5.0.14:
dependencies:
webgl-constants "^1.1.1"
+devlop@^1.0.0, devlop@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz"
+ integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==
+ dependencies:
+ dequal "^2.0.0"
+
didyoumean@^1.2.2:
version "1.2.2"
resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz"
integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
+direction@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz"
+ integrity sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==
+
dlv@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz"
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
+dom-serializer@^1.0.1:
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz"
+ integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz"
+ integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+
+domhandler@^4.0.0, domhandler@^4.2.0:
+ version "4.3.1"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz"
+ integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domutils@^2.5.2:
+ version "2.8.0"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
draco3d@^1.4.1:
version "1.5.6"
resolved "https://registry.npmjs.org/draco3d/-/draco3d-1.5.6.tgz"
@@ -952,9 +1175,24 @@ emoji-regex@^9.2.2:
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+entities@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
+entities@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz"
+ integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
+
esbuild@^0.18.10:
version "0.18.20"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz"
integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
optionalDependencies:
"@esbuild/android-arm" "0.18.20"
@@ -990,7 +1228,27 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-fast-glob@^3.3.0:
+escape-string-regexp@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz"
+ integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+estree-walker@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+fast-glob@^3.3.0, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -1008,6 +1266,13 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
+fault@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz"
+ integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==
+ dependencies:
+ format "^0.2.0"
+
fflate@^0.6.9, fflate@~0.6.9:
version "0.6.10"
resolved "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz"
@@ -1028,11 +1293,32 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
+format@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz"
+ integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==
+
fraction.js@^4.3.6:
version "4.3.7"
resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz"
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
+front-matter@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz"
+ integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==
+ dependencies:
+ js-yaml "^3.13.1"
+
+fs-extra@^11.2.0:
+ version "11.2.0"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz"
+ integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
@@ -1048,6 +1334,11 @@ gensync@^1.0.0-beta.2:
resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+github-slugger@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz"
+ integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==
+
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
@@ -1083,6 +1374,11 @@ glsl-noise@^0.0.0:
resolved "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz"
integrity sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.11"
+ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
@@ -1095,6 +1391,228 @@ hasown@^2.0.0:
dependencies:
function-bind "^1.1.2"
+hast-util-from-parse5@^8.0.0:
+ version "8.0.2"
+ resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz"
+ integrity sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/unist" "^3.0.0"
+ devlop "^1.0.0"
+ hastscript "^9.0.0"
+ property-information "^6.0.0"
+ vfile "^6.0.0"
+ vfile-location "^5.0.0"
+ web-namespaces "^2.0.0"
+
+hast-util-has-property@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz"
+ integrity sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==
+ dependencies:
+ "@types/hast" "^3.0.0"
+
+hast-util-heading-rank@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz"
+ integrity sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==
+ dependencies:
+ "@types/hast" "^3.0.0"
+
+hast-util-is-element@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz"
+ integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==
+
+hast-util-is-element@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz"
+ integrity sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==
+ dependencies:
+ "@types/hast" "^3.0.0"
+
+hast-util-parse-selector@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz"
+ integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==
+ dependencies:
+ "@types/hast" "^3.0.0"
+
+hast-util-raw@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz"
+ integrity sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/unist" "^3.0.0"
+ "@ungap/structured-clone" "^1.0.0"
+ hast-util-from-parse5 "^8.0.0"
+ hast-util-to-parse5 "^8.0.0"
+ html-void-elements "^3.0.0"
+ mdast-util-to-hast "^13.0.0"
+ parse5 "^7.0.0"
+ unist-util-position "^5.0.0"
+ unist-util-visit "^5.0.0"
+ vfile "^6.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-sanitize@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.2.tgz"
+ integrity sha512-+2I0x2ZCAyiZOO/sb4yNLFmdwPBnyJ4PBkVTUMKMqBwYNA+lXSgOmoRXlJFazoyid9QPogRRKgKhVEodv181sA==
+ dependencies:
+ xtend "^4.0.0"
+
+hast-util-sanitize@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz"
+ integrity sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@ungap/structured-clone" "^1.0.0"
+ unist-util-position "^5.0.0"
+
+hast-util-select@^6.0.0:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.3.tgz"
+ integrity sha512-OVRQlQ1XuuLP8aFVLYmC2atrfWHS5UD3shonxpnyrjcCkwtvmt/+N6kYJdcY4mkMJhxp4kj2EFIxQ9kvkkt/eQ==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/unist" "^3.0.0"
+ bcp-47-match "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ css-selector-parser "^3.0.0"
+ devlop "^1.0.0"
+ direction "^2.0.0"
+ hast-util-has-property "^3.0.0"
+ hast-util-to-string "^3.0.0"
+ hast-util-whitespace "^3.0.0"
+ nth-check "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ unist-util-visit "^5.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-html@^7.0.0:
+ version "7.1.3"
+ resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz"
+ integrity sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==
+ dependencies:
+ ccount "^1.0.0"
+ comma-separated-tokens "^1.0.0"
+ hast-util-is-element "^1.0.0"
+ hast-util-whitespace "^1.0.0"
+ html-void-elements "^1.0.0"
+ property-information "^5.0.0"
+ space-separated-tokens "^1.0.0"
+ stringify-entities "^3.0.1"
+ unist-util-is "^4.0.0"
+ xtend "^4.0.0"
+
+hast-util-to-html@^9.0.0:
+ version "9.0.4"
+ resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz"
+ integrity sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/unist" "^3.0.0"
+ ccount "^2.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-whitespace "^3.0.0"
+ html-void-elements "^3.0.0"
+ mdast-util-to-hast "^13.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@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz"
+ integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ comma-separated-tokens "^2.0.0"
+ devlop "^1.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ web-namespaces "^2.0.0"
+ zwitch "^2.0.0"
+
+hast-util-to-string@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz"
+ integrity sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==
+ dependencies:
+ "@types/hast" "^3.0.0"
+
+hast-util-to-text@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz"
+ integrity sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/unist" "^3.0.0"
+ hast-util-is-element "^3.0.0"
+ unist-util-find-after "^5.0.0"
+
+hast-util-whitespace@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz"
+ integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==
+
+hast-util-whitespace@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz"
+ integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==
+ dependencies:
+ "@types/hast" "^3.0.0"
+
+hastscript@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz"
+ integrity sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ comma-separated-tokens "^2.0.0"
+ hast-util-parse-selector "^4.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+
+html-void-elements@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz"
+ integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==
+
+html-void-elements@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz"
+ integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==
+
+htmlparser2@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
+is-alphabetical@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz"
+ integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
+
+is-alphanumerical@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz"
+ integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==
+ dependencies:
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
@@ -1102,6 +1620,11 @@ is-binary-path@~2.1.0:
dependencies:
binary-extensions "^2.0.0"
+is-buffer@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
is-core-module@^2.13.0:
version "2.13.1"
resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz"
@@ -1109,6 +1632,11 @@ is-core-module@^2.13.0:
dependencies:
hasown "^2.0.0"
+is-decimal@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz"
+ integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
@@ -1126,11 +1654,26 @@ is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-hexadecimal@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz"
+ integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
+
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-plain-obj@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz"
+ integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
+
+is-plain-obj@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz"
+ integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
@@ -1162,6 +1705,14 @@ jiti@^1.19.1:
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
@@ -1172,6 +1723,15 @@ json5@^2.2.2:
resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
ktx-parse@^0.4.5:
version "0.4.5"
resolved "https://registry.npmjs.org/ktx-parse/-/ktx-parse-0.4.5.tgz"
@@ -1197,11 +1757,23 @@ lines-and-columns@^1.1.6:
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+linkify-it@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz"
+ integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==
+ dependencies:
+ uc.micro "^1.0.1"
+
lodash.clamp@^4.0.3:
version "4.0.3"
resolved "https://registry.npmjs.org/lodash.clamp/-/lodash.clamp-4.0.3.tgz"
integrity sha512-HvzRFWjtcguTW7yd8NJBshuNaCa8aqNFtnswdT7f/cMd/1YKy5Zzoq4W/Oxvnx9l7aeY258uSdDfM793+eLsVg==
+lodash.iteratee@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.npmjs.org/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz"
+ integrity sha512-yv3cSQZmfpbIKo4Yo45B1taEvxjNvcpF1CEOc0Y6dEyvhPIfEJE3twDwPgWTPQubcSgXyBwBKG6wpQvWMDOf6Q==
+
lodash.omit@^4.5.0:
version "4.5.0"
resolved "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz"
@@ -1217,6 +1789,16 @@ lodash@4.17.21:
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+longest-streak@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz"
+ integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
+
+longest-streak@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz"
+ integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==
+
loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -1241,6 +1823,271 @@ maath@^0.5.2, maath@^0.5.3:
resolved "https://registry.npmjs.org/maath/-/maath-0.5.3.tgz"
integrity sha512-ut63A4zTd9abtpi+sOHW1fPWPtAFrjK0E17eAthx1k93W/T2cWLKV5oaswyotJVDvvW1EXSdokAqhK5KOu0Qdw==
+markdown-it@^12.0.0:
+ version "12.3.2"
+ resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz"
+ integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==
+ dependencies:
+ argparse "^2.0.1"
+ entities "~2.1.0"
+ linkify-it "^3.0.1"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
+markdown-table@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz"
+ integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==
+
+mdast-util-definitions@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz"
+ integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==
+ dependencies:
+ unist-util-visit "^2.0.0"
+
+mdast-util-find-and-replace@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz"
+ integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ escape-string-regexp "^5.0.0"
+ unist-util-is "^6.0.0"
+ unist-util-visit-parents "^6.0.0"
+
+mdast-util-from-markdown@^0.8.0:
+ version "0.8.5"
+ resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz"
+ integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ mdast-util-to-string "^2.0.0"
+ micromark "~2.11.0"
+ parse-entities "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+
+mdast-util-from-markdown@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz"
+ integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ "@types/unist" "^3.0.0"
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ mdast-util-to-string "^4.0.0"
+ micromark "^4.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-decode-string "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+ unist-util-stringify-position "^4.0.0"
+
+mdast-util-frontmatter@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz"
+ integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ devlop "^1.0.0"
+ escape-string-regexp "^5.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+ micromark-extension-frontmatter "^2.0.0"
+
+mdast-util-gfm-autolink-literal@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz"
+ integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ ccount "^2.0.0"
+ devlop "^1.0.0"
+ mdast-util-find-and-replace "^3.0.0"
+ micromark-util-character "^2.0.0"
+
+mdast-util-gfm-footnote@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz"
+ integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ devlop "^1.1.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+
+mdast-util-gfm-strikethrough@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz"
+ integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-gfm-table@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz"
+ integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ devlop "^1.0.0"
+ markdown-table "^3.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-gfm-task-list-item@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz"
+ integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ devlop "^1.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-gfm@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz"
+ integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==
+ dependencies:
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-gfm-autolink-literal "^2.0.0"
+ mdast-util-gfm-footnote "^2.0.0"
+ mdast-util-gfm-strikethrough "^2.0.0"
+ mdast-util-gfm-table "^2.0.0"
+ mdast-util-gfm-task-list-item "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-phrasing@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz"
+ integrity sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ unist-util-is "^5.0.0"
+
+mdast-util-phrasing@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz"
+ integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ unist-util-is "^6.0.0"
+
+mdast-util-to-hast@^10.0.0:
+ version "10.2.0"
+ resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz"
+ integrity sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ mdast-util-definitions "^4.0.0"
+ mdurl "^1.0.0"
+ unist-builder "^2.0.0"
+ unist-util-generated "^1.0.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+mdast-util-to-hast@^13.0.0:
+ version "13.2.0"
+ resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz"
+ integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/mdast" "^4.0.0"
+ "@ungap/structured-clone" "^1.0.0"
+ devlop "^1.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ trim-lines "^3.0.0"
+ unist-util-position "^5.0.0"
+ unist-util-visit "^5.0.0"
+ vfile "^6.0.0"
+
+mdast-util-to-markdown@^0.6.5:
+ version "0.6.5"
+ resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz"
+ integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ longest-streak "^2.0.0"
+ mdast-util-to-string "^2.0.0"
+ parse-entities "^2.0.0"
+ repeat-string "^1.0.0"
+ zwitch "^1.0.0"
+
+mdast-util-to-markdown@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz"
+ integrity sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-phrasing "^3.0.0"
+ mdast-util-to-string "^3.0.0"
+ micromark-util-decode-string "^1.0.0"
+ unist-util-visit "^4.0.0"
+ zwitch "^2.0.0"
+
+mdast-util-to-markdown@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz"
+ integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ "@types/unist" "^3.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-phrasing "^4.0.0"
+ mdast-util-to-string "^4.0.0"
+ micromark-util-classify-character "^2.0.0"
+ micromark-util-decode-string "^2.0.0"
+ unist-util-visit "^5.0.0"
+ zwitch "^2.0.0"
+
+mdast-util-to-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz"
+ integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==
+
+mdast-util-to-string@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz"
+ integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+
+mdast-util-to-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz"
+ integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+
+mdast-util-wiki-link@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.npmjs.org/mdast-util-wiki-link/-/mdast-util-wiki-link-0.0.2.tgz"
+ integrity sha512-lSsR10/dPuYIxzjGZIGA4oYzsnEnqcsD6DTXL0pqdbBzNB9teKVZB2aIzZcUsdg31v/NoHOstkVwzbN6VrQLtw==
+ dependencies:
+ "@babel/runtime" "^7.12.1"
+ mdast-util-to-markdown "^0.6.5"
+
+mdast-util-wiki-link@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmjs.org/mdast-util-wiki-link/-/mdast-util-wiki-link-0.1.2.tgz"
+ integrity sha512-DTcDyOxKDo3pB3fc0zQlD8myfQjYkW4hazUKI9PUyhtoj9JBeHC2eIdlVXmaT22bZkFAVU2d47B6y2jVKGoUQg==
+ dependencies:
+ "@babel/runtime" "^7.12.1"
+ mdast-util-to-markdown "^0.6.5"
+
+mdurl@^1.0.0, mdurl@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz"
+ integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
+
merge2@^1.3.0:
version "1.4.1"
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
@@ -1251,6 +2098,339 @@ meshline@^3.1.6:
resolved "https://registry.npmjs.org/meshline/-/meshline-3.1.6.tgz"
integrity sha512-8JZJOdaL5oz3PI/upG8JvP/5FfzYUOhrkJ8np/WKvXzl0/PZ2V9pqTvCIjSKv+w9ccg2xb+yyBhXAwt6ier3ug==
+micromark-core-commonmark@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz"
+ integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ micromark-factory-destination "^2.0.0"
+ micromark-factory-label "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-factory-title "^2.0.0"
+ micromark-factory-whitespace "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-classify-character "^2.0.0"
+ micromark-util-html-tag-name "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-subtokenize "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-frontmatter@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz"
+ integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==
+ dependencies:
+ fault "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-autolink-literal@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz"
+ integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-footnote@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz"
+ integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-core-commonmark "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-strikethrough@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz"
+ integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-classify-character "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-table@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz"
+ integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-tagfilter@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz"
+ integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==
+ dependencies:
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-task-list-item@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz"
+ integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz"
+ integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==
+ dependencies:
+ micromark-extension-gfm-autolink-literal "^2.0.0"
+ micromark-extension-gfm-footnote "^2.0.0"
+ micromark-extension-gfm-strikethrough "^2.0.0"
+ micromark-extension-gfm-table "^2.0.0"
+ micromark-extension-gfm-tagfilter "^2.0.0"
+ micromark-extension-gfm-task-list-item "^2.0.0"
+ micromark-util-combine-extensions "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-wiki-link@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.npmjs.org/micromark-extension-wiki-link/-/micromark-extension-wiki-link-0.0.4.tgz"
+ integrity sha512-dJc8AfnoU8BHkN+7fWZvIS20SMsMS1ZlxQUn6We67MqeKbOiEDZV5eEvCpwqGBijbJbxX3Kxz879L4K9HIiOvw==
+ dependencies:
+ "@babel/runtime" "^7.12.1"
+
+micromark-factory-destination@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz"
+ integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-label@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz"
+ integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-space@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz"
+ integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-title@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz"
+ integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==
+ dependencies:
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-whitespace@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz"
+ integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==
+ dependencies:
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-character@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz"
+ integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+ micromark-util-types "^1.0.0"
+
+micromark-util-character@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz"
+ integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-chunked@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz"
+ integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-classify-character@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz"
+ integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-combine-extensions@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz"
+ integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==
+ dependencies:
+ micromark-util-chunked "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-decode-numeric-character-reference@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz"
+ integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==
+ dependencies:
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-decode-numeric-character-reference@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz"
+ integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-decode-string@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz"
+ integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-util-character "^1.0.0"
+ micromark-util-decode-numeric-character-reference "^1.0.0"
+ micromark-util-symbol "^1.0.0"
+
+micromark-util-decode-string@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz"
+ integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-encode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz"
+ integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==
+
+micromark-util-html-tag-name@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz"
+ integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==
+
+micromark-util-normalize-identifier@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz"
+ integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-resolve-all@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz"
+ integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==
+ dependencies:
+ micromark-util-types "^2.0.0"
+
+micromark-util-sanitize-uri@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz"
+ integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-encode "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-subtokenize@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz"
+ integrity sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-symbol@^1.0.0, micromark-util-symbol@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz"
+ integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==
+
+micromark-util-symbol@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz"
+ integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==
+
+micromark-util-types@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz"
+ integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==
+
+micromark-util-types@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz"
+ integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==
+
+micromark@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz"
+ integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==
+ dependencies:
+ "@types/debug" "^4.0.0"
+ debug "^4.0.0"
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ micromark-core-commonmark "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-combine-extensions "^2.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-encode "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ micromark-util-subtokenize "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark@~2.11.0:
+ version "2.11.4"
+ resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz"
+ integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==
+ dependencies:
+ debug "^4.0.0"
+ parse-entities "^2.0.0"
+
micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.5"
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
@@ -1315,6 +2495,13 @@ normalize-range@^0.1.2:
resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+nth-check@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
object-assign@^4.0.1, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
@@ -1333,6 +2520,25 @@ opentype.js@^1.3.3:
string.prototype.codepointat "^0.2.1"
tiny-inflate "^1.0.3"
+parse-entities@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz"
+ integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==
+ dependencies:
+ character-entities "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ character-reference-invalid "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+parse5@^7.0.0:
+ version "7.2.1"
+ resolved "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz"
+ integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==
+ dependencies:
+ entities "^4.5.0"
+
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
@@ -1356,7 +2562,7 @@ picocolors@^1.0.0:
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -1417,7 +2623,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.32:
version "8.4.38"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
dependencies:
nanoid "^3.3.7"
@@ -1448,6 +2654,18 @@ prop-types@^15.6.0, prop-types@^15.7.2:
object-assign "^4.1.1"
react-is "^16.13.1"
+property-information@^5.0.0:
+ version "5.6.0"
+ resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz"
+ integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==
+ dependencies:
+ xtend "^4.0.0"
+
+property-information@^6.0.0:
+ version "6.5.0"
+ resolved "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz"
+ integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==
+
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
@@ -1556,6 +2774,169 @@ regexp-to-ast@0.5.0:
resolved "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz"
integrity sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==
+rehype-autolink-headings@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz"
+ integrity sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@ungap/structured-clone" "^1.0.0"
+ hast-util-heading-rank "^3.0.0"
+ hast-util-is-element "^3.0.0"
+ unified "^11.0.0"
+ unist-util-visit "^5.0.0"
+
+rehype-infer-title-meta@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/rehype-infer-title-meta/-/rehype-infer-title-meta-2.0.0.tgz"
+ integrity sha512-rDlbds3zpXvKvFVZvmsuObJwcJg0btaE3Ar0ZKy/6JU5HiuetilLU+lQAfXlaO72kxeCa27TqB3CfXk3WSd7OA==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ hast-util-select "^6.0.0"
+ hast-util-to-text "^4.0.0"
+ vfile "^6.0.0"
+
+rehype-raw@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz"
+ integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ hast-util-raw "^9.0.0"
+ vfile "^6.0.0"
+
+rehype-slug@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz"
+ integrity sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ github-slugger "^2.0.0"
+ hast-util-heading-rank "^3.0.0"
+ hast-util-to-string "^3.0.0"
+ unist-util-visit "^5.0.0"
+
+rehype-stringify@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz"
+ integrity sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ hast-util-to-html "^9.0.0"
+ unified "^11.0.0"
+
+remark-frontmatter@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz"
+ integrity sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-frontmatter "^2.0.0"
+ micromark-extension-frontmatter "^2.0.0"
+ unified "^11.0.0"
+
+remark-gfm@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz"
+ integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-gfm "^3.0.0"
+ micromark-extension-gfm "^3.0.0"
+ remark-parse "^11.0.0"
+ remark-stringify "^11.0.0"
+ unified "^11.0.0"
+
+remark-html@^13.0.1:
+ version "13.0.2"
+ resolved "https://registry.npmjs.org/remark-html/-/remark-html-13.0.2.tgz"
+ integrity sha512-LhSRQ+3RKdBqB/RGesFWkNNfkGqprDUCwjq54SylfFeNyZby5kqOG8Dn/vYsRoM8htab6EWxFXCY6XIZvMoRiQ==
+ dependencies:
+ hast-util-sanitize "^3.0.0"
+ hast-util-to-html "^7.0.0"
+ mdast-util-to-hast "^10.0.0"
+
+remark-html@^16.0.1:
+ version "16.0.1"
+ resolved "https://registry.npmjs.org/remark-html/-/remark-html-16.0.1.tgz"
+ integrity sha512-B9JqA5i0qZe0Nsf49q3OXyGvyXuZFDzAP2iOFLEumymuYJITVpiH1IgsTEwTpdptDmZlMDMWeDmSawdaJIGCXQ==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ hast-util-sanitize "^5.0.0"
+ hast-util-to-html "^9.0.0"
+ mdast-util-to-hast "^13.0.0"
+ unified "^11.0.0"
+
+remark-parse-frontmatter@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/remark-parse-frontmatter/-/remark-parse-frontmatter-1.0.3.tgz"
+ integrity sha512-2hqW4Nod8pEkP4kdui7jOvCwcTfYBfgAb3XJhYYTZGrTMBcxFzQ7h7ay6OwmpJME5BOhORpZ7eY5+K4OHHIh4Q==
+ dependencies:
+ revalidator "^0.3.1"
+ unist-util-find "^1.0.2"
+ yaml "^1.10.0"
+
+remark-parse@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz"
+ integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ micromark-util-types "^2.0.0"
+ unified "^11.0.0"
+
+remark-parse@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz"
+ integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==
+ dependencies:
+ mdast-util-from-markdown "^0.8.0"
+
+remark-rehype@^11.1.1:
+ version "11.1.1"
+ resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz"
+ integrity sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/mdast" "^4.0.0"
+ mdast-util-to-hast "^13.0.0"
+ unified "^11.0.0"
+ vfile "^6.0.0"
+
+remark-stringify@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz"
+ integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-to-markdown "^2.0.0"
+ unified "^11.0.0"
+
+remark-wiki-link@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/remark-wiki-link/-/remark-wiki-link-2.0.1.tgz"
+ integrity sha512-F8Eut1E7GWfFm4ZDTI6/4ejeZEHZgnVk6E933Yqd/ssYsc4AyI32aGakxwsGcEzbbE7dkWi1EfLlGAdGgOZOsA==
+ dependencies:
+ "@babel/runtime" "^7.4.4"
+ mdast-util-wiki-link "^0.1.2"
+ micromark-extension-wiki-link "^0.0.4"
+
+remark@^15.0.1:
+ version "15.0.1"
+ resolved "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz"
+ integrity sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ remark-parse "^11.0.0"
+ remark-stringify "^11.0.0"
+ unified "^11.0.0"
+
+repeat-string@^1.0.0:
+ version "1.6.1"
+ resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"
+ integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
+
require-from-string@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz"
@@ -1575,9 +2956,14 @@ reusify@^1.0.4:
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+revalidator@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmjs.org/revalidator/-/revalidator-0.3.1.tgz"
+ integrity sha512-orq+Nw+V5pDpQwGEuN2n1AgJ+0A8WqhFHKt5KgkxfAowUKgO1CWV32IR3TNB4g9/FX3gJt9qBJO8DYlwonnB0Q==
+
rollup@^3.27.1:
version "3.29.4"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981"
+ resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz"
integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
optionalDependencies:
fsevents "~2.3.2"
@@ -1632,9 +3018,24 @@ signal-exit@^4.0.1:
source-map-js@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
+space-separated-tokens@^1.0.0:
+ version "1.1.5"
+ resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz"
+ integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==
+
+space-separated-tokens@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz"
+ integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
stats.js@^0.17.0:
version "0.17.0"
resolved "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz"
@@ -1672,6 +3073,23 @@ string.prototype.codepointat@^0.2.1:
resolved "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz"
integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==
+stringify-entities@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz"
+ integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==
+ dependencies:
+ character-entities-html4 "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ xtend "^4.0.0"
+
+stringify-entities@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
+ integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==
+ dependencies:
+ character-entities-html4 "^2.0.0"
+ character-entities-legacy "^3.0.0"
+
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
@@ -1789,7 +3207,7 @@ three-stdlib@^2.22.10, three-stdlib@^2.23.4:
three@^0.152.1:
version "0.152.2"
- resolved "https://registry.yarnpkg.com/three/-/three-0.152.2.tgz#2ee0f2c504d31a4bc29b45495c12bded9fda7bfc"
+ resolved "https://registry.npmjs.org/three/-/three-0.152.2.tgz"
integrity sha512-Ff9zIpSfkkqcBcpdiFo2f35vA9ZucO+N8TNacJOqaEE6DrB0eufItVMib8bK8Pcju/ZNT6a7blE1GhTpkdsILw==
tiny-inflate@^1.0.3:
@@ -1809,6 +3227,11 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
+trim-lines@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz"
+ integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==
+
troika-three-text@^0.47.1:
version "0.47.2"
resolved "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.47.2.tgz"
@@ -1829,6 +3252,16 @@ troika-worker-utils@^0.47.2:
resolved "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.47.2.tgz"
integrity sha512-mzss4MeyzUkYBppn4x5cdAqrhBHFEuVmMMgLMTyFV23x6GvQMyo+/R5E5Lsbrt7WSt5RfvewjcwD1DChRTA9lA==
+trough@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz"
+ integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
+
+trough@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz"
+ integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==
+
ts-interface-checker@^0.1.9:
version "0.1.13"
resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz"
@@ -1839,6 +3272,168 @@ typescript@^4.9.5:
resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+uc.micro@^1.0.1, uc.micro@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz"
+ integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
+undici-types@~6.20.0:
+ version "6.20.0"
+ resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz"
+ integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
+
+unified@^11.0.0, unified@^11.0.5:
+ version "11.0.5"
+ resolved "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz"
+ integrity sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ bail "^2.0.0"
+ devlop "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^4.0.0"
+ trough "^2.0.0"
+ vfile "^6.0.0"
+
+unified@^9.0.0:
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz"
+ integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==
+ dependencies:
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-buffer "^2.0.0"
+ is-plain-obj "^2.0.0"
+ trough "^1.0.0"
+ vfile "^4.0.0"
+
+unist-builder@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz"
+ integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==
+
+unist-util-find-after@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz"
+ integrity sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-is "^6.0.0"
+
+unist-util-find@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/unist-util-find/-/unist-util-find-1.0.4.tgz"
+ integrity sha512-T5vI7IkhroDj7KxAIy057VbIeGnCXfso4d4GoUsjbAmDLQUkzAeszlBtzx1+KHgdsYYBygaqUBvrbYCfePedZw==
+ dependencies:
+ lodash.iteratee "^4.7.0"
+ unist-util-visit "^2.0.0"
+
+unist-util-generated@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz"
+ integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==
+
+unist-util-is@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz"
+ integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==
+
+unist-util-is@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz"
+ integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-is@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz"
+ integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-position@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz"
+ integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==
+
+unist-util-position@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz"
+ integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-stringify-position@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz"
+ integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==
+ dependencies:
+ "@types/unist" "^2.0.2"
+
+unist-util-stringify-position@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz"
+ integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-visit-parents@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz"
+ integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^4.0.0"
+
+unist-util-visit-parents@^5.1.1:
+ version "5.1.3"
+ resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz"
+ integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==
+ dependencies:
+ "@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.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz"
+ 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.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz"
+ integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^4.0.0"
+ unist-util-visit-parents "^3.0.0"
+
+unist-util-visit@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz"
+ integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^5.0.0"
+ unist-util-visit-parents "^5.1.1"
+
+unist-util-visit@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz"
+ 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"
+
+universalify@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
+ integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
+
update-browserslist-db@^1.0.13:
version "1.0.13"
resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz"
@@ -1857,15 +3452,77 @@ utility-types@^3.10.0:
resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz"
integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
-vite-plugin-virtual-plain-text@^1.4.2:
- version "1.4.2"
- resolved "https://registry.npmjs.org/vite-plugin-virtual-plain-text/-/vite-plugin-virtual-plain-text-1.4.2.tgz"
- integrity sha512-sZKYNxB9Qdlh8nNyGchN50TPMBhZoqQjQ8z15VJcNW/Qs3EYfxEjCYCjFOltFJ8IWszLH71/Tu4hzTHrBwt8Nw==
+vfile-location@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz"
+ integrity sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ vfile "^6.0.0"
-vite@^4.1.1:
- version "4.5.3"
- resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.3.tgz#d88a4529ea58bae97294c7e2e6f0eab39a50fb1a"
- integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==
+vfile-message@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz"
+ integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+
+vfile-message@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz"
+ integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-stringify-position "^4.0.0"
+
+vfile@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz"
+ integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+ vfile-message "^2.0.0"
+
+vfile@^6.0.0:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz"
+ integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==
+ dependencies:
+ "@types/unist" "^3.0.0"
+ vfile-message "^4.0.0"
+
+vite-plugin-markdown@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/vite-plugin-markdown/-/vite-plugin-markdown-2.2.0.tgz"
+ integrity sha512-eH2tXMZcx3EHb5okd+/0VIyoR8Gp9pGe24UXitOOcGkzObbJ1vl48aGOAbakoT88FBdzC8MXNkMfBIB9VK0Ndg==
+ dependencies:
+ domhandler "^4.0.0"
+ front-matter "^4.0.0"
+ htmlparser2 "^6.0.0"
+ markdown-it "^12.0.0"
+
+vite-plugin-virtual-plain-text@^1.4.5:
+ version "1.4.5"
+ resolved "https://registry.npmjs.org/vite-plugin-virtual-plain-text/-/vite-plugin-virtual-plain-text-1.4.5.tgz"
+ integrity sha512-aDPYdqQJK4XuLwcsM4xpl16DKQL6P9UY6yZ8PfkgvdfM++HGTT5ktb4vUBuw+7GA3oKAsJVNUXC48cIoVTrfQQ==
+
+vite-remark-html@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/vite-remark-html/-/vite-remark-html-1.1.1.tgz"
+ integrity sha512-/Nndll9lcBWjLYWfbH3CYiybuVjkNrQ5j68S5PunBR8T19V6egtUpWLN0j/PlSvxtbBWbhb+pjhU88G3zm1/Ow==
+ dependencies:
+ "@rollup/pluginutils" "^4.1.1"
+ remark-html "^13.0.1"
+ remark-parse "^9.0.0"
+ unified "^9.0.0"
+
+vite@^4.5.5:
+ version "4.5.5"
+ resolved "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz"
+ integrity sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==
dependencies:
esbuild "^0.18.10"
postcss "^8.4.27"
@@ -1873,6 +3530,11 @@ vite@^4.1.1:
optionalDependencies:
fsevents "~2.3.2"
+web-namespaces@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz"
+ integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
+
webgl-constants@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz"
@@ -1908,11 +3570,21 @@ wrap-ansi@^8.1.0:
string-width "^5.0.1"
strip-ansi "^7.0.1"
+xtend@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
yaml@^2.3.4:
version "2.3.4"
resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz"
@@ -1927,3 +3599,13 @@ zustand@^3.5.13, zustand@^3.7.1:
version "3.7.2"
resolved "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz"
integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==
+
+zwitch@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz"
+ integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==
+
+zwitch@^2.0.0, zwitch@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz"
+ integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==